Duet 3 and jetson Nano?
-
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...
https://github.com/gtjoseph/jetson-nano-support/tree/l4t_32.2.1 -
With a fan on top...
https://www.amazon.com/gp/product/B071FNHVXN/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1and an SSD shelld underneath...
https://www.amazon.com/gp/product/B07T9FQ293/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1The 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
Not bad.
-
@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:
https://forum.duet3d.com/topic/11980/reprapfirmware-3-0-first-official-beta-is-out/69I'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.
-
@gtj0 said in Duet 3 and jetson Nano?:
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_1.0.3.3_aarch64.deb wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duetruntime_1.0.3.3_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_1.0.3.3_aarch64.deb wget --no-check-certificate http://dueui.org/dsf/binary-aarch64/duettools_1.0.3.3_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_1.1.0.0_aarch64.deb
-
@gtj0 Thank you so much! I will come back with the result
-
@hanshogeland said in Duet 3 and jetson Nano?:
@gtj0 Thank you so much! I will come back with the result
Heh, hold on a sec. It looks like DSF 1.0.3.4 was just released. Let me package that up real quick.
-
OK for duetcontrolserver, duetruntime, duetsoftwareframework and duettools, substitute 1.0.3.3 with 1.0.3.4 in the file names.
-
@gtj0 thx, again I ran this sudo dpkg -i /home/hans/duetcontrolserver_1.0.3.4_aarch64.deb and received
-
@hanshogeland AH! Give me a minute.
-
Try these:
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetcontrolserver_1.0.3.4_arm64.deb wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetruntime_1.0.3.4_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_1.0.3.4_arm64.deb wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duettools_1.0.3.4_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_1.1.0.0_arm64.deb
-
@gtj0 Yes, they worked i succesfully managed to install all of them in this order:
Get Packages:
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetcontrolserver_1.0.3.4_arm64.deb
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duetruntime_1.0.3.4_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_1.0.3.4_arm64.deb
wget --no-check-certificate http://dueui.org/dsf/binary-arm64/duettools_1.0.3.4_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_1.1.0.0_arm64.debDuet runtime need Curl
apt remove -y libcurl4 - If issues
apt install -y libcurl4 curlInstall in the following order:
sudo dpkg -i /home/user/duetruntime_1.0.3.4_arm64.deb
sudo dpkg -i /home/user/duetcontrolserver_1.0.3.4_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_1.1.0.0_arm64.deb
sudo dpkg -i /home/user/duettools_1.0.3.4_arm64.deb
sudo dpkg -i /home/user/duetsoftwareframework_1.0.3.4_arm64.debHowever 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.
Try these...systemctl status DuetWebServer pgrep -fa Duet netstat -antp
-
Oh, the other thing is to set up the GPIO that tells the control server that the duet is alive...
Need another few minutes to find that.