PCIE Google Coral Install Instructions

Jake_Simek

New Member
Mar 12, 2024
4
9
3
I wanted to go ahead and show how I was able to get the pcie google coral functioning on my pve machine. It has been a complete nightmare for me, and it seems like it has been for many others as well. I am no professional, but these are simply the commands I used to get this running. There are several things that most likely could have been consolidated, like the reboots and apt installs, but this is what is tested and works for me.


This is the output of lscpu on my machine for reference

Code:
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         39 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               GenuineIntel
  BIOS Vendor ID:        Intel(R) Corporation
  Model name:            Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz
    BIOS Model name:     Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz To Be Filled By O.E.M. CPU @ 3.7GHz
    BIOS CPU family:     206
    CPU family:          6
    Model:               94
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    Stepping:            3
    CPU(s) scaling MHz:  80%
    CPU max MHz:         3700.0000
    CPU min MHz:         800.0000
    BogoMIPS:            7399.70
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fm
                         a cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves
                          dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi
Virtualization features:
  Virtualization:        VT-x
Caches (sum of all):     
  L1d:                   64 KiB (2 instances)
  L1i:                   64 KiB (2 instances)
  L2:                    512 KiB (2 instances)
  L3:                    3 MiB (1 instance)
NUMA:                   
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-3
Vulnerabilities:         
  Gather data sampling:  Vulnerable: No microcode
  Itlb multihit:         KVM: Mitigation: VMX disabled
  L1tf:                  Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
  Mds:                   Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Meltdown:              Mitigation; PTI
  Mmio stale data:       Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Retbleed:              Vulnerable
  Spec rstack overflow:  Not affected
  Spec store bypass:     Vulnerable
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
  Srbds:                 Vulnerable: No microcode
  Tsx async abort:       Not affected






Coral Install
# This was all done from root user

#First verify your machine has MSI-X by running this command

lspci -vv | grep MSI-X

#Also make sure secure boot is disabled if you have that option



apt update && apt upgrade -y

# Not needed, just makes copy and pasting cmds easier
apt install sudo -y

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo 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 update

sudo apt-get install gasket-dkms libedgetpu1-std -y

#likely not needed, but I was just being over cautious
reboot now


apt remove gasket-dkms -y

apt install git devscripts dh-dkms -y

cd /home

git clone https://github.com/google/gasket-driver.git

cd gasket-driver/

debuild -us -uc -tc -b

cd ..

apt install pve-headers -y

dpkg -i gasket-dkms_1.0-18_all.deb

cd

apt update && apt upgrade -y

reboot now



# Verify the drivers are functioning properly

lspci -nn | grep 089a

ls /dev/apex_0



I hope this helps someone, if you have a question let me know, I am no expert, but I will try to help.
 
I feel your pain, been there.

If you haven't already, pin a kernel to 6.2 version -- lots of issues with coral/apex under 6.5 kernels. Do that and you don't have to build your own version, the "off the net" directions work fine.

Code:
root@pmx:~# proxmox-boot-tool kernel list
Manually selected kernels:
None.

Automatically selected kernels:
6.2.16-20-pve
6.5.11-7-pve
6.5.13-1-pve

root@pmx:~# proxmox-boot-tool kernel pin 6.2.16-20-pve
Setting '6.2.16-20-pve' as grub default entry and running update-grub.
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.5.13-1-pve
Found initrd image: /boot/initrd.img-6.5.13-1-pve
Found linux image: /boot/vmlinuz-6.5.11-7-pve
Found initrd image: /boot/initrd.img-6.5.11-7-pve
Found linux image: /boot/vmlinuz-6.2.16-20-pve
Found initrd image: /boot/initrd.img-6.2.16-20-pve
Found linux image: /boot/vmlinuz-6.2.16-3-pve
Found initrd image: /boot/initrd.img-6.2.16-3-pve
Found memtest86+ 64bit EFI image: /boot/memtest86+x64.efi
Adding boot menu entry for UEFI Firmware Settings ...
done
root@pmx:~#

then reboot
 
Last edited:
I wanted to go ahead and show how I was able to get the pcie google coral functioning on my pve machine. It has been a complete nightmare for me, and it seems like it has been for many others as well. I am no professional, but these are simply the commands I used to get this running. There are several things that most likely could have been consolidated, like the reboots and apt installs, but this is what is tested and works for me.


This is the output of lscpu on my machine for reference
Code:
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         39 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               GenuineIntel
  BIOS Vendor ID:        Intel(R) Corporation
  Model name:            Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz
    BIOS Model name:     Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz To Be Filled By O.E.M. CPU @ 3.7GHz
    BIOS CPU family:     206
    CPU family:          6
    Model:               94
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    Stepping:            3
    CPU(s) scaling MHz:  80%
    CPU max MHz:         3700.0000
    CPU min MHz:         800.0000
    BogoMIPS:            7399.70
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fm
                         a cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves
                          dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi
Virtualization features:
  Virtualization:        VT-x
Caches (sum of all):    
  L1d:                   64 KiB (2 instances)
  L1i:                   64 KiB (2 instances)
  L2:                    512 KiB (2 instances)
  L3:                    3 MiB (1 instance)
NUMA:                  
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-3
Vulnerabilities:        
  Gather data sampling:  Vulnerable: No microcode
  Itlb multihit:         KVM: Mitigation: VMX disabled
  L1tf:                  Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
  Mds:                   Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Meltdown:              Mitigation; PTI
  Mmio stale data:       Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Retbleed:              Vulnerable
  Spec rstack overflow:  Not affected
  Spec store bypass:     Vulnerable
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
  Srbds:                 Vulnerable: No microcode
  Tsx async abort:       Not affected






Coral Install
# This was all done from root user

#First verify your machine has MSI-X by running this command

lspci -vv | grep MSI-X

#Also make sure secure boot is disabled if you have that option



apt update && apt upgrade -y

# Not needed, just makes copy and pasting cmds easier
apt install sudo -y

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo 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 update

sudo apt-get install gasket-dkms libedgetpu1-std -y

#likely not needed, but I was just being over cautious
reboot now


apt remove gasket-dkms -y

apt install git devscripts dh-dkms -y

cd /home

git clone https://github.com/google/gasket-driver.git

cd gasket-driver/

debuild -us -uc -tc -b

cd ..

apt install pve-headers -y

dpkg -i gasket-dkms_1.0-18_all.deb

cd

apt update && apt upgrade -y

reboot now



# Verify the drivers are functioning properly

lspci -nn | grep 089a

ls /dev/apex_0



I hope this helps someone, if you have a question let me know, I am no expert, but I will try to help.
This is very helpfull. It worked. Thank you!!
 
Man, the nightmare continues for me. After following a bunch of guides and always coming to the same conclusion, ls: cannot access '/dev/apex_0': No such file or directory, I thought maybe finally your guide would of done it.

Unfortunately it says the same thing at the end.

Do you think my machine is not compatible or something? Currently on Linux pve 6.8.12-4-pve, the card gets recognized,
root@pve:~# lspci -nn | grep 089a
02:00.0 System peripheral [0880]: Global Unichip Corp. Coral Edge TPU [1ac1:089a], but always the same apex error.

I've learned a bunch of linux commands but your guide put them together to make sense so I appreciate that. Thanks.
 
Man, the nightmare continues for me. After following a bunch of guides and always coming to the same conclusion, ls: cannot access '/dev/apex_0': No such file or directory, I thought maybe finally your guide would of done it.

Unfortunately it says the same thing at the end.

Do you think my machine is not compatible or something? Currently on Linux pve 6.8.12-4-pve, the card gets recognized,
root@pve:~# lspci -nn | grep 089a
02:00.0 System peripheral [0880]: Global Unichip Corp. Coral Edge TPU [1ac1:089a], but always the same apex error.

I've learned a bunch of linux commands but your guide put them together to make sense so I appreciate that. Thanks.
I'm sorry to hear that. What is the output of lspci -vv | grep MSI-Xon your machine? If it returns nothing it means your machine does not support it. According to the official docs, your machine must support MSI-X. This was my first issue when doing this, I was using an ancient dell tower. You could possibly try the solution dlasher came up with as well if you haven't already.

