Skip to content

Coral TPU Driver Installation on Proxmox 9.1.1 / Debian 13 (Trixie) Linux kernel 6.17.2 - Guide / How-to #55

@tue-kyndal

Description

@tue-kyndal

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions