Skip to content

Route External RF module data over USB-VCP - #7938

Open
slik wants to merge 1 commit into
EdgeTX:mainfrom
slik:feature/ext-module-over-usb-vcp
Open

slik wants to merge 1 commit into
EdgeTX:mainfrom
slik:feature/ext-module-over-usb-vcp

Conversation

@slik

@slik slik commented Oct 23, 2026 •

Copy link
Copy Markdown

Route External RF module over USB-VCP

Adds "External module" as an USB-VCP option. When it's selected, the External RF protocol driver (CRSF, MAVLink, …) uses the USB serial port instead of the module bay. A PC can then act as a module with selected protocol, both extracting channel values from packets and sending back telemetry.

It should be useful for integration with GCS software or simulators:

  • Applications can use all 16 (depends on the protocol) channels
  • Better support on all OSes, as some of them have various USB HID limitations (e.g., max axes count on Android)
  • Easier mixer configuration, as it is not required to configure axes and buttons captured via USB HID
  • Bi-directional communication allows GCS/simulator software send back telemetry values
  • Protocol-agnostic, allows GCS to communicate with handset using the same protocol it uses for communication with autopilot (CRSF or MAVLink), no need for translation

Usage: Radio Setup → Hardware → USB-VCP → External module, then pick the protocol under Model → External RF as usual.

Changes

  • module_port: when VCP is in UART_MODE_EXT_MODULE, the external module's serial port lookup returns a full-duplex USB port.
  • usbd_cdc: implements the serial driver calls the module drivers need (sendBuffer, txCompleted, RX buffer copy/clear, idle callback, getBufferedBytes), with guards for when no host is connected.
  • serial: VCP is included in initSerialPorts(), and switching it to this mode restarts the external module pulses.
  • gui_common: the mode is selectable on VCP even on radios without a spare UART for an external module.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant