Duet 3 and jetson Nano?
hanshogeland last edited by hanshogeland
Hi, I know it might be overkill but do you know if the Jetson Nano would work as the SBC to the Duet 3? I have found this that seems to enable the same controllers as a Pi https://github.com/NVIDIA/jetson-gpio
@hanshogeland If it runs a kernel >= 4.8 (
/dev/gpiochip) it should work either out-of-the-box or the amount of adjustments should be relatively small.
@wilriker thx for your reply, now I just have to wait for the board
It needs an external SPI bus as well... /dev/spidevX.X
AFAICT it needs a lot more complex procedure to enable it compared to e.g. RPi but it is available.
EDIT: Possible shortcut: https://github.com/rt-net/JetsonNano_DT_SPI
IT will be great for certain vision applications if the Jetson nano does work with Duet3! Looking forward to seeing the results of your investigations.
I'm looking at picking one up and from looking at the documentation, getting the SPI port working should be easy considering I've done the same device tree modifications for other boards.
@t3p3tony great, I’ll test with my Duet 3 once I get
Got my Jetson Nano yesterday and was able to get SPI working using the instructions linked above by @wilriker. If your host system is Ubuntu It really is just a matter of putting a jumper on 2 pins to put the board in recovery mode and running "run.sh". If you're running a linux distro other than Ubuntu (or another Debian based distro), like me, you'll just have to look at run.sh to see the packages needed and install them yourself.
The Jetson's SPI and GPIO pins are in exactly the same place on its 40 pin connector as on an RPi so there should be no cable issues at all. The only thing you have to do is compile the DSF for linux-arm64 instead of linux-arm. That's a simple replacement on 3 lines in DuetSoftwareFramework/pkg/build.sh but if you want to create .deb files, you'll also need to change it in all of the control files below that directory. Minor housekeeping really.
As for the Jetson itself... Seems like a nice package. Unfortunately, Nvidia saw fit to use several chained bootloaders that requires a minimum of 12 (that's right 12) GPT partitions on the boot sdcard so it's not a simple matter to use another distro other than their shipped ubuntu. I did get Fedora running by extracting the Fedora aarch64 image, then blowing away the main partition on the sdcard and copying over the Fedora root filesystem.
/dev/mmcblk0: PTUUID="55088ba6-9571-4e08-9a2d-b8a49f170dfe" PTTYPE="gpt" /dev/mmcblk0p1: UUID="d0a54240-9799-4f63-a90b-1a3f5ca4eda8" TYPE="ext4" PARTLABEL="APP" PARTUUID="ad3c0a63-158b-4f2b-9625-9a7bbf82a32d" /dev/mmcblk0p2: PARTLABEL="TBC" PARTUUID="437248e8-a268-4baa-8c9c-f6a20674fc79" /dev/mmcblk0p3: PARTLABEL="RP1" PARTUUID="f281a2b0-e8fa-4dfd-a847-1e710e29c969" /dev/mmcblk0p4: PARTLABEL="EBT" PARTUUID="96313966-0226-45bd-801b-cd0c6693c313" /dev/mmcblk0p5: PARTLABEL="WB0" PARTUUID="e9cf6cb2-db7a-4622-aae6-0992e1703c91" /dev/mmcblk0p6: PARTLABEL="BPF" PARTUUID="81073621-95e4-4863-832d-c70deb7c894b" /dev/mmcblk0p7: PARTLABEL="TOS" PARTUUID="3d559fe8-5be0-4356-b36d-128b1d97a9a0" /dev/mmcblk0p8: PARTLABEL="EKS" PARTUUID="28573182-a7d8-431e-b613-be12593ca8b9" /dev/mmcblk0p9: PARTLABEL="LNX" PARTUUID="3af231e6-7c4d-4fa9-b8f7-60d35468c8cb" /dev/mmcblk0p10: PARTLABEL="DTB" PARTUUID="065aa065-ff0d-4c73-a8b3-81dbebf66e6b" /dev/mmcblk0p11: PARTLABEL="RP4" PARTUUID="8c8e8319-9661-49d6-b772-f538ff26c527" /dev/mmcblk0p12: PARTLABEL="BMP" PARTUUID="ec713bf6-e232-4948-acc2-5c91ef39e8d3"
Each of those partitions has config data and several copies of the DTB. If you want to use a new DTB, you have to use Nvidia's flash tool to get it into those partitions. That's the reason for that "JetsonNano_DT_SPI" project. It downloads all of the Nvidia SDK components needed to flash that one stupid file. Whoever created that project deserves a medal.
Anyway, I think the Jetson will work perfectly as the Duet3's SBC.
@gtj0 thanks for the investigation!
As it turns out, the process linked above as JetsonNano_DT_SPI no longer actually works. The device nodes are created but the pins aren't actually active.
Here's a new procedure which I created and verified over the last few days...
gtj0 last edited by gtj0
and an SSD shelld underneath...
The SSD itself is a 5 year old 256G OCZ that I had hanging around.
jetson1 /~# dd if=/dev/zero of=.ddtest bs=1M count=1000 conv=fsync 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB, 1000 MiB) copied, 3.23678 s, 324 MB/s
@gtj0 Hi, thx for your amazing work with your guide for enabling the SPI you should have the real medal :). According to the pic I made it so far for the SPI. Now I just need to found out why I cannot get the package
Try the instructions from this post:
I'm not sure if that will work though because the official packages are built for armhf (32 bit) instead of aarch64 which is the Nano's architecture. I'm sure they'll publish the aarch64 packages when they get a chance but in the mean time if you need them, I have aarch64 builds which I can get to you.
in the mean time if you need them, I have aarch64 builds which I can get to you.
Oh you are so kind, yes I would like to have them - so you are running the Duet 3 with you Nano now?
@hanshogeland I don't have the Duet 3 just yet but I added a bunch of packaging support to the DSF to build the aarch64 packages so I have the packages I just build as a test.
Give me a few minutes as I have to upload them.
Here are the packages. It's the only way to get them for now I'm afraid.
wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duetcontrolserver_18.104.22.168_aarch64.deb wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duetruntime_22.214.171.124_aarch64.deb wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duetsd_1.0.1_all.deb wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duetsoftwareframework_126.96.36.199_aarch64.deb wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duettools_188.8.131.52_aarch64.deb wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duetwebcontrol_2.0.0-2_all.deb wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duetwebserver_184.108.40.206_aarch64.deb
@gtj0 Thank you so much! I will come back with the result
@gtj0 Thank you so much! I will come back with the result
Heh, hold on a sec. It looks like DSF 220.127.116.11 was just released. Let me package that up real quick.
OK for duetcontrolserver, duetruntime, duetsoftwareframework and duettools, substitute 18.104.22.168 with 22.214.171.124 in the file names.
@gtj0 thx, again I ran this sudo dpkg -i /home/hans/duetcontrolserver_126.96.36.199_aarch64.deb and received
@hanshogeland AH! Give me a minute.
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetcontrolserver_188.8.131.52_arm64.deb wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetruntime_184.108.40.206_arm64.deb wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetsd_1.0.1_all.deb wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetsoftwareframework_220.127.116.11_arm64.deb wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duettools_18.104.22.168_arm64.deb wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetwebcontrol_2.0.0-2_all.deb wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetwebserver_22.214.171.124_arm64.deb
@gtj0 Yes, they worked i succesfully managed to install all of them in this order:
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetcontrolserver_126.96.36.199_arm64.deb
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetruntime_188.8.131.52_arm64.deb
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetsd_1.0.1_all.deb
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetsoftwareframework_184.108.40.206_arm64.deb
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duettools_220.127.116.11_arm64.deb
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetwebcontrol_2.0.0-2_all.deb
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetwebserver_18.104.22.168_arm64.deb
Duet runtime need Curl
apt remove -y libcurl4 - If issues
apt install -y libcurl4 curl
Install in the following order:
sudo dpkg -i /home/user/duetruntime_22.214.171.124_arm64.deb
sudo dpkg -i /home/user/duetcontrolserver_126.96.36.199_arm64.deb
sudo dpkg -i /home/user/duetsd_1.0.1_all.deb
sudo dpkg -i /home/user/duetwebcontrol_2.0.0-2_all.deb
sudo dpkg -i /home/user/duetwebserver_188.8.131.52_arm64.deb
sudo dpkg -i /home/user/duettools_184.108.40.206_arm64.deb
sudo dpkg -i /home/user/duetsoftwareframework_220.127.116.11_arm64.deb
However when I start the serve i Get an error, maybe I need to setup the ip in a Json somewhere:
No, what probably happened is that the DuetWebServer is actually already running.
systemctl status DuetWebServer pgrep -fa Duet netstat -antp