TX1 upgrade kernel cboot L4T 28.1

My TX1 always boots with cboot instead of u-boot so I cannot upgrade the kernel by replacing it in /boot. Is there a way to upgrade the kernel without reflashing the TX1?

cboot is a stage prior to U-Boot…it should run…without it U-Boot won’t load.

The Linux kernel is a simple file replacement…it goes in “/boot”, the default name (which you should leave in place until you know things work right) is “/boot/Image”, and is found in the “/boot/extlinux/extlinux.conf” entry. I advise adding a new entry for a new kernel within extlinux.conf, then place the Image file with an alternate name, e.g., “/boot/Image-custom”.

Device tree install has changed, so if you are looking for something to change with device tree, then new procedures are needed under R28.1.

In my case U-Boot is not part of the boot process at all. When I flashed it initially I passed a kernel image to flash.sh with -K and doing that prevents U-Boot from being installed on the machine. This means any modifications I make to /boot are not picked up. I can delete /boot/Image and the TX1 will still boot just fine.

I’m not really sure if the “-K” option applies with U-Boot…with fastboot the kernel was in a partition and the “-K” was mandatory for a kernel update. So far as I know, if U-Boot is used, the Image file still ends up in “/boot” (i.e., even if -K picks a different kernel it should get put in “/boot” of the rootfs, not in a partition). If you can boot to serial console at all, perhaps post the log of boot and a more detailed description of what you started with (and what you are trying to do) it would help.

samcpwx92,

Do you remove u-boot for some purpose?

@WayneWWW it was an accidental side effect of passing a custom kernel with -K to flash.sh. I discovered too late that setting DFLT_KERNEL_FS properly passes the kernel without affecting U-Boot.

@linuxdev the -K option definitely affects whether U-Boot is installed from looking through the flash.sh code. Here is the serial output during boot that I cut off once the kernel starts booting. You can see U-Boot is not present.

[0000.205] [TegraBoot] (version 00.00.2014.50-mobile-d44d4bf0)
[0000.210] Processing in cold boot mode Bootloader 2
[0000.215] A02 Bootrom Patch rev = 63
[0000.218] Power-up reason: software reset
[0000.222] No Battery Present
[0000.224] RamCode = 0
[0000.227] Platform has Ddr4 type ram
[0000.230] max77620 disabling SD1 Remote Sense
[0000.234] Setting Ddr voltage to 1125mv
[0000.238] Serial Number of Pmic Max77663: 0x161fb8
[0000.246] Entering ramdump check
[0000.249] Get RamDumpCarveOut = 0xff23f000
[0000.253] RamDumpCarveOut=0xff23f000, RamDumperFlag=0x0
[0000.258] Last reboot was clean, booting normally!
[0000.263] Sdram initialization is successful
[0000.267] SecureOs Carveout Base=0xff800000 Size=0x00800000
[0000.272] GSC1 Carveout Base=0xff700000 Size=0x00100000
[0000.277] GSC2 Carveout Base=0xff600000 Size=0x00100000
[0000.282] GSC3 Carveout Base=0xff500000 Size=0x00100000
[0000.288] GSC4 Carveout Base=0xff400000 Size=0x00100000
[0000.293] GSC5 Carveout Base=0xff300000 Size=0x00100000
[0000.298] BpmpFw Carveout Base=0xff2c0000 Size=0x00040000
[0000.303] Lp0 Carveout Base=0xff2bf000 Size=0x00001000
[0000.318] RamDump Carveout Base=0xff23f000 Size=0x00080000
[0000.324] Platform-DebugCarveout: 0
[0000.327] Nck Carveout Base=0xff03f000 Size=0x00200000
[0000.332] Non secure mode, and RB not enabled.
[0000.382] Using GPT Primary to query partitions
[0000.387] Loading Tboot-CPU binary
[0000.436] Verifying bootloader in OdmNonSecureSBK mode
[0000.446] Bootloader load address is 0xa0000000, entry address is 0xa0000258
[0000.453] Bootloader downloaded successfully.
[0000.458] Downloaded Tboot-CPU binary to 0xa0000258
[0000.463] MAX77620_GPIO1 Configured.
[0000.466] MAX77620_GPIO5 Configured.
[0000.469] CPU power rail is up
[0000.472] CPU clock enabled
[0000.476] Performing RAM repair
[0000.479] Updating A64 Warmreset Address to 0xa00002e9
[0000.507] Bootloader DTB Load Address: 0x83000000
[0000.535] Kernel DTB Load Address: 0x83100000
[0000.540] Loading cboot binary
[0000.634] Verifying bootloader in OdmNonSecureSBK mode
[0000.673] Bootloader load address is 0x92c00000, entry address is 0x92c00258
[0000.680] Bootloader downloaded successfully.
[0000.684] GPT: Partition NOT found !
[0000.687] Find Partition via GPT Failed
[0000.691] Find Partition via PT Failed
[0000.694] function NvTbootGetBinaryOffsets: 0x1 error
[0000.699] Error in NvTbootLoadBinary: 0x1 !
[0000.703] Next binary entry address: 0x92c00258
[0000.708] BoardId: 2180
[0000.713] dram memory type is 3
[0000.716] WB0 init successful
[0000.742] Bpmp FW successfully loaded
[0000.746] Set NvDecSticky Bits
[0000.749] GSC1 address : ff700000
[0000.753] GSC2 address ff63fffc value c0edbbcc
[0000.757] GSC2 address : ff600000
[0000.761] GSC3 address : ff500000
[0000.765] GSC4 address : ff400000
[0000.769] GSC5 address : ff300000
[0000.772] GSC MC Settings done
[0000.775] TOS plaintext Image length 28752
[0000.779] Monitor size 28752
[0000.782] OS size 0
[0000.785] *** Secure OS image signature not verified ***
[0000.790] Loading and Validation of Secure OS Successful
[0000.796] NvTbootPackSdramParams: start.
[0000.801] NvTbootPackSdramParams: done.
[0000.804] Tegraboot started after 185002 us
[0000.808] Basic modules init took 311312 us
[0000.812] Sec Bootdevice Read Time = 216 ms, Read Size = 9476 KB
[0000.818] Sec Bootdevice Write Time = -1940251271 ms, Write Size = -68719477 KB
[0000.825] Next stage binary read took 23830 us
[0000.830] Carveout took 207265 us
[0000.833] CPU initialization took 96692 us
[0000.837] Total time taken by TegraBoot 639099 us

[0000.841] Starting CPU & Halting co-processor

64NOTICE: BL31: v1.2(release):cc5fd7c
NOTICE: BL31: Built : 00:37:02, Jul 20 2017
NOTICE: Trusty image missing.
ERROR: Error initializing runtime service trusty_fast
[0000.982] RamCode = 0
[0001.003] LPDDR4 Training: Read DT: Number of tables = 10
[0001.008] EMC Training (SRC-freq: 204000; DST-freq: 40800)
[0001.013] EMC Training Skipped
[0001.016] EMC Training (SRC-freq: 204000; DST-freq: 68000)
[0001.021] EMC Training Skipped
[0001.024] EMC Training (SRC-freq: 204000; DST-freq: 102000)
[0001.029] EMC Training Skipped
[0001.032] EMC Training (SRC-freq: 204000; DST-freq: 204000)
[0001.037] EMC Training Skipped
[0001.040] EMC Training (SRC-freq: 204000; DST-freq: 408000)
[0001.046] EMC Training Successful
[0001.049] EMC Training (SRC-freq: 204000; DST-freq: 665600)
[0001.055] EMC Training Successful
[0001.058] EMC Training (SRC-freq: 204000; DST-freq: 800000)
[0001.070] EMC Training Successful
[0001.073] EMC Training (SRC-freq: 204000; DST-freq: 1065600)
[0001.096] EMC Training Successful
[0001.099] EMC Training (SRC-freq: 204000; DST-freq: 1331200)
[0001.120] EMC Training Successful
[0001.123] EMC Training (SRC-freq: 204000; DST-freq: 1600000)
[0001.143] EMC Training Successful
[0001.146] Switching to 800000 KHz Success
[0001.156] RamCode = 0
[0001.160] DT Write: emc-table@40800 succeeded
[0001.166] DT Write: emc-table@68000 succeeded
[0001.172] DT Write: emc-table@102000 succeeded
[0001.178] DT Write: emc-table@204000 succeeded
[0001.184] DT Write: emc-table@408000 succeeded
[0001.190] DT Write: emc-table@665600 succeeded
[0001.196] DT Write: emc-table@800000 succeeded
[0001.202] DT Write: emc-table@1065600 succeeded
[0001.208] DT Write: emc-table@1331200 succeeded
[0001.214] DT Write: emc-table@1600000 succeeded
[0001.219] LPDDR4 Training: Write DT: Number of tables = 10
[0001.255]
[0001.256] Debug Init done
[0001.258] Marked DTB cacheable
[0001.261] Bootloader DTB loaded at 0x83000000
[0001.266] Marked DTB cacheable
[0001.269] Kernel DTB loaded at 0x83100000
[0001.273] DeviceTree Init done
[0001.292] Pinmux applied successfully
[0001.298] gicd_base: 0x50041000
[0001.303] gicc_base: 0x50042000
[0001.306] Interrupts Init done
[0001.311] Using base:0x60005008 & irq:33 for tick-timer
[0001.316] Using base:0x60005000 for delay-timer
[0001.321] platform_init_timer: DONE
[0001.324] Timer(tick) Init done
[0001.329] osc freq = 38400 khz
[0001.335]
[0001.336] welcome to cboot
[0001.339]
[0001.340] Cboot Version: 00.00.2014.50-t210-fadd1be5
[0001.345] calling constructors
[0001.348] initializing heap
[0001.350] initializing threads
[0001.353] initializing timers
[0001.356] creating bootstrap completion thread
[0001.360] top of bootstrap2()
[0001.363] CPU: ARM Cortex A57
[0001.366] CPU: MIDR: 0x411FD071, MPIDR: 0x80000000
[0001.371] initializing platform
[0001.417] config for ddr50 mode completed
[0001.421] sdmmc bdev is already initialized
[0001.425] Enable APE clock
[0001.428] Un-powergate APE partition
[0001.432] of_register: registering tegra_udc to of_hal
[0001.437] of_register: registering inv20628-driver to of_hal
[0001.442] of_register: registering ads1015-driver to of_hal
[0001.448] of_register: registering lp8557-bl-driver to of_hal
[0001.454] of_register: registering bq2419x_charger to of_hal
[0001.459] of_register: registering cpc to of_hal
[0001.464] of_register: registering bq27441_fuel_gauge to of_hal
[0001.483] gpio framework initialized
[0001.487] of_register: registering tca9539_gpio to of_hal
[0001.492] of_register: registering tca9539_gpio to of_hal
[0001.497] of_register: registering i2c_bus_driver to of_hal
[0001.503] of_register: registering i2c_bus_driver to of_hal
[0001.508] of_register: registering i2c_bus_driver to of_hal
[0001.514] pmic framework initialized
[0001.517] of_register: registering max77620_pmic to of_hal
[0001.523] regulator framework initialized
[0001.527] of_register: registering tegra_xhci to of_hal
[0001.532] initializing target
[0001.541] gpio_driver_register: register ‘tegra_gpio_driver’ driver
[0001.553] fixed regulator driver initialized
[0001.624] initializing OF layer
[0001.627] NCK carveout not present
[0001.630] Skipping dts_overrides
[0001.635] of_children_init: Ops found for compatible string nvidia,tegra210-xhci
[0001.643] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.674] I2C Bus Init done
[0001.677] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.691] I2C Bus Init done
[0001.694] of_children_init: Ops found for compatible string ti,tca9539
[0001.708] tca9539_init: i2c bus: 2, slave addr: 0xe8
[0001.713] I2C slave not started
[0001.716] I2C write failed
[0001.719] i2c write failed
[0001.721] Slave: 0xe8, Register 0x4 Instance 2, Buffer Size: 0
[0001.727] tca9539_device_init: failed to write polar reg
[0001.732] tca9539_init: failed to init device!
[0001.737] of_children_init: Ops found for compatible string ti,tca9539
[0001.751] tca9539_init: i2c bus: 2, slave addr: 0xee
[0001.756] I2C slave not started
[0001.759] I2C write failed
[0001.761] i2c write failed
[0001.764] Slave: 0xee, Register 0x4 Instance 2, Buffer Size: 0
[0001.770] tca9539_device_init: failed to write polar reg
[0001.775] tca9539_init: failed to init device!
[0001.780] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.795] I2C Bus Init done
[0001.797] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.812] I2C Bus Init done
[0001.815] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.830] I2C Bus Init done
[0001.833] of_children_init: Ops found for compatible string maxim,max77620
[0001.848] max77620_init using irq 118
[0001.853] register ‘maxim,max77620’ pmic
[0001.858] gpio_driver_register: register ‘max77620-gpio’ driver
[0001.864] of_children_init: Ops found for compatible string nvidia,tegra210-i2c
[0001.879] I2C Bus Init done
[0001.884] NCK carveout not present
[0001.887] shim_invoke: No NCT, Calling dts updates
[0001.908] Find /i2c@7000c000’s alias i2c0
[0001.912] get eeprom at 1-a2, size 256, type 0
[0001.916] get eeprom at 1-ae, size 256, type 0
[0001.932] Find /i2c@7000c400’s alias i2c1
[0001.935] get eeprom at 2-a0, size 256, type 0
[0001.951] Find /i2c@7000c500’s alias i2c2
[0001.955] get eeprom at 3-a0, size 256, type 0
[0001.959] get eeprom at 3-ae, size 256, type 0
[0001.971] Find /host1x/i2c@546c0000’s alias i2c6
[0001.976] get eeprom at 7-a8, size 256, type 0
[0001.980] pm_ids_update: Updating 1,a2, size 256, type 0
[0001.985] I2C slave not started
[0001.988] I2C write failed
[0001.991] Writing offset failed
[0001.994] eeprom_init: EEPROM read failed
[0001.998] pm_ids_update: eeprom init failed
[0002.002] pm_ids_update: Updating 1,ae, size 256, type 0
[0002.007] I2C slave not started
[0002.010] I2C write failed
[0002.013] Writing offset failed
[0002.016] eeprom_init: EEPROM read failed
[0002.020] pm_ids_update: eeprom init failed
[0002.024] pm_ids_update: Updating 2,a0, size 256, type 0
[0002.029] I2C slave not started
[0002.032] I2C write failed
[0002.035] Writing offset failed
[0002.038] eeprom_init: EEPROM read failed
[0002.042] pm_ids_update: eeprom init failed
[0002.046] pm_ids_update: Updating 3,a0, size 256, type 0
[0002.076] pm_ids_update: The pm board id is 2180-1000-400
[0002.085] Adding plugin-manager/ids/2180-1000-400=/i2c@7000c500:module@0x50
[0002.095] pm_ids_update: pm id update successful
[0002.100] pm_ids_update: Updating 3,ae, size 256, type 0
[0002.105] I2C slave not started
[0002.108] I2C write failed
[0002.111] Writing offset failed
[0002.114] eeprom_init: EEPROM read failed
[0002.118] pm_ids_update: eeprom init failed
[0002.122] pm_ids_update: Updating 7,a8, size 256, type 0
[0002.129] GPIO driver for phandle 0xd6 could not be found
[0002.134] I2C slave not started
[0002.137] I2C write failed
[0002.140] Writing offset failed
[0002.143] eeprom_init: EEPROM read failed
[0002.147] pm_ids_update: eeprom init failed
[0002.153] GPIO driver for phandle 0xd6 could not be found
[0002.186] updating /chosen/nvidia,wifi-mac node 00:04:4b:66:c8:b7
[0002.195] updating /chosen/nvidia,bluetooth-mac node 00:04:4b:66:c8:b8
[0002.204] updating /chosen/nvidia,ethernet-mac node 00:04:4b:66:c8:b9
[0002.211] Plugin Manager: Parse ODM data 0x00084000
[0002.246] Find /i2c@7000c000’s alias i2c0
[0002.250] get eeprom at 1-a2, size 256, type 0
[0002.254] get eeprom at 1-ae, size 256, type 0
[0002.270] Find /i2c@7000c400’s alias i2c1
[0002.274] get eeprom at 2-a0, size 256, type 0
[0002.289] Find /i2c@7000c500’s alias i2c2
[0002.293] get eeprom at 3-a0, size 256, type 0
[0002.297] get eeprom at 3-ae, size 256, type 0
[0002.309] Find /host1x/i2c@546c0000’s alias i2c6
[0002.313] get eeprom at 7-a8, size 256, type 0
[0002.318] pm_ids_update: Updating 1,a2, size 256, type 0
[0002.323] I2C slave not started
[0002.326] I2C write failed
[0002.329] Writing offset failed
[0002.332] eeprom_init: EEPROM read failed
[0002.336] pm_ids_update: eeprom init failed
[0002.340] pm_ids_update: Updating 1,ae, size 256, type 0
[0002.345] I2C slave not started
[0002.348] I2C write failed
[0002.351] Writing offset failed
[0002.354] eeprom_init: EEPROM read failed
[0002.358] pm_ids_update: eeprom init failed
[0002.362] pm_ids_update: Updating 2,a0, size 256, type 0
[0002.367] I2C slave not started
[0002.370] I2C write failed
[0002.373] Writing offset failed
[0002.376] eeprom_init: EEPROM read failed
[0002.380] pm_ids_update: eeprom init failed
[0002.384] pm_ids_update: Updating 3,a0, size 256, type 0
[0002.414] pm_ids_update: The pm board id is 2180-1000-400
[0002.422] Adding plugin-manager/ids/2180-1000-400=/i2c@7000c500:module@0x50
[0002.429] pm_ids_update: pm id update successful
[0002.433] pm_ids_update: Updating 3,ae, size 256, type 0
[0002.439] I2C slave not started
[0002.442] I2C write failed
[0002.444] Writing offset failed
[0002.447] eeprom_init: EEPROM read failed
[0002.451] pm_ids_update: eeprom init failed
[0002.455] pm_ids_update: Updating 7,a8, size 256, type 0
[0002.463] GPIO driver for phandle 0xd6 could not be found
[0002.468] I2C slave not started
[0002.471] I2C write failed
[0002.474] Writing offset failed
[0002.477] eeprom_init: EEPROM read failed
[0002.480] pm_ids_update: eeprom init failed
[0002.487] GPIO driver for phandle 0xd6 could not be found
[0002.519] Chip UID is 000000016411c708080000000f0403c0
[0002.527] shim_cmdline_install: /chosen/bootargs: root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 console=tty0 OS=l4t fbcon=map:0 net.ifnames=0 androidboot.modem=none androidboot.serialno=03238161898600c00304 androidboot.security=non-secure
[0002.550] Add serial number:03238161898600c00304 as DT property
[0002.558] calling apps_init()
[0002.563] Found 18 GPT partitions in “sdmmc3_user”
[0002.568] Proceeding to Cold Boot
[0002.571] starting app android_boot_app
[0002.575] Device state: unlocked
[0002.578] display console init
[0002.583] skip-display-init in bootloader
[0002.587] set_instance_and_out_type: invalid out_type
[0002.592] display_console_init: No display init
[0002.603] Gpio keyboard init success
[0002.606] bct_init bctinit
[0002.609] device_query_partition_size: failed to open partition sdmmc3_user:BMP !
[0002.624] DT entry for leds-pwm not found
[0002.616] BMP partition read failed!
[0002.632] blob_init: blob-partition BMP header read failed
[0002.637] load_bmp_blob: BMP blob initialization failed
[0002.642] Could not load/initialize BMP blob…ignoring
[0002.647] bl_battery_charging: connected to external power supply
[0002.659] fastboot: usb cable is not connected
[0002.663] display_console_ioctl: No display init
[0002.667] switch_backlight failed
[0002.671] bct_init bctinit
[0002.673] device_query_partition_size: failed to open partition sdmmc3_user:MSC !
[0002.681] MSC Partition not found
[0002.684] bct_init bctinit
[0002.687] bct_init bctinit
[0002.690] blob_init: USP partition does not have valid Blob
[0002.696] Loading android kernel
[0002.700] Default: NOT skip verified boot.
[0002.704] Verified boot state = Orange
[0002.710] display_console_clear: No display init
[0002.714] kernel load address: 0x80080000, size: 21169416 bytes
[0002.720] ramdisk load address: 0x84100000, size: 0 bytes
[0002.726] load kernel from storage
[0002.732] decompressor handler not found
[0003.147] Successfully loaded kernel and ramdisk images
[0003.155] bct_init bctinit
[0003.157] device_query_partition_size: failed to open partition sdmmc3_user:BMP !
[0003.165] BMP partition read failed!
[0003.168] blob_init: blob-partition BMP header read failed
[0003.174] load_bmp_blob: BMP blob initialization failed
[0003.179] bmp blob is not loaded and initialized
[0003.184] Failed to display boot-logo
[0003.187] NCK carveout not present
[0003.191] Skipping dts_overrides
[0003.194] NCK carveout not present
[0003.197] shim_invoke: No NCT, Calling dts updates
[0003.219] Find /i2c@7000c000’s alias i2c0
[0003.222] get eeprom at 1-a2, size 256, type 0
[0003.227] get eeprom at 1-ae, size 256, type 0
[0003.243] Find /i2c@7000c400’s alias i2c1
[0003.247] get eeprom at 2-a0, size 256, type 0
[0003.263] Find /i2c@7000c500’s alias i2c2
[0003.267] get eeprom at 3-a0, size 256, type 0
[0003.271] get eeprom at 3-ae, size 256, type 0
[0003.284] Find /host1x/i2c@546c0000’s alias i2c6
[0003.288] get eeprom at 7-a8, size 256, type 0
[0003.292] pm_ids_update: Updating 1,a2, size 256, type 0
[0003.298] I2C slave not started
[0003.301] I2C write failed
[0003.303] Writing offset failed
[0003.306] eeprom_init: EEPROM read failed
[0003.310] pm_ids_update: eeprom init failed
[0003.314] pm_ids_update: Updating 1,ae, size 256, type 0
[0003.320] I2C slave not started
[0003.323] I2C write failed
[0003.325] Writing offset failed
[0003.328] eeprom_init: EEPROM read failed
[0003.332] pm_ids_update: eeprom init failed
[0003.336] pm_ids_update: Updating 2,a0, size 256, type 0
[0003.342] I2C slave not started
[0003.345] I2C write failed
[0003.347] Writing offset failed
[0003.350] eeprom_init: EEPROM read failed
[0003.354] pm_ids_update: eeprom init failed
[0003.358] pm_ids_update: Updating 3,a0, size 256, type 0
[0003.389] pm_ids_update: The pm board id is 2180-1000-400
[0003.398] Adding plugin-manager/ids/2180-1000-400=/i2c@7000c500:module@0x50
[0003.408] pm_ids_update: pm id update successful
[0003.412] pm_ids_update: Updating 3,ae, size 256, type 0
[0003.418] I2C slave not started
[0003.421] I2C write failed
[0003.423] Writing offset failed
[0003.426] eeprom_init: EEPROM read failed
[0003.430] pm_ids_update: eeprom init failed
[0003.434] pm_ids_update: Updating 7,a8, size 256, type 0
[0003.441] GPIO driver for phandle 0xd6 could not be found
[0003.447] I2C slave not started
[0003.450] I2C write failed
[0003.452] Writing offset failed
[0003.455] eeprom_init: EEPROM read failed
[0003.459] pm_ids_update: eeprom init failed
[0003.465] GPIO driver for phandle 0xd6 could not be found
[0003.499] updating /chosen/nvidia,wifi-mac node 00:04:4b:66:c8:b7
[0003.507] updating /chosen/nvidia,bluetooth-mac node 00:04:4b:66:c8:b8
[0003.517] updating /chosen/nvidia,ethernet-mac node 00:04:4b:66:c8:b9
[0003.523] Plugin Manager: Parse ODM data 0x00084000
[0003.545] shim_cmdline_install: /chosen/bootargs: root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 console=tty0 OS=l4t fbcon=map:0 net.ifnames=0 androidboot.modem=none androidboot.serialno=03238161898600c00304 androidboot.security=non-secure
[0003.569] Add serial number:03238161898600c00304 as DT property
[0003.577] Updated bpmp info to DTB
[0003.584] Updated initrd info to DTB
[0003.587] “proc-board” doesn’t exist, creating
[0003.594] Updated board info to DTB
[0003.598] “pmu-board” doesn’t exist, creating
[0003.605] Updated board info to DTB
[0003.608] “display-board” doesn’t exist, creating
[0003.615] Updated board info to DTB
[0003.618] “reset” doesn’t exist, creating
[0003.623] Updated reset info to DTB
[0003.627] display_console_ioctl: No display init
[0003.631] display_console_ioctl: No display init
[0003.636] display_console_ioctl: No display init
[0003.643] display_console_ioctl: No display init
[0003.650] Cmdline: root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 console=tty0 OS=l4t fbcon=map:0 net.ifnames=0 androidboot.modem=none androidboot.serialno=03238161898600c00304 androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff2bf000 nvdumper_reserved=0xff23f000 core_edp_mv=1075 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootloader=00.00.2014.50-t210-fadd1be5 androidboot.verifiedbootstate=orange
[0003.724] Updated bootarg info to DTB
[0003.730] Updated memory info to DTB
[0003.739] set vdd_core voltage to 1075 mv
[0003.743] setting ‘vdd-core’ regulator to 1075000 micro volts
[0003.749] nvdumper Carveout: Base = 0xff23f000 and Size = 0x80000
[0003.756] bct_init bctinit
[0003.758] Starting Bpmp FW
[0003.761] BPMP-FW Carveout: Base = 0xff2c0000 and Size = 0x40000
[ 0.000000] Booting Linux on physical CPU 0x0
[ 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 (samcpwx92@samcpwx92-VirtualBox) (gcc version 4.8.5 (GCC) ) #4 SMP PREEMPT Wed Sep 13 13:25:18 PDT 2017
[ 0.000000] Boot CPU: AArch64 Processor [411fd071]
[ 0.000000] Reserved memory: initialized node vpr-carveout, compatible id nvidia,vpr-carveout
[ 0.000000] Reserved memory: initialized node iram-carveout, compatible id nvidia,iram-carveout
[ 0.000000] Reserved memory: initialized node ramoops_carveout, compatible id nvidia,ramoops
[ 0.000000] cma: Reserved 16 MiB at 0x00000000fdc00000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.0 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] PERCPU: Embedded 17 pages/cpu @ffffffc0ffe40000 s31488 r8192 d29952 u69632
[ 0.000000] CPU features: enabling workaround for ARM erratum 832075
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 1027072
[ 0.000000] Kernel command line: root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 console=tty0 OS=l4t fbcon=map:0 net.ifnames=0 androidboot.modem=none androidboot.serialno=03238161898600c00304 androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff2bf000 nvdumper_reserved=0xff23f000 core_edp_mv=1075 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootloader=00.00.2014.50-t210-fadd1be5 androidboot.verifiedbootstate=orange

I guess what I’m really wondering is why use “-K”? Is it because U-Boot is already gone? Normally the kernel is just a file copy or extlinux.conf edit. I’m thinking perhaps your are just trying to recover from an earlier procedure which broke boot…is this correct (or perhaps quite wrong)?

The second part is right, I’m trying to recover from using -K earlier. I may be wrong but it looks to me like the kernel booted by cboot is in one of the many partitions and I would like to know which one so that I can fix it there. The TX1 is somewhere that I can’t easily access to just reflash.

There is essentially a multi-stage boot where a kernel of sorts runs…but which is not the U-Boot nor Linux kernel. E.g., during flash you will see fastboot.bin is downloaded even if U-Boot is used. It is quite possible you are simply seeing an early stage and that the kernel you are looking at is unrelated to the problem. I hate to say it, but I think you are going to need to have physical access…there is only so much you can do from U-Boot even with a serial console. If you have previously cloned all partitions, then restoring them one at a time might do the trick…but most people don’t think of cloning until it is too late.

What is your current access? Is serial console your only connection? What about the recovery button?

The only access I have is over the internet which is why I can’t reflash it. That boot log is actually from another one that I flashed identically so if I can figure out how to solve this on my local one I can update the other one remotely.

The TX1 image has 18 partitions. Surely one of them contains the kernel that cboot is using.

I doubt if this can help. It is also possible to enter recovery mode when L4T is up.

sudo ./flash.sh –k LNX jetson-tx1 mmcblk0p1

How is your internet seeing boot? Is there a remote application connected to the serial console, e.g., is it wired to another Linux box via both serial console and the micro-B USB?

It seems a bit like the proverbial “chicken and the egg” dilemma…you need to flash something to get L4T running because you can’t physically press the recovery button…but you need to fix it without recovery mode because L4T does not run.

Although it would be very useful to be able to use serial console to write raw partitions into eMMC without even reaching the U-Boot stage I don’t think this is possible. Having it connected through a JTAG debugger might make it possible, but even that would not be easy.

The boot log is from an identical TX1 that I have serial access to. The remote TX1 and the local one I have access to are identical because I flashed them the exact same way. I would like to overwrite whichever partition is being used for boot because that is something I can do remotely. I just need to know which partition contains the kernel image that is being booted by cboot.

My question is, on the remote unit, how will you get the updated partition to it once you have the right data and know which partition it is? If you have a way to do this, then you could just copy all of the non-rootfs partitions one at a time until it works.

It’s straightforward enough to make an image of the fixed partition and write it to the remote TX1 but I would rather not overwrite partitions at random, which is why I was asking if anyone knew where to start looking. Overwriting them all is a last resort. It’s not clear what those partitions are for so I risk bricking it if I change something I shouldn’t.

mmcblk0p1 (the first partition of eMMC) is the data partition. All other partitions are related to boot.

I know that. Which partition is related to cboot?

I do not know that. I’m just suggesting that if you cannot find out (since any kind of flash can involve multiple partitions) that all partitions except the first are possibly in need of update.

During flash I see that the flash program starts by finding the boot control table, and in my R28.1 TX1 this is “bootloader/t210ref/BCT/P2180_A00_LP4_DSC_204Mhz.cfg”. The very next file read is “bootloader/t210ref/cboot.bin”, and then it shows write operations, but fails to say which partition is being written to. No clue is available from the BCT, so what I did was run “strings” on cboot.bin to see if there is anything unique there…and there is. Within this is “welcome to cboot”.

Next, on a running R28.1 TX1, I ran this on each partition (change the number from 2 through 18):

sudo cat /dev/mmcblk0p2 | strings | egrep 'welcome to cboot'

mmcblk0p3 matches. “blkid” reveals this has label “EBT” (which is what the flash software probably refers to this as).

This should give you a procedure to guarantee finding the information if you know some content to compare. My thought is that although this is probably the partition you are interested in, it is also possible that another partition is simply pointing to the wrong place and that this partition still matches.

Considering how hard you are trying to get this working remotely I am guessing there is something important beyond just the cost of a Jetson, so I hope you get it to work.