Bluejay configurator: flash and set up Bluejay ESCs
FlySpark's Bluejay configurator flashes Bluejay onto ESCs that came with BLHeli_S, updates ESCs that already run it, and changes the Bluejay settings that are safe to edit: motor direction, beep and beacon strength, beacon delay and the startup melody. It all goes through your Betaflight or INAV flight controller, so you never touch the ESC signal pads.
Use it in Chrome or Edge on a computer, or in the FlySpark app on an Android phone with a USB OTG cable. The FlySpark app on Android and iPhone can also reach the flight controller over a Bluetooth UART module or a Wi-Fi MSP bridge. Take the propellers off, plug in the flight battery, and FlySpark reads every ESC at once and shows which ones run Bluejay and which version.
Free. Hardware connections need Chrome or Edge on a computer; phones use the FlySpark app.
- Free
- Nothing to install
- Demo without hardware

In short
Bluejay is ESC firmware for BLHeli_S hardware that adds bidirectional DShot for RPM filtering. FlySpark flashes Bluejay onto EFM8BB1 and EFM8BB2 ESCs through a Betaflight or INAV flight controller, with 24, 48 or 96 kHz PWM builds, and edits direction, beeps, beacon and startup melody.
Key facts
- Bluejay is based on BLHeli_S revision 16.7 and adds bidirectional DShot RPM telemetry and extended DShot telemetry (Bluejay README).
- FlySpark flashes SiLabs EFM8BB1 (L layouts) and EFM8BB2 (H layouts) ESCs; EFM8BB51 (X layouts) is identified but not flashed.
- Each Bluejay release is offered in 24, 48 and 96 kHz PWM builds; up to 15 recent releases are listed, newest first, with release candidates labelled.
- Bluejay settings edited: motor direction, beep strength, beacon strength, beacon delay and the 128-byte startup melody.
- Before writing, the file's layout and MCU tags are checked against the ESC.
- After flashing, Bidirectional DShot is enabled in the Betaflight Motors tab to use RPM filtering (Betaflight docs).
- Downloaded Bluejay files are kept in the Android and iPhone app, so they can be flashed again without internet.
Betaflight
INAV
ArduPilot
PX4- BLHeli_S
Bluejay
AM32
ExpressLRS
EdgeTX
DroneCAN
MAVLink
Bluejay
Features
- 01
Bluejay releases, picked for your ESC
FlySpark lists recent Bluejay versions from the project's GitHub releases, marks release candidates, and downloads the file built for each ESC's hardware layout, such as A_H_15 or S_H_50.
- 02
24, 48 or 96 kHz PWM
Bluejay is built once per PWM frequency. Pick 24, 48 or 96 kHz before downloading; 48 kHz is preselected because it suits most quads.
- 03
BLHeli_S to Bluejay in one pass
Flash Bluejay over stock BLHeli_S on EFM8BB1 and EFM8BB2 ESCs. Motor direction and the beep and beacon settings carry over to the new firmware.
- 04
Motor direction per ESC
Tap an ESC tile to set normal, reversed, bidirectional (3D) or bidirectional reversed. The tile shows a rotor turning the way the motor will spin.
- 05
Startup melody editor
Write the tune Bluejay plays at power-up from RTTTL text, a tap-to-add keyboard or a preset, see it on a piano roll, preview it, and check it fits the ESC's 128 bytes.
- 06
Beeps and beacon
Set beep strength, lost-model beacon strength and how long the quad sits still before the beacon starts: 1, 2, 5 or 10 minutes, or never.
- 07
Recoverable flashing
The Bluejay bootloader is never overwritten, and the write order means an ESC that loses power mid-flash starts in its bootloader and can be flashed again.
- 08
Works offline in the app
In the Android app the version list and every file you download are kept, so you can reflash at the field without a signal.
What Bluejay is and why pilots flash it
Bluejay is ESC firmware for the same 8-bit SiLabs EFM8 hardware that BLHeli_S runs on. It started from the BLHeli_S code and added the features modern flight controllers expect: bidirectional DShot, which sends each motor's RPM back to the flight controller, extended DShot telemetry (EDT), DShot 300 and 600, a choice of PWM frequency and user-written startup tunes.
Bidirectional DShot is the main reason. Betaflight's RPM filter needs the motor RPM from every ESC, and stock BLHeli_S does not send it. Flashing Bluejay onto an existing BLHeli_S ESC gives you RPM filtering without buying new ESCs. Once Bluejay is on, turn on Bidirectional DShot and set the motor poles in the Motors tab of the Betaflight configurator, then check that every motor reports RPM.
How the Bluejay configurator connects to your ESCs
The ESCs are already wired to the flight controller's motor outputs. Betaflight and INAV can turn those outputs into a serial link to each ESC's bootloader, called the 4-way interface or ESC passthrough. FlySpark asks the flight controller to enter passthrough, then talks to each ESC in turn. While you are in the ESC screen the flight controller pauses its normal MSP link; when you press Done it leaves passthrough and FlySpark reconnects to it.
The ESCs only answer when they have battery power, so connect USB first and then plug in a pack. If the flight controller says it found no ESCs, the battery is usually the reason. Passthrough also needs a digital motor protocol such as DShot or Multishot, and the drone must be disarmed.
Which Bluejay settings FlySpark changes, and why only those
Bluejay moved several settings bytes between versions, so a byte that means startup power in one release can mean something else in the next. FlySpark only offers the Bluejay settings whose position and meaning are the same as in BLHeli_S: motor direction, beep strength, beacon strength and beacon delay, plus the startup melody, which has its own fixed place. Every other byte on the settings page is read and written back exactly as it was, so nothing you set elsewhere is lost.
If you need Bluejay's other options, such as startup power limits, temperature protection or brake on stop, set them in a configurator that tracks every Bluejay settings layout, such as esc-configurator.com, and use FlySpark for flashing, direction and tunes. The ESC screen says this in the settings card whenever a Bluejay ESC is connected.
Choosing the right Bluejay file
Every BLHeli_S and Bluejay build is made for one hardware layout. The layout name has three parts: a letter for the board design, a letter for the chip (L for EFM8BB1, H for EFM8BB2, X for EFM8BB51) and a dead-time number, for example A_H_15. Bluejay release files add the PWM frequency and version, such as A_H_15_48_v0.21.0.hex.
FlySpark reads the layout from each ESC's settings page and requests exactly that file, so you do not have to work it out. If your four ESCs report two different layouts, the right file is fetched for each. When you pick a .hex from your phone or computer instead, FlySpark compares the file's layout and chip tags with each ESC before writing. A layout mismatch is shown and can be overridden with Flash anyway if you know what you are doing; a chip mismatch is never flashed.
PWM frequency: 24, 48 or 96 kHz
The PWM frequency is how fast the ESC switches the motor phases. In short, lower is more efficient and higher runs smoother and quieter. Bluejay's settings documentation adds that higher frequencies have fewer throttle steps unless PWM dithering is on. FlySpark preselects 48 kHz because it suits most quads. Some pilots choose 24 kHz for efficiency on longer flights and 96 kHz on small, high-KV whoops where smoothness matters more.
Because the frequency is compiled into the file, changing it means flashing again with the other build. That takes about the same time as an update, and your direction and beep settings are kept.
Startup tunes on Bluejay
Bluejay plays a melody when it powers up, stored in a 128-byte block next to the settings. FlySpark's melody editor reads the current tune from any Bluejay ESC, lets you type RTTTL ringtone text or tap notes on a keyboard at the length and octave you choose, and draws the result on a piano roll you can preview. Presets include the Bluejay default, rising beeps and a short chirp.
The editor tells you how many of the 128 bytes the tune uses, which notes do not fit and which are outside the ESC's range (roughly D3 to D7). Writing the tune keeps every other setting. Power-cycle the ESCs to hear it. Removing the melody makes Bluejay start silently.
At a glance
Bluejay compatibility in FlySpark
| ESC chips FlySpark flashes | SiLabs EFM8BB1 (L layouts) and EFM8BB2 (H layouts) |
|---|---|
| EFM8BB51 (X layouts) | Identified, not flashed by FlySpark |
| Bluejay versions offered | Recent releases from the Bluejay GitHub project, newest first, release candidates labelled |
| PWM builds | 24, 48 and 96 kHz |
| Settings edited | Motor direction, beep strength, beacon strength, beacon delay, startup melody |
| Flight controller firmware | Betaflight or INAV with ESC passthrough |
| Motor protocol for passthrough | DShot or Multishot |
| Connection | USB (Web Serial in Chrome or Edge, USB OTG on Android), Bluetooth UART module, or Wi-Fi MSP bridge in the app |
| Platforms | Chrome or Edge on Windows, macOS, Linux and ChromeOS; FlySpark app on Android and iPhone (Bluetooth or Wi-Fi on iPhone) |
| Offline | Downloaded Bluejay files are kept in the app |
Compare
Bluejay tools compared
| Feature | FlySpark | esc-configurator.com |
|---|---|---|
| Flash Bluejay through the flight controller | Yes | Yes |
| Choose 24, 48 or 96 kHz build | Yes | Yes |
| Edit all Bluejay settings | Direction, beeps, beacon and melody only | Yes |
| Startup melody editor | Yes | Yes |
| Runs in Chrome or Edge on a computer | Yes | Yes |
| Android app over USB OTG | Yes | No |
| Configure the flight controller in the same tool | Yes | No |
Bluejay
How to flash Bluejay on BLHeli_S ESCs with FlySpark
Remove propellers
Take every propeller off before connecting.
Connect and power
Open the ESC configurator, connect the flight controller over USB and plug in the flight battery.
Download Bluejay
Choose Download firmware, pick Bluejay, a version and a PWM frequency.
Flash and check
Flash, wait for the read-back, then enable Bidirectional DShot in Betaflight.
Guide 01
Flash Bluejay on a BLHeli_S ESC
This replaces BLHeli_S with Bluejay on EFM8BB1 or EFM8BB2 ESCs through the flight controller. The ESC bootloader is not touched.
Remove all propellers.
Open the ESC configurator in Chrome or Edge, or in the FlySpark app, and connect the flight controller over USB.
Plug in the flight battery. FlySpark enters passthrough and lists each ESC as BLHeli_S 16.x with its layout, for example S_H_50.
In the Firmware card choose Download firmware, then pick Bluejay at the top of the sheet.
Choose a version. The newest stable release is selected; release candidates are labelled.
Choose the PWM frequency (48 kHz suits most quads) and press Download.
Check the confirmation: each ESC should show the file's layout with a tick. Press Flash.
Keep the battery connected and stay on the screen until every ESC is done. Each ESC is read back afterwards and should now show Bluejay with its version.
Press Done, then turn on Bidirectional DShot and set Motor poles in the Betaflight Motors tab, and confirm every motor reports RPM with props still off.
Guide 02
Update Bluejay to a newer version
Updating works like the first flash; your direction and beep settings are kept.
Connect with props off and the battery in, as above.
Choose Download firmware; Bluejay is offered for ESCs that already run it.
Pick the new version and the same PWM frequency you used before, unless you want to change it.
Flash, wait for the read-back, and check the version on each ESC tile.
Guide 03
Reverse one motor on Bluejay
Use this when a single motor spins the wrong way. Props off.
Connect to the ESCs with the battery plugged in.
Tap the tile of the ESC that drives the wrong motor.
Choose Reversed (or Normal if it was reversed). The tile turns to show the change is pending.
Press Write at the bottom. FlySpark writes and reads the setting back to check it.
Press Done and check the direction with a motor test before fitting props.
Guide 04
Write a custom startup tune
The melody editor appears in the top bar once at least one connected ESC can store a tune.
Open the music note in the ESC screen.
Start from a preset, from the tune already on an ESC, or type RTTTL text such as name:d=16,o=6,b=200:c,p,e,p,g.
Use the keyboard to add notes at the chosen length and octave, and Preview to hear it.
Check the byte counter and the warnings for notes that don't fit or are out of range.
Press Write to ESCs, keep the battery in, then power-cycle to hear it.
Troubleshooting
Common problems and fixes
Problem
"The flight controller found no ESCs. Connect the flight battery and try again."
Fix
The ESCs had no power when passthrough started. Plug in the battery, then press Try again.
Problem
"Disarm before connecting to the ESCs"
Fix
Passthrough is refused while armed. Disarm on the radio and try again.
Problem
"No reply from the flight controller's ESC interface"
Fix
The flight controller entered passthrough but did not relay replies. Check the motor protocol is DShot or Multishot, unplug the battery and USB, and reconnect.
Problem
"This version has no build for A_H_xx; try another version"
Fix
That Bluejay release has no file for your layout and PWM choice. Pick another version, or another PWM frequency.
Problem
"GitHub rate limit reached; try again in a few minutes"
Fix
The version list comes from GitHub, which limits how often it can be asked. Wait a few minutes. In the app, versions downloaded before stay available offline.
Problem
"wrong chip (...); never flashed"
Fix
The file is for a different EFM8 chip than the ESC. Use Download firmware so FlySpark picks the matching file, or choose a file whose layout letter (L or H) matches.
Problem
Flashing stopped part way (battery unplugged, cable pulled)
Fix
FlySpark erases the settings page last and leaves the reset pointing at the bootloader, so the ESC still answers and normally still reports its layout. Connect again with the battery in and flash the same file. Other tools show the unfinished ESC with the name **FLASH*FAILED**.
Problem
No RPM in Betaflight after flashing Bluejay
Fix
Turn on Bidirectional DShot in the Motors tab, make sure the motor protocol is DShot 300 or 600, and set Motor poles to the number of magnets in the bell.
Glossary
Glossary of terms
- Bidirectional DShot
- DShot where the ESC replies to each command with the motor's electrical RPM, used by Betaflight's RPM filter.
- EDT
- Extended DShot telemetry: extra data such as temperature sent back over the same bidirectional DShot line.
- Layout
- The hardware design a BLHeli_S or Bluejay file is built for, written like A_H_15: board letter, chip letter, dead time.
- Dead time
- The short gap between switching one MOSFET off and its partner on, set per ESC design. Flashing the wrong value can damage the ESC.
- PWM frequency
- How often the ESC switches the motor phases each second. Bluejay offers 24, 48 and 96 kHz builds.
- RTTTL
- A plain-text ringtone format: a name, default length, octave and tempo, then notes such as 8c#6.
- 4-way interface
- The flight controller mode that passes serial data straight to each ESC's bootloader so it can be read and flashed.
FAQ
Frequently asked questions
Can I flash Bluejay on any BLHeli_S ESC?
Bluejay is built for BLHeli_S hardware layouts on EFM8 chips. FlySpark flashes ESCs with EFM8BB1 or EFM8BB2 chips and picks the file for each ESC's layout. Older SiLabs F-series BLHeli ESCs and EFM8BB51 ESCs are not flashed by FlySpark.
Which PWM frequency should I choose for Bluejay?
48 kHz suits most quads and is preselected. 24 kHz is often chosen for efficiency, 96 kHz for smoothness on small high-KV builds. You can reflash with a different frequency at any time.
Will I lose my settings when I flash Bluejay?
Motor direction, beep strength, beacon strength and beacon delay are restored after flashing, because they mean the same in BLHeli_S and Bluejay. Other settings start from the new firmware's defaults.
Why can't I change startup power or temperature protection on Bluejay in FlySpark?
Those bytes moved between Bluejay versions, so FlySpark only edits settings with a fixed position. Use esc-configurator.com for the rest; FlySpark keeps whatever you set there.
Do I need bidirectional DShot to use Bluejay?
No, Bluejay runs on normal DShot. Bidirectional DShot is what enables Betaflight's RPM filter, which is why most pilots turn it on after flashing.
Can I flash Bluejay from my phone?
Yes. The FlySpark Android app flashes Bluejay through the flight controller on a USB OTG cable. The iPhone app can reach the ESCs over a Bluetooth UART module or a Wi-Fi MSP bridge.
Can I go back to BLHeli_S after Bluejay?
Yes. Choose Download firmware, switch to BLHeli_S and flash version 16.7 for your layout. The direction and beep settings carry over.
What if the flash is interrupted?
FlySpark writes in an order that leaves the ESC starting in its bootloader. Reconnect with the battery in and flash again.
Does FlySpark support BLHeli_32 or AM32 too?
AM32 has its own page: AM32 configurator. BLHeli_32 ESCs are detected but not edited, because their settings format was never published.
Can I try the ESC configurator without a drone?
Yes, with simulated BLHeli_S and AM32 ESCs in the browser, so you can see the screens, direction tiles and flashing flow. There is no simulated Bluejay ESC, so the Bluejay-only parts appear once real Bluejay ESCs are connected.
References
Sources
The official documentation behind the background facts on this page.
- Bluejay: digital ESC firmware for multirotorsBluejay project (GitHub) · github.com
- Bluejay releasesBluejay project (GitHub) · github.com
- ESC FirmwareBetaflight · betaflight.com
- DShot RPM FilteringBetaflight · betaflight.com
- ESC Configurator - for Bluejay, BLHeli_S and AM32ESC Configurator · esc-configurator.com


