I'm looking to set up an NVR application on my NAS, probably Frigate, and would like to implement AI detection of people, cars, objects, etc. I'm not using the M.2 slots for SSDs, so I was hoping I could buy a Coral AI M.2 Accelerator and use that in one of the slots instead. However, all the documentation and references I can find suggests those slots are only for NVMe SSDs.
If I buy the Coral AI Accelerator and put it in one of those slots, will it work?
F2-423 Using the M.2 slots for Coral AI
- crisisacting
- Silver Member
- Posts: 500
- Joined: 20 Jan 2022, 16:42
Re: F2-423 Using the M.2 slots for Coral AI
Hopefully someone from their engineering team can provide a definite answer to this inquiry.
You should be able to install the Coral device (there's no way to hold it in place since those slots are designed for 80mm cards, so hopefully you find a way to retain it there) & as long as the Linux kernel that TOS is build off can detect it, it should be able to passthrough the existence of the hardware to Docker with some yaml modification.
Since a TNAS is just a low power ×86/64 PC, if TOS is not capable of doing the above, replace the base OS with frigate’s recommendation of bare metal Debian, install Docker, adjust yaml to have access to that Coral device.
You should be able to install the Coral device (there's no way to hold it in place since those slots are designed for 80mm cards, so hopefully you find a way to retain it there) & as long as the Linux kernel that TOS is build off can detect it, it should be able to passthrough the existence of the hardware to Docker with some yaml modification.
Since a TNAS is just a low power ×86/64 PC, if TOS is not capable of doing the above, replace the base OS with frigate’s recommendation of bare metal Debian, install Docker, adjust yaml to have access to that Coral device.
- DarthStroyer
- Posts: 5
- Joined: 17 May 2024, 16:33

Re: F2-423 Using the M.2 slots for Coral AI
It looks like it may not be as simple as I'd hoped. The PCIe device shows up but kernel drivers aren't present so I don't get a `/dev/apex_0` file to pass to the docker container.
I'm not sure if there's a straightforward approach if I can't map the device in. It's a little outside my Docker comfort zone.
Code: Select all
$ lspci -v
...
03:00.0 Class 0880: Device 1ac1:089a (prog-if ff)
Subsystem: Device 1ac1:089a
Flags: fast devsel, IRQ 255
Memory at 6000100000 (64-bit, prefetchable) [disabled] [size=16K]
Memory at 6000000000 (64-bit, prefetchable) [disabled] [size=1M]
Capabilities: [80] Express Endpoint, MSI 00
Capabilities: [d0] MSI-X: Enable- Count=128 Masked-
Capabilities: [e0] MSI: Enable- Count=1/32 Maskable- 64bit+
Capabilities: [f8] Power Management version 3
Capabilities: [100] Vendor Specific Information: ID=1556 Rev=1 Len=008 <?>
Capabilities: [108] Latency Tolerance Reporting
Capabilities: [110] L1 PM Substates
Capabilities: [200] Advanced Error Reporting