Skip to content

HelloRadioSky V12: expose the on-board UART header as an AUX1 serial port #7760

Closed

Description

@juricabi

Is there an existing issue for this feature request?

  • I have searched the existing issues

The UART4 header already came up in #7297: HelloRadio posted the PCB view
below, confirmed that UART4 is independent and usable for any function, and
said they would add it once V12 support was merged
(#7297 (comment)). V12
landed in #7114 without it, so this issue tracks the AUX1 part on its own.

Is your feature request related to a problem?

The V12 main board has a 3-pin GND/TXD/RXD header wired to UART4 (PH13 = TXD,
PH14 = RXD), but the target is built with AUX_SERIAL forced off:

set(AUX_SERIAL OFF CACHE BOOL "AUX serial port" FORCE)   # radio/src/targets/v12/CMakeLists.txt

So SYS → HARDWARE → Serial ports only offers USB-VCP, and the header cannot be
used for anything: no telemetry mirror to a Bluetooth module, no Lua serial,
no debug output, no GPS or S.Port. Because the CMake line uses FORCE, it
cannot even be switched on with -DAUX_SERIAL=ON in a local build. Companion
already assumes the V12 has an AUX port (HasAuxSerialMode is true for it
through IS_FAMILY_T16).

One thing to be upfront about: the header is inside the case. There is no
cut-out, so you have to take the back cover off to reach it. In practice a
Bluetooth or GPS module gets fitted once and stays inside; nothing needs to
be accessible from outside afterwards. The header itself carries only GND,
TXD and RXD; 3.3 V for a module is available from the top-left pin of the
unpopulated header to its right (the IMU footprint, which production units
do not populate), so a module needs no wiring beyond those four pins.

Describe the solution you'd like

Enable AUX_SERIAL on the V12 target and define the port in hal.h:

Resource Assignment
UART UART4
TX / RX PH13 / PH14
DMA DMA1 stream 6 (TX), stream 2 (RX), via DMAMUX UART4_TX / UART4_RX
IRQ UART4_IRQn
Power control none (a module runs from the always-on 3.3 V rail; there is no switchable supply, so AUX_SERIAL_PWR_GPIO stays undefined)

UART4, PH13/PH14 and DMA1 streams 2 and 6 are all unused on this target
today, so nothing else has to move. No Companion or YAML change is needed.

I have this working and will open a PR.

Question for the maintainers: is an internal-only header acceptable as an
AUX port in main, or do you want AUX ports to be reachable from outside the
radio? If always-on is not wanted for an internal header, I can make it a
plain option(AUX_SERIAL ... OFF) instead, so it can at least be enabled in
a local build; today the FORCE blocks even that.

Describe alternatives you've considered

  1. USB-VCP only: needs a host computer on the cable, no use for a Bluetooth
    telemetry bridge or an on-board GPS.
  2. Leaving the header unused: wastes a UART that is already on the board.
  3. Keeping AUX_SERIAL off by default but removing the FORCE, so people who
    open the radio can enable it in their own build. Workable, but it keeps the
    port out of the official and cloud builds.

Additional context

The header on the main board (PCB view posted by HelloRadio in #7297):

UART4 header on the V12 main board: GND, PH13 TXD, PH14 RXD

Tested on a HelloRadioSky V12 (STM32H750) with a DX-BT24 Bluetooth module on
the header:

  • Telemetry mirror at 115200 to an Android telemetry app (Ghost module).
  • Lua serial in both directions: serialWrite() / serialRead() exchanging
    AT commands and replies with the module.

The same change applies to the 2.12 branch, where the V12 target also exists
(#7113).

Activity

  1. helloradiosky commented on Sep 5, 2026

    @helloradiosky
    Contributor
    Image Thank you for picking this up and for preparing the PR.

    On the V12, the mechanical layout is very tight, so a proper external accessory connector was never practical. UART4 was left as spare silicon and brought out to a header near the board edge mainly for factory/debug use, and optionally for other experimental wiring. It was not designed as a user-facing I/O port.

    Using it for an external module is possible, but awkward in practice:

    the header is only reachable after opening the back cover
    there is no switched / protected accessory power on that header; a module must be powered by the user (e.g. from nearby 3.3 V), which adds wiring risk if done carelessly
    That said, we are happy to see UART4 enabled as AUX in official builds for people who are willing to open the radio and wire it carefully. Keeping it available long-term is a good idea for the DIY community, and we appreciate the work to get this into EdgeTX.

    Uart4 question: an internal-only header is acceptable from our side as an AUX option on V12, with the understanding that it is an advanced / DIY interface, not a plug-and-play external port.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions