@gtj0 Success!! Thank you fior your hard work of making it work Iḿ truly grateful
Best posts made by hanshogeland
-
RE: Duet 3 and jetson Nano?
-
RE: Duet 3 Mainboard 6HC - initial production run.
@t3p3tony thx for the quick reply, yes we are eager to begin our journey. I need atleast 13 drivers so the Duet 3 is the choice
Latest posts made by hanshogeland
-
RE: Duet 3 and jetson Nano?
@gtj0 yes from this
gtj0 9 Feb 2021, 20:28
tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtbo.stl
tegra210-p3448-0000-p3449-0000-a02-single-spidev.dtbo.stlI just followed my previous described steps
-
RE: Duet 3 and jetson Nano?
@gtj0 yes So the Dual did not work, but the Single DTBO worked I did not need to make any additional changes than just using the Jetson IO configuration. Thank you so much!
-
RE: Duet 3 and jetson Nano?
@gtj0 thx again! to rule out any Duet board issue I tested with a RPI3B+ and it turns out I get an error there also. So I checked the cable, and that seems to be ok. I have reset and flashed the board with the latest firmware - and there was my verry stupid mistake I had not flashed with the correct BOSSA settings! So I flashed it correct and now It’s working on the RPI - I will get back for the result about the Jetson. And thx again for your help!
-
RE: Duet 3 and jetson Nano?
Thx for you effort, yes it was the same hash - so I take the .DTB and just put in the the boot/ dir and changed the exif to match the one you sent. Still it would not boot. Or do I need to flash?
However I tried again with the single DBTO file and I am thinking since I get the line 19: in the GPIOINFO to match the line 19 of yours with [used], it would be the case that the DBTO is actually read in. So are there any additional changes one could make to enable the line 13 like yours? I tried to look into the pinmux spreasheet however I am not there yet to be near to understand the configuration.line 12: "SPI1_MOSI" unused input active-high line 13: "SPI1_MISO" unused input active-high line 14: "SPI1_SCK" unused input active-high line 15: "SPI1_CS0" unused input active-high line 16: "SPI0_MOSI" unused input active-high line 17: "SPI0_MISO" unused input active-high line 18: "SPI0_SCK" unused input active-high line 19: "SPI0_CS0" "cs_gpio" output active-high [used] line 20: "SPI0_CS1" unused input active-high
-
RE: Duet 3 and jetson Nano?
@gtj0
Ok, so I tried to remove the kernel_ prexif and I checked that the dtb exist however it will not boot up using that dtb.
So I am thinking what are controlling or setting the name in the second column in the gpioinfo for pin 13 ( "dcs-trp-13" )? Since I cant find that anywhere in any dtb or dtbo.Thx again
//Hans -
RE: Duet 3 and jetson Nano?
@gtj0 Thx again,
Yes these are the results, I was not able to run sudo -iu dsf gpioget 0 13
hans@hans-desktop:~$ ls -al /dev/gpio* crw-rw---- 1 root gpio 254, 0 feb 11 11:59 /dev/gpiochip0 crw-rw---- 1 root gpio 254, 1 feb 11 11:59 /dev/gpiochip1 hans@hans-desktop:~$ sudo -iu dsf gpioget 0 13 sudo: /sbin/nologin: command not found hans@hans-desktop:~$ sudo gpioget 0 13 0 s-desktop:~$ cat /boot/extlinux/extlinux.conf TIMEOUT 30 DEFAULT Single SPIDEV MENU TITLE L4T boot options LABEL primary MENU LABEL primary kernel LINUX /boot/Image INITRD /boot/initrd APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 # When testing a custom kernel, it is recommended that you create a backup of # the original kernel and add a new entry to this file so that the device can # fallback to the original kernel. To do this: # # 1, Make a backup of the original kernel # sudo cp /boot/Image /boot/Image.backup # # 2, Copy your custom kernel into /boot/Image # # 3, Uncomment below menu setting lines for the original kernel # # 4, Reboot # LABEL backup # MENU LABEL backup kernel # LINUX /boot/Image.backup # INITRD /boot/initrd # APPEND ${cbootargs} LABEL Single SPIDEV MENU LABEL Single SPIDEV LINUX /boot/Image FDT /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtb INITRD /boot/initrd APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
So I have written down all the steps I have done during the setup
Flash Jetson SD with latest software Once started Add another Sudo user sudo adduser admin Install GIPIOD sudo apt-get update sudo apt-get install -y gpiod sudo groupadd gpiod sudo usermod -a -G gpiod hans Check Pins sudo gpioinfo Check Board info and Jetson IO https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/hw_setup_jetson_io.html Get Board info cat /sys/firmware/devicetree/base/compatible nvidia,p3449-0000-b00+p3448-0000-b00 nvidia,jetson-nano nvidia,tegra210 Download the correct DTBO https://forum.duet3d.com/topic/11777/duet-3-and-jetson-nano/87 Copy to boot sudo cp /home/hans/Downloads/tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtbo /boot/tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtbo Configure PIN sudo /opt/nvidia/jetson-io/jetson-io.py Select the corresponding DTBO - save and exit without reboot Check the boot extlinux has the correct changed DTBO name ReBoot Setup the DSF wget -q https://pkg.duet3d.com/duet3d.gpg wget -q https://pkg.duet3d.com/duet3d.list sudo mv duet3d.gpg /etc/apt/trusted.gpg.d/ sudo mv duet3d.list /etc/apt/sources.list.d/duet3d.list sudo chown root:root /etc/apt/trusted.gpg.d/duet3d.gpg sudo chown root:root /etc/apt/sources.list.d/duet3d.list Create a file /spidev.conf /etc/modprobe.d/spidev.conf options spidev bufsiz=8192 sudo cp /home/hans/Downloads/spidev.conf /etc/modprobe.d/spidev.conf Make sure the duet are connected to the Jetson Nano Install the DSF bundle: sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install duetsoftwareframework Copy the created config.json to other place and change to pin TramsferReadyPin 13 sudo cp /home/hans/Downloads/config.json /opt/dsf/conf/config.json Debug DSF hans@hans-desktop:~$ sudo /opt/dsf/bin/DuetControlServer -l debug Duet Control Server v3.2.0 Written by Christian Hammacher for Duet3D Licensed under the terms of the GNU Public License Version 3 [info] Settings loaded [info] Environment initialized [fatal] Could not connect to Duet (Timeout while waiting for transfer ready pin) [debug] System.OperationCanceledException: Timeout while waiting for transfer ready pin at DuetControlServer.SPI.DataTransfer.WaitForTransfer(Boolean inTransfer) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 1086 at DuetControlServer.SPI.DataTransfer.ExchangeHeader() in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 1148 at DuetControlServer.SPI.DataTransfer.PerformFullTransfer(Boolean connecting) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 162 at DuetControlServer.SPI.DataTransfer.Init() in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 104 at DuetControlServer.Program.Main(String[] args) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/Program.cs:line 113
Could you explain a bit more how I can run with the DTB instead?
Thx again for the help -
RE: Duet 3 and jetson Nano?
Thx,
This is part of the Output:
line 11: unnamed unused input active-high line 12: "SPI1_MOSI" unused input active-high line 13: "SPI1_MISO" unused input active-high line 14: "SPI1_SCK" unused input active-high line 15: "SPI1_CS0" unused input active-high line 16: "SPI0_MOSI" unused input active-high line 17: "SPI0_MISO" unused input active-high line 18: "SPI0_SCK" unused input active-high line 19: "SPI0_CS0" "cs_gpio" output active-high [used] line 20: "SPI0_CS1" unused input active-high line 21: unnamed unused input active-high line 22: unnamed unused input active-high
-
RE: Duet 3 and jetson Nano?
@gtj0
Thx, I tried with the b00 however I got the issue again:Duet Control Server v3.2.0 Written by Christian Hammacher for Duet3D Licensed under the terms of the GNU Public License Version 3 [info] Settings loaded [info] Environment initialized [fatal] Could not connect to Duet (Timeout while waiting for transfer ready pin) [debug] System.OperationCanceledException: Timeout while waiting for transfer ready pin at DuetControlServer.SPI.DataTransfer.WaitForTransfer(Boolean inTransfer) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 1086 at DuetControlServer.SPI.DataTransfer.ExchangeHeader() in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 1148 at DuetControlServer.SPI.DataTransfer.PerformFullTransfer(Boolean connecting) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 162 at DuetControlServer.SPI.DataTransfer.Init() in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 104 at DuetControlServer.Program.Main(String[] args) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/Program.cs:line 113
I have double checked the config, and I think the GPIO group settings rights where sat by DCS now.
-
RE: Duet 3 and jetson Nano?
Thank you verry much!
*Updated this post, since I hade the wrong config for the ready pin so Iǘe changed to pin 13 as it should be.
I have ran the .py and verified the .conf however I get an error starting the DCS stating:
hans@hans-desktop:~$ sudo /opt/dsf/bin/DuetControlServer -l debug Duet Control Server v3.2.0 Written by Christian Hammacher for Duet3D Licensed under the terms of the GNU Public License Version 3 [info] Settings loaded [info] Environment initialized [fatal] Could not connect to Duet (Timeout while waiting for transfer ready pin) [debug] System.OperationCanceledException: Timeout while waiting for transfer ready pin at DuetControlServer.SPI.DataTransfer.WaitForTransfer(Boolean inTransfer) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 1086 at DuetControlServer.SPI.DataTransfer.ExchangeHeader() in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 1148 at DuetControlServer.SPI.DataTransfer.PerformFullTransfer(Boolean connecting) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 162 at DuetControlServer.SPI.DataTransfer.Init() in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 104 at DuetControlServer.Program.Main(String[] args) in /home/christian/Duet3D/DuetSoftwareFramework/src/DuetControlServer/Program.cs:line 113
This is how it looks like in the Jetson IO
=================== Jetson Expansion Header Tool =================== | | | | | 3.3V ( 1) ( 2) 5V | | i2c2 ( 3) ( 4) 5V | | i2c2 ( 5) ( 6) GND | | unused ( 7) ( 8) uartb | | GND ( 9) (10) uartb | | unused (11) (12) unused | | spi2 (13) (14) GND | | unused (15) (16) spi2 | | 3.3V (17) (18) spi2 | | spi1 (19) (20) GND | | spi1 (21) (22) spi2 | | spi1 (23) (24) spi1 | | GND (25) (26) spi1 | | i2c1 (27) (28) i2c1 | | unused (29) (30) GND | | unused (31) (32) unused | | unused (33) (34) GND | | unused (35) (36) unused | | spi2 (37) (38) unused | | GND (39) (40) unused | | | | | | | | Select one of the following options: | | | | Configure Jetson for compatible hardware | | Configure 40-pin expansion header | | Exit | | | | | | | | | | | | | ====================================================================
The extlinux,conf
TIMEOUT 30 DEFAULT Dual SPIDEV MENU TITLE L4T boot options LABEL primary MENU LABEL primary kernel LINUX /boot/Image INITRD /boot/initrd APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 # When testing a custom kernel, it is recommended that you create a backup of # the original kernel and add a new entry to this file so that the device can # fallback to the original kernel. To do this: # # 1, Make a backup of the original kernel # sudo cp /boot/Image /boot/Image.backup # # 2, Copy your custom kernel into /boot/Image # # 3, Uncomment below menu setting lines for the original kernel # # 4, Reboot # LABEL backup # MENU LABEL backup kernel # LINUX /boot/Image.backup # INITRD /boot/initrd # APPEND ${cbootargs} LABEL MCP251x CAN Controller MENU LABEL MCP251x CAN Controller LINUX /boot/Image FDT /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-mcp251x-can-controller.dtb INITRD /boot/initrd APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 LABEL FE-PI Audio V1 and Z V2 MENU LABEL FE-PI Audio V1 and Z V2 LINUX /boot/Image FDT /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-fe-pi-audio-v1-and-z-v2.dtb INITRD /boot/initrd APPEND ${cbootargs} LABEL Dual SPIDEV MENU LABEL Dual SPIDEV LINUX /boot/Image FDT /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-dual-spidev.dtb INITRD /boot/initrd APPEND ${cbootargs}
The Config.json
{ "PluginsFilename": "/opt/dsf/conf/plugins.txt", "InstallPackageCommand": "/usr/bin/apt-get", "InstallPackageArguments": "install -y {package}", "LogLevel": "debug", "SocketDirectory": "/var/run/dsf", "SocketFile": "dcs.sock", "Backlog": 4, "SocketPollInterval": 2000, "BaseDirectory": "/opt/dsf/sd", "PluginDirectory": "/opt/dsf/plugins", "NoTerminateOnReset": false, "HostUpdateInterval": 4000, "MaxMessageAge": 60, "SpiDevice": "/dev/spidev0.0", "SpiBufferSize": 8192, "SpiTransferMode": 0, "SpiFrequency": 500000, "SpiConnectTimeout": 500, "SpiTransferTimeout": 500, "SpiConnectionTimeout": 4000, "MaxSpiRetries": 3, "SpiPollDelay": 25, "GpioChipDevice": "/dev/gpiochip0", "TransferReadyPin": 13, "BufferedPrintCodes": 32, "BufferedMacroCodes": 16, "MaxBufferSpacePerChannel": 1536, "MaxCodeBufferSize": 256, "MaxMessageLength": 4096, "FirmwareComments": [ "printing object", "MESH", "process", "stop printing object", "layer", "LAYER", "BEGIN_LAYER_OBJECT z=", "HEIGHT" ], "ModelUpdateInterval": 250, "MaxMachineModelLockTime": -1, "FileBufferSize": 8192, "FileInfoReadLimitHeader": 12288, "FileInfoReadLimitFooter": 262144, "MaxLayerHeight": 0.9, "LayerHeightFilters": [ { "Pattern": "^\\s*layer_height\\D+(?<mm>(\\d+\\.?\\d*))", "Options": 17 }, { "Pattern": "Layer height\\D+(?<mm>(\\d+\\.?\\d*))", "Options": 17 }, { "Pattern": "layerHeight\\D+(?<mm>(\\d+\\.?\\d*))", "Options": 17 }, { "Pattern": "layer_thickness_mm\\D+(?<mm>(\\d+\\.?\\d*))", "Options": 17 }, { "Pattern": "layerThickness\\D+(?<mm>(\\d+\\.?\\d*))", "Options": 17 } ], "FilamentFilters": [ { "Pattern": "filament used\\D+(((?<mm>\\d+\\.?\\d*)mm)(\\D+)?)+", "Options": 17 }, { "Pattern": "filament used\\D+(((?<m>\\d+\\.?\\d*)m([^m]|$))(\\D+)?)+", "Options": 17 }, { "Pattern": "filament length\\D+(((?<mm>\\d+\\.?\\d*)\\s*mm)(\\D+)?)+", "Options": 17 }, { "Pattern": "filament used \\[mm\\]\\D+((?<mm>\\d+\\.?\\d*)(\\D+)?)+", "Options": 17 }, { "Pattern": "material\\#\\d+\\D+(?<mm>\\d+\\.?\\d*)", "Options": 17 }, { "Pattern": "Filament used per extruder:\\r\\n;\\s*(?<name>.+)\\s+=\\s*(?<mm>[0-9.]+)", "Options": 17 } ], "GeneratedByFilters": [ { "Pattern": "generated by\\s+(.+)", "Options": 17 }, { "Pattern": "Sliced by\\s+(.+)", "Options": 17 }, { "Pattern": "(KISSlicer.*)", "Options": 17 }, { "Pattern": "Sliced at:\\s*(.+)", "Options": 17 }, { "Pattern": "Generated with\\s*(.+)", "Options": 17 } ], "PrintTimeFilters": [ { "Pattern": "estimated printing time .*= ((?<h>(\\d+))h\\s*)?((?<m>(\\d+))m\\s*)?((?<s>(\\d+))s)?", "Options": 17 }, { "Pattern": "TIME:(?<s>(\\d+\\.?\\d*))", "Options": 17 }, { "Pattern": "Build time: ((?<h>\\d+) hour(s)?\\s*)?((?<m>\\d+) minute(s)?\\s*)?((?<s>(\\d+) second(s)?))?", "Options": 17 }, { "Pattern": "Estimated Build Time:\\s+((?<h>(\\d+\\.?\\d*)) hour(s)?\\s*)?((?<m>(\\d+\\.?\\d*)) minute(s)?\\s*)?((?<s>(\\d+\\.?\\d*)) second(s)?)?", "Options": 17 } ], "SimulatedTimeFilters": [ { "Pattern": "Simulated print time\\D+(?<s>(\\d+\\.?\\d*))", "Options": 17 } ] }
I noticed in the dtbo file the Tri-state value are ending with 0 is this ok?
**** fdtdump is a low-level debugging tool, not meant for general use. **** If you want to decompile a dtb, you probably want **** dtc -I dtb -O dts <filename> /dts-v1/; // magic: 0xd00dfeed // totalsize: 0xb06 (2822) // off_dt_struct: 0x38 // off_dt_strings: 0xa14 // off_mem_rsvmap: 0x28 // version: 17 // last_comp_version: 16 // boot_cpuid_phys: 0x0 // size_dt_strings: 0xf2 // size_dt_struct: 0x9dc / { overlay-name = "Dual SPIDEV"; compatible = "nvidia,p3449-0000-b00+p3448-0000-b00", "nvidia,p3449-0000-a02+p3448-0000-a02"; fragment@pinmux { target = <0xffffffff>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <0x00000001>; header-40pin-pinmux { phandle = <0x00000001>; pin19 { nvidia,function = "spi1"; nvidia,pins = "spi1_mosi_pc0"; nvidia,pull = <0x00000001>; nvidia,tristate = <0x00000000>; nvidia,enable-input = <0x00000000>; }; pin21 { nvidia,function = "spi1"; nvidia,pins = "spi1_miso_pc1"; nvidia,pull = <0x00000000>; nvidia,tristate = <0x00000001>; nvidia,enable-input = <0x00000001>; }; pin23 { nvidia,function = "spi1"; nvidia,pins = "spi1_sck_pc2"; nvidia,pull = <0x00000001>; nvidia,tristate = <0x00000000>; nvidia,enable-input = <0x00000000>; }; pin24 { nvidia,function = "spi1"; nvidia,pins = "spi1_cs0_pc3"; nvidia,pull = <0x00000002>; nvidia,tristate = <0x00000000>; nvidia,enable-input = <0x00000000>; }; pin26 { nvidia,function = "spi1"; nvidia,pins = "spi1_cs1_pc4"; nvidia,pull = <0x00000002>; nvidia,tristate = <0x00000000>; nvidia,enable-input = <0x00000000>; }; pin37 { nvidia,function = "spi2"; nvidia,pins = "spi2_mosi_pb4"; nvidia,pull = <0x00000001>; nvidia,tristate = <0x00000000>; nvidia,enable-input = <0x00000000>; }; pin22 { nvidia,function = "spi2"; nvidia,pins = "spi2_miso_pb5"; nvidia,pull = <0x00000000>; nvidia,tristate = <0x00000001>; nvidia,enable-input = <0x00000001>; }; pin13 { nvidia,function = "spi2"; nvidia,pins = "spi2_sck_pb6"; nvidia,pull = <0x00000001>; nvidia,tristate = <0x00000000>; nvidia,enable-input = <0x00000000>; }; pin18 { nvidia,function = "spi2"; nvidia,pins = "spi2_cs0_pb7"; nvidia,pull = <0x00000002>; nvidia,tristate = <0x00000000>; nvidia,enable-input = <0x00000000>; }; pin16 { nvidia,function = "spi2"; nvidia,pins = "spi2_cs1_pdd0"; nvidia,pull = <0x00000002>; nvidia,tristate = <0x00000000>; nvidia,enable-input = <0x00000000>; }; }; }; }; fragment@spi0 { target = <0xffffffff>; __overlay__ { status = "okay"; nvidia,polling-mode; prod-settings { status = "disabled"; prod { prod; }; }; spi@0 { compatible = "spidev"; status = "okay"; reg = <0x00000000>; spi-max-frequency = <0x0337f980>; controller-data { nvidia,enable-hw-based-cs; }; }; spi@1 { compatible = "spidev"; status = "okay"; reg = <0x00000001>; spi-max-frequency = <0x0337f980>; controller-data { nvidia,enable-hw-based-cs; }; }; }; }; fragment@spi1 { target = <0xffffffff>; __overlay__ { status = "okay"; nvidia,polling-mode; prod-settings { status = "disabled"; prod { prod; }; }; spi@0 { compatible = "spidev"; status = "okay"; reg = <0x00000000>; spi-max-frequency = <0x0337f980>; controller-data { nvidia,enable-hw-based-cs; }; }; spi@1 { compatible = "spidev"; status = "okay"; reg = <0x00000001>; spi-max-frequency = <0x0337f980>; controller-data { nvidia,enable-hw-based-cs; }; }; }; }; __symbols__ { hdr40_pinmux = "/fragment@pinmux/__overlay__/header-40pin-pinmux"; }; __fixups__ { pinmux = "/fragment@pinmux:target:0"; spi0 = "/fragment@spi0:target:0"; spi1 = "/fragment@spi1:target:0"; }; __local_fixups__ { fragment@pinmux { __overlay__ { pinctrl-0 = <0x00000000>; }; }; }; };
Any idea if there is something more I need to configure?