Since I wrote that guide I have recently upgraded to a PowerEdge r630 that i got for $100, you can find them pretty much everywhere, and depending on what you are doing with your system, it is most likely overkill.
 
Last edited:
Just for the record, none of the above is necessary if you instead opted for the USB version of the Coral TPU. That's overall a much easier product to use and should be selected unless you have a very specific need for the PCIe card.
 
Anyone figured it out? In my case:
lspci -nn | grep 089a
lspci -vv | grep MSI-X
both give output.
gasket-dkms downloaded from github, built and installed. Kernel version is 6.8.12-9-pve yet still /dev/apex0 is not present.
The only mention in dmesg is:

[ 436.376215] gasket: module verification failed: signature and/or required key missing - tainting kernel
but secure boot is disabled, so this should only be a warning.
What else i can do to make it work?
 
I wanted to go ahead and show how I was able to get the pcie google coral functioning on my pve machine. It has been a complete nightmare for me, and it seems like it has been for many others as well. I am no professional, but these are simply the commands I used to get this running. There are several things that most likely could have been consolidated, like the reboots and apt installs, but this is what is tested and works for me.


This is the output of lscpu on my machine for reference
Code:
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         39 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               GenuineIntel
  BIOS Vendor ID:        Intel(R) Corporation
  Model name:            Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz
    BIOS Model name:     Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz To Be Filled By O.E.M. CPU @ 3.7GHz
    BIOS CPU family:     206
    CPU family:          6
    Model:               94
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    Stepping:            3
    CPU(s) scaling MHz:  80%
    CPU max MHz:         3700.0000
    CPU min MHz:         800.0000
    BogoMIPS:            7399.70
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fm
                         a cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves
                          dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi
Virtualization features:
  Virtualization:        VT-x
Caches (sum of all):    
  L1d:                   64 KiB (2 instances)
  L1i:                   64 KiB (2 instances)
  L2:                    512 KiB (2 instances)
  L3:                    3 MiB (1 instance)
NUMA:                  
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-3
Vulnerabilities:        
  Gather data sampling:  Vulnerable: No microcode
  Itlb multihit:         KVM: Mitigation: VMX disabled
  L1tf:                  Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
  Mds:                   Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Meltdown:              Mitigation; PTI
  Mmio stale data:       Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Retbleed:              Vulnerable
  Spec rstack overflow:  Not affected
  Spec store bypass:     Vulnerable
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
  Srbds:                 Vulnerable: No microcode
  Tsx async abort:       Not affected






Coral Install
# This was all done from root user

#First verify your machine has MSI-X by running this command

lspci -vv | grep MSI-X

#Also make sure secure boot is disabled if you have that option



apt update && apt upgrade -y

# Not needed, just makes copy and pasting cmds easier
apt install sudo -y

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo 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 update

sudo apt-get install gasket-dkms libedgetpu1-std -y

#likely not needed, but I was just being over cautious
reboot now


apt remove gasket-dkms -y

apt install git devscripts dh-dkms -y

cd /home

git clone https://github.com/google/gasket-driver.git

cd gasket-driver/

debuild -us -uc -tc -b

cd ..

apt install pve-headers -y

dpkg -i gasket-dkms_1.0-18_all.deb

cd

apt update && apt upgrade -y

reboot now



# Verify the drivers are functioning properly

lspci -nn | grep 089a

ls /dev/apex_0



I hope this helps someone, if you have a question let me know, I am no expert, but I will try to help.
Helped a lot. Thanks!
 
I wanted to go ahead and show how I was able to get the pcie google coral functioning on my pve machine. It has been a complete nightmare for me, and it seems like it has been for many others as well. I am no professional, but these are simply the commands I used to get this running. There are several things that most likely could have been consolidated, like the reboots and apt installs, but this is what is tested and works for me.


This is the output of lscpu on my machine for reference
Code:
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         39 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               GenuineIntel
  BIOS Vendor ID:        Intel(R) Corporation
  Model name:            Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz
    BIOS Model name:     Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz To Be Filled By O.E.M. CPU @ 3.7GHz
    BIOS CPU family:     206
    CPU family:          6
    Model:               94
    Thread(s) per core:  2
    Core(s) per socket:  2
    Socket(s):           1
    Stepping:            3
    CPU(s) scaling MHz:  80%
    CPU max MHz:         3700.0000
    CPU min MHz:         800.0000
    BogoMIPS:            7399.70
    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fm
                         a cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves
                          dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi
