Hello, sorry if this is a duplicate topic.
I am having trouble using UART on Jetson Nano Board (B01). I need to use multiple UARTs on the board. I don’t have any problem using UART at J41 - 40 pin exp. header.
For the second UART I wanted to use the UART at the back of the board, located at the J50 - 12 - pin button header. As the document states that Pin3 and Pin4 are RX and TX. It says UART console. I am not sure what does this mean. I tried to disable the console following the guide at the link.
I am confused about how can utilize this UART to read sensor data from there. Is this even possible?
Thanks in advance.
This UART is used for serial console log. You could refer to the following setup to read debug messages from this UART for Jetson Nano devkit.
Jetson Nano & NX Style - Serial Debug Console - JetsonHacks
You could check if there’s any message after you follow the steps from the guide.
Thank you for your quick response.
I know and applied the guide on the link to test out if the UART (at J50) is working fine and it turned out well. But at this point I do not need the debug console function, I need to operate this UART as normal just like UART at expansion header. My goal is to use this UART to read sensor from here.
Is this possible? If it is what is the correct way to achieve this because I tried several guides but all of them ended up with failure.
Thanks in advance.
Please try the following steps to disable debug UART:
- Remove console=ttyS0 in kernel cmdline
- set ODMDATA to 0x14000
Both should be found in p3448-0000.conf.common
A related bit of information you might find useful: Depending on driver, and load order, the specific UART name and number might vary. However, this should tell you permissions of the various UART drivers loaded on a Jetson, along with permissions:
ls -l /dev/ttyTHS* /dev/ttyS*
Note that each of the
ttyTHS are talking to the same driver that the
ttyS are talking to, but they are different drivers (don’t use both simultaneously).
Also, the command I gave above to list these shows owner and group. The owner is always root, but the group might be either of “
dialout” or “
tty”. Those of group
dialout are usually free for you to use. Those of group
tty are being used as a serial console. The commands given by @KevinFFF are one way to remove this.
Note that the boot stages of any computer are actually a tiny operating system (despite having the only goal to overwrite itself with another operating system), and so driver enable/disable during boot stages will differ from enable/disable under Linux (the other operating system). Those commands should disable both (the
p3448-0000.conf.common is part of the flash parameters, and will generally propagate those changes when flashing).
If you want to see if the kernel parameters you are looking for exist once booted, then you can “
cat /proc/cmdline”, and this will tell you what the kernel parameters are.
We solved our issue and we wanted to share the story and steps for those who are having the same issues similar to us.
We needed two UART ports for our project. One is the “/dev/ttyTHS1” (J41 - 40 pin expansion header) and the other one is the “/dev/ttyS0” (J50 - 12 pin button header, located under the SD Card Slot and the Heat Sink). When we flashed the Jetson Nano B01 carrier board we faced another issue related to booting. The SDK Manager tried to flash the board using eMMC but our board only has SD Card. The solution was simple. Using the “flash.sh” script file we flashed the Jetson Nano according to this link.
Before the flash operation we changed the “p3448.conf.common” file according to instructions given by @KevinFFF. After this we proceeded with the flashing.
In the “flash.sh” file there is an argument for flashing with SD Card which is “mmcblk1p1”. After the flash operation we created the image with “image creator” located in the “Linux_for_Tegra/tools”.
After the flashing and etching the SD Card with the image that we created, the OS became operational. Using the commands given by @linuxdev, we checked that both the “/dev/ttyTHS1” and “/dev/ttyS0” are “tty”. Using the commands below disables the “tty” and converts it to “dialout” which we wanted.
$ systemctl stop nvgetty
$ systemctl disable nvgetty
$ udevadm trigger
We rebooted our Jetson Nano and now using the commands given by @linuxdev , all of the serial ports are now “dialout”. We connected the TTL connectors and tested the serial communication, everything works fine.
Thank you for responses @KevinFFF and @linuxdev .
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.