Coral TPU Driver Installation on Proxmox 9.1.1 / Debian 13 (Trixie)
Hi all.
I had some issues installing the Coral TPU Driver gasket driver on my new installation of proxmox 9.1.1.
The main issue was some leftovers of image and header information, because I installed a driver initially compiled for proxmox 9.0.4.
This is a paste-ready version of the Coral Edge TPU (Gasket) driver installation guide on Proxmox 9.1.1 / Debian 13 Trixie.
All commands are ready for direct copy-paste. (thanks to chat-GPT :o)
1️⃣ System Information
# Check OS version
cat /etc/os-release
Expected output:
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.2
ID=debian
# Check running kernel
uname -a
Example output:
Linux PROXMOX 6.17.2-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.17.2-2 (2025-11-26T12:33Z) x86_64 GNU/Linux
2️⃣ Update System & Install Headers
apt-get update
apt-get install proxmox-default-headers
Output example:
proxmox-default-headers is already the newest version (2.0.1)
3️⃣ Prepare Workspace
mkdir -p ~/download
cd ~/download
4️⃣ Add Google Coral Repository & Import Key
wget -qO - https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/google.gpg --import -
rm /etc/apt/trusted.gpg.d/google.gpg~
chmod 644 /etc/apt/trusted.gpg.d/google.gpg
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | \
tee /etc/apt/sources.list.d/coral-edgetpu.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
wget -O- https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/coral-edgetpu.gpg
apt-get update
5️⃣ Install Required Packages
apt-get install pve-headers libedgetpu1-std dkms devscripts dh-make dh-dkms git mc -y
6️⃣ Build Gasket Driver from Source
# Clone repository
git clone https://github.com/google/gasket-driver.git
cd gasket-driver/src
# Apply source modifications
sed -i -e 's/no_llseek/noop_llseek/g' gasket_core.c
sed -i -e 's/MODULE_IMPORT_NS(DMA_BUF)/MODULE_IMPORT_NS("DMA_BUF")/g' gasket_page_table.c
sed -i 's/^[[:space:]]*\.llseek[[:space:]]*=[[:space:]]*no_llseek,[[:space:]]*$//' gasket_core.c
# Build DKMS package
cd ..
dpkg-buildpackage -us -uc -tc -b
# Copy and rename package for versioning
cp gasket-dkms_1.0-18_all.deb gasket-dkms_1.0-18_all_prox-9.1.1.deb
7️⃣ Install DKMS Package
dpkg -i gasket-dkms_1.0-18_all_prox-9.1.1.deb
Expected output:
Selecting previously unselected package gasket-dkms.
(Reading database ... 104966 files and directories currently installed.)
Preparing to unpack gasket-dkms_1.0-18_all_prox-9.1.1.deb ...
Unpacking gasket-dkms (1.0-18) ...
Setting up gasket-dkms (1.0-18) ...
Loading new gasket/1.0 DKMS files...
Deprecated feature: REMAKE_INITRD (/usr/src/gasket-1.0/dkms.conf)
Building for 6.17.2-2-pve
Building initial module gasket/1.0 for 6.17.2-2-pve
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/gasket/1.0/source/dkms.conf)
Sign command: /lib/modules/6.17.2-2-pve/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Certificate or key are missing, generating self signed certificate for MOK...
Building module(s).... done.
Signing module /var/lib/dkms/gasket/1.0/build/gasket.ko
Signing module /var/lib/dkms/gasket/1.0/build/apex.ko
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/gasket/1.0/source/dkms.conf)
Installing /lib/modules/6.17.2-2-pve/updates/dkms/gasket.ko
Installing /lib/modules/6.17.2-2-pve/updates/dkms/apex.ko
Running depmod..... done.
8️⃣ Verify Installation
# Load modules
modprobe gasket
modprobe apex
# Check loaded modules
lsmod | grep -E 'gasket|apex'
# Check TPU device
ls /dev/apex_0
# Investigate hardware if device missing
lspci -nn | grep -i apex
lspci -nn | grep -i TPU
Expected output example:
04:00.0 System peripheral [0880]: Global Unichip Corp. Coral Edge TPU [1ac1:089a]
Notes
- Only the current running kernel is required for DKMS build.
- Multiple builds occur if multiple kernels are installed — normal behavior.
- Clean old kernels and headers to avoid DKMS building for unused kernels.
Attached are to cleanup scripts. One to remove all leftovers of old gasket driver installations.
And one including full image and header cleanup.
You are welcome!
Tue Kyndal
clean_gasket_images_headers.sh
clean_gasket.sh
Coral TPU Driver Installation on Proxmox 9.1.1 / Debian 13 (Trixie)
Hi all.
I had some issues installing the Coral TPU Driver gasket driver on my new installation of proxmox 9.1.1.
The main issue was some leftovers of image and header information, because I installed a driver initially compiled for proxmox 9.0.4.
This is a paste-ready version of the Coral Edge TPU (Gasket) driver installation guide on Proxmox 9.1.1 / Debian 13 Trixie.
All commands are ready for direct copy-paste. (thanks to chat-GPT :o)
1️⃣ System Information
# Check OS version cat /etc/os-releaseExpected output:
# Check running kernel uname -aExample output:
2️⃣ Update System & Install Headers
Output example:
3️⃣ Prepare Workspace
4️⃣ Add Google Coral Repository & Import Key
5️⃣ Install Required Packages
6️⃣ Build Gasket Driver from Source
7️⃣ Install DKMS Package
Expected output:
8️⃣ Verify Installation
Expected output example:
Notes
Attached are to cleanup scripts. One to remove all leftovers of old gasket driver installations.
And one including full image and header cleanup.
You are welcome!
Tue Kyndal
clean_gasket_images_headers.sh
clean_gasket.sh