TX2 UARTS

Hi,

I am new to the Jetson arena (old hat in Linux) and I am having some trouble with the UARTS (and the mappings from TX2 Pins to the Tegra functions to Linux)

I am trying to use J17 on the dev board and I cannot write/read anything from either /dev/ttyTHS1 or /dev/ttyTHS3?

id -G -n nvidia
nvidia adm dialout cdrom floppy sudo audio dip video

Also had a scope on the TX/RX lines and there seems to be no comms.

cat /dev/ttyTHS1 and 3 and then echo ‘hi’ > /dev/ttyTHS1 and 3 and nothing?

Tried looping back TX and RX, Minicom, several different cables etc but no luck

Is there ‘something special’ that needs to be performed before the UART can be accessed?

Thanks

The camera is connected to THS1THS2, you might remove it for your testing. I have not yet tried on the TX2, but I’d suggest doing almost what you are already doing but with a USB serial UART (using an FTDI chipset). I think the default speed you’d set for “/dev/ttyUSB0” would be 38400 8N1 to match THS1THS2 (as I have not tested on the TX2 I can’t guarantee those values, they are the defaults under a TX1). This way you could test just THS1THS2 by itself…then you could try THS3 by itself.

Thanks for the reply.

I wasn’t aware the camera was connected to THS1, so I can remove that and try the test with the FTDI chipset USB cable.

So which UART is J17 attached to?

So tried using a USB serial UART and I am still unable to read/write to the UARTS?

Is there anybody from nvidia that can help with this?

1 Like

J17 and the camera are both connected to the "/dev/ttyTHS1"“/dev/ttyTHS2” (the carrier board wires these to be the same thing). If you want to be sure the camera is not altering your J17 results you need to remove it (and not run any camera software which might go through J17).

I have not yet tried working with J17 on the TX2, but echo should work if both ends of the serial connection have the same settings. Do try with 38400 8N1 to start.

I have done some experimentation with a USB serial UART and J17 (/dev/ttyTHS1/dev/ttyTHS2) using various settings which worked previously on the JTX1. I can verify ttyUSB0 was working correctly, but that ttyTHS1ttyTHS2 does not respond. It acts as if there is a flow control required but missing.

Add to this that serial console to J21 also has changed from being able to use flow control to having flow control no longer function. Can someone at NVIDIA verify if there were changes in serial UARTs affecting flow control requirements or defaults?

hi all,

please try the patch in the attachment that enables UARTC instance in SW,
with this change UARTC will be enumerated as /dev/ttyTHS2.

0001-dts-quill-common-enable-uartc-instance.7z (792 Bytes)

Hi,

Thanks for the patch.

I rebuilt the DTB file but I couldn’t actually figure out how to use the new DTB file?

So I just basically added an FDT entry to extlinux.conf, rebooted and was able to use the new, patched version. What is the correct procedure here to use a new DTB file???

/dev/ttyTHS2 was enumerated and worked perfectly.

Thanks

I did a partial similar test. I took the existing tegra186-quill-p3310-1000-c03-00-base.dtb in “/boot”, reverse compiled it, changed the serial@280000 to status “okay”, recompiled it as “extracted_tegra186-quill-p3310-1000-c03-00-base.dtb”, put it in “/boot”, then added the FDT entry. I have not tested function, but ttyTHS2 now shows up (and it is highly likely it’ll work).

Notes (you may need to install dtc):

sudo -s
cd /tmp
dtc -I dtb -o dts extracted.dts /boot/tegra186-quill-p3310-1000-c03-00-base.dtb
# Search for "serial@c280000" where it is a block of code and not just a single line...
# Change status = "disabled" to status = "okay";
# Build a modified version:
dtc -I dts -o dtb /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb extracted.dts
cd /boot/extlinux
# edit extlinux.conf...add this line between MENU LABEL line and LINUX line:
FDT /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb

Upon reboot ttyTHS2 will be there once the Linux kernel loads.

Hi, I tried your solution:

But after reboot Jetson doesn’t seem to work at all. Previously I was connected via SSH and now there is no ethernet connection at all. I also connected it to Serial Console and get following log with many Errors:

[0000.279] I> Welcome to MB2(TBoot-BPMP)(version: 01.00.160913-t186-M-00.00-mobile-f4c42291)
[0000.287] I> Default Heap @ [0xd486400 - 0xd488400]
[0000.292] I> DMA Heap @ [0x84900000 - 0x85300000]
[0000.297] I> bit @ 0xd480000
[0000.300] I> BR-BCT relocated to 0xf7f20000
[0000.304] I> Boot-device: eMMC
[0000.308] I> pmic: reset reason (nverc)	: 0x4
[0000.312] I> Reading GPT from 512 for device 00000003
[0000.318] I> Reading GPT from 8388096 for device 00000003
[0000.325] I> Found 6 partitions in 00000003 device
[0000.330] I> Reading GPT from 512 for device 00010003
[0000.336] I> Found 17 partitions in 00010003 device
[0000.342] W> No valid slot number is found in scratch register
[0000.347] W> Return default slot: _a
[0000.351] I> A/B: bin_type (16) slot 0
[0000.354] I> Select partition: bpmp-fw
[0000.358] I> Loading partition bpmp-fw at 0xf7600000
[0000.363] I> Reading two headers - addr:0xf7600000 blocks:1
[0000.368] I> Addr: 0xf7600000, start-block: 58739717, num_blocks: 1
[0000.383] I> Binary(16) of size 524480 is loaded @ 0xf7600000
[0000.389] W> No valid slot number is found in scratch register
[0000.394] W> Return default slot: _a
[0000.398] I> A/B: bin_type (17) slot 0
[0000.401] I> Select partition: bpmp-fw-dtb
[0000.405] I> Loading partition bpmp-fw-dtb at 0xf77f0000
[0000.411] I> Reading two headers - addr:0xf77f0000 blocks:1
[0000.416] I> Addr: 0xf77f0000, start-block: 58740925, num_blocks: 1
[0000.428] I> Binary(17) of size 326672 is loaded @ 0xf77b0200
[0000.555] I> BPMP-FW load address = 0xf7600000
[0000.559] I> BPMP-FW DTB load address = 0x501b0200
[0000.564] I> Loading SCE-FW ...
[0000.567] W> No valid slot number is found in scratch register
[0000.573] W> Return default slot: _a
[0000.576] I> A/B: bin_type (12) slot 0
[0000.580] I> Select partition: sce-fw
[0000.583] I> Loading partition sce-fw at 0xf7800000
[0000.588] I> Reading two headers - addr:0xf7800000 blocks:1
[0000.593] I> Addr: 0xf7800000, start-block: 58741925, num_blocks: 1
[0000.602] I> Binary(12) of size 65088 is loaded @ 0xf7800000
[0000.607] I> Init SCE
[0000.610] I> Copy BTCM section
[0000.613] W> No valid slot number is found in scratch register
[0000.618] W> Return default slot: _a
[0000.622] I> A/B: bin_type (13) slot 0
[0000.625] I> Select partition: cpu-bootloader
[0000.629] I> Loading partition cpu-bootloader at 0x96000000
[0000.635] I> Reading two headers - addr:0x96000000 blocks:1
[0000.640] I> Addr: 0x96000000, start-block: 58732545, num_blocks: 1
[0000.651] I> Binary(13) of size 195776 is loaded @ 0x96000000
[0000.656] W> No valid slot number is found in scratch register
[0000.662] W> Return default slot: _a
[0000.665] I> A/B: bin_type (20) slot 0
[0000.669] I> Select partition: bootloader-dtb
[0000.673] I> Loading partition bootloader-dtb at 0x85300000
[0000.679] I> Reading two headers - addr:0x85300000 blocks:1
[0000.684] I> Addr: 0x85300000, start-block: 58733057, num_blocks: 1
[0000.695] I> Binary(20) of size 248032 is loaded @ 0x85300000
[0000.701] I> MB2-params @ 0xf7f00000
[0000.704] I> CPUBL-params @ 0xf7f00000
[0000.708] I> CPU-BL loaded at : 0x96000000
[0000.712] I> Loading TOS ...
[0000.715] W> No valid slot number is found in scratch register
[0000.720] W> Return default slot: _a
[0000.724] I> A/B: bin_type (14) slot 0
[0000.727] I> Select partition: secure-os
[0000.731] I> Loading partition secure-os at 0x8490f400
[0000.736] I> Reading two headers - addr:0x8490f400 blocks:1
[0000.742] I> Addr: 0x8490f400, start-block: 58733569, num_blocks: 1
[0000.750] I> Binary(14) of size 54384 is loaded @ 0x8490f400
[0000.756] I> Copying Monitor (length: 0xd270) from 0x8490f600 to 0x40000000
[0000.763] I> Erasing Monitor @ 0x8490f600
[0000.767] I> Unhalting SCE
[0000.771] I> Waypoint2-ACK: 0x5200b8d0
[0000.775] I> MB2(TBoot-BPMP) done

NOTICE:  BL31: v1.2(release):ff7a644
NOTICE:  BL31: Built : 21:06:35, Mar  1 2017
NOTICE:  Trusty image missing.
ERROR:   Error initializing runtime service trusty_fast
[0001.137] I> Welcome to Cboot
[0001.139] I> Cboot Version: 00.00.2014.50-t186-fabbc56c
[0001.145] I> CPU-BL Params @ 0xf7f00000
[0001.148] I>  0) Base:0x00000000 Size:0x00000000
[0001.153] I>  1) Base:0xf7e00000 Size:0x00100000
[0001.157] I>  2) Base:0xf7d00000 Size:0x00100000
[0001.161] I>  3) Base:0xf7c00000 Size:0x00100000
[0001.166] I>  4) Base:0xf7b00000 Size:0x00100000
[0001.170] I>  5) Base:0xf7a00000 Size:0x00100000
[0001.175] I>  6) Base:0xf7600000 Size:0x00200000
[0001.179] I>  7) Base:0xf7000000 Size:0x00400000
[0001.184] I>  8) Base:0xf7900000 Size:0x00100000
[0001.188] I>  9) Base:0xf7800000 Size:0x00100000
[0001.192] I> 10) Base:0xf6800000 Size:0x00800000
[0001.197] I> 11) Base:0x30000000 Size:0x00040000
[0001.201] I> 12) Base:0xf7500000 Size:0x00100000
[0001.206] I> 13) Base:0x30040000 Size:0x00001000
[0001.210] I> 14) Base:0x30048000 Size:0x00001000
[0001.215] I> 15) Base:0x30049000 Size:0x00001000
[0001.219] I> 16) Base:0x3004a000 Size:0x00001000
[0001.223] I> 17) Base:0x3004b000 Size:0x00001000
[0001.228] I> 18) Base:0x3004c000 Size:0x00001000
[0001.232] I> 19) Base:0x3004d000 Size:0x00001000
[0001.237] I> 20) Base:0x3004e000 Size:0x00001000
[0001.241] I> 21) Base:0x3004f000 Size:0x00001000
[0001.246] I> 22) Base:0x00000000 Size:0x00000000
[0001.250] I> 23) Base:0xf7ff0000 Size:0x00010000
[0001.254] I> 24) Base:0x00000000 Size:0x00000000
[0001.259] I> 25) Base:0x00000000 Size:0x00000000
[0001.263] I> 26) Base:0x00000000 Size:0x00000000
[0001.268] I> 27) Base:0x00000000 Size:0x00000000
[0001.272] I> 28) Base:0x84400000 Size:0x00400000
[0001.277] I> 29) Base:0x30000000 Size:0x00010000
[0001.281] I> 30) Base:0xf8000000 Size:0x08000000
[0001.285] I> 31) Base:0x00000000 Size:0x00000000
[0001.290] I> 32) Base:0xf6000000 Size:0x00600000
[0001.294] I> 33) Base:0x80000000 Size:0x76000000
[0001.299] I> 34) Base:0x100000000 Size:0x180000000
[0001.303] I> 35) Base:0x00000000 Size:0x00000000
[0001.308] I> 36) Base:0x00000000 Size:0x00000000
[0001.312] I> 37) Base:0xf7fc0000 Size:0x00020000
[0001.317] I> 38) Base:0x84000000 Size:0x00400000
[0001.321] I> 39) Base:0x96000000 Size:0x02000000
[0001.325] I> 40) Base:0x84800000 Size:0x00b00000
[0001.330] I> 41) Base:0xf7f00000 Size:0x00080000
[0001.334] I> 42) Base:0x00000000 Size:0x00000000
[0001.339] I> 43) Base:0x00000000 Size:0x00000000
[0001.343] platform_init_interrupts-121, 1*

[0001.347] Interrupts Init done

[0001.351] calling constructors

[0001.354] initializing heap
[0001.356] initializing threads

[0001.360] initializing timers

[0001.363] creating bootstrap completion thread

[0001.367] top of bootstrap2()

[0001.370] CPU: ARM Cortex A57

[0001.373] CPU: MIDR: 0x411FD073, MPIDR: 0x80000100

[0001.378] initializing platform

[0001.382] I> Boot-device: eMMC
[0001.385] I> odm data is 1090000
[0001.388] I> Reading GPT from 512 for device 00000003
[0001.394] I> Reading GPT from 8388096 for device 00000003
[0001.401] I> Found 6 partitions in 00000003 device
[0001.405] I> Reading GPT from 512 for device 00010003
[0001.411] I> Found 17 partitions in 00010003 device
[0001.416] W> No valid slot number is found in scratch register
[0001.421] W> Return default slot: _a
[0001.425] I> A/B: bin_type (1) slot 0
[0001.428] I> Select partition: kernel-dtb
[0001.432] I> Loading partition kernel-dtb at 0x92000000
[0001.441] I> Kernel_dtb @0x92000000
[0001.444] I> Bl_dtb @0x85300000
[0001.447] I> gpio framework initialized
[0001.451] I> tegrabl_gpio_driver_register: register 'tegra_gpio_main_driver' driver
[0001.458] I> tegrabl_gpio_driver_register: register 'tegra_gpio_aon_driver' driver
[0001.466] I> tegrabl_tca9539_init: i2c bus: 0, slave addr: 0xee
[0001.474] I> tegrabl_gpio_driver_register: register 'tca9539_gpio_driver' driver
[0001.482] I> tegrabl_tca9539_init: i2c bus: 0, slave addr: 0xe8
[0001.490] I> tegrabl_gpio_driver_register: register 'tca9539_gpio_driver' driver
[0001.498] E> tegrabl_blob_init: BMP partition does not have valid Blob
[0001.504] E> tegrabl_load_bmp_blob: BMP blob initialization failed
[0001.510] W> Loading bmp blob to memory failed
[0001.518] I> Find /i2c@c250000's alias i2c7
[0001.522] I> Reading eeprom i2c=7 address=0x50
[0001.552] I> Device at /i2c@c250000:0x50
[0001.555] I> Reading eeprom i2c=7 address=0x57
[0001.584] I> Device at /i2c@c250000:0x57
[0001.589] I> Find /i2c@c240000's alias i2c1
[0001.593] I> Reading eeprom i2c=1 address=0x51
[0001.599] I> Eeprom read failed 0x1a800027
[0001.603] I> Find /i2c@3160000's alias i2c0
[0001.607] I> Reading eeprom i2c=0 address=0x50
[0001.613] I> Eeprom read failed 0x1a800027
[0001.617] I> Find /i2c@3180000's alias i2c2
[0001.621] I> Reading eeprom i2c=2 address=0x54
[0001.626] I> Enabling gpio chip_id = 2, gpio pin = 9
[0001.656] I> Disabling gpio chip_id = 2, gpio pin = 9
[0001.662] I> Device at /i2c@3180000:0x54
[0001.665] I> create_pm_ids: id: 3310-1000-B00-E, len: 15
[0001.670] I> config: mem-type:00,power-config:00,misc-config:00,modem-config:00,touch-config:00,display-config:00,, len: 93
[0001.681] I> create_pm_ids: id: 2597-0000-501-B, len: 15
[0001.686] I> config: mem-type:00,power-config:00,misc-config:00,modem-config:00,touch-config:00,display-config:00,, len: 93
[0001.697] I> create_pm_ids: id: 3326-1000-100-M, len: 15
[0001.703] I> config: mem-type:ff,power-config:ff,misc-config:ff,modem-config:ff,touch-config:ff,display-config:ff,, len: 93
[0001.713] initializing target

[0001.716] calling apps_init()

[0001.720] starting app android_boot_app

[0001.724] I> Gpio keyboard init success
[0001.727] I> Kernel type = Normal
[0001.730] I> Loading kernel/boot.img ...
[0001.734] W> No valid slot number is found in scratch register
[0001.740] W> Return default slot: _a
[0001.743] I> A/B: bin_type (0) slot 0
[0001.747] I> Select partition: kernel
[0001.750] I> Loading partition kernel at 0xa8000000
[0001.831] W> No valid slot number is found in scratch register
[0001.837] W> Return default slot: _a
[0001.840] I> A/B: bin_type (1) slot 0
[0001.844] I> Select partition: kernel-dtb
[0001.848] I> Loading partition kernel-dtb at 0x92000000
[0001.856] I> Kernel DTB @ 0x92000000
[0001.860] I> Verified boot state = Orange
[0001.864] E> tegrabl_display_clear: display is not initialized
[0001.869] I> Checking boot.img header magic ... [0001.874] I> [OK]
[0001.875] I> Valid boot.img @ 0xa8000000
[0001.879] I> decompressor handler not found
[0001.883] I> Copying kernel image (462634 bytes) from 0xa8000800 to 0x80080000 ... [0001.890] I> Done
[0001.892] I> Move ramdisk (len: 6252235) from 0xa8071800 to 0x98000000
[0001.902] I> Updated bpmp info to DTB
[0001.907] I> Ramdisk: Base: 0x98000000; Size: 0x5f66cb
[0001.912] I> Updated initrd info to DTB
[0001.916] I> disabled_core_mask: 0xffffff0c
[0001.920] I> Kernel type = Normal
[0001.923] I> add_serialno: Serial Num = 0320817138942
[0001.928] W> No valid slot number is found in scratch register
[0001.934] W> Return default slot: _a
[0001.937] I> Linux Cmdline: root=/dev/mmcblk0p1 rw rootwait fbcon=map:0 net.ifnames=0 console=tty0 OS=l4t console=ttyS0,115200n8 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 nvdumper_reserved=0xf7fc0000 gpt androidboot.secureos=none tegraid=18.1.2.0.0 tegra_keep_boot_clocks maxcpus=6 android.kerneltype=normal androidboot.serialno=0320817138942 androidboot.security=non-secure sdhci_tegra.en_boot_part_access=1 
[0001.976] I> Updated bootarg info to DTB
[0001.981] I> eeprom_get_mac_addr: MAC (type: 0): 00:04:4b:8c:5d:b4
[0001.987] I> eeprom_get_mac_addr: MAC (type: 1): 00:04:4b:8c:5d:b5
[0001.993] I> eeprom_get_mac_addr: MAC (type: 2): 00:04:4b:8c:5d:b6
[0002.000] E> "ids" doesn't exist, creating 
[0002.004] E> "connection" doesn't exist, creating 
[0002.008] E> "configs" doesn't exist, creating 
[0002.013] I> create_pm_ids: id: 3310-1000-B00-E, len: 15
[0002.018] I> config: mem-type:00,power-config:00,misc-config:00,modem-config:00,touch-config:00,display-config:00,, len: 93
[0002.029] I> create_pm_ids: id: 2597-0000-501-B, len: 15
[0002.034] I> config: mem-type:00,power-config:00,misc-config:00,modem-config:00,touch-config:00,display-config:00,, len: 93
[0002.045] I> create_pm_ids: id: 3326-1000-100-M, len: 15
[0002.050] I> config: mem-type:ff,power-config:ff,misc-config:ff,modem-config:ff,touch-config:ff,display-config:ff,, len: 93
[0002.061] I> Adding plugin-manager/ids/3310-1000-B00=/i2c@c250000:module@0x50
[0002.068] E> "i2c@c250000" doesn't exist, creating 
[0002.072] E> "module@0x50" doesn't exist, creating 
[0002.077] I> Adding plugin-manager/ids/2597-0000-501=/i2c@c250000:module@0x57
[0002.084] E> "module@0x57" doesn't exist, creating 
[0002.089] I> Adding plugin-manager/ids/3326-1000-100=/i2c@3180000:module@0x54
[0002.096] E> "i2c@3180000" doesn't exist, creating 
[0002.101] E> "module@0x54" doesn't exist, creating 
[0002.108] I> Adding plugin-manager/ids/3310-1000-B00-E
[0002.115] I> Adding plugin-manager/configs/3310-mem-type 00
[0002.120] I> Adding plugin-manager/configs/3310-power-config 00
[0002.126] I> Adding plugin-manager/configs/3310-misc-config 00
[0002.132] I> Adding plugin-manager/configs/3310-modem-config 00
[0002.137] I> Adding plugin-manager/configs/3310-touch-config 00
[0002.143] I> Adding plugin-manager/configs/3310-display-config 00
[0002.149] E> "chip-id" doesn't exist, creating 
[0002.154] I> Adding plugin-manager/chip-id/A02P
[0002.160] I> Updated memory info to DTB
[0002.165] E> "reset" doesn't exist, creating 
[0002.170] E> "pmc-reset-reason" doesn't exist, creating 
[0002.175] E> "pmic-reset-reason" doesn't exist, creating 
[0002.181] I> disabled_core_mask: 0xffffff0c
[0002.191] I> tegrabl_load_kernel_and_dtb: Done


U-Boot 2016.07-g5971907 (Mar 01 2017 - 21:06:45 -0800)

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:  2  1  0 
MMC: no card present
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
529 bytes read in 80 ms (5.9 KiB/s)
p2771-0000 eMMC boot options
1:	primary kernel
Enter choice: 1:	primary kernel
Retrieving file: /boot/Image
18945456 bytes read in 503 ms (35.9 MiB/s)
append: fbcon=map:0 net.ifnames=0 console=tty0 OS=l4t console=ttyS0,115200n8 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 gpt tegraid=18.1.2.0.0 tegra_keep_boot_clocks maxcpus=6 android.kerneltype=normal androidboot.serialno=0335115020673 vpr_resize root=/dev/mmcblk0p1 rw rootwait
Retrieving file: /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb
333037 bytes read in 84 ms (3.8 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
SCRIPT FAILED: continuing...
starting USB...
No controllers found
USB is stopped. Please issue 'usb start' first.
starting USB...
No controllers found
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
missing environment variable: pxeuuid
Retrieving file: /boot/extlinux/pxelinux.cfg/01-00-04-4b-8c-5d-b6
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/00000000
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/0000000
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/000000
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/00000
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/0000
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/000
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/00
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/0
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/default-arm-tegra186
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/default-arm
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Retrieving file: /boot/extlinux/pxelinux.cfg/default
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Config file not found
starting USB...
No controllers found
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
ethernet@2490000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ERROR: phy_startup() failed: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:894/eqos_start()
ERROR: FAILED: -110
at /dvs/git/dirty/git-master_linux/3rdparty/u-boot/drivers/net/dwc_eth_qos.c:1122/eqos_start()
Tegra186 (P2771-0000-500) #

Is there any solution to fix it?

Apparently the device tree you created was not even found:

ERROR: Did not find a cmdline Flattened Device Tree

Where did you locate the edited device tree file, what was its exact name, and what is the content of your extlinux.conf?

Unfortunatelly I don’t know where device tree file can be located. I typed only commands listed in your comment. I only edided extlinux.conf by adding line :

FDT /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb

Right now I have only access to Serial Console with options listed below. Is there option to boot device using not modified .dtb file?

Tegra186 (P2771-0000-500) # clear
Unknown command 'clear' - try 'help'
Tegra186 (P2771-0000-500) # clc
Unknown command 'clc' - try 'help'
Tegra186 (P2771-0000-500) # help
?       - alias for 'help'
base    - print or set address offset
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootefi - Boots an EFI payload from memory
bootelf - Boot from an ELF image in memory
booti   - boot arm64 Linux Image image from memory
bootm   - boot application image from memory
bootp   - boot image via network using BOOTP/TFTP protocol
bootvx  - Boot vxWorks from an ELF image
cmp     - memory compare
coninfo - print console devices and information
cp      - memory copy
crc32   - checksum calculation
dhcp    - boot image via network using DHCP/TFTP protocol
dm      - Driver model low level access
echo    - echo args to console
editenv - edit environment variable
env     - environment handling commands
exit    - exit script
ext2load- load binary file from a Ext2 filesystem
ext2ls  - list files in a directory (default /)
ext4load- load binary file from a Ext4 filesystem
ext4ls  - list files in a directory (default /)
ext4size- determine a file's size
ext4write- create a file in the root directory
false   - do nothing, unsuccessfully
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
fatsize - determine a file's size
fatwrite- write file into a dos filesystem
fdt     - flattened device tree utility commands
fstype  - Look up a filesystem type
go      - start application at address 'addr'
gpio    - query and control gpio pins
help    - print command description/usage
i2c     - I2C sub-system
imxtract- extract a part of a multi-image
itest   - return true/false on integer compare
load    - load binary file from a filesystem
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
loadx   - load binary file over serial line (xmodem mode)
loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
ls      - list files in a directory (default /)
md      - memory display
mdio    - MDIO utility commands
mii     - MII utility commands
mm      - memory modify (auto-incrementing address)
mmc     - MMC sub system
mmcinfo - display MMC info
mw      - memory write (fill)
nm      - memory modify (constant address)
part    - disk partition related commands
pci     - list and access PCI Configuration Space
ping    - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
pxe     - commands to get and boot from pxe files
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
save    - save file to a filesystem
saveenv - save environment variables to persistent storage
setenv  - set environment variables
sf      - SPI flash sub-system
showvar - print local hushshell variables
size    - determine a file's size
sleep   - delay execution for some time
source  - run script from memory
sspi    - SPI utility command
sysboot - command to get and boot from syslinux files
test    - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
true    - do nothing, successfully
usb     - USB sub-system
version - print monitor, compiler and linker version
Tegra186 (P2771-0000-500) #

As I understand linuxdev has created at the host OS the dtb file with the :

dtc -I dts -o dtb /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb extracted.dts

Than either the dtb file should be passed to the Jetson via mv or cp or via flashOS, as it seems to me.

But I do not have acces to Jetson filesystem, so I don’t know if it is possible to do.

Could you plese give me more detailed instructions?

How did you add the FDT (device tree) file originally, and where was it copied? If you added that FDT entry but didn’t copy the file to “/boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb”, then this would explain it all (you would have told it to use a new device tree file that isn’t available).

If your system is unbootable perhaps an SD card rescue could be made…though you might find flashing and reinstalling faster/easier.

It’s always a good idea to have a serial console, and to test changes which might break boot by using an alternate boot entry. Without serial console everything you do for boot is risky. Having a serial console should not be considered optional if you are developing software on a Jetson.

If you are in particular need of saving your file system and not flashing it, then you can clone the rootfs (takes a long time and lots of host disk space), then mounting the clone on loopback, editing the clone, and finally re-flashing with the “reuse” feature to use the clone instead of a fresh install. If all you are missing is the “/boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb” file, then this might be the way to go…clone, loopback mount, put the dtb file there, umount the clone, and flash telling it to use the clone (this will take many hours).

Excuse me if I my answer is still inaccurate, but I don’t have too much knowledge in the topic.

I created modified_tegra186-quill-p3310-1000-c03-00-base.dtb extracted.dts file with command:

dtc -I dts -o /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb extracted.dts

(I had to change “-o dtb /boot/modified… .dtb” to “-o /boot/modified… .dtb” in order for this command to work). So it was already created in /boot directory and I did not have to copy it. Then I added entry line between MENU LABEL line and LINUX line: in extlinux.conf file:

FDT /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb

So that should not be the case, as path to this file was correct.

I have access to Serial Console (connected to pins on J21 Header) with available commands listed in my previus post. So is there any option to modify extlinux.conf file or change .dtb which should be used for boot?

If not, then how can I permorm Jetson “Reset Factory” ? I tried to enter Recovery Mode by pressing buttons in specified combination, but don’t know if this worked as nothing happend.

If i connect Jetson to my PC USB port I can see it listed via “lsusb” command, but don’t know how to make use of it.

Thanks in advance for Your reply.

It sounds like the file should have been found…perhaps there was a typographic error or something simple preventing the dtb file from being read.

There are ways to read or write ext4 file systems from the U-Boot command line (under serial console), but I have not myself attempted this. Simply typing “help” on the U-Boot command line might provide the information needed with some experimentation.

Recovery mode only turns the Jetson into a device which the driver package can manipulate from the PC host. In and of itself, recovery mode does nothing to change the Jetson. One could do the equivalent of what follows using JetPack, but here is the basic command line flash:

  1. # Download driver package and sample rootfs package. See https://developer.nvidia.com/embedded/linux-tegra
  2. # Unpack the driver package...this produces subdirectory "Linux_for_Tegra/", which also contains within that subdirectory "rootfs".
  3. cd Linux_for_Tegra/rootfs/
  4. Use sudo from there and unpack the sample rootfs (typically "sudo tar xjf /some/where/filename.tbz2").
  5. cd ..
  6. # You're now in "Linux_for_Tegra" directory.
  7. sudo ./apply_binaries.sh
  8. # Put Jetson in recovery mode, verify it shows up via lsusb.
  9. sudo ./flash.sh -S 28GiB jetson-tx2 mmcblk0p1
  10. # Takes significant time, wait, then when complete let the Jetson reboot. Should now work.

Thanks for the response. I will try Factory Reset if nothing else works.

I am wondering if there is possibility to change FDT path using uboot Serial Console. There are available commands like fdt:

egra186 (P2771-0000-500) # fdt
fdt - flattened device tree utility commands

Usage:
fdt addr [-c]  <addr> [<length>]   - Set the [control] fdt location to <addr>
fdt systemsetup                     - Do system-specific set up
fdt move   <fdt> <newaddr> <length> - Copy the fdt to <addr> and make it active
fdt resize                          - Resize fdt to size + padding to 4k addr
fdt print  <path> [<prop>]          - Recursive print starting at <path>
fdt list   <path> [<prop>]          - Print one level starting at <path>
fdt get value <var> <path> <prop>   - Get <property> and store in <var>
fdt get name <var> <path> <index>   - Get name of node <index> and store in <var>
fdt get addr <var> <path> <prop>    - Get start address of <property> and store in <var>
fdt get size <var> <path> [<prop>]  - Get size of [<property>] or num nodes and store in <var>
fdt set    <path> <prop> [<val>]    - Set <property> [to <val>]
fdt mknode <path> <node>            - Create a new node after <path>
fdt rm     <path> [<prop>]          - Delete the node or <property>
fdt header                          - Display header info
fdt bootcpu <id>                    - Set boot cpuid
fdt memory <addr> <size>            - Add/Update memory node
fdt rsvmem print                    - Show current mem reserves
fdt rsvmem add <addr> <size>        - Add a mem reserve
fdt rsvmem delete <index>           - Delete a mem reserves
fdt chosen [<start> <end>]          - Add/update the /chosen branch in the tree
                                        <start>/<end> - initrd start/end addr

or I can also change environment variables:

Tegra186 (P2771-0000-500) # printenv
arch=arm
baudrate=115200
board=p2771-0000
board_name=p2771-0000
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootaa64.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
boot_net_pci_enum=pci enum
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_targets=mmc1 mmc0 usb0 pxe dhcp 
bootargs=fbcon=map:0 net.ifnames=0 console=tty0 OS=l4t console=ttyS0,115200n8 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 gpt tegraid=18.1.2.0.0 tegra_keep_boot_clocks maxcpus=6 android.kerneltype=normal androidboot.serialno=0335115020673 vpr_resize root=/dev/mmcblk0p1 rw rootwait
bootcmd=run distro_bootcmd
bootcmd_dhcp=run boot_net_usb_start; run boot_net_pci_enum; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00011:UNDI:003000;setenv bootp_arch 0xb;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_mmc0=setenv devnum 0; run mmc_boot
bootcmd_mmc1=setenv devnum 1; run mmc_boot
bootcmd_pxe=run boot_net_usb_start; run boot_net_pci_enum; dhcp; if pxe get; then pxe boot; fi
bootcmd_usb0=setenv devnum 0; run usb_boot
bootdelay=2
bootfile=/boot/extlinux/extlinux.conf
bootfstype=ext4
cpu=armv8
devnum=0
devplist=1
devtype=mmc
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
ethact=ethernet@2490000
ethaddr=00:04:4b:8c:5d:b6
fdt_addr=92000000
fdt_addr_r=0x82000000
fdt_copy_node_paths=/chosen/plugin-manager
fdt_copy_prop_paths=/chosen/nvidia,bluetooth-mac:/chosen/nvidia,ether-mac:/chosen/nvidia,wifi-mac:/bpmp/carveout-start:/bpmp/carveout-size
fdt_high=ffffffffffffffff
fdtaddr=92000000
fdtcontroladdr=f5b35220
fileaddr=82000000
filesize=514ed
initrd_high=ffffffffffffffff
kernel_addr_r=0x80080000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x80080000
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
pxefile_addr_r=0x90100000
ramdisk_addr_r=0x82100000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x90000000
soc=tegra186
stderr=serial
stdin=serial
stdout=serial
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
vendor=nvidia

Maybe any of these allows to set original /boot/tegra186-quill-p3310-1000-c03-00-base.dtb file for use to boot insted of one specified in extlinux.conf file? (Maybe change “bootfile” variable to “/boot/tegra186-quill-p3310-1000-c03-00-base.dtb” instead of “/boot/extlinux/extlinux.conf”)

Edit:
I tried following commands

setenv fdtfile /boot/tegra186-quill-p3310-1000-c03-00-base.dtb
saveenv

But unfortunatelly after reboot still modified-tegra186… .dtb file is loaded:

Tegra186 (P2771-0000-500) # boot
MMC: no card present
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
529 bytes read in 80 ms (5.9 KiB/s)
p2771-0000 eMMC boot options
1:	primary kernel
Enter choice: 1:	primary kernel
Retrieving file: /boot/Image
18945456 bytes read in 504 ms (35.8 MiB/s)
append: fbcon=map:0 net.ifnames=0 console=tty0 OS=l4t console=ttyS0,115200n8 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 gpt tegraid=18.1.2.0.0 tegra_keep_boot_clocks maxcpus=6 android.kerneltype=normal androidboot.serialno=0335115020673 vpr_resize root=/dev/mmcblk0p1 rw rootwait
Retrieving file: <b>/boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb</b>
333037 bytes read in 85 ms (3.7 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
SCRIPT FAILED: continuing...

As far as I know
the command

dtc -I dts -o /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb extracted.dts

won’t execute at Jetson due to its arm architecture. That makes me think that you performed the command at the Host OS. If I am right - you may get the jetson to the force recovery mode and get access to its hard drive from the Host OS and copy the dtb file from the Host OS based /boot folder to the Jetson based /boot folder.

I performed this command on Jetson using SSH terminal. File was created correctly without errors.

I tried to force Recovery Mode and I was able to see it via lsusb command, but I didn’t know how to access hard drive.

I just want to force uboot to use

"/boot/tegra186-quill-p3310-1000-c03-00-base.dtb extracted.dts"

instead of

"/boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb extracted.dts"

, which I changed in /boot/extlinux/extlinux.conf file.