Title:
A7670 LTE module works over USB but not UART on Jetson Orin Nano (UART works with Pico)
Question:
Hi,
I’m having an issue with UART communication between a SIMCom A7670 Dual SIM LTE Cat-1 module (OT8456) and a Jetson Orin Nano / Orin Nano Super.
What works
A7670 ↔ Jetson via USB: works perfectly (multiple /dev/ttyUSBx, AT commands OK).
Jetson UART ↔ Raspberry Pi Pico UART: works.
A7670 UART ↔ Pico UART: works.
A7670 UART ↔ Pico UART via BSS138 level shifter: works.
What does NOT work
A7670 UART ↔ Jetson UART, both:
direct connection
via BSS138 I²C-safe bidirectional level shifter
Strange behavior
With the BSS138 level shifter, nothing is received unless I add a 4.7k pull-up from TX to 3.3V.
With that pull-up:
At 115200 baud → no data
At 9600 baud → ~100 bytes of “garbage” data in minicom
Without the pull-up → completely silent RX
Details
Common GND is connected
Flow control disabled
Tested multiple baud rates
UART confirmed working on Jetson with other devices
A7670 UART confirmed working with Pico
Power to A7670 is stable (USB works reliably)
Question
Given that:
the module UART works with other MCUs,
the Jetson UART works with other devices,
USB works fine on the Jetson,
what Jetson-specific limitation or configuration could cause UART RX to fail only with this modem?
Could this be related to:
UART input thresholds / drive strength?
Pinmux / Tegra UART configuration?
A requirement for explicit pull-ups or termination on Jetson UART RX?
Jetson UART incompatibility with open-drain style level shifters (BSS138)?
Any insight into Jetson UART electrical characteristics or known modem quirks would be greatly appreciated.
*** Please note that this reply is generated by LLM automatically ***
The issue you’re experiencing with the UART communication between the SIMCom A7670 Dual SIM LTE Cat1 module and the Jetson Orin Nano is likely due to the electrical characteristics of the Jetson UART and the level shifter used.
The Jetson Orin Nano uses a CMOS (Complementary Metal-Oxide-Semiconductor) type UART, which has a specific input threshold voltage. The BSS138 level shifter is an open-drain type, which might not be compatible with the Jetson UART.
The fact that you need to add a 47k pull-up resistor from the TX pin to 3.3V to receive any data suggests that the Jetson UART is not providing a strong enough pull-up or termination for the open-drain level shifter. This is a common issue when using open-drain level shifters with CMOS-type UARTs.
In contrast, the Raspberry Pi Pico UART is likely using a different type of UART or has a different configuration that is compatible with the open-drain level shifter.
To resolve this issue, you can try the following:
Use a different type of level shifter that is compatible with the Jetson UART, such as a push-pull type level shifter.
Add a stronger pull-up resistor (e.g., 10k or 4.7k) to the TX pin to provide a stronger termination for the open-drain level shifter.
Check the pinmux configuration of the Jetson UART to ensure that it is set to the correct mode for the level shifter used.
Verify that the Tegra UART configuration is set to the correct mode for the level shifter used.
It’s also worth noting that the Jetson Orin Nano has a specific requirement for explicit pull-ups or termination on the UART RX pin, as mentioned in the Jetson Orin NX Series and Jetson Orin Nano Series Product Design Guide.
In comparison to other Jetson modules, the Jetson AGX Orin and Jetson Xavier NX series have similar UART configurations, but the Jetson AGX Xavier series has a different UART configuration that might be more compatible with open-drain level shifters.
In summary, the issue is likely due to the incompatibility between the open-drain level shifter and the CMOS-type UART on the Jetson Orin Nano. By using a different type of level shifter or adding a stronger pull-up resistor, you should be able to resolve the issue.
*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***
Im using the orin nano super dev kit with Jetpack 6.
Ive customized the pinmux on it. I use minicom for interface. But the trick using a raspberry pico as a bridge between the uart pins works best instead of using resistors or level shifters. Now I got perfect connection with the lte on my jetson.
Okay, it seems you’ve resolved the issue.
What do you mean about “using a raspberry pico as a bridge between the uart pins”?
Could you share the detailed connection in your case?
Connecting the tx en rx to the rx0 and tx0 from jetson to Pico, and connecting the tx and rx from the module to the rx1 and tx1 from the Pico.
At the pico i’ve created a script, so basically what it do is just make a package of every bit and sent it from tx0 to the tx1 , same for the rx0 and rx1.
Got it, do you want to do further debug for the UART transaction between Jetson Orin Nano and A7670 module?
Or is it fine with the current connections through adding Pico as the bridge?