NVidia TX1 as a Companion Computer

This page explains how to connect and configure an NVidia TX1 using AuVidea.eu’s J120 carrier board so that it is able to communicate with a Pixhawk flight controller using the MAVLink protocol over a serial connection.

Connecting the Pixhawk and TX1


Connect the Pixhawk’s TELEM2 port to the J120’s UART2 port’s Ground, TX and RX pins as shown in the image above.

The Pixhawk and TX1 should be powered separately (the J120/TX1 through it’s 12V power input port, the Pixhawk through it’s POWER port). They should be powered on at about the same time or the TX1 powered on first to avoid the Pixhawk interrupting the TX1’s bootloader.

Setup the Pixhawk

Connect to the Pixhawk with a ground station (i.e. Mission Planner) and set the following parameters:

  • SERIAL2_PROTOCOL = 1 (the default) to enable MAVLink on the serial port.
  • SERIAL2_BAUD = 921 so the Pixhawk can communicate with the TX1 at 921600 baud.
  • LOG_BACKEND_TYPE = 3 if you are using APSync to stream the dataflash log files to the TX1

Setup the TX1

The easiest way to setup the TX1 is to flash one of the existing APSync images from firmware.ardupilot.org (look for images starting with “tx1”) or you can create your own image by following the instructions found here in the ardupilot companion repo.


Images can only be uploaded to the TX1 if the existing image, and new image are from the same jetpack version. APSync images for TX1 are built with JetPack-2.3.1 so if your TX1 has another version on it currently (or has never been flashed) you should first follow “Step1 : install NVidia image onto the TX1” from here before attempting to upload the latest apsync image.

  • mount the TX1 back on the NVidia development board

  • download and unzip the latest image from firmware.ardupilot.org. Look for the file starting with “apsync-tx1”.

  • official instructions on flashing images can be found here but in short:

    • install the TX1 on an NVidia TX1 development board or the auvidea.com J120 board
    • install JetPack-2.3.1 on an Ubuntu machine
    • connect a USB cable from the Ubuntu machine to the TX1 development board
    • power on the TX1 development board
    • put the TX1 into bootloader mode (Hold and keep pressed the “Force-Recovery” button, press and release the “Reset” button, release the “Force-Recovery” button). You can check the TX1 is in bootloader mode by typing “lsusb” on the Ubuntu machine and look for “NVidia”.
    • on the Ubuntu machine, from the ../JetPack/TX1/Linux_for_Tegra_tx1/bootloader directory run a command like below where “IMAGE.img” is replaced with the name of the image file downloaded above: sudo ./tegraflash.py --bl cboot.bin --applet nvtboot_recovery.bin --chip 0x21 --cmd "write APP IMAGE.img"
  • alternatively you may use the setup instructions found in the ardupilot/companion repo.

  • the J120’s UART2 appears on the TX1 as /dev/ttyTHS1