ArduPilot / ArduPilot/ardupilot
BLHeli passthrough fails with a DakeFPV 4-in-1 ESC running Bluejay 0.21.0.
- 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
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