.. _AT.BoardAutomation: .. include:: /content/swdocs.rsts .. spelling:: udev Board Automation !!!!!!!!!!!!!!!! The |NVIDIA(r)| |Jetson AGX Xavier(tm)| and |NVIDIA(r)| |Jetson AGX Orin(tm)| developer kit carrier boards each have a micro USB port that you can use for board automation and UART debug output. You can control a Jetson AGX Orin Developer Kit carrier board with an integrated board automation solution called TOPO. TOPO connects to the host PC via a full-speed USB interface. Through this interface the host PC can: - Communicate with the |NVIDIA(r)| |Jetson(tm)| UART port - Automate commands like power on, power off, reset, and recovery You can control a Jetson AGX Xavier Developer Kit carrier board with its integrated FTDI chip, which has similar capabilities. Host System Setup @@@@@@@@@@@@@@@@@ These instructions are for users of Ubuntu 18.04 or Ubuntu 20.04, but can be adapted for other distributions. The software for interacting with the target carrier board can be found in ``Linux_for_Tegra/tools/board_automation/``. To eliminate the need to use ``sudo`` to interact with the carrier board, NVIDIA recommends that you create a udev rule: - To create a udev rule for a Jetson AGX Orin Developer Kit target: #. Add the following into ``/etc/udev/rules.d/99-mcurule.rules``:: SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7045", GROUP="plugdev", TAG+="uaccess" #. Reload rules:: $ sudo udevadm control --reload-rules && sudo udevadm trigger - To create a udev rule for a Jetson AGX Xavier Developer Kit target: #. Add the following into ``/etc/udev/rules.d/99-mcurule.rules``:: SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", GROUP="plugdev", TAG+="uaccess" #. Reload rules:: $ sudo udevadm control --reload-rules && sudo udevadm trigger Basic Board Control @@@@@@@@@@@@@@@@@@@ Following are some examples that demonstrate typical uses of the ``boardctl`` script to help you get started. You can run them as shown from ``Linux_for_Tegra/``, the directory in which you normally execute the ``flash`` script. Note that the ``power_on`` and ``recovery`` commands implicitly power cycle the target. For Jetson AGX Orin ################### - Recovery: power off, force recovery, and power on:: $ ./tools/board_automation/boardctl -t topo recovery - Power off:: $ ./tools/board_automation/boardctl -t topo power_off - Power off, then power on:: $ ./tools/board_automation/boardctl -t topo power_on - Reset (no effect on power state):: $ ./tools/board_automation/boardctl -t topo reset For Jetson AGX Xavier series ############################ NVIDIA provides a Python library for interacting with the FTDI chip, which can be found at https://github.com/NVIDIA/python-jetson. UART Access @@@@@@@@@@@ For |NVIDIA(r)| |Jetson AGX Orin(tm)|, TOPO exposes four serial ports named ``/dev/ttyACM``. For Jetson AGX Xavier series, the FTDI chip exposes three serial ports named ``/dev/ttyUSB``. Use the following commands to determine which serial port supports the TOPO or FTDI console. For the correct port, the commands display values similar to the ones shown. - For Jetson AGX Orin: :: $ sudo udevadm info -q all -n /dev/ttyACM0 | grep -E "(ID_MODEL|ID_VENDOR)" E: ID_VENDOR_ID=0955 E: ID_MODEL_ID=7045 E: ID_VENDOR_FROM_DATABASE=NVIDIA Corp. E: ID_VENDOR=NVIDIA E: ID_VENDOR_ENC=NVIDIA E: ID_MODEL=Tegra_On-Platform_Operator E: ID_MODEL_ENC=Tegra\x20On-Platform\x20Operator - For Jetson AGX Xavier series: :: $ sudo udevadm info /dev/ttyUSB5 | grep -E "(ID_MODEL|ID_VENDOR)" E: ID_MODEL=Quad_RS232-HS E: ID_MODEL_ENC=Quad\x20RS232-HS E: ID_MODEL_FROM_DATABASE=FT4232H Quad HS USB-UART/FIFO IC E: ID_MODEL_ID=6011 E: ID_VENDOR=FTDI E: ID_VENDOR_ENC=FTDI E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd E: ID_VENDOR_ID=0403 The console port is physically connected to UART3 (the debug UART). Typical usage is:: $ minicom -D /dev/ttyACM0