On Jetson TX2 with a custom build Resin OS 2.19.0+rev1 services fail to install

It seems that the DTB files are in fact encrypted or at least signed and therefore with R28.2 one cannot make use of the DTB / FTB statement in the extlinux.conf: https://devtalk.nvidia.com/default/topic/1035622/jetson-tx2/in-system-update-of-dtb-in-r28-2/post/5266971/#5266971

When I plainly replace the .dtb in /boot the device does boot, but U-Boot complains about a bad CRC and then falls back to a default environment, loading a flattened device tree blob:

U-Boot 2016.07 (Oct 27 2018 - 10:30:38 +0000)
TEGRA186
Model: NVIDIA P2771-0000-500
DRAM:  7.8 GiB
MC:   Tegra SD/MMC: 0, Tegra SD/MMC: 1
*** Warning - bad CRC, using default environment
In:    serial
Out:   serial
Err:   serial
Net:   eth0: ethernet@2490000
Hit any key to stop autoboot:  0
Scanning MMC and USB devices 0 1 2
reading resin-image-flasher
** Unable to read file resin-image-flasher **
reading resin-image
24 bytes read in 8 ms (2.9 KiB/s)
MMC: no card present
** Bad device mmc 1 **
MMC Device 2 not found
** Bad device mmc 2 **
** Bad device usb 0 **
** Bad device usb 1 **
** Bad device usb 2 **
Found resin image on mmc 0
Loading resinOS_uEnv.txt from mmc device 0 partition 0xC
reading resinOS_uEnv.txt
** Unable to read file resinOS_uEnv.txt **
Unknown command 'setexpr' - try 'help'
Unknown command 'setexpr' - try 'help'
MMC: no card present
Scanning MMC and USB devices 0 1 2
reading resin-image-flasher
** Unable to read file resin-image-flasher **
MMC: no card present
** Bad device mmc 1 **
MMC Device 2 not found
** Bad device mmc 2 **
** Bad device usb 0 **
** Bad device usb 1 **
** Bad device usb 2 **
Found resin image on mmc 0
Loading resinOS_uEnv.txt from mmc device 0 partition 0xC
reading resinOS_uEnv.txt
** Unable to read file resinOS_uEnv.txt **
Unknown command 'setexpr' - try 'help'
Unknown command 'setexpr' - try 'help'
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:c...
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
reading /extlinux/extlinux.conf
174 bytes read in 13 ms (12.7 KiB/s)
Boot Options
1:      primary Image
Enter choice: 1:        primary Image
Retrieving file: /Image
reading /Image
23760016 bytes read in 596 ms (38 MiB/s)
append: console=ttyS0,115200 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 nvdumper_reserved=0x2772e0000 gpt tegraid=18.1.2.0.0 tegra_keep_boot_clocks maxcpus=6 boot.slot_suffix= boot.ratchetvalues=0.2.1t
## Flattened Device Tree blob at 92000000
   Booting using the fdt blob at 0x92000000
   reserving fdt memory region: addr=80000000 size=10000
   Using Device Tree in place at 0000000092000000, end 0000000092049330
Starting kernel ...
[    0.000000] Booting Linux on physical CPU 0x100
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.38-l4t-r28.2+g174510d (oe-user@oe-host) (gcc version 6.3.0 (GCC) ) #2 SMP PREEMPT Sun Oct 28 09:30:00 UTC 2018
[    0.000000] Boot CPU: AArch64 Processor [411fd073]
[    0.000000] earlycon: Early serial console at MMIO32 0x3100000 (options '')
[    0.000000] bootconsole [uart0] enabled
[    0.000000] Reserved memory: initialized node ramoops_carveout, compatible id nvidia,ramoops

Actually, that is also the case with the ready made Jetson TX2 Image based on Resin OS 2.17.0+rev1 that one can download from resin.io.

@floion I can decompile the .dtb file, but it’s hard to understand what is part of an overlay and what is not.

I would presume that i.e. the .dtb files from CTI are overlays?

I figured it out:
There is a change in p2771-0000.conf.common - changing ODMDATA from 0x1090000 to 0x7090000.

I didn’t find the p2771-0000.conf.common, but ODMDATA is set in side the base jetson-tx2.conf, so I’ve added `ODMDATA ?= “0x7090000” to my new n510-tx2.conf.

Compiles, flashes and runs devices as USB3 - I’ve updated the PR:

Thanks for your help @floion

1 Like