ArduPilot / ArduPilot/ardupilot

BLHeli passthrough fails with a DakeFPV 4-in-1 ESC running Bluejay 0.21.0.

Open Beginner friendly
#34,151 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
15.9k
Forks
21.4k
Avg merge
3d 17h
Merged PRs (30d)
119

Description

**Issue details**
BLHeli passthrough fails with a DakeFPV 4-in-1 ESC running Bluejay 0.21.0.

`SERVO_BLH_TEST=1` consistently fails with:
**Debug log:**
22/08/2026 19:34:42 : ESC: Test FAILED
22/08/2026 19:34:42 : ESC: BL_SendCMDSetAddress 0x7C00
22/08/2026 19:34:42 : ESC: Unknown interface type 0xE8B5
22/08/2026 19:34:42 : ESC: BL_ReadBuf 8 -> 9
22/08/2026 19:34:42 : ESC: BL_ConnectEx 1/4 at 1
22/08/2026 19:34:42 : ESC: Running test on channel 1

The ESC and motors operate normally. The same ESC can be detected and configured successfully through Betaflight passthrough.

ArduPilot 4.7.0 explicitly accepts several SiLabs BLHeli bootloader device IDs in `AP_BLHeli.cpp`, including `0xE8B1` and `0xE8B2`, but not `0xE8B5`. Therefore connecting and testing this device results in:
ESC: Unknown interface type 0xE8B5

Betaflight instead detects SiLabs devices using a range check:
`(pDeviceInfo->words[0] > 0xE800) &&
(pDeviceInfo->words[0] < 0xF900)`
so `0xE8B5` in Betaflight is accepted as a SiLabs BLHeli bootloader.

This appears to be a missing SiLabs device detection case in ArduPilot rather than an ESC communication failure.

**Troubleshooting performed:**
* ESC powered and motors operating normally
* Bluejay 0.21.0 confirmed
* ArduPilot BLHeli passthrough/configuration fails
* `SERVO_BLH_TEST=1` consistently fails at `Unknown interface type 0xE8B5`
* Same ESC detects and configures correctly through Betaflight passthrough

**Relevant source:**
ArduPilot 4.7.0:
[https://github.com/ArduPilot/ardupilot/blob/Copter-4.7.0/libraries/AP_BLHeli/AP_BLHeli.cpp](https://github.com/ArduPilot/ardupilot/blob/Copter-4.7.0/libraries/AP_BLHeli/AP_BLHeli.cpp)

Betaflight:
[https://github.com/betaflight/betaflight/blob/master/src/main/io/serial_4way.c](https://github.com/betaflight/betaflight/blob/master/src/main/io/serial_4way.c)

**Version:** ArduCopter 4.7.0 Stable and ESC Bluejay V0.21.0
**Platform:** Copter
**Airframe type:** Quadcopter, Quad X
**Hardware type**
- TBS Lucid H7
- DakeFPV 70A 4-in-1 ESC

### Logs
No flight log is required to reproduce the issue.

Contributor guide

Open the contributing guide

Research direction

Start in libraries/AP_BLHeli/AP_BLHeli.cpp at the SiLabs BLHeli device-ID detection logic, then compare it with the range check in Betaflight's src/main/io/serial_4way.c. Reproduce with SERVO_BLH_TEST=1 on the listed hardware and verify that device ID 0xE8B5 is recognized and passthrough testing succeeds.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
embedded-iot, robotics
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
82/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.