Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dataslayermedia/714ec5a9601249d9ee754919dea49c7e to your computer and use it in GitHub Desktop.
Save dataslayermedia/714ec5a9601249d9ee754919dea49c7e to your computer and use it in GitHub Desktop.
Install Coral AI PCIe Edge TPU on Raspberry Pi 5
#!/bin/bash
cd /
sudo apt update
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 -
sudo apt-get update
sudo apt-get install libedgetpu1-std
sudo apt install -y devscripts debhelper
sudo apt install dkms
sudo apt-get install dh-dkms
# Clone the Gasket driver repository
sudo git clone https://github.com/google/gasket-driver.git
# Change directory to the cloned repository
cd gasket-driver
# Build the Gasket driver package
sudo debuild -us -uc -tc -b
# Go back to the parent directory
cd ..
# Install the built Gasket driver package
sudo dpkg -i gasket-dkms_1.0-18_all.deb
sudo sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0660\", GROUP=\"apex\"' >> /etc/udev/rules.d/65-apex.rules"
sudo groupadd apex
sudo adduser $USER apex
# Update the boot configuration for Raspberry Pi
echo "kernel=kernel8.img" | sudo tee -a /boot/firmware/config.txt
# Back up the Device Tree Blob (DTB)
sudo cp /boot/firmware/bcm2712-rpi-5-b.dtb /boot/firmware/bcm2712-rpi-5-b.dtb.bak
# Decompile the DTB into a DTS file
sudo dtc -I dtb -O dts /boot/firmware/bcm2712-rpi-5-b.dtb -o ~/test.dts
# Modify the Device Tree Source (DTS)
sudo sed -i '/pcie@110000 {/,/};/{/msi-parent = <[^>]*>;/{s/msi-parent = <[^>]*>;/msi-parent = <0x67>;/}}' ~/test.dts
# Recompile the DTS back into a DTB
sudo dtc -I dts -O dtb ~/test.dts -o ~/test.dtb
# Replace the old DTB with the new one
sudo mv ~/test.dtb /boot/firmware/bcm2712-rpi-5-b.dtb
sudo reboot now
@19leva89
Copy link

19leva89 commented Jul 5, 2024

Good day when executing the command
curl -sS https://gist.githubusercontent.com/dataslayermedia/714ec5a9601249d9ee754919dea49c7e/raw/97eafd546f25b4add8b4e08d64afb5b50bc4449e/coral-ai-pcie-edge-tpu-raspberrypi-5-setup | bash

I get an error https://packages.cloud.google.com/apt/dists/coral-edgetpu-stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

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.6.36-v8+
Building initial module for 6.6.36-v8+
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/gasket/1.0/source/dkms.conf)
Error! Bad return status for module build on kernel: 6.6.36-v8+ (aarch64)
Consult /var/lib/dkms/gasket/1.0/build/make.log for more information.
dpkg: error while processing package gasket-dkms (--configure):
 subprocess from package gasket-dkms script installed post-installation returned error code 10
Errors occurred while processing the following packages:
 gasket-dkms

Reply to command lspci -nn | grep 089a

0000:03:00.0 System peripheral [0880]: Global Unichip Corp. Coral Edge TPU [1ac1:089a]
0000:04:00.0 System peripheral [0880]: Global Unichip Corp. Coral Edge TPU [1ac1:089a]

Reply to command ls /dev/apex_0
ls: cannot access '/dev/apex_0': No such file or directory

I use this board Dual Edge Coral TPU Bundle for Raspberry Pi 5 with Home Assistant and Frigate

@mikegapinski
Copy link

Error! Bad return status for module build on kernel: 6.6.36-v8+ (aarch64)

This is the actual error, the kernel module failed to build. Since you are using Home Assistant OS the steps could be different. Can you post the contents of /var/lib/dkms/gasket/1.0/build/make.log? The script you used for install is slightly outdated too, please refer to our install guide: https://pineboards.io/blogs/tutorials/how-to-configure-the-google-coral-edge-tpu-on-the-raspberry-pi-5. If you get stuck anywhere I'll reproduce and update our tutorial as well.

As far as I remember 6.6.30+ is now available from apt since it is also required for the Hailo 8L TPU, so kernel upgrade does not require rpi-source

@19leva89
Copy link

19leva89 commented Jul 5, 2024

Error! Bad return status for module build on kernel: 6.6.36-v8+ (aarch64)

This is the actual error, the kernel module failed to build. Since you are using Home Assistant OS the steps could be different. Can you post the contents of /var/lib/dkms/gasket/1.0/build/make.log? The script you used for install is slightly outdated too, please refer to our install guide: https://pineboards.io/blogs/tutorials/how-to-configure-the-google-coral-edge-tpu-on-the-raspberry-pi-5. If you get stuck anywhere I'll reproduce and update our tutorial as well.

As far as I remember 6.6.30+ is now available from apt since it is also required for the Hailo 8L TPU, so kernel upgrade does not require rpi-source

DKMS make.log for gasket-1.0 for kernel 6.6.36-v8+ (aarch64)
Fri 05 Jul 2024 23:21:47 EEST
make: entering directory "/home/pi/linux-3b42260d2130b5ca110c5340ab2bd055eede5968"

 ERROR: Kernel configuration is invalid.
 include/generated/autoconf.h or include/config/auto.conf are missing.
 Run 'make oldconfig && make prepare' on kernel src to fix it.