Virtualization features:
  Virtualization:        VT-x
Caches (sum of all):    
  L1d:                   64 KiB (2 instances)
  L1i:                   64 KiB (2 instances)
  L2:                    512 KiB (2 instances)
  L3:                    3 MiB (1 instance)
NUMA:                  
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-3
Vulnerabilities:        
  Gather data sampling:  Vulnerable: No microcode
  Itlb multihit:         KVM: Mitigation: VMX disabled
  L1tf:                  Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
  Mds:                   Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Meltdown:              Mitigation; PTI
  Mmio stale data:       Vulnerable: Clear CPU buffers attempted, no microcode; SMT vulnerable
  Retbleed:              Vulnerable
  Spec rstack overflow:  Not affected
  Spec store bypass:     Vulnerable
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
  Srbds:                 Vulnerable: No microcode
  Tsx async abort:       Not affected






Coral Install
# This was all done from root user

#First verify your machine has MSI-X by running this command

lspci -vv | grep MSI-X

#Also make sure secure boot is disabled if you have that option



apt update && apt upgrade -y

# Not needed, just makes copy and pasting cmds easier
apt install sudo -y

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo 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 update

sudo apt-get install gasket-dkms libedgetpu1-std -y

#likely not needed, but I was just being over cautious
reboot now


apt remove gasket-dkms -y

apt install git devscripts dh-dkms -y

cd /home

git clone https://github.com/google/gasket-driver.git

cd gasket-driver/

debuild -us -uc -tc -b

cd ..

apt install pve-headers -y

dpkg -i gasket-dkms_1.0-18_all.deb

cd

apt update && apt upgrade -y

reboot now



# Verify the drivers are functioning properly

lspci -nn | grep 089a

ls /dev/apex_0



I hope this helps someone, if you have a question let me know, I am no expert, but I will try to help.
THANK YOU!!!!!!!!!!! Gosh. I can confirm it works with pve kernel as of april 2025!
 
Hi, is it still necessary to disable Secure Boot ? Thank you.
Edit : Just tried and yes it's still necessary...
 
Last edited:
Works under Proxmox 8.4.1 with kernel 6.8.12-10-pve

Info:
according to the proxmox instructions, the following entries should also be included in the lxc config under /etc/pve/lxc...
Code:
features: fuse=1,nesting=1
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/apex_0        dev/apex_0        none bind,optional,create=file
 
Did all like mentioned here. Also checked: secure boot is disabled. But I still get:
root@pve:/# ls /dev/apex_0
ls: cannot access '/dev/apex_0': No such file or directory

I still have a home assistant vm container with a running frigate addon (accessing the coral m.2 tpu). Could that be the problem (but I get the same error with a paused HA VM.
 
So i tried to install the coral on an Esprimo Q558 with an i7 8700T with 6.8.12-5.

Following the manual here i got an error:

Code:
root@pve:~# dpkg -i gasket-dkms_1.0-18_all.deb
(Reading database ... 107851 files and directories currently installed.)
Preparing to unpack gasket-dkms_1.0-18_all.deb ...
Deleting module gasket-1.0 completely from the DKMS tree.
Unpacking gasket-dkms (1.0-18) over (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.8.12-5-pve
Module build for kernel 6.8.12-5-pve was skipped since the
kernel headers for this kernel do not seem to be installed.

After some writing with chat gpt i found a solution:

Code:
apt install pve-headers-$(uname -r)
Code:
dkms autoinstall

result:

Code:
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/gasket/1.0/source/dkms.conf)
Deprecated feature: REMAKE_INITRD (/etc/dkms/framework.conf)
Sign command: /lib/modules/6.8.12-5-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...
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/gasket/1.0/source/dkms.conf)

Building module:
Cleaning build area...
make -j12 KERNELRELEASE=6.8.12-5-pve -C /lib/modules/6.8.12-5-pve/build M=/var/lib/dkms/gasket/1.0/build...
Signing module /var/lib/dkms/gasket/1.0/build/gasket.ko
Signing module /var/lib/dkms/gasket/1.0/build/apex.ko
Cleaning build area...

gasket.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/6.8.12-5-pve/updates/dkms/

apex.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/6.8.12-5-pve/updates/dkms/
depmod....

going on with:
Code:
modprobe apex

result:
Code:
root@pve:~# dmesg | grep apex
[  382.802096] apex 0000:02:00.0: enabling device (0000 -> 0002)
[  388.238318] apex 0000:02:00.0: Apex performance not throttled due to temperature
root@pve:~# ls /dev/apex*
/dev/apex_0

finally:
Code:
echo apex > /etc/modules-load.d/coral.conf
 
Here are the commands I used for Kernel 6.14.8-2

#First verify your machine has MSI-X by running this command
Code:
lspci -vv | grep MSI-X

#part 1
Code:
apt update && apt upgrade -y
apt install sudo -y
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo 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 update
sudo apt-get install gasket-dkms libedgetpu1-std -y
reboot now


#part 2
Code:
apt remove gasket-dkms -y
apt install git devscripts dh-dkms dkms pve-headers-$(uname -r) -y
cd /tmp
git clone https://github.com/sethyx/gasket-driver.git
cd gasket-driver/
debuild -us -uc -tc -b
dpkg -i ../gasket-dkms_1.0-18_all.deb
reboot now

# Verify the drivers are functioning properly
Code:
lspci -nn | grep 089a
ls /dev/apex_0
ls /dev/apex_1


Had issues until gfngfn256 pointed me to a fork for gasket-driver.
 
Last edited:
  • Like
Reactions: FoodFighter
Had issues until gfngfn256 pointed me to a fork for gasket-driver.

Oh, thank you!!!
I searched high and low for a working repo/package.
But now you have to be careful that you don't accidentally install the faulty Google package again with
apt update && apt upgrade -y
and mess everything up.

To prevent this, you can exclude the package from the apt-upgrade.
apt-mark hold gasket-dkms

However, this solution is not ideal. Is there a better solution?
(Perhaps one should fork the GitHub repository and increase the version number. I will test this.)


[EDIT]:
found this: https://github.com/markfrancisonly/frigate_debian_scripts
there is already a PullRequest #50 in the official repo, that works great!
someone made a beautifil script for installation and rebuild and so on.

I tried to adapt that script for a proxmox-Version (not fully tested):
https://github.com/Bodengriller/frigate_debian_scripts/tree/Proxmox-Edition
feel free to test.

basicly it works this way for a fresh installation:

Code:
### Install the TPU driver and library ###
1. Installing prerequisites...
    apt update && apt upgrade -y
    apt install -y git devscripts dh-dkms dkms pve-headers proxmox-headers-$(uname -r)


2. Adding Coral Edge TPU repository...
    curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor -o /etc/apt/keyrings/coral-edgetpu.gpg
    echo "deb [signed-by=/etc/apt/keyrings/coral-edgetpu.gpg] https://packages.cloud.google.com/apt coral-edgetpu-stable main" | tee /etc/apt/sources.list.d/coral-edgetpu.list
    apt update
    apt install -y libedgetpu1-std


3. Installing driver from source...
# Download Git-repo and switch to PullRequest #50 [https://github.com/google/gasket-driver/pull/50]
    mkdir -p /home/coral-build
    git clone https://github.com/google/gasket-driver.git /home/coral-build/gasket-driver
    cd /home/coral-build/gasket-driver
    git fetch origin pull/50/head:pr-50
    git checkout pr-50
    debuild -us -uc -tc -b
    dpkg -i ../gasket-dkms_*_all.deb
    apt update
    if no error => reboot !


# Verify the drivers are functioning properly
    lspci -nn | grep 089a
    ls /dev/apex_0


# For unprivileged LXC containers
    nano /etc/udev/rules.d/99-chmod777.rules
        SUBSYSTEM=="apex", MODE="0777", GROUP="apex"
        KERNEL=="renderD128", MODE="0777"
    udevadm control --reload-rules && udevadm trigger

[EDIT - 2025-08-16: added "pve-headers" in #1]
 
Last edited: