check how many lanes that slot has, you need two lanes to use a dual TPU, an adapter won’t help, even with lane splitting/bifurcation AFAIK
in my case the mobo m.2’s are all single lane so I had to get the single tpu
EDIT: based on cursory research, if you use the slot that’s meant for the SSD you may be able to make it work, but the one that had the WLAN card is single lane so at absolute best you will get 1 TPU (and most likely neither)
FWIW using the 4x slot for the dual TPU is a waste because it will only consume 2 lanes, I’d recommend just getting a single and putting it in the WLAN slot
I followed this completely on a fresh Fangtooth install and it consistently fails at the sudo debuild step. Error I receive is:
sudo: process 1717401 unexpected status 0x57f
dpkg-buildpackage: error: debian/rules clean subprocess was killed by signal 9
debuild: fatal error at line 1182:
dpkg-buildpackage -us -uc -ui -tc -b -d failed
Not having luck on Fangtooth either (an upgrade install, things worked fine on Electric Eel).
So far I’m trying to just do the same steps again and the following happens when doing install_dev_tools:
[...]
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up gasket-dkms (1.0-18) ...
Removing old gasket-1.0 DKMS files...
Deleting module gasket-1.0 completely from the DKMS tree.
Loading new gasket-1.0 DKMS files...
Deprecated feature: REMAKE_INITRD (/usr/src/gasket-1.0/dkms.conf)
Building for 6.12.15-production+truenas
Building initial module for 6.12.15-production+truenas
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/gasket/1.0/source/dkms.conf)
Error! Bad return status for module build on kernel: 6.12.15-production+truenas
(x86_64)
Consult /var/lib/dkms/gasket/1.0/build/make.log for more information.
dpkg: error processing package gasket-dkms (--configure):
installed gasket-dkms package post-installation script subprocess returned erro
r exit status 10
Errors were encountered while processing:
gasket-dkms
E: Sub-process /usr/bin/dpkg returned an error code (1)
and the logfile /var/lib/dkms/gasket/1.0/build/make.log says:
Thu May 8 21:21:29 PDT 2025
make: Entering directory '/usr/src/linux-headers-truenas-production-amd64'
CC [M] /var/lib/dkms/gasket/1.0/build/gasket_core.o
CC [M] /var/lib/dkms/gasket/1.0/build/gasket_ioctl.o
CC [M] /var/lib/dkms/gasket/1.0/build/gasket_interrupt.o
CC [M] /var/lib/dkms/gasket/1.0/build/gasket_page_table.o
CC [M] /var/lib/dkms/gasket/1.0/build/gasket_sysfs.o
CC [M] /var/lib/dkms/gasket/1.0/build/apex_driver.o
/var/lib/dkms/gasket/1.0/build/gasket_core.c:1376:19: error: 'no_llseek' undeclared here (not in a function); did you mean 'noop_llseek'?
1376 | .llseek = no_llseek,
| ^~~~~~~~~
| noop_llseek
make[2]: *** [scripts/Makefile.build:229: /var/lib/dkms/gasket/1.0/build/gasket_core.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/usr/src/linux-headers-truenas-production-amd64/Makefile:1940: /var/lib/dkms/gasket/1.0/build] Error 2
make: *** [Makefile:227: __sub-make] Error 2
make: Leaving directory '/usr/src/linux-headers-truenas-production-amd64'
I discovered this error is due to trying to run the script from the boot pool.
Create a folder on the storage pool for doing this compilation. For some reason, Fangtooth doesn’t let you run scripts that are stored on the boot pool.
I’m now at the point where I’ve got the .deb package to build, but can’t get it installed!
Success! Coral M.2 pci TPU working in Frigate App on TrueNAS Fangtooth
What a hassle though.
After editing the Frigate app config to passthrough the device:
host device:
/dev/apex_0
container device:
/dev/apex_0
has anybody looked at creatinga sysext for these drivers?
(for example cloning a boot partion with no dev tools installed, rebooting to the new part, creating the sysext and saving it to one of the non-boot pools) then rebooting to the unmodified boot image and applying the sysext?