Duet 3 and jetson Nano?
-
@jpomo10 Don't downgrade, the recommended RRF version is still 3.0. I just tried to use your
config.g
on my Duet 3 / Raspi and I can still execute commands when config.g has been processed. Also make sure the diag LED on the Duet 3 blinks when powered on.If the error message in the DCS log remains "no header" then I can only say that the Jetson does not receive any SPI data. Perhaps it's best to check your SPI connection once more.
-
@jpomo10 are you using the original 26pin to 40pin cable provided with the Duet3 or did you make one of your own?
-
Thank you for testing my config.g on your set-up.
For what it's worth, I've now tried this with a Rasp Pi running DuetPi & a Rasp Pi running Rasbian.
In both cases, I can connect to the Duet3 but cannot send gcode through DWC. That's more than I can say for the Jetson Nano, since it will not connect to the Duet at all, so I'll adjust the SPI frequency some more, as you suggested.
I also reflashed with the latest stable release of RRF 3.0. I used the binary file called "Duet3Firmware_MB6HC.bin". Communication with the board through YAT seems fine.
I'm using the original (26 to 40pin). Just to make sure I didn't somehow damage it at some point, I'll make a replacement.
UPDATE: Swapping the cable didn't make a difference
-
I'm beginning to think bad cable or bad Duet3.
-
@hanshogeland and I were just chatting about upgrading a Nano so...
Here's the latest device tree overlay file for the "b00" version of the Nano.
- Download the file to "/boot" removing the ".stl" extension.
- Run
/opt/nvidia/jetson-io/jetson-io.py
from a command prompt - Select "Configure Jetson for compatible hardware"
- Select "Dual SPIDEV"
- Select "Save and exit without rebooting"
- Double check that a new "Dual SPIDEV" entry was placed in /boot/extlinux/extlinux.conf
- Edit or move the entry as needed.
- Reboot
-
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?
-
@hanshogeland I'm investigating.
-
@gtj0 This is really odd. I'm getting the same error now. Should have it fixed shortly.
-
I think this'll fix it. ..
tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtbo.stl
tegra210-p3448-0000-p3449-0000-a02-single-spidev.dtbo.stlUse the appropriate one for your board and double check extlinux.conf after you use jetson-io.py.
-
@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.
-
@hanshogeland What's the output of
gpioinfo
. You may need to install gpiod to get that command.This is partial output of what I get...
line 11: unnamed unused input active-high line 12: "SPI1_MOSI" unused input active-high line 13: "SPI1_MISO" "dcs-trp-13" input active-high [used] 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
-
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
-
@hanshogeland
Did you install the DSF from the packages or do a manual install?How about the output of these commands:
$ ls -al /dev/gpio* $ sudo -iu dsf gpioget 0 13 $ cat /boot/extlinux/extlinux.conf
Also, try using this exact dtb instead of using the dtbo and jetson-io...
-
@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 -
@hanshogeland It looks like you've done everything right but there are some issues with jetson-io I think.
jetson-io should create the file
/boot/tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtb
from/boot/tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtbo
Double check that there IS a file in boot named
tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtb
In /boot/extlinux/extlinux.conf, the FDT entry should match the file name but it looks like in your conf file there's an extra
kernel_
prepended to the name...
FDT /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtb
Thekernel_
should NOT be there. It should be:
FDT /boot/tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtb
The name itself doesn't really matter as long as the FDT entry points to the correct file.
To use the full dtb I attached, just copy it to /boot/ and make sure the FDT entry points to it.
-
@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 -
This is really bizarre. I just rebooted a b00 unit with that exact dtb file.
Run...
$ md5sum tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtb bee35cc5ec5f1bb5eaafab30f1fbfea4 tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtb
Do you get that same md5 hash?
Try placing the FDT line in the top entry (primary) of extlinux.conf and and remove the whole "Single SPIDEV" at the bottom. Then change the default entry to primary. Your extlinux.conf should now look like this...
TIMEOUT 30 DEFAULT primary MENU TITLE L4T boot options LABEL primary MENU LABEL primary kernel LINUX /boot/Image INITRD /boot/initrd FDT /boot/tegra210-p3448-0000-p3449-0000-b00-single-spidev.dtb 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}
If that doesn't work, the only thing I can suggest as a next step is to connect to the serial console and watch the messages.
" dcs-trp-13" will only get placed there if the DCS can actually open that gpio so that's no big deal.
-
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
-
@hanshogeland Sorry! I didn't see your reply until just now.
This is really weird and I do not understand. You do NOT have to flash anything. You'll only get the "dcs-trp-13" and [used] if the duet control server is actually running and successfully opens that pin.
I'm retrying a few things with the latest 32.5.0 release of Linux for Tegra.
-
@hanshogeland OK, try this dtb...
tegra210-p3448-0000-p3449-0000-b00-user-custom.dtb.stl
I've tested it so it should work. Now I have to clean up all my tries and make sure I can reproduce it.