Duet 3 and jetson Nano?



  • 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


  • administrators

    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.


  • administrators

    @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=1

    and an SSD shelld underneath...
    https://www.amazon.com/gp/product/B07T9FQ293/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

    0_1567887031943_IMG_20190907_125530_HDR.jpg

    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
    

    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 5d27bb21-9d93-415b-8deb-613b96aa32a1-image.png



  • Try the instructions from this post:
    https://forum.duet3d.com/topic/11980/reprapfirmware-3-0-first-official-beta-is-out/69

    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.



  • @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.


Log in to reply