Hello SIYI Support & Community,
I’m encountering an issue where the HM30 air unit is not receiving MAVLink telemetry from my flight controller (FC). After extensive debugging, the problem seems isolated to the interaction between the SpeedyBee F405 V4 and the HM30 datalink.
My Setup:
- Flight Controller: SpeedyBee F405 V4 (flashed with ArduCopter v4.4 Stable)
- Datalink: SIYI HM30 (Air and Ground Units)
- GCS: QGroundControl (latest version)
- UARTs tested: UART1, UART2, UART3
- Baud Rate: 57600 (confirmed across ArduPilot, HM30 ground unit settings, and QGC comm link)
What I’ve Tested and Confirmed:
-
HM30 works fine with another FC (Mamba F405 V2):
- When I replace the SpeedyBee with a Mamba F405 V2, everything works flawlessly.
- MAVLink data flows smoothly to the GCS, confirming that HM30 is configured correctly.
-
SpeedyBee works with companion computer (Jetson):
- I connected the SpeedyBee UARTs directly to a Jetson and used a Python script (pymavlink with
request_data_stream_send
) to receive telemetry. - Result: Full, consistent MAVLink telemetry received on all UARTs → the FC is transmitting MAVLink correctly.
- I connected the SpeedyBee UARTs directly to a Jetson and used a Python script (pymavlink with
-
Voltage levels confirmed between both FCs and HM30:
- Measured TX-GND and RX-GND on both SpeedyBee and Mamba boards.
- Both provide consistent voltage levels (~3.3V on TX, ~1.1V on RX) → no electrical mismatch.
-
HM30 behavior with SpeedyBee:
- In the HM30 Ground Unit’s Datalink Info screen:
Data Down
remains at 0.Data Up
briefly increases (~17) at the start, then stops.
- In the MAVLink Info screen:
- Telemetry data briefly appears at initial connection, then freezes or resets to zero.
- In the HM30 Ground Unit’s Datalink Info screen:
My Hypothesis:
-
Could there be a timing, framing, or session-based incompatibility between the HM30 UART input and the SpeedyBee UART output? For example:
-
Does HM30 expect a certain handshaking behavior, pacing, or pause before MAVLink streaming starts?
-
Could SpeedyBee’s UART be sending MAVLink too early, causing HM30 to misinterpret or discard the stream?
-
Is there a known need for buffer clearing, session start commands, or heartbeat sync timing that HM30 requires for proper telemetry parsing?
-
Has anyone faced a similar issue connecting HM30 to SpeedyBee (or other STM32-based ArduPilot boards)?
-
Could SIYI provide insight into HM30’s expected UART behavior for MAVLink stream handling?
I’m happy to run additional tests to assist in identifying the root cause.
Thanks in advance for your support!