In this tutorial, we’ll guide you through the process of flashing the Bluejay firmware to your BLHeli_S ESCs. Bluejay is a free open-source firmware that enhances ESC performance, offering additional features and options, turning your BLHeli_S ESCs into a powerful alternative to more expensive BLHeli_32 ESCs.
Table of Contents
Advantages of Bluejay Firmware
Bluejay firmware offers numerous benefits, including:
- Enhanced flight performance through Bi-directional DShot and RPM filtering capability with Betaflight. Learn more about RPM filters in our tutorial: https://oscarliang.com/rpm-filter/
- Fixed PWM Frequency options (24KHz, 48KHz, and 96KHz) to improve efficiency, potentially increasing flight time by up to 30%. However, higher PWM frequencies reduce motor braking force. Learn more about PWM frequencies here: https://oscarliang.com/best-blheli-32-settings/#PWM-Frequency
- Customizable start-up melodies for a personalized touch.
While there are alternative firmware options such as JESC and JazzMaverick (BLHeli_M), these have limitations. JESC requires a paid license for each ESC, and JazzMaverick (BLHeli_M) is no longer being updated (last update in 2020). As a result, BlueJay has become the most popular firmware for BLHeli_S ESCs, thanks to its free availability and active support.
Software Required
There are two methods for flashing BlueJay to BLHeli_S ESCs: using a standalone configurator (which requires installation, download here) or a browser-based configurator (https://esc-configurator.com).
We recommend the web configurator for its ease of use and reliability, which we’ll use in this tutorial. Please note that only Chrome-based browsers support the ESC Configurator. You can also use it to configure and flash normal BLHeli_S firmware ESCs, it’s a very handy and versatile tool.
Steps to Flash BlueJay
If you’ve used BLHeli Configurator before, the interface and steps will be familiar.
Connect your ESC to your drone’s flight controller (FC) and plug in the USB cable to the FC. Power the ESC by connecting the LiPo battery.
Click “Select Serial Port” and choose your FC’s COM port (your browser may request permission to access the COM port).
Click “Connect” to display all available ESCs.
To flash Bluejay, click “Flash All” and configure the following options:
- Firmware: Select “BlueJay”
- ESC: Leave as-is, don’t change it (the ESC type should be detected/chosen automatically), this is the ESC layout.
- Version: Choose the latest official release
- PWM Frequency: Higher values yield smoother and more efficient motors, especially in smaller aircraft like tiny whoops. However, this comes at the cost of reduced torque and snappiness. Refer to our PWM frequency article for more information. As a general guideline, select 96KHz for tiny whoops, 24KHz for 5″ FPV drones, and 48KHz for intermediate sizes. For 5″ freestyle quads, try 48KHz if 24KHz causes rough motor sounds. Experiment with different values to find the best fit for your setup.
Click “Flash” to complete the process.
ESC Shows As Unknown In Configurator
If your ESC shows as “Unknown” in the Bluejay ESC configurator and won’t flash, you can try clicking the “Ignore MCU Layout” option. This tells the configurator to flash the ESC even if it can’t read the current firmware.
This method can be used when some of your ESC is showing the unknown error, and you can simply match the target name with the other ESCs that are successfully recognised by the configurator. If all your ESC are showing unknown and you are not sure what the target name should be, this method is not for you, because your ESC might stop working if you flash the wrong firmware.
Configuring BlueJay
To enhance your drone’s performance, enable RPM filters in Betaflight, as explained in our tutorial: https://oscarliang.com/rpm-filter/
Next, configure your ESC settings by connecting to the configurator and clicking “Read Setup” to populate all the ESC settings.
For first-time BlueJay users, you’ll notice additional options in the configurator. While the default options suit most users, consult our article explaining these settings for further customization: https://oscarliang.com/best-blheli-32-settings/
Create Custom Startup Melody
BlueJay allows you to personalize your quad’s startup melody, which plays when you plug in the battery. Here’s how:
Click “Open Melody Editor” to access the melody editing interface for each ESC.
Choose from a variety of pre-made melodies in the drop-down menu or create your own custom melody if you’re familiar with the process.
After selecting your desired melody, click the “Accept” button for each ESC and then click “Write Melodies” to save your changes.
Your custom startup melody is now ready to greet you every time you power on your quad.
Best Settings
PWM Frequency
PWM (Pulse Width Modulation) frequency controls how fast the ESC switches power on and off to the coil when not at full throttle. In Bluejay, you have the options of 24kHz, 48kHz, 96kHz. However you cannot just change this settings, you have to flash your ESC again after you pick the PWM frequency you want. Learn about what PWM frequency is: https://oscarliang.com/best-blheli-32-settings/#PWM-Frequency
In summary:
- Higher PWM frequency shows improvements in smoothness, efficiency/flight time (48Khz to 96KHz), especially for smaller drones like Tiny Whoop.
- Lower PWM frequency reduces motor braking power, which slows motor deceleration but have minimal effect on acceleration.
Recommendation: For long range and freestyle, set PWM frequency to 48KH. For racing, set to 24KHz. For Tiny Whoops and other micro drones, set PWM frequency to 96kHz for improved efficiency.
Motor Timing
Motor timing in ESCs refers to when the ESC drives the coil relative to the position of the magnet in the rotor. Essentially, it controls when the ESC will turn on the coil to push the magnet around. When motor timing is set to 0°, the ESC drives the coil when the magnet is directly opposite the end of the coil. When motor timing is set to a positive value (e.g., 15°), the ESC drives the coil slightly before the magnet arrives, giving time for the current and magnetic field to build up, pushing the magnet past the coil.
When timing is too low, you can risk ESC desyncs. But too much timing can cause the coil to push back against the magnet, reducing efficiency and potentially stopping the motor.
My recommendation is leaving motor timing at default unless you know what you are doing. Tiny whoop users can try lower motor timing e.g. 15° for improvement in performance.
Rampup Power (RPM Power Protection)
Ramp up power determines how aggressively the ESC accelerates the motor. I normally just leave ramp up power at default settings, note that setting it too low will result in slower acceleration.
Minimum/Maximum Startup Power
Bluejay always attempts to start the motors at the Minimum Startup Power. If the motors struggle to spin up, Bluejay incrementally increases the startup power up to the Maximum value. If the motors still don’t spin at the maximum startup power, they are assumed to be stalled, and the ESC stops to prevent overheating or damage—a crucial safety feature. However, if your startup power is set too low, your motors may not spin up smoothly.
To ensure smooth startups, it’s recommended to “tune” the minimum and maximum startup power based on your specific quad. For Bluejay version 21.0, gradually increase the Min Startup Power (Boost) until the motors reliably start. Then, set the Max Startup Power 20 points above this level.
ESC Power Rating
Set it according to your board (1S for 1S boards, 2S+ for 2S, 3S, 4S, 6S and 8S, etc).
Conclusion
In conclusion, flashing BlueJay firmware to your BLHeli_S ESC provides numerous benefits, such as improved performance, enhanced efficiency, and custom startup melodies. Following this tutorial and making necessary adjustments can significantly elevate your FPV drone experience, ensuring smooth and enjoyable flights for both beginners and intermediate enthusiasts.
Edit History
- Mar 2022 – tutorial created
- Apr 2023 – instructions updated
34 comments
PLEASE HELP.
I have flushed the ESC but forgot to press “Disconnect” and closed the window. Now the esc-configurator is unable to find my ESC and the sound that was played when I plugged in the battery had disappeared + VTX is no longer flashing.
Followed the tutorial step by step but getting the following error:
Layout mismatch, override not enabled – aborted
My stack: speedybee f405 v4
I’ve got the same stack and received the same error. I followed the speedybee instructions and they said “Important note: On the 6th interface, the “ESC” type must be selected as “J-H-50”.
The instructions are here: store-fhxxhuiq8q.mybigcommerce.com/product_images/img_SpeedyBee_F405_V4_60A_Stack/20240119-F405_V4_Stack_Manual_EN.pdf
I fixed it by selecting “J-H-40” (this is what was getting read from the stock board in esc-configurator).
hello
I recently purchased an f7V3 stack speedybee which I am using today. it is impossible, whatever the interface used (speedybee application, bluejayesc configurator, etc.) to communicate with the BL32 50A ESC; There is still a problem with ESC #4 which seems to prevent overall communication with the ESC stack. It is then impossible to flash this ESC which poses a problem for me.
Same behavior when I connect this BL32 50A with an FC F5V3 the most curious thing is that the ESC can be controlled normally under BETAFLIGHT, but under INAV 7 ESC No. 4 does not work; Engine No. 4 is not running.
I flashed F5V3 with INAV 7 and there are no problems.
i believe that the firmware is blheli, and NOT blheli-s as it should.
is there anyway to flash with blheli-s? how to do that?
best regards
If the ESC came with the Speedybee F7 V3 stack, then it should be BLHeli32, and you should use the BlHeliSuite_32 software to program it.
Follow this guide to identify exactly which ESC firmware they use: How to Identify ESC Firmware Before Flashing (BLHeli_32, AM32, BLHeli_S, Bluejay)
what is the different between J-H-40 and J-H-50? does it have to something with the amount Ampere (A) that the ESC can handle or something els?
See here for detail: https://oscarliang.com/connect-flash-blheli-s-esc/#BLHeli-S-Firmware-Naming-Convention
In this case, the 40 and 50 are the FET switching deadtime.
I am new to BLHeli and tried to flash Bluejay to my LittleBee-Spring 30A, BLHeli S ESC using the ESC Configurator as per your instructions. The Esc is connected to a Matek F765-WSE flight controller. This is what the log of the configurator says:
“….Port already in use by another application – try reconnecting
….Failed resetting ESC 1 – power cycle and try again
….Opened serial port
….Port selected
….Plugged in ”
I tried this several times but the same result happens. What do you suggest I should do?
….
I assume your flight controller is loaded with INAV? I am not sure if INAV supports “passthrough” for configuring/flashing ESCs. I’d suggest trying with a Betaflight flight controller.
Thanks for the response. My flight controller has Arduplane since this is what I use. Do I need to have Betaflight in my flight controller to flash bluejay? Can’t I do it with Arduplane?
I have Bluejay 96khz on a couple of 1s FCs and it does work fine. They were set up with ESC Configurator, which was also fine. However I’m not keen on a web based configurator – not everyone has web access all the time wherever they are, and will it always be there? I see there is a downloadable equivalent, but it seems it may not get updated.
Thank you so much Oscar. As always, your blog is the safest source for information. With this upgrade to BlueJay, I made my tinywhoop to fly again.
The bidirectional dshot and dynamic idle completely fixes my zero idle desync issue. Honestly this setup should be default for all newer drones that support it.
Hi I updated to BF 4.3 on a Tinyhawk 2 freestyle (new fc old one died) put blueJay 48khz on and the motor order is wrong what’s the best way to fix it
Hi found the solution there is a motor reordering button in the motor tab 😇
Go to the motor tab in Betaflight, there is a “motor order” button, click that it will walk you through fixing your motor orders.
Oscar,
New to drones and love your videos – learning a lot. Wish I had read more before I bought and installed my AIO FC, with is a JEMCUF405PRO AIO and unfortunately is BLHELI_S. Can I flash the ESCs to bluejay and not brick the FC? If I manage to brick the ESCs is there a “easy” way to get them back to life so I can just wait until I can find a better AIO and do some surgery but still fly?
Thanks
Is there any known report of those ESC bricking when flashing bluejay? I’ve flashed a of lot BLHeli_S ESC and only ever bricked one or two and it’s extremely rare. If they get bricked you can ‘revive’ them following this post.
I haven’t seen anything, but I am concerned as its an AIO (FC + ESC) and didnt know if that would change things. While I want to get this on the best possible solution for software, I really want to fly too….
Thanks – again – learning a lot from your videos!
It changes nothing being aio or not. Even with non aio you are still going through fc to flash the esc.
It happens mostly on highly integrated elrs aios when people leave the radio on during flashing. New esc-configurator.com tool detects when radio is on and disables flashing, BF 4.4 also has a fix to prevent this.
PD. This may be interesting to you:
https://discord.com/channels/822952715944460368/1049663729308008488/1075483880582299759
Bonjour, merci pour ces excellents tutoriels ! J’ai une question : j ‘ai un quad 3 pouces 6S, crossfire, Vista, sur lequel j’ai voulu flasher les ESC (en BLHeli s) sous blue Jay avec esc-configurator pour avoir accès au RPM filter et bi directional Dshot. Bref, je flashe, c’est ok sauf qu’en reconnectant à BF j’ai un taux d’erreurs qui monte anormalement sur un moteur. alors je fais la procédure inverse : je flashe à nouveau en BLHeli S et là c’est la catastrophe : les moteurs 2 et 4 ne sont plus reconnus du tout ! Et pourtant dans BF, chaque moteur tourne normalement et dans le bon sens… je ne sais plus quoi faire. Aurais-tu une astuce à tout hasard ? Merci par avance. Martial
Hi Oscar! is every BLHeli_s ESC compatible with this thing? I have a F4 1S AIO FC and… while all the process was correct (I even put the X-files tune on it 🥰) Back on betaflight it gives me some error when trying to activate Bidirectional D-shot (something like, you need 4 ESC and the current value is 0)
Also, when checking the motors, only 1 starts up, so no luck for me so far. Can you think of any cause for this?
Thx in advance, I am so new into this lovely Hobby and mate, your posts really make everything easier.
Sorry i am not sure, maybe contact the developer and see if there’s a known issue for your particular ESC? Can you flash it back to BLHeli_S firmware using the same tool?
try it
https://github.com/mathiasvr/bluejay/issues/36
Thank you Oscar! This is a great tutorial!
I was able to get one of my quad flashed and working well!!
Unfortunately, this bricked my second quad’s ESC – it has a Diatone Mamba F30 Mini 30A
going to rescue it with BLHeliSuite.
Is there a way to flash bluejay with BLHeliSuite?
I manually downloaded C_H_40_96_v0.16.hex firmware but BLHeliSuite seemed to refused flashing one of the unbricked ESCs, saying:
”
Flash file is of rev 0.16
and cannot be flashed over a bootloader
”
I’ll get C2 interface connected and try rescue later…
If it’s bricked then your only option is to flash it via C2 interface, regardless what firmware you are flashing.
Thank you! that answered my question. I was successful in flashing (all of the 4 ESCs) via C2, and now they’re all running bluejay. YAY!
It wasn’t immediatly successful though, some of the 4 ESCs needed me to flash them twice before they come back to life.
Hi Oscar, I’m currently flying my QQ190 (circa 2017) on BF 3.1.7 and still have the appropriate configurator. It runs the following ESC’s:
• Silabs Busy Bee Processors
• Dedicated PWM Driver
• BLHeli-S enabled
• Fast 8-Bit processing
• Over-Current protection
• 25A Constant, 35A burst
• Multishot Protocol enabled- The Multishot protocol uses a 5-25μs signal that allows refresh rates of up to 32 KHz, while maintaining 240 steps of resolution.
• Active/regenerative braking
• Lost model/inactivity alarm
• Passthrough programmable
• 3-Phase brushless motor output
I want to flash them to Bluejay so I can get the benefits before I go up to BF 4.3.
My question, my quad flies pretty well now – if I flash to Bluejay will it affect the way my quad behaves (without going into BF3.1.7 to change anything). i.e. will I need me to re-tune my craft to behave as it does now? I’m not concerned about the benefits just yet, simply want to know if the ESC’s will still behave as they do now.?
Hoping you can shed some light on this.
Cheers
just make a note of what version your ESC is on now, and if you don’t like it after upgrading you can always downgrade.
I assume your haven’t updated your ESC since you got the quad in 2017? then in that case it should fly better in the new version there’s been so much changes and improvements since. If you keep the settings the same you probably can’t tell much a difference anyway
Hi, Oscar,
I have an MCU F405 flight controler useing omnibusF4SD right now i still have Betaflight 3,5.7. I want to go to the newer Betaflight version so to have bi directional D shot, but my ESC still has BlHeli-S A-H-30. Will flashing the Bluejay to my ESC work for me or is my ESC and FC board too old to do so. I hear how some people get their ESC messed up when trying to do it.
I followed the flash steps exactly on my iFlight Alpha A75 and I seem to have a dead drone. The process stalled on ESC 2 and now nothing happens when I plug in the USB port. When I connect a battery I get a weak and broken startup tone with no lights or other functionality. Am I screwed or are there any recovery options?
The bootloader on your ESC might be corrupted. It rarely happens, but I found this can happen in some badly designed/manufactured hardware when flashing firmware.
You can try recover it following this guide: https://oscarliang.com/flash-blheli-c2-interface/
Thank you so much for responding! I did find that article shortly after crying for help and now have an arduino nano on the way. My C2 interface is soldered up and ready. Hopefully this works, thank you for the great information!!