Jetson Nano (SD DevBoard) 32.5.1 PinMux Changes?

I have followed the instructions to use the Excel sheet to modify the PinMux for the Jetson Nano. Since we eventually will move off of a DevBoard we are using the full PinMux file and not the 40 Pin one.

I copy the files into the Linux dev box under the hardware source tree and run:
make ARCH=arm64 tegra_defconfig
make ARCH=arm65 dtbs

then I copy the arch/arm64/boot/dts/tegra210-p3448-0000-p3449-0000-b00.dtb to the kernel/dtb/

then I run jetson-disk-image-creator,sh -b jetson-nano -r 300

This creates an image that I can flash onto the sd card and boot the Jetson Nano with.

However the GPIO pins do not behave as we expect them to and if I inspect the /proc/device-tree/ with dtc I see very different configurations then what we are expecting, but they seem to match the signals we see on the board.

The easy check is that we disable Pin8 in our PinMux but it is still being pulled up after inserting the SD card and booting.

I feel like I am missing a piece of the puzzle here or not understanding how to tell if our changes are working. (Our pin is not being pulled to 0 when it has an external source so that much is definitely still broken. The same circuit works on a RPi)

I did try another document that explained how to change the u-boot configuration and recompile it with the csv. I tried this and still no change, but I was reading that u-boot changes don’t need to be made in 32.5, is this true?

I would really appreciate some help with this.

hello joseph-jonathan.salzano,

you may Flashing a Specific Partition instead of flashing the whole device by using the command line, ‑k switch.
for example,
it’s $ sudo ./flash.sh -k DTB ... to update device tree blob for the Nano platforms.

Make sure the /boot/extlinux/extlinux.conf file in your image doesn’t have an FDT entry or that you copy your customized tegra210-p3448-0000-p3449-0000-b00.dtb to /boot/ in the image and set the FDT entry to point to it.

We were not using the flash script because we don’t currently have the 5V jack. We were doing all of our flashing to the SD card and then inserting it into the DevBox.

Is this the issue? Do I have to use the flash script for this to work? I have a 5V jack ordered and will try again when it gets here.

The custom dtb file is deffinitly in /boot/ and I can uncompile it and confirm it is the one I generated with the PinMux spreadsheet. I don’t see an FDT entry in extlinux.conf either. I will try and add it. I didn’t see this step anywhere in the user guides for PinMux. Is this something that I should just know? Linux Kernel building is a relatively new area for me personally.

This could also be the issue. R32.5 changes the default location for the bootloader files from the SDcard to the internal 4MB QSPI-NOR flash. If you’re flashing to an SDcard connected to the host, you won’t be loading your DTB. Use parted ( or another partitioning tool ) to look at the layout of the SDcard and post the result here.

Given the above, adding the FDT entry will probably fix the issue for you. Just having it in /boot doesn’t do anything by itself.

I was able to get the flash.sh script to flash my Jetson Nano. I had to switch to a different USB chord before it would detect my devboard.

Anyway, I performed the flash and the cat of /proc/device-tree/nvidia,dtsfilename still shows the one from git-master_linux and not the one that I generated. The dtbbuildtime also still shows February when my dtb was built today. I used a multimeter and I am still seeing 3.3V on pin 8 which we disabled.

I then edited the extlinux.conf file to include:
FTD /boot/tegra210-p3448-0000-p3349-0000-b00.dtb

I rebooted the Jetson and when it comes back up the extlinux file is still changed but nothing else has. The /proc/device-tree/ values are the same and I still see 3.3V on pin8

hello joseph-jonathan.salzano,

you have a typo, it should be FDT.
please also check kernel logs to confirm which device tree is used,
for example, $ dmesg | grep DTS

Sorry that was a typo on the forum. I doublechecked and I do have FDT on the Jetson.

The output from dmesg | grep DTS is:

[    0.232824] DTS File Name: /dvs/git/dirty/git-master_linux/kernel/kernel-4.9/arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dts
[    0.445082] DTS File Name: /dvs/git/dirty/git-master_linux/kernel/kernel-4.9/arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dts

I think we need to see the bootloader messages from the UART/TCU port on the front panel header.

Very early in the bootloader process you should see something like…

[0001.761] Debug Init done
[0001.764] Marked DTB cacheable
[0001.767] Bootloader DTB loaded at 0x83000000
[0001.772] Marked DTB cacheable
[0001.774] Kernel DTB loaded at 0x83100000
[0001.778] DeviceTree Init done

Then just before u-boot starts the kernel, you should see…

## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
ERROR: reserving fdt memory region failed (addr=0 size=0)
ERROR: reserving fdt memory region failed (addr=0 size=0)
   Using Device Tree in place at 0000000083000000, end 000000008303e659
copying carveout for /host1x@50000000/dc@54200000...
copying carveout for /host1x@50000000/dc@54240000...

If you see Flattened Device Tree blob at 83000000 like above, then the kernel is using the FDT that was supplied in the extlinux.conf file. If you see address 83100000, then it’s using the one c-boot loaded from the QSPI-NOR flash.

Either way, check for error messages.

but both the one on QSPI and the FDT one should be the same right?

How do you get the bootloader messages?

hello joseph-jonathan.salzano,

according to comment #11, it seems kernel still uses the default device tree blob instead of yours.
btw, you should follow https://www.jetsonhacks.com/2019/10/10/jetson-nano-uart/ to setup serial console to gather bootloader messages.
thanks

I don’t have access to extra hardware right now. Getting a 5V jack was hard enough where I am right now. So I won’t be able to get the bootloader messages for at least a couple weeks.

However, I want to make sure that my steps are correct to change the PinMux because so far it seems that the documentation isn’t complete if we have to be changing the extlinux.conf file.

If we have a brand new environment this is what I assumed has to happen:

  1. Make changes to NV_Jetson_Nano_Module_Pinmux_Config_Template.xlsm
  2. Generate the DT file with the button in excel
  3. Copy tegra210-jetson_nano_module-gpio-default.dtsi to Linux_for_Tegra/sources/hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-gpio-p3448-0000-b00.dtsi
  4. Copy ‘tegra210-jetson_nano_module-pinmux.dtsi’ to Linux_for_Tegra/sources/hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-pinmux-p3448-0000-b00.dtsi
  5. In Linux_for_Tegra/sources/kernel/kernel-4.9/ run:
    make ARCH=arm64 tegra_defconfig
    make ARCH=arm65 dtbs
    
  6. Copy Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/boot/dts/tegra210-p3448-0000-p3449-0000-b00.dtb to Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb
  7. run sudo ./flash.sh jetson-nano-qspi-sd mmcblk0p1
  8. Boot the Jetson Nano
  9. The disabled pin #8 should read 0V
  10. The value of /proc/device-tree/nvidia,dtbbuildtime should read the day I built the kernel
  11. The value of /proc/device-tree/nvidia,dtsfilename should show my directory structure

Are these steps correct? This seems to be what is required from reading the documentation. If I am missing a step can you tell me so I can try it while I wait to get access to a serial cable?

You’d think so.

They appear to be but lets test a few things…

In the L4T/bootloader directory, you should see these files…
kernel_tegra210-p3448-0000-p3449-0000-b00.dtb
kernel_tegra210-p3448-0000-p3449-0000-b00.dtb.sb
tegra210-p3448-0000-p3449-0000-b00.dtb

The .sb file should be the dtb file you compiled. Make sure it is.
The two .dtb files are the signed versions.

If you do hexdump -Cn1500 on the .sb file you should see something like…

00000000  d0 0d fe ed 00 03 b6 5a  00 00 00 48 00 03 6f bc  |.......Z...H..o.|
00000010  00 00 00 28 00 00 00 11  00 00 00 10 00 00 00 00  |...(............|
00000020  00 00 46 9e 00 03 6f 74  00 00 00 00 80 00 00 00  |..F...ot........|
00000030  00 00 00 00 00 02 00 00  00 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
00000050  00 00 00 03 00 00 00 48  00 00 00 00 6e 76 69 64  |.......H....nvid|
00000060  69 61 2c 70 33 34 34 39  2d 30 30 30 30 2d 62 30  |ia,p3449-0000-b0|
00000070  30 2b 70 33 34 34 38 2d  30 30 30 30 2d 62 30 30  |0+p3448-0000-b00|
00000080  00 6e 76 69 64 69 61 2c  6a 65 74 73 6f 6e 2d 6e  |.nvidia,jetson-n|
00000090  61 6e 6f 00 6e 76 69 64  69 61 2c 74 65 67 72 61  |ano.nvidia,tegra|
000000a0  32 31 30 00 00 00 00 03  00 00 00 04 00 00 00 0b  |210.............|
000000b0  00 00 00 01 00 00 00 03  00 00 00 04 00 00 00 1c  |................|
000000c0  00 00 00 02 00 00 00 03  00 00 00 04 00 00 00 2b  |...............+|
000000d0  00 00 00 02 00 00 00 03  00 00 00 15 00 00 00 37  |...............7|
000000e0  46 65 62 20 32 36 20 32  30 32 31 00 32 32 3a 35  |Feb 26 2021.22:5|
000000f0  34 3a 34 36 00 00 00 00  00 00 00 03 00 00 00 05  |4:46............|

That;s the start of a normal dtb file.

If you do hexdump -Cn1500 on each of the dtb files, you should see something like…

00000000  00 00 00 00 44 54 42 00  60 ba 03 00 00 00 00 00  |....DTB.`.......|
00000010  b1 ba ef be ad de ed fe  aa aa aa aa aa aa aa aa  |................|
00000020  aa aa aa aa aa aa aa aa  aa aa aa aa aa aa aa aa  |................|
...
00000450  00 00 00 03 00 00 00 48  00 00 00 00 6e 76 69 64  |.......H....nvid|
00000460  69 61 2c 70 33 34 34 39  2d 30 30 30 30 2d 62 30  |ia,p3449-0000-b0|
00000470  30 2b 70 33 34 34 38 2d  30 30 30 30 2d 62 30 30  |0+p3448-0000-b00|
00000480  00 6e 76 69 64 69 61 2c  6a 65 74 73 6f 6e 2d 6e  |.nvidia,jetson-n|
00000490  61 6e 6f 00 6e 76 69 64  69 61 2c 74 65 67 72 61  |ano.nvidia,tegra|
000004a0  32 31 30 00 00 00 00 03  00 00 00 04 00 00 00 0b  |210.............|
000004b0  00 00 00 01 00 00 00 03  00 00 00 04 00 00 00 1c  |................|
000004c0  00 00 00 02 00 00 00 03  00 00 00 04 00 00 00 2b  |...............+|
000004d0  00 00 00 02 00 00 00 03  00 00 00 15 00 00 00 37  |...............7|
000004e0  46 65 62 20 32 36 20 32  30 32 31 00 32 32 3a 35  |Feb 26 2021.22:5|
000004f0  34 3a 34 36 00 00 00 00  00 00 00 03 00 00 00 05  |4:46............|

The first part is the signature, then at offset 00000450 should be the start of the dtb which should look exactly like the dump from the .sb file.

So I’d verify those first.

Then , on the running nano run the following commands…

sudo mtdpart add /dev/mtd0 RP1 851968 327680
sudo mtdpart add /dev/mtd0 DXB 2555904 327680
cat /proc/mtd

Those commands will create device nodes in /dev for the two partitions in the QSPI-NOR flash that contain the dtb.

Now run…

hexdump /Cn1500 /dev/mtd1
hexdump /Cn1500 /dev/mtd2

Both partition contents and both .dtb files should match exactly.

Ok so I might have found where my issue is (Still don’t know how I should go about fixing it). In the dump of the .sb file I have this:

00000000  d0 0d fe ed 00 03 b6 8e  00 00 00 48 00 03 6f f0  |...........H..o.|
00000010  00 00 00 28 00 00 00 11  00 00 00 10 00 00 00 00  |...(............|
00000020  00 00 46 9e 00 03 6f a8  00 00 00 00 80 00 00 00  |..F...o.........|
00000030  00 00 00 00 00 02 00 00  00 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
00000050  00 00 00 03 00 00 00 48  00 00 00 00 6e 76 69 64  |.......H....nvid|
00000060  69 61 2c 70 33 34 34 39  2d 30 30 30 30 2d 62 30  |ia,p3449-0000-b0|
00000070  30 2b 70 33 34 34 38 2d  30 30 30 30 2d 62 30 30  |0+p3448-0000-b00|
00000080  00 6e 76 69 64 69 61 2c  6a 65 74 73 6f 6e 2d 6e  |.nvidia,jetson-n|
00000090  61 6e 6f 00 6e 76 69 64  69 61 2c 74 65 67 72 61  |ano.nvidia,tegra|
000000a0  32 31 30 00 00 00 00 03  00 00 00 04 00 00 00 0b  |210.............|
000000b0  00 00 00 01 00 00 00 03  00 00 00 04 00 00 00 1c  |................|
000000c0  00 00 00 02 00 00 00 03  00 00 00 04 00 00 00 2b  |...............+|
000000d0  00 00 00 02 00 00 00 03  00 00 00 15 00 00 00 37  |...............7|
000000e0  46 65 62 20 31 39 20 32  30 32 31 00 30 38 3a 34  |Feb 19 2021.08:4|
000000f0  32 3a 34 31 00 00 00 00  00 00 00 03 00 00 00 05  |2:41............|
00000100  00 00 00 4b 33 34 34 38  00 00 00 00 00 00 00 03  |...K3448........|
00000110  00 00 00 05 00 00 00 5b  33 34 34 38 00 00 00 00  |.......[3448....|
00000120  00 00 00 03 00 00 00 05  00 00 00 6f 33 34 34 38  |...........o3448|
00000130  00 00 00 00 00 00 00 03  00 00 00 04 00 00 00 82  |................|
00000140  00 00 b4 42 00 00 00 03  00 00 00 21 00 00 00 9a  |...B.......!....|
00000150  4e 56 49 44 49 41 20 4a  65 74 73 6f 6e 20 4e 61  |NVIDIA Jetson Na|
00000160  6e 6f 20 44 65 76 65 6c  6f 70 65 72 20 4b 69 74  |no Developer Kit|
00000170  00 00 00 00 00 00 00 03  00 00 00 ad 00 00 00 a0  |................|
00000180  2f 64 76 73 2f 67 69 74  2f 64 69 72 74 79 2f 67  |/dvs/git/dirty/g|
00000190  69 74 2d 6d 61 73 74 65  72 5f 6c 69 6e 75 78 2f  |it-master_linux/|
000001a0  6b 65 72 6e 65 6c 2f 6b  65 72 6e 65 6c 2d 34 2e  |kernel/kernel-4.|
000001b0  39 2f 61 72 63 68 2f 61  72 6d 36 34 2f 62 6f 6f  |9/arch/arm64/boo|
000001c0  74 2f 64 74 73 2f 2e 2e  2f 2e 2e 2f 2e 2e 2f 2e  |t/dts/../../../.|
000001d0  2e 2f 2e 2e 2f 2e 2e 2f  68 61 72 64 77 61 72 65  |./../../hardware|
000001e0  2f 6e 76 69 64 69 61 2f  70 6c 61 74 66 6f 72 6d  |/nvidia/platform|
000001f0  2f 74 32 31 30 2f 70 6f  72 67 2f 6b 65 72 6e 65  |/t210/porg/kerne|
00000200  6c 2d 64 74 73 2f 74 65  67 72 61 32 31 30 2d 70  |l-dts/tegra210-p|
00000210  33 34 34 38 2d 30 30 30  30 2d 70 33 34 34 39 2d  |3448-0000-p3449-|
00000220  30 30 30 30 2d 62 30 30  2e 64 74 73 00 00 00 00  |0000-b00.dts....|
00000230  00 00 00 01 74 68 65 72  6d 61 6c 2d 7a 6f 6e 65  |....thermal-zone|
00000240  73 00 00 00 00 00 00 01  41 4f 2d 74 68 65 72 6d  |s.......AO-therm|
00000250  00 00 00 00 00 00 00 03  00 00 00 05 00 00 00 b3  |................|
00000260  6f 6b 61 79 00 00 00 00  00 00 00 03 00 00 00 04  |okay............|
00000270  00 00 00 ba 00 00 03 e8  00 00 00 03 00 00 00 04  |................|
00000280  00 00 00 c8 00 00 03 e8  00 00 00 03 00 00 00 04  |................|
00000290  00 00 00 de 00 00 00 02  00 00 00 01 74 72 69 70  |............trip|
000002a0  73 00 00 00 00 00 00 01  74 72 69 70 5f 73 68 75  |s.......trip_shu|
000002b0  74 64 6f 77 6e 00 00 00  00 00 00 03 00 00 00 04  |tdown...........|
000002c0  00 00 00 ee 00 01 ad b0  00 00 00 03 00 00 00 04  |................|
000002d0  00 00 00 fa 00 00 00 00  00 00 00 03 00 00 00 09  |................|
000002e0  00 00 01 05 63 72 69 74  69 63 61 6c 00 00 00 00  |....critical....|
000002f0  00 00 00 03 00 00 00 00  00 00 01 0a 00 00 00 02  |................|
00000300  00 00 00 01 67 70 75 2d  73 63 61 6c 69 6e 67 30  |....gpu-scaling0|
00000310  00 00 00 00 00 00 00 03  00 00 00 04 00 00 00 ee  |................|
00000320  ff ff 9e 58 00 00 00 03  00 00 00 04 00 00 00 fa  |...X............|
00000330  00 00 00 00 00 00 00 03  00 00 00 07 00 00 01 05  |................|
00000340  61 63 74 69 76 65 00 00  00 00 00 03 00 00 00 04  |active..........|
00000350  00 00 01 13 00 00 00 ac  00 00 00 03 00 00 00 04  |................|
00000360  00 00 01 19 00 00 00 ac  00 00 00 02 00 00 00 01  |................|
00000370  67 70 75 2d 73 63 61 6c  69 6e 67 31 00 00 00 00  |gpu-scaling1....|
00000380  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 3a 98  |..............:.|
00000390  00 00 00 03 00 00 00 04  00 00 00 fa 00 00 03 e8  |................|
000003a0  00 00 00 03 00 00 00 07  00 00 01 05 61 63 74 69  |............acti|
000003b0  76 65 00 00 00 00 00 03  00 00 00 04 00 00 01 13  |ve..............|
000003c0  00 00 00 03 00 00 00 03  00 00 00 04 00 00 01 19  |................|
000003d0  00 00 00 03 00 00 00 02  00 00 00 01 67 70 75 2d  |............gpu-|
000003e0  73 63 61 6c 69 6e 67 32  00 00 00 00 00 00 00 03  |scaling2........|
000003f0  00 00 00 04 00 00 00 ee  00 00 75 30 00 00 00 03  |..........u0....|
00000400  00 00 00 04 00 00 00 fa  00 00 03 e8 00 00 00 03  |................|
00000410  00 00 00 07 00 00 01 05  61 63 74 69 76 65 00 00  |........active..|
00000420  00 00 00 03 00 00 00 04  00 00 01 13 00 00 00 05  |................|
00000430  00 00 00 03 00 00 00 04  00 00 01 19 00 00 00 05  |................|
00000440  00 00 00 02 00 00 00 01  67 70 75 2d 73 63 61 6c  |........gpu-scal|
00000450  69 6e 67 33 00 00 00 00  00 00 00 03 00 00 00 04  |ing3............|
00000460  00 00 00 ee 00 00 c3 50  00 00 00 03 00 00 00 04  |.......P........|
00000470  00 00 00 fa 00 00 03 e8  00 00 00 03 00 00 00 07  |................|
00000480  00 00 01 05 61 63 74 69  76 65 00 00 00 00 00 03  |....active......|
00000490  00 00 00 04 00 00 01 13  00 00 00 06 00 00 00 03  |................|
000004a0  00 00 00 04 00 00 01 19  00 00 00 06 00 00 00 02  |................|
000004b0  00 00 00 01 67 70 75 2d  73 63 61 6c 69 6e 67 34  |....gpu-scaling4|
000004c0  00 00 00 00 00 00 00 03  00 00 00 04 00 00 00 ee  |................|
000004d0  00 01 11 70 00 00 00 03  00 00 00 04 00 00 00 fa  |...p............|
000004e0  00 00 03 e8 00 00 00 03  00 00 00 07 00 00 01 05  |................|
000004f0  61 63 74 69 76 65 00 00  00 00 00 03 00 00 00 04  |active..........|
00000500  00 00 01 13 00 00 00 07  00 00 00 03 00 00 00 04  |................|
00000510  00 00 01 19 00 00 00 07  00 00 00 02 00 00 00 01  |................|
00000520  67 70 75 2d 73 63 61 6c  69 6e 67 35 00 00 00 00  |gpu-scaling5....|
00000530  00 00 00 03 00 00 00 04  00 00 00 ee 00 01 9a 28  |...............(|
00000540  00 00 00 03 00 00 00 04  00 00 00 fa 00 00 03 e8  |................|
00000550  00 00 00 03 00 00 00 07  00 00 01 05 61 63 74 69  |............acti|
00000560  76 65 00 00 00 00 00 03  00 00 00 04 00 00 01 13  |ve..............|
00000570  00 00 00 08 00 00 00 03  00 00 00 04 00 00 01 19  |................|
00000580  00 00 00 08 00 00 00 02  00 00 00 01 67 70 75 2d  |............gpu-|
00000590  76 6d 61 78 31 00 00 00  00 00 00 03 00 00 00 04  |vmax1...........|
000005a0  00 00 00 ee 00 01 44 38  00 00 00 03 00 00 00 04  |......D8........|
000005b0  00 00 00 fa 00 00 03 e8  00 00 00 03 00 00 00 07  |................|
000005c0  00 00 01 05 61 63 74 69  76 65 00 00 00 00 00 03  |....active......|
000005d0  00 00 00 04 00 00 01 13  00 00 00 09              |............|

on the regular .dtb I have this:

00000000  00 00 00 00 44 54 42 00  50 ba 03 00 00 00 00 00  |....DTB.P.......|
00000010  b1 ba ef be ad de ed fe  aa aa aa aa aa aa aa aa  |................|
00000020  aa aa aa aa aa aa aa aa  aa aa aa aa aa aa aa aa  |................|
*
00000110  aa aa aa aa aa aa aa aa  ee ee ee ee ee ee ee ee  |................|
00000120  ee ee ee ee ee ee ee ee  ee ee ee ee ee ee ee ee  |................|
*
00000220  ee ee ee ee ee ee ee ee  00 00 00 00 00 00 00 00  |................|
00000230  cc cc cc cc cc cc cc cc  cc cc cc cc cc cc cc cc  |................|
00000240  50 ba 03 00 00 00 00 00  b1 ba ef be ad de ed fe  |P...............|
00000250  b1 ba ef be ad de ed fe  00 00 00 00 00 00 00 00  |................|
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400  d0 0d fe ed 00 03 b6 42  00 00 00 48 00 03 6f a4  |.......B...H..o.|
00000410  00 00 00 28 00 00 00 11  00 00 00 10 00 00 00 00  |...(............|
00000420  00 00 46 9e 00 03 6f 5c  00 00 00 00 80 00 00 00  |..F...o\........|
00000430  00 00 00 00 00 02 00 00  00 00 00 00 00 00 00 00  |................|
00000440  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
00000450  00 00 00 03 00 00 00 48  00 00 00 00 6e 76 69 64  |.......H....nvid|
00000460  69 61 2c 70 33 34 34 39  2d 30 30 30 30 2d 62 30  |ia,p3449-0000-b0|
00000470  30 2b 70 33 34 34 38 2d  30 30 30 30 2d 62 30 30  |0+p3448-0000-b00|
00000480  00 6e 76 69 64 69 61 2c  6a 65 74 73 6f 6e 2d 6e  |.nvidia,jetson-n|
00000490  61 6e 6f 00 6e 76 69 64  69 61 2c 74 65 67 72 61  |ano.nvidia,tegra|
000004a0  32 31 30 00 00 00 00 03  00 00 00 04 00 00 00 0b  |210.............|
000004b0  00 00 00 01 00 00 00 03  00 00 00 04 00 00 00 1c  |................|
000004c0  00 00 00 02 00 00 00 03  00 00 00 04 00 00 00 2b  |...............+|
000004d0  00 00 00 02 00 00 00 03  00 00 00 15 00 00 00 37  |...............7|
000004e0  4a 75 6e 20 31 38 20 32  30 32 31 00 30 38 3a 34  |Jun 18 2021.08:4|
000004f0  37 3a 35 38 00 00 00 00  00 00 00 03 00 00 00 05  |7:58............|
00000500  00 00 00 4b 33 34 34 38  00 00 00 00 00 00 00 03  |...K3448........|
00000510  00 00 00 05 00 00 00 5b  33 34 34 38 00 00 00 00  |.......[3448....|
00000520  00 00 00 03 00 00 00 05  00 00 00 6f 33 34 34 38  |...........o3448|
00000530  00 00 00 00 00 00 00 03  00 00 00 04 00 00 00 82  |................|
00000540  00 00 b4 42 00 00 00 03  00 00 00 21 00 00 00 9a  |...B.......!....|
00000550  4e 56 49 44 49 41 20 4a  65 74 73 6f 6e 20 4e 61  |NVIDIA Jetson Na|
00000560  6e 6f 20 44 65 76 65 6c  6f 70 65 72 20 4b 69 74  |no Developer Kit|
00000570  00 00 00 00 00 00 00 03  00 00 00 7b 00 00 00 a0  |...........{....|
00000580  61 72 63 68 2f 61 72 6d  36 34 2f 62 6f 6f 74 2f  |arch/arm64/boot/|
00000590  64 74 73 2f 2e 2e 2f 2e  2e 2f 2e 2e 2f 2e 2e 2f  |dts/../../../../|
000005a0  2e 2e 2f 2e 2e 2f 68 61  72 64 77 61 72 65 2f 6e  |../../hardware/n|
000005b0  76 69 64 69 61 2f 70 6c  61 74 66 6f 72 6d 2f 74  |vidia/platform/t|
000005c0  32 31 30 2f 70 6f 72 67  2f 6b 65 72 6e 65 6c 2d  |210/porg/kernel-|
000005d0  64 74 73 2f 74 65 67 72  61 32 31 30              |dts/tegra210|

The .dtb has the correct date and path while the .sb has the “default” date and path.

I ran the commands on the Nano as well and I got the same results. mtd1 has the Feb 19th date and the “default” path. mtd2 has the new date and my path.

Run hexdump -Cn1500 /sys/firmware/fdt just to confirm what’s actually in use.

Yeah it is the old one:

00000000  d0 0d fe ed 00 03 c0 80  00 00 00 58 00 03 75 5c  |...........X..u\|
00000010  00 00 00 28 00 00 00 11  00 00 00 10 00 00 00 00  |...(............|
00000020  00 00 47 cb 00 03 75 04  00 00 00 00 80 00 00 00  |..G...u.........|
00000030  00 00 00 00 00 02 00 00  00 00 00 00 83 20 00 00  |............. ..|
00000040  00 00 00 00 00 6d 40 21  00 00 00 00 00 00 00 00  |.....m@!........|
00000050  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
00000060  00 00 00 03 00 00 00 0e  00 00 47 bd 31 34 32 30  |..........G.1420|
00000070  32 32 31 30 37 37 32 32  35 00 30 30 00 00 00 03  |221077225.00....|
00000080  00 00 00 48 00 00 00 00  6e 76 69 64 69 61 2c 70  |...H....nvidia,p|
00000090  33 34 34 39 2d 30 30 30  30 2d 62 30 30 2b 70 33  |3449-0000-b00+p3|
000000a0  34 34 38 2d 30 30 30 30  2d 62 30 30 00 6e 76 69  |448-0000-b00.nvi|
000000b0  64 69 61 2c 6a 65 74 73  6f 6e 2d 6e 61 6e 6f 00  |dia,jetson-nano.|
000000c0  6e 76 69 64 69 61 2c 74  65 67 72 61 32 31 30 00  |nvidia,tegra210.|
000000d0  00 00 00 03 00 00 00 04  00 00 00 0b 00 00 00 01  |................|
000000e0  00 00 00 03 00 00 00 04  00 00 00 1c 00 00 00 02  |................|
000000f0  00 00 00 03 00 00 00 04  00 00 00 2b 00 00 00 02  |...........+....|
00000100  00 00 00 03 00 00 00 15  00 00 00 37 46 65 62 20  |...........7Feb |
00000110  31 39 20 32 30 32 31 00  30 38 3a 34 32 3a 34 31  |19 2021.08:42:41|
00000120  00 00 00 00 00 00 00 03  00 00 00 05 00 00 00 4b  |...............K|
00000130  33 34 34 38 00 00 00 00  00 00 00 03 00 00 00 05  |3448............|
00000140  00 00 00 5b 33 34 34 38  00 00 00 00 00 00 00 03  |...[3448........|
00000150  00 00 00 05 00 00 00 6f  33 34 34 38 00 00 00 00  |.......o3448....|
00000160  00 00 00 03 00 00 00 04  00 00 00 82 00 00 b4 42  |...............B|
00000170  00 00 00 03 00 00 00 21  00 00 00 9a 4e 56 49 44  |.......!....NVID|
00000180  49 41 20 4a 65 74 73 6f  6e 20 4e 61 6e 6f 20 44  |IA Jetson Nano D|
00000190  65 76 65 6c 6f 70 65 72  20 4b 69 74 00 00 00 00  |eveloper Kit....|
000001a0  00 00 00 03 00 00 00 ad  00 00 00 a0 2f 64 76 73  |............/dvs|
000001b0  2f 67 69 74 2f 64 69 72  74 79 2f 67 69 74 2d 6d  |/git/dirty/git-m|
000001c0  61 73 74 65 72 5f 6c 69  6e 75 78 2f 6b 65 72 6e  |aster_linux/kern|
000001d0  65 6c 2f 6b 65 72 6e 65  6c 2d 34 2e 39 2f 61 72  |el/kernel-4.9/ar|
000001e0  63 68 2f 61 72 6d 36 34  2f 62 6f 6f 74 2f 64 74  |ch/arm64/boot/dt|

OK so the kernel_tegra210-p3448-0000-p3449-0000-b00.dtb is wrong but tegra210-p3448-0000-p3449-0000-b00.dtb is correct?

There’s an easy one time fix on the nano…

$ sudo dd if=/dev/mtd2 of=/dev/mtd1 bs=64K

That will simply copy the good dtb over the old one.

To fix on the host, I’d start by deleting bootloader/kernel_tegra210-p3448-0000-p3449-0000-b00.dtb.sb, bootloader/kernel_tegra210-p3448-0000-p3449-0000-b00.dtb, and bootloader/tegra210-p3448-0000-p3449-0000-b00.dtb. Then copy your good dtb to kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb.

Now put the Nano into recovery mode and run…

$ sudo ./flash.sh --no-flash --no-systemimg -k RP1 jetson-nano-devkit mmcblk0p1

It should rebuild the bootloader kernel_tegra210-p3448-0000-p3449-0000-b00.dtb and tegra210-p3448-0000-p3449-0000-b00.dtb files then just error out. If you’ve verified that the files are the same, you can flash to the device if you need.

I am getting closer for sure. If I remove the 3 files from the the L4T/bootloader directory and then run the --no-flash command as you showed. One thing I noticed is that I used jetson-nano-qspi-sd instead of jetson-nano-devkit this whole time, I assumed that this should be the same thing for the B00 boards.

Anyway, once I did that I had only 2 .dts file is L4T/bootloader. I used dtc on both and made sure that they were the one I generated. I also ran the same hexdump as before and both had the correct date and path I expect. So great I thought everything was working.

Then I go and reflash the device (just the DTS). The flash is successful and I booted it up. I am still getting the same results as before from dtsfilename and dtbbuildtime.
I rerun the hexdump on mtd1 and mtd2, the results of these are the same as before the flash, with the old date and path showing up in mtd1. I ran the dd command and then did the hexdumps again, this time though the data in mtd1 looked corrupted or jumbled. I tried to reboot and it never booted. I am trying a full reflash now to get back in there and see.

jetson-nano-devkit and jetson-nano-qspi-sd are both just symlinks to the same config file… p3449-0000+p3448-0000-qspi-sd.conf. It shouldn’t make a difference which one you use.

Same here.

What does that mean? Exactly what command did you run? If you flash only a single partition using the -k option, you need to do it twice, once with -k DTB and once with -k RP1.

I’m going to try the whole process myself now.