Important
Important: The initial setup steps are done only once per board.
After that, follow the per-drone steps every time the board boots up.
sudo systemctl disable nv-l4t-usb-device-mode.serviceDownload and extract the configuration package to your Desktop as startup_bulk:
wget https://terra-1-g.djicdn.com/71a7d383e71a4fb8887a310eb746b47f/psdk/e-port/usb-bulk-configuration-reference.zip \
&& unzip usb-bulk-configuration-reference.zip -d startup_bulk \
&& mv startup_bulk/ ~/Desktop/Replace the default script with your custom one:
sudo cp ./nv-l4t-usb-device-mode-start.sh /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh
chmod +x ./nv-l4t-usb-device-mode-start.shsudo rebootAppend the required modules:
echo -e "configfs\nlibcomposite\nusb_f_fs\ntegra-xudc" | sudo tee -a /etc/modules✅ Double-check that /etc/modules is correctly formatted.
Run the startup script:
/opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.shsudo systemctl enable /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode.serviceAt this point, bulk mode and network mode should be properly configured.
- Onboard computer = host
- E-Port = device
- Connections:
![]() |
![]() |
|---|---|
| E-Port to device mode | AGX connections |
Note
Make sure the USB Type-C cable is connected to the correct port (the one supporting both bulk and host mode).
Enable host mode:
echo host | sudo tee /sys/class/usb_role/usb2-0-role-switch/role👉 You should see /dev/ttyACM0 when powering on the drone.
- Onboard computer = device
- E-Port = host
- Connections:
![]() |
![]() |
|---|---|
| E-Port to host mode | AGX connections |
Enable device mode:
echo device | sudo tee /sys/class/usb_role/usb2-0-role-switch/roleLift l4tbr0 connection:
sudo ifconfig usb0 192.168.1.1 netmask 255.255.255.0 up👉 Verify with:
ifconfigYou should see an l4tbr0 entry. If not, repeat steps above.
- Onboard computer = device
- E-Port = host
- Connections:
![]() |
![]() |
|---|---|
| E-Port to host mode | NX connections |
Enable device mode:
echo device | sudo tee /sys/class/usb_role/usb2-0-role-switch/roleLift l4tbr0 connection:
sudo ifconfig usb0 192.168.1.1 netmask 255.255.255.0 up👉 Verify with:
ifconfigYou should see an l4tbr0 entry. If not, repeat steps above.
| Drone | Onboard Computer Role | E-Port Role | Hardware Connection Notes | Software Steps |
|---|---|---|---|---|
| M300 | Host | Device | Connect AGX as host via E-Port in device mode. | echo host | sudo tee /sys/class/usb_role/usb2-0-role-switch/role - Check /dev/ttyACM0. |
| M350 | Device | Host | Connect AGX as device via E-Port in host mode. | echo device | sudo tee /sys/class/usb_role/usb2-0-role-switch/role sudo ifconfig usb0 192.168.1.1 netmask 255.255.255.0 up - Check l4tbr0. |
| M30 | Device | Host | Connect NX as device via E-Port in host mode. | echo device | sudo tee /sys/class/usb_role/usb2-0-role-switch/role sudo ifconfig usb0 192.168.1.1 netmask 255.255.255.0 up - Check l4tbr0. |
Note
Use correct USB-C port on AGX (supports both bulk & host).