make[1]: *** [/home/pi/linux-3b42260d2130b5ca110c5340ab2bd055eede5968/Makefile:806: include/config/auto.conf] Error 1
make: *** [Makefile:234: __sub-make] Error 2
make: exit directory "/home/pi/linux-3b42260d2130b5ca110c5340ab2bd055eede5968"

@19leva89
Copy link

19leva89 commented Jul 5, 2024

When I use this instruction https://pineboards.io/blogs/tutorials/how-to-configure-the-google-coral-edge-tpu-on-the-raspberry-pi-5 I also get an warning when Import the repository GPG key:

 curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
100  2659  100  2659    0     0   9308      0 --:--:-- --:--:-- --:--:--  9297
OK

@19leva89
Copy link

19leva89 commented Jul 6, 2024

In the morning, with a fresh head and new thoughts, I installed a new clean Linux raspberrypi 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux and did everything as written in https://pineboards.io/blogs/tutorials/how-to-configure-the-google-coral-edge-tpu-on-the-raspberry-pi-5 and wow, everything worked!

pi@raspberrypi:~ $ ls /dev/apex_*
/dev/apex_0  /dev/apex_1

@alloydas
Copy link

alloydas commented Jul 6, 2024

In the morning, with a fresh head and new thoughts, I installed a new clean Linux raspberrypi 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux and did everything as written in https://pineboards.io/blogs/tutorials/how-to-configure-the-google-coral-edge-tpu-on-the-raspberry-pi-5 and wow, everything worked!

pi@raspberrypi:~ $ ls /dev/apex_*
/dev/apex_0  /dev/apex_1

Hello, @19leva89 I have completed that step and now when I am going to install Pycoral I cannot install it have you tried this one? I want to run Ultralytics YOLO v8.

Thanks in advance

@19leva89
Copy link

19leva89 commented Jul 6, 2024

In the morning, with a fresh head and new thoughts, I installed a new clean Linux raspberrypi 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux and did everything as written in https://pineboards.io/blogs/tutorials/how-to-configure-the-google-coral-edge-tpu-on-the-raspberry-pi-5 and wow, everything worked!

pi@raspberrypi:~ $ ls /dev/apex_*
/dev/apex_0  /dev/apex_1

Hello, @19leva89 I have completed that step and now when I am going to install Pycoral I cannot install it have you tried this one? I want to run Ultralytics YOLO v8.

Thanks in advance

No I haven't tried that, I use Home Assistant with Frigate

@mikegapinski
Copy link

mikegapinski commented Jul 6, 2024 via email

@alloydas
Copy link

alloydas commented Jul 9, 2024

Jeff Geerling has a great article for PyCoral with Docker, very easy setup: https://www.jeffgeerling.com/blog/2023/testing-coral-tpu-accelerator-m2-or-pcie-docker Wysyłane z aplikacji Outlook dla systemu iOShttps://aka.ms/o0ukef

________________________________ Od: 19leva89 @.> Wysłane: Saturday, July 6, 2024 9:52:46 AM Do: 19leva89 @.> DW: Comment @.> Temat: Re: dataslayermedia/coral-ai-pcie-edge-tpu-raspberrypi-5-setup @19leva89 commented on this gist.
________________________________ In the morning, with a fresh head and new thoughts, I installed a new clean Linux raspberrypi 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux and did everything as written in https://pineboards.io/blogs/tutorials/how-to-configure-the-google-coral-edge-tpu-on-the-raspberry-pi-5 and wow, everything worked! @.
:~ $ ls /dev/apex_* /dev/apex_0 /dev/apex_1 Hello, @19leva89https://github.com/19leva89 I have completed that step and now when I am going to install Pycoral I cannot install it have you tried this one? I want to run Ultralytics YOLO v8. Thanks in advance No I haven't tried that, I use Home Assistant with Frigate — Reply to this email directly, view it on GitHubhttps://gist.github.com/dataslayermedia/714ec5a9601249d9ee754919dea49c7e#gistcomment-5112804 or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAHDCBYOEBG3IHFHCKJLCR3ZK6O47BFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDUOJ2WLJDOMFWWLO3UNBZGKYLEL5YGC4TUNFRWS4DBNZ2F6YLDORUXM2LUPGBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVEYTENZVGYZDEMJUU52HE2LHM5SXFJTDOJSWC5DF. You are receiving this email because you commented on the thread. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Thank you @mikegapinski that solution works for me.

Thanks a lot

@marcoscunha
Copy link

Hi all,

I have the Dual Coral TPU with Pineberry board and a raspberry pi 5.
The kernel version is 6.6.31+rpt-rpi-v8 and the distro is the Debian Bookworm Lite.

Changing the DTS of msi-parent of pcie@11000 from 0x027 to 0x66 or 0x67 did not work for me.
I need indeed to change it to 0x6e, which is the value on phandle, to make it works.

Thanks for this discussion!

@marcoscunha
Copy link

Hello,

I rollback the modifications made on my own to DTS to keep raspberry pi's original version.

I want to test device tree overlay proposed by the supplier.

I just add the line dtoverlay=pineboards-hat-ai on /boot/firmware/config.txt,

If you have a kernel greater then 6.6.30 I recommend to use this method instead of modifying the DTS yourself.

Thanks @mikegapinski for the link to the tutorial.

@mikegapinski
Copy link

mikegapinski commented Jul 18, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment