A third-party radio attachment lets a Skydio X10D run command and control (C2) and video over an external tactical radio network instead of the built-in Microhard link.

This article covers TrellisWare, L3Harris, and Silvus radio attachments. Most steps are the same for every radio. Step 3 holds the steps unique to each vendor, so open only the section for your radio.

  1. Confirm your vehicle is enabled for radio attachments.
  2. Apply the vehicle configuration update, if Skydio sent one.
  3. Prepare your radio (TrellisWare, L3Harris, or Silvus).
  4. Load the attachment configuration file.
  5. Configure the radio network.
  6. Attach the radio and power on.
  7. Pair the controller over the radio.
  8. Connect from ATAK UAS Tool (optional).
  9. Verify before flight.

Requirements

Hardware

  • Skydio X10D with the Microhard (MH) radio, with a charged battery. X10D SL is not supported.
  • Skydio Controller paired to the aircraft.
  • Air radio with an attachment cable and mount built to the X10D Attachment Interface Control Document (ICD).
  • Ground radio that connects to the controller by USB-C, or USB-A to USB-C.
  • USB-C flash drive formatted as exFAT.
  • Laptop with the radio vendor's configuration tool or web UI.

Software

  • Aircraft and Skydio Controller on the Cayley Tactical release or later. This procedure was most recently field-validated on aircraft build 43.152.32 (October 2026).
  • Required feature flags enabled on the vehicle. See Step 1.

From your radio vendor

  • The radio's USB vendor ID and product ID (VID/PID) in hex. Confirm these with the vendor or Skydio before you start.
  • Current radio firmware and any required patches. See your radio's section in Step 3.

Known limitations

  • Microhard (MH) vehicles only. X10D SL is not supported.
  • One radio link at a time. You can't use Microhard and the attachment radio at the same time.
  • The attachment radio has no automatic link-quality estimation. Video Stream Quality (QoS) is set manually in the Skydio app and is not available over MAVLink.
  • If the radio doesn't pass mDNS traffic, you must enter the vehicle IP address manually.
  • Pairing over the attachment radio works once per vehicle power cycle.
  • The feature is enabled by feature flags, so offline or unlicensed vehicles need a configuration update first.

Step 1: Confirm your vehicle is enabled

Skydio enables third-party radio attachment support on each vehicle with feature flags. Before you start, contact Skydio Support or your Skydio representative with the vehicle serial number, and ask them to confirm that the following flags are enabled on the vehicle (not the controller).

Feature flag Status What it enables
third-party-radio-attachment Required Radio drivers, Attachment Drone Discovery pairing, and manual Attachment IP entry.
enable-third-party-attachment-configs Required Allows the vehicle load attachment_config.json. Included in the X10D Core License since 14 May 2026. Vehicles configured before that date may not have it.
enable-vehicle-rtsp-klv Required for UAS Tool MAVLink control, ATAK UAS Tool, and RTSP video.
enable-controller-static-ip Optional Static IP entry in the controller's USB Networking menu.

If Skydio enables a flag for you, they will send a small vehicle configuration update (a zip file of about 70 KB). Apply it in Step 2. The controller does not need an update unless it is not on the latest firmware.

Important: Missing feature flags are the most common cause of a failed setup. Without them, the vehicle reports insufficient power or an unidentified attachment, and it will not load attachment_config.json.

Step 2: Apply the vehicle configuration update

Skip this step if Skydio confirms the vehicle already has the required flags and did not send an update.

  1. Extract the zip file and copy the OTA folder to the root of an exFAT USB-C drive or the vehicle's media SD card.
  2. With the vehicle powered off, insert the drive into the vehicle's rear USB-C port.
  3. Power on the vehicle. Wait about one minute for the arm lights to finish their update pattern and go idle. A configuration-only update does not run a full update cycle.
  4. Power off the vehicle and remove the drive.
  5. Check the drive. An errors folder with a note such as "flashpack not found" is normal for a configuration-only update.
  6. Power on the vehicle and continue to Step 3.

Important: The vehicle won't accept attachment_config.json until the new flags are active. Load the file again in Step 4, even if you loaded it before the update.

Step 3: Prepare your radio

Each radio has a few setup steps of its own. Open the section for your radio, complete it, and note the VID/PID you'll need in Step 4. Then continue with the common steps.

[accordion heading="TrellisWare (TSM waveform, TW-860 series)"]

Before you start

  • Confirm the exact radio model with TrellisWare.
  • Get the TrellisWare auto power-on patch and apply it. The default TW-860 software does not power on the radio when the vehicle boots. Without the patch, the vehicle detects the attachment but the radio stays off.
  • Ask TrellisWare for their step-by-step integration and debug procedure, and follow its order of operations.

VID/PID for Step 4

{ "vid": "0x1cf2", "pid": "0xa4a2", "attachment_type": "radio" }

Confirm these values with TrellisWare before you use them.

Network settings for Step 5

  • Put the air and ground radios in the same TSM net.
  • Enable DHCP on the ground radio so the controller gets a USB IP address.
  • After you power on the vehicle, give the air radio time to join the TSM net.

Ground radio connection

Connects to the controller's USB-C port.

TrellisWare troubleshooting

  • Radio is detected but stays off: the auto power-on patch isn't applied. Get the patch from TrellisWare and apply it.
  • Discovery fails: TrellisWare's procedure mentions the controller's USB Networking and USB hub setting. Skydio has paired successfully without it when no physical USB hub is used. If discovery still fails, check with TrellisWare.

[/accordion]

[accordion heading="L3Harris (RF-9820S-ER, Wraith waveform)"]

Before you start

  • The RF-9820S-ER attachment for X10D is available from L3Harris.
  • Air side: RF-9820S-ER attachment.
  • Ground side: AN/PRC-163, AN/PRC-171, or a second RF-9820S-ER.
  • Set the radio's USB port to composite RNDIS: Menu > Program > Radio Config > General Config > USB Port Config.

VID/PID for Step 4

{ "vid": "0x19a5", "pid": "0x0005", "attachment_type": "radio" }

Confirm these values with L3Harris before you use them.

Network settings for Step 5

  • Load the same Wraith network preset on both radios.
  • Match the time of day on both radios, or they won't form a network. Check it under Menu > Option > Wraith config > Wraith time of day. To set it, use the wraith clock date and wraith clock time commands in the radio console.
  • Run wraith status to see how many radios are in the network.
  • Transmit power is a preset from 50 mW to 3.2 W. Start low when testing on the bench.
  • Antenna placement has a large effect on video quality. In integration testing, EO and IR video tearing was traced to a faulty air antenna.

Ground radio connection

Connect through the NettWarrior or Ethernet dongle: ODU to USB-A, then USB-A to USB-C into the controller.

L3Harris troubleshooting

  • Radios won't form a network: confirm both radios have the same Wraith preset and matching time of day.
  • Controller USB IP shows None: confirm the radio's USB port is set to RNDIS.
  • EO or IR video tearing: check the air antenna and its placement.

[/accordion]

[accordion heading="Silvus (StreamCaster 5200, Flymotion attachment)"]

Before you start

  • The Silvus radio payload for X10D was developed by Silvus and productized by Flymotion. It works with X10D only.
  • Allow extra time for radio network setup (Step 5).

VID/PID for Step 4

Get the VID/PID from Flymotion or Silvus.

{ "vid": "0xNNNN", "pid": "0xNNNN", "attachment_type": "radio" }

Network settings for Step 5

  • Configure both nodes in the StreamCaster web UI. The air and ground nodes need a matching network ID, encryption key, frequency, and bandwidth.
  • Enable the DHCP server on the vehicle side.
  • Confirm the Layer-2 bridge works end to end, and check how the radios handle mDNS. If multicast traffic is filtered, you'll enter the vehicle IP address manually in Step 7.

Ground radio connection

The ground StreamCaster usually connects by Ethernet, so you need a USB-C Ethernet adapter for the controller. Confirm the adapter works with the controller before your operation.

Silvus troubleshooting

  • Vehicle doesn't appear in Attachment Drone Discovery: the radios may be filtering multicast traffic. Enter the vehicle IP address manually under Attachment IP Address.

[/accordion]

Step 4: Load the attachment configuration file

The attachment_config.json file tells the vehicle which USB device is a radio, so it loads the correct drivers and powers the attachment port.

  1. Create a file named attachment_config.json at the root of an exFAT USB-C drive. The file is a JSON array, and each entry has three fields:
  • vid: the USB vendor ID, as a hex string in the form 0xNNNN.
  • pid: the USB product ID, in the same form.
  • attachment_type: radio, for a radio attachment.

Use the VID/PID entry from your radio's section in Step 3.

  1. Include every attachment the vehicle needs (radio, toggle, or power) in the same file. The vehicle keeps only the most recently loaded file. The maximum file size is 10 KB.
  2. Power on the vehicle and pair it with its controller.
  3. Insert the drive into the vehicle's rear USB-C port and watch the arm lights:
  • Green flash: the file loaded successfully.
  • Red flash: the file has a JSON error. Details are written to attachment_config_errors.json on the drive.
  • No lights: the vehicle can't load configuration files because enable-third-party-attachment-configs is not enabled. Return to Step 1.
  1. Remove the drive. The configuration stays on the vehicle until you load a new attachment_config.json.

Example file

This example has a TrellisWare radio (first entry) and an L3Harris radio (second entry). Confirm the VID/PID values for your radio before you use them.

[
  { "vid": "0x1cf2", "pid": "0xa4a2", "attachment_type": "radio" },
  { "vid": "0x19a5", "pid": "0x0005", "attachment_type": "radio" }
]

Step 5: Configure the radio network

Complete this step on the bench with the vendor's configuration tool, before you mount the radio on the aircraft. Apply your radio's network settings from Step 3 along with these.

  1. Put the air and ground radios in the same radio network and on the same IP subnet.
  2. Enable DHCP on the air radio so it assigns the vehicle an IP address. You can't set a static IP on the vehicle's attachment interface.
  3. Enable DHCP on the ground radio so the controller gets an IP address automatically. To use a static IP on the controller instead, go to Sharing > USB Networking. This option requires the enable-controller-static-ip flag.
  4. If you use the 192.168.x.x range, set the third octet to 200 or higher (for example, 192.168.200.0/24) to avoid conflicts with the vehicle's internal networks.
  5. Configure the radios as a Layer-2 transparent bridge, or enable an mDNS repeater, so the vehicle's mDNS advertisement reaches the controller. Confirm the right method with your radio vendor. If the radio can't pass mDNS, plan to read the vehicle IP from the radio's client list and enter it manually in Step 7.
  6. Power on both radios and confirm they form a network. Leave them running for about five minutes to make sure they stay connected. Note how long the air radio takes to boot and join, because the vehicle isn't reachable until it has an IP address.
  7. Mount the air antenna following the vendor's guidance: as close to vertical as possible to match the ground antenna's polarization, clear of airframe metal, and inside the attachment obstacle-avoidance mask.

Step 6: Attach the radio and power on

Important: Follow these steps in the order shown. Changing the order is the most common cause of a blank discovery screen.

  1. Start with the ground side. Power on the ground radio, then power on the controller, then connect the ground radio to the controller as described in your radio's section in Step 3. Wait about one minute for the controller to get an IP address.
  2. Mount the air radio and plug the attachment cable into the vehicle's attachment port.
  3. Power on the vehicle with the radio attached. Wait for the air radio to boot and join the network.
  4. Confirm the app shows "Radio attachment detected." On the Fly Now screen, the attachment indicator turns green. If the app shows "Reverse the USB-C plug orientation," flip the attachment plug over.
  5. Go to Global Settings > Attachments > 3rd Party Attachments and select Left or Right. This menu appears only while a third-party radio is connected.

Step 7: Pair the controller over the radio

  1. From the main menu, go to Information > Attachment Drone Discovery. The controller searches for the vehicle every few seconds. When it finds the vehicle, the vehicle name and IP address appear.
  2. Select Status to open Attachment Radio Status, and check these fields:
  • Connection: Disconnected, MH Only (connected over Microhard, with the vehicle listed as Attachment Radio compatible), or External Network (connected over the attachment radio).
  • Radio Attachment: Detected with the port in use (for example, Left: Radio attachment connected), Not Detected, Unknown, or an issue such as reversed plug orientation or VID/PID not recognized.
  • Controller USB IP: must show an IP address. Pairing can't work without one.

  1. If Connection shows Disconnected and Radio Attachment shows Unknown, the controller has no link to the vehicle. Wire pair the controller to the vehicle with a USB cable. When Controller Paired to Drone appears, open Status again.

  2. If Controller USB IP shows None, go to Sharing > USB Networking and enable DHCP. Wait for an IP address to appear before you continue.
  3. If Radio Attachment shows Detected but no vehicle appears, wait two to three minutes. If the vehicle still doesn't appear, enter its IP address manually under Attachment IP Address.
  4. Select Pair next to the vehicle. If the controller is connected over Microhard, a prompt warns that pairing will disconnect the Microhard link and that you'll need to USB pair to get it back. Select Continue.

  5. When pairing completes, the home screen shows Controller Paired to Drone, and Attachment Network appears after the vehicle name. To confirm the link, tap the signal indicator at the top left. Flight Connection shows External Network Connected.


Important: You can pair over the attachment radio only once per vehicle power cycle. If you pair, disconnect, and need to pair again, reboot the vehicle first.

Step 8: Connect from ATAK UAS Tool (optional)

Use this step if you control the X10D from ATAK with the UAS Tool plugin instead of the Skydio app.

  1. Confirm the vehicle has both the third-party-radio-attachment and enable-vehicle-rtsp-klv flags enabled.
  2. Turn off Wi-Fi on the controller or end-user device (EUD). The connection is most reliable with Wi-Fi off.
  3. In UAS Tool, use Discover UAS to find the vehicle IP address, or enter it manually.
  4. Connect. C2 runs over MAVLink (RAS-A dialect) and video runs over RTSP.

Note: MAVLink has no video quality control. If the paired Skydio Controller is on, the video stream adapts to the Microhard link quality. If the controller is off, video quality stays fixed for the flight.

For full UAS Tool setup, see Using ATAK UAS Tool plugin on a Third Party Controller with Skydio X10D.

Step 9: Verify before flight

Before every mission flight, confirm the following:

  • The arm lights flashed green when you loaded attachment_config.json.
  • The app shows "Radio attachment detected" and the attachment port is set.
  • In Attachment Drone Discovery > Status, Controller USB IP shows an address. After pairing, Connection shows External Network, and Flight Connection on the home screen shows External Network Connected.
  • Video in the flight view stays stable at the selected Video Stream Quality for two minutes on the ground.
  • A hover test within line of sight confirms C2 response and video.
  • You've recorded the vehicle serial number, software versions, radio model, and radio firmware. Skydio Support will ask for these if you need help.

[accordion heading="Troubleshooting"]

These apply to all radios. For vendor-specific issues, see the troubleshooting list in your radio's section in Step 3.

Symptom Likely cause What to do
Radio reports insufficient power or stays off. App shows "Unidentified attachment" or "VID/PID not recognized." Vehicle feature flags are missing, or attachment_config.json was never loaded. Confirm the flags with Skydio (Step 1), apply the configuration update (Step 2), then load attachment_config.json again (Step 4).
No arm lights when you insert the configuration drive. The vehicle is missing the attachment config feature flag. Complete Steps 1 and 2, then load the file again.
Arm lights flash red. JSON syntax or format error in attachment_config.json. Open attachment_config_errors.json on the drive, fix the file, and try again.
App shows "Reverse the USB-C plug orientation." The attachment cable is plugged in upside down. Flip the plug over.
Status shows Connection: Disconnected and Radio Attachment: Unknown. The controller isn't connected to the vehicle. Wire pair the controller to the vehicle with a USB cable, then open Status again.
Radio Attachment shows Detected, but Attachment Drone Discovery shows no vehicle or IP address. The air radio hasn't assigned an IP address yet, the radios aren't in the same network yet, or mDNS isn't passing. Wait two to three minutes. In the vendor tool, confirm DHCP is on for the air radio and both radios are in the network. Enable bridging or an mDNS repeater, or enter the vehicle IP manually.
Controller USB IP shows None. The ground radio isn't assigning IP addresses (DHCP), or its USB mode is wrong. Go to Sharing > USB Networking and confirm DHCP is enabled. If the IP still doesn't appear, unplug the ground radio, plug it back in, wait one minute, and check the radio's DHCP setting.
Pair button is missing, or pairing fails on the second attempt. The vehicle allows one attachment pairing per power cycle. Reboot the vehicle, then pair.
Microhard connection is lost after pairing. Expected behavior. Pairing over the attachment radio drops the Microhard link. Pair the controller to the vehicle by USB to restore it.
Video tearing or artifacts. Packet loss on the radio link (antenna, placement, or transmit power), or the bitrate is too high. Lower Video Stream Quality to Medium or Low. Check the antenna and cabling. Test the link on the bench with the vendor's link-quality tool or iperf.
Errors folder with "flashpack not found" after a configuration update. Normal for a configuration-only update. No action needed.

Contact Skydio Integration Support

If the issue continues, contact Skydio Integration Support at IntegrationSupport@skydio.com and include:

  • Vehicle serial number and software version
  • Controller software version
  • Radio model and firmware, including whether the vendor patch is applied
  • Screenshots of Attachment Drone Discovery > Status
  • The radio's client list or DHCP table

[/accordion]

Key terms

Term Definition
Attachment ICD Skydio Interface Control Document that defines the electrical, USB, and power behavior a third-party X10D attachment must follow.
Attachment Drone Discovery Skydio app menu (Information > Attachment Drone Discovery) that finds a vehicle over the controller's USB-C network connection and pairs to it through the attachment radio.
attachment_config.json JSON file, loaded from a USB-C drive, that maps VID/PID pairs to an attachment type (radio, toggle, or power).
Configuration update A small offline update (OTA folder) from Skydio that applies new feature flags to a vehicle without a full software update.
DHCP Dynamic Host Configuration Protocol. The air radio must use it to assign the vehicle an IP address.
Feature flag A per-vehicle or per-organization setting, managed by Skydio, that turns on gated functionality.
Layer-2 transparent bridge Radio mode that passes Ethernet frames, including multicast traffic, end to end between the air and ground radios.
mDNS Multicast DNS. The vehicle uses it to advertise its address on the radio network, and the controller finds the vehicle when the radios pass multicast traffic.
Microhard (MH) The X10D's built-in controller radio link. Only MH vehicles support attachment radios.
QoS Video Stream Quality setting (Low, Medium, or High) that controls the video bitrate over the attachment radio. Set it manually in the Skydio app's Radio settings.
RNDIS USB networking mode in which the L3Harris radio appears to the controller as a network interface.
Skydio app The Skydio Enterprise application running on the Skydio Controller.
StreamCaster Silvus Technologies MANET radio family.
TSM TrellisWare mobile ad hoc networking waveform. Air and ground radios must share a TSM net.
UAS Tool ATAK plugin that controls the X10D over MAVLink and displays RTSP video.
VID/PID USB vendor ID and product ID that identify the attachment. The vehicle uses them to load the correct drivers.
Wraith L3Harris anti-jam waveform used by the RF-9820S-ER, AN/PRC-163, and AN/PRC-171 radios.

Related articles

Was this article helpful?