1. Hardware You Need
- Pixhawk 2.4.8 (has DF13 6-pin TELEM ports)
- Standard 6-pin DF13 to 6-pin DF13 cable that came with Pixhawk (or a new one)
- FTDI-style serial cable or direct wiring with a 3.3V-compatible cable. The Jetson Nano UART is 3.3V – do NOT use 5V logic or you will damage the Nano.
- Recommended ready-made cable: Foca V2.0 or any “3.3V 6-pin DF13 serial cable” (very common on AliExpress/Banggood), or the official Pixhawk “Dronecode” 6-pin JST-GH cable if you have a newer carrier board.
2. Wiring (Most Common and Reliable)
Use TELEM2 port on Pixhawk 2.4.8 → Jetson Nano J41 header (UART1, /dev/ttyTHS1 on newer JetPack or /dev/ttyS0 on older)
| Pixhawk TELEM2 Pin (DF13) | Jetson Nano 40-pin Header | Description |
|---|---|---|
| Pin 1 (+5V) | Do NOT connect | Leave floating |
| Pin 2 (TX) | Pin 10 (UART1_RX) | Pixhawk TX → Nano RX |
| Pin 3 (RX) | Pin 8 (UART1_TX) | Pixhawk RX → Nano TX |
| Pin 4 (CTS) | Optional, usually NC | Not needed for MAVLink |
| Pin 5 (RTS) | Optional, usually NC | Not needed |
| Pin 6 (GND) | Pin 6, 9, or any GND | Ground |
Critical: Only connect TX, RX, and GND (3 wires). Do not connect the 5V pin or you risk frying the Nano.
If you use a standard Pixhawk 6-pin to 4-pin FTDI cable (very common), the pinout is usually already correct when you plug the black wire (GND) toward the edge of the Nano.
3. Pixhawk Side Configuration (ArduPilot – most people use this)
Mission Planner or QGroundControl → Parameters:
| Parameter | Value | Notes |
|---|---|---|
| SERIAL2_PROTOCOL | 2 | MAVLink 2 |
| SERIAL2_BAUD | 57600 or 921600 | 57600 is safe; 921600 needs good cable |
| BRD_SER2_RTSCTS | 0 | Disable hardware flow control (important!) |
For PX4 instead of ArduPilot:
In QGroundControl → Parameters → MAV_1_CONFIG → TELEM 2
Set baud rate (usually 576115) and MAVLink instance.
4. Jetson Nano Side (Software)
JetPack 4.6+ (Ubuntu 18.04) is most common and stable.
Disable the serial console that grabs the port:
sudo systemctl stop nvgetty
sudo systemctl disable nvgetty
sudo udevadm triggerCheck which device appears:
ls -l /dev/ttyTHS* # usually /dev/ttyTHS1 on JetPack 4.6
# or /dev/ttyS0 on some older imagesTest with MAVProxy or pymavlink:
pip3 install pymavlink mavproxy dronekit
mavproxy.py --master=/dev/ttyTHS1 --baudrate 576000 --aircraft MyCopterOr with ROS/MAVROS (very common on Nano):
sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
chmod +x install_geographiclib_datasets.sh && ./install_geographiclib_datasets.sh
# Then launch example:
roslaunch mavros px4.launch fcu_url:="udp://:14550@127.0.0.1:14557" gcs_url:="" fcu_protocol:=v2.0 serial:=/dev/ttyTHS1 baud:=576000Use the actual device and baud rate you set.
5. Optional – Higher Speed (921600 baud)
Works fine with short (<30 cm) good cables:
- Set
SERIAL2_BAUD = 921600on Pixhawk - On Nano:
--baudrate 921600or in MAVROS .launch file
Common Problems & Fixes
- Garbage/no data → swapped TX/RX wires (very common)
- Jetson shows /dev/ttyTHS1 but nothing → you probably still have nvgetty running
- Random disconnects at high baud → bad cable or ground loop (add a second ground wire)
- Pixhawk reboots when plugging cable → you connected 5V pin by mistake
That’s it! This exact setup has been used on thousands of drones with Pixhawk 2.4.8 + Jetson Nano for computer vision, ROS, offboard control, etc.
If you want a plug-and-play cable, search AliExpress for “Pixhawk 2.4.8 to Jetson Nano TELEM cable” – many sellers make exactly the 3-wire version now.
Comments
testing on actual drones?
By thatch | 12/17/2025