We are unable to transmit UART data on pin 99 of the Jetson Nano SOM using a custom carrier board.
We have a custom carrier PCB that has exposed pins 99 and 101 as UARTx (TX & RX) respectively. I understand these are used by the M.2 key on the default carrier board.
These pins seem to be available to software at:
/dev/ttyTHS2
When these pins are connected to an external microcontroller, we reliably get data on the RX line, but the Jetson Nano does not seem to transmit data on the TX line.
We have tried with echo, gnu screen, minicom and picocom.
I was suspicious of hardware flow control as being the root cause of our problem, but it looks like this is disabled based on this call:
stty -a -F /dev/ttyTHS2
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; swtch = ; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
That said, the RTS and CTS (pins 103 and 105 respectively) are currently floating (no connect) as they are not used by our microcontroller.
We have disconnected the microcontroller and shorted the TX/RX pins to each other with a logic analyzer connected.
We have not been able to see any data on the TX line from the Jetson Nano.
I have tried with nvgetty enabled and disabled, with no change in behavior.
We were trying to get Arducam cameras working some months ago, and it looks like they may have updated our device tree, but it’s not obvious to me how to (or if I should) edit these entries, as they refer to pins (and uarts) that I cannot find in any documentation.
That said, here is our decompiled device tree entry for what I’ve come to believe are the (potentially relevant) pins:
uart3_tx_pd1 {
nvidia,pins = “uart3_tx_pd1”;
nvidia,function = “uartc”;
nvidia,pull = <0x0>;
nvidia,tristate = <0x0>;
nvidia,enable-input = <0x0>;
};
uart3_rx_pd2 {
nvidia,pins = “uart3_rx_pd2”;
nvidia,function = “uartc”;
nvidia,pull = <0x0>;
nvidia,tristate = <0x0>;
nvidia,enable-input = <0x1>;
};
uart3_rts_pd3 {
nvidia,pins = “uart3_rts_pd3”;
nvidia,function = “uartc”;
nvidia,pull = <0x2>;
nvidia,tristate = <0x0>;
nvidia,enable-input = <0x0>;
};
uart3_cts_pd4 {
nvidia,pins = “uart3_cts_pd4”;
nvidia,function = “uartc”;
nvidia,pull = <0x2>;
nvidia,tristate = <0x0>;
nvidia,enable-input = <0x1>;
};
Any help, tips or pointers would be enormously appreciated!
Thanks,
Luke