Bluejay is an open-source electronic speed controller (ESC) firmware designed specifically for modern multirotor drones. Built as a forward-looking evolution of BLHeli_S revision 16.7, it targets the Busy Bee microcontroller platform and focuses on digital communication, stability, and user configurability. Unlike legacy analog protocols, Bluejay exclusively supports DShot—DShot150, DShot300, and DShot600—with bidirectional capability enabling real-time RPM telemetry to the flight controller.
Key Capabilities
- Digital protocol support: DShot150/300/600 with bidirectional telemetry
- Configurable PWM carrier frequencies: 24 kHz, 48 kHz, or 96 kHz
- 11-bit effective throttle resolution with minimized jitter
- Integrated safety features: startup voltage guard and RPM-based protection
- Optimized commutation timing for reduced electrical noise and smoother throttle response
- Full support for user-defined startup and self-test melodies
Editing Melodies Using Configuration Tools
To modify or upload custom tones, use one of the following official supported tools:
- ESC Configurator — Progressive Web App (PWA), browser-based, requires Chrome or Edge
- Bluejay Configurator — Standalone desktop application (Windows/macOS/Linux)
Prerequisites
- A flight controller running Betaflight (v4.3 or newer); other firmware stacks (e.g., iNav, ArduPilot) do not support Bluejay ESC flashing via passthrough
- At least one ESC flashed with Bluejay firmware (if upgrading from BLHeli_S, verify hardware compatibility first)
- Power source: LiPo battery or regulated bench supply (ensure safe current limits)
- Wiring: Connect ESC signal wires (typically labeled "PWM" or "S") for motors 1–4 plus a shared ground wire to the FC’s corresponding motor outputs
Workflow Summary
- Remove all propellers and power up the ESCs.
- Connect the FC to your computer via USB.
- Launch ESC Configurator in Chrome and click Connect.
- Click Read Settings to confirm firmware version and current configuraton.
- Open the Melody Editor panel (bottom-right corner).
- Select or compose a melody using the visual interface or raw syntax field.
- Preview playback using the Play button.
- Click Accept, then Write Melody. Repeat per motor if individual tones are desired.
Melody Syntax Reference
Each melody string follows a structured format composed of a header and note sequence.
Header Format
MelodyName:b=147,o=5,d=4:
MelodyName: Arbitrary identifier (e.g.,sky,tiga) — used internally for labeling onlyb=: Beats per minute (BPM); controls global tempo (e.g.,b=120)o=: Base octave; defaulto=5maps to middle C ranged=: Default note duration denominator;d=4means quarter-note base unit (i.e., "4" = ¼ note)
Note Encoding Rules
Notes are comma-separated and follow this pattern: [duration][pitch][octave]
- Duration: Integer representing note length as a fraction of a whole note. Valid powers of two:
1(whole),2(half),4(quarter),8(eighth),16,32. Example:8a= eighth-note A - Pitch: Letter from
ctob, mapping to solfège do–ti;pdenotes a rest. Optional#suffix indicates sharp (e.g.,f#) - Octave: Numeric suffix:
4= low,5= middle (default, optional),6= high
| Solfège | Letter | Scale Degree |
|---|---|---|
| do | c | 1 |
| re | d | 2 |
| mi | e | 3 |
| fa | f | 4 |
| so | g | 5 |
| la | a | 6 |
| ti | b | 7 |
| Octave Designation | Value |
|---|---|
| Low | 4 |
| Middle (default) | 5 |
| High | 6 |
Example Melody Snippets
sky:b=100,o=5,d=4:e,a6,32p,8a6,g,32p,8g,8e,8d,c.,32p,8c.,d,8c,8d,g.,2e
luck:b=130,o=5,d=4:a,8e6,8d6,32p,d6,8c6,8d6,a,a,32p,a,d6,c6,8a,8g,d,8g,8a,e,e,32p,e,8a,8g,a,32p,8a,8g,a,8d6,8c6,d6,d6,8c6.,32p,16c6,32p,8c6,8d6,8e6,32p,8e6,8d6,8c6,g,8c6,8a,32p,a,a
jojo:b=200,o=5,d=4:f#,8g,32p,16g,16f#,8e,8d,8e,8d,8c,8b4,8d,8b4,8c,8a4,8b4,8g4,8a4,e4
tiga:b=200,o=5,d=4:8a4,8c,8a,g,8f,p,e,8f,e,8d,8c,8d,8a4,8c,8a,g,8f,p,8e,f,a,32p,8a,a
heal:b=200,o=5,d=4:e,16p,e,16p,8e,16p,8d,16p,g
nokia:b=150,o=5,d=4:16g6,16f6,8a,8b,16f6,16e6,8f,8g,16d6,16c6,8e,8g,c6,c6
level5:b=138,o=5,d=8:8c6,8b5,8c6,8d6,4e6,8e6,8c7,8b6,16a6,16g6,8g6,8e6,8g6,8e6,8g6,16a6,4e6,8p,8e6,8f6,16g6,16a6,8a6,8c7,8b6,16a6,16g6,8g6,8d6,8e6,16f6,16e6,4e6
canon:b=290,o=5,d=32:2g6,4e6,4f6,2g6,4e6,4f6,4g6,4g,4a,4b,4c6,4d6,4e6,4f6,2e6
cherry:b=310,o=5,d=32:4g,4a,8d,8c,8d,8c,4g,4a,8d,8c,8d,8c,4g,4a,8d,8c,8d,8c,4f,8e,8f,4d,4c,4g,4a,8d,8c,8d,8c,4g,4a,8d,8c,8d,8c,4g,4a,4c6,4f6,4e6,8f6,8e6,4d6,4c6
duck:b=130,o=5,d=32:4g4,4a4,4c,4p,8c,8a4,8c,8d,4d,4p,4d,4e,4g,4p,8g,8e,8g,8e,4e,4p,4d,4e,4c,4p,8c,8a4,8c,8d,4d
porcelain:b=220,o=6,d=32:4g,p,4g,4e,4d,4e,2a5,4d,4e,4g,4e,2d,4p,4g,p,4g,4e,4d,4e,2g5,4d,4e,4g,4d,2c