BrewFlasher - Windows/MacOS app for flashing ESP8266/ESP32 Brewing Projects

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

Thorrak

Supporting Member
HBT Supporter
Joined
Feb 7, 2016
Messages
4,006
Reaction score
2,725
Location
New York, NY


BrewFlasher

BrewFlasher is a stand-alone desktop application for Windows and MacOS designed to simplify flashing brewing-related firmware to your ESP8266 or ESP32 controller.

It handles everything - locating the correct firmware, downloading it, setting the correct flash options/offsets, and flashing the firmware. No fumbling with the command line or worrying about esptool options. Select the project you want to flash, click a button, and you’re done.

gui.png



What operating systems are supported?

BrewFlasher should work on all modern (64 bit) versions of MacOS X and Windows.


What firmware/projects are supported?

The list of projects BrewFlasher supports is ever changing as new ones are added to the firmware database. Currently, this includes BrewPi-ESP8266, TiltBridge, BrewBubbles, and more.


Are Arduino-based projects supported?

No. This project uses esptool.py which only works with ESP-based chips.


How can I download BrewFlasher?

BrewFlasher can be downloaded from its GitHub release page or BrewFlasher.com.


Special thanks on this project go out to @LBussy and @gromitdj for assistance in design and testing, as well as to the authors of the NodeMCU-PyFlasher project which BrewFlasher is largely based on.
 
Last edited:
Ha, if I had just waited until this evening to set up my new Tilt I wouldn't have had to stumble my way through figuring out how to flash manually...

Thanks, this will help alot of folks :)
 
I appreciate any and all efforts that can remove as much of my idiocy out of any process.

Question...currently in Fermentrack when flashing multiple devices. I have to connect Device 1, let Fermentrack Find it, Flash, leave attached to USB. Connect Device 2, Find it, flash, leave attached to USB. Connect Device 3....etc.

This eliminates that procedure yes? Now I can plug in, flash, unplug, move on to the next one?

Should I assume the TiltBridge flash is the original release firmware?
 
I appreciate any and all efforts that can remove as much of my idiocy out of any process.

Question...currently in Fermentrack when flashing multiple devices. I have to connect Device 1, let Fermentrack Find it, Flash, leave attached to USB. Connect Device 2, Find it, flash, leave attached to USB. Connect Device 3....etc.

This eliminates that procedure yes? Now I can plug in, flash, unplug, move on to the next one?

Should I assume the TiltBridge flash is the original release firmware?

Yes, pretty much. The Fermentrack flash process assumes that you will have a bunch of unidentifiable devices connected (for most users) and uses the act of plugging the device in to detect which device you want flashed. This also helps prevent a scenario where you might be looking - say - to flash a new controller, but have an existing controller already connected via serial. BrewFlasher assumes that you either want to flash the first available eligible device (presumably the only one connected) or explicitly know the device you want to flash. It’s a slightly different procedure, but it fits with the model where you would be flashing from a computer that isn’t otherwise involved in your brewing landscape (like a Pi running Fermentrack would presumably be).

As a side note, the list of firmware available to flash in BrewFlasher is actually a slightly filtered version coming from Fermentrack.com, so updates to the Fermentrack firmware options will also expand the options in BrewFlasher.

There are three firmware options for TiltBridge at the moment - the TFT one is the “beta” firmware I sent across to you awhile back. No changes yet. ;)
 
There are three firmware options for TiltBridge at the moment - the TFT one is the “beta” firmware I sent across to you awhile back. No changes yet. ;)

Well...when you’re given a new toy it would be disrespectful not to play with it.

Just used BrewFlasher on a Windows laptop. Flashed the beta TB onto the D32 Pro with no issues. :D

For nubs like me, what would be the most common scenario to use the Erase Flash option?
 
Well...when you’re given a new toy it would be disrespectful not to play with it.

Just used BrewFlasher on a Windows laptop. Flashed the beta TB onto the D32 Pro with no issues. :D

For nubs like me, what would be the most common scenario to use the Erase Flash option?

The short answer is: when things don’t work the first time. The erase flash option shouldn’t ever need to be used - yet none of the bugs people sometimes report with some of these projects should ever occur either.

“When in doubt, zero it out.”

Don’t have me do your taxes.
 
Maybe it means "erase eeprom"?

There's really never a good reason to "erase" flash with the exception of serial eeproms that are not part of the code-resident domain - which gets erased when it's reprogrammed anyway. As flash has a limited lifespan erase cycles are to be avoided except when necessary...

Cheers!
 
Maybe it means "erase eeprom"?

There's really never a good reason to "erase" flash with the exception of serial eeproms that are not part of the code-resident domain - which gets erased when it's reprogrammed anyway. As flash has a limited lifespan erase cycles are to be avoided except when necessary...

Cheers!

It doesn’t in this case, but I believe it does cover the EEPROM. It toggles this option: https://github.com/espressif/esptool/blob/master/README.md#erase-flash-erase_flash--erase-region
 
btw, not trying to be critical here, just technical. Given I actually spent almost 15 years doing nothing but designing flash-based storage devices for everything from GoPros through iMacs through Bing servers to Los Alamos-scale systems there's some experience involved :)

A feature to do a selective erase of any eeprom used to store settings is always a good thing as seen repeatedly in this forum.
Wiping a code store, not so much.
Programs like avrdude will always do an erase before write, so no need to front that with another erase...

Cheers!
 
btw, not trying to be critical here, just technical. Given I actually spent almost 15 years doing nothing but designing flash-based storage devices for everything from GoPros through iMacs through Bing servers to Los Alamos-scale systems there's some experience involved :)

A feature to do a selective erase of any eeprom used to store settings is always a good thing as seen repeatedly in this forum.
Wiping a code store, not so much.
Programs like avrdude will always do an erase before write, so no need to front that with another erase...

Cheers!

Oh, I 100% agree on both counts.

BrewFlasher is a wrapper around esptool.py, so the options it presents are the options esptool.py exposes. In this case, the --erase-flash option wipes everything. Now - the argument can be made that the exception proves the rule, and that esptool.py clearly isn't doing an erase before write if it makes you explicitly set a flag to do so, but I would still expect it to do enough to ensure that whatever firmware gets flashed runs well.

The main thing I think about in terms of how the option could be useful is the fact that some users of TiltBridge have found the need to flash an unrelated firmware before they are able to get TiltBridge to properly flash SPIFFS. This makes absolutely no sense to me. The only thing I can think that means is that there is some inconsistency that is resolved by flashing the other firmware first, which is where I think that the --erase-flash option could prove helpful. Still though - my recommendation would be to not use it unless required, which is why it is not enabled by default.
 
Just used BrewFlasher on a Windows laptop. Flashed the beta TB onto the D32 Pro with no issues. :D

you did better than me, I still can't make it work! :no: I'm apparently no good at this non-windows stuff!
[emoji2369]
 
I don't get any errors that I can tell.
I just have the blank screen and no tiltbridge SSID.
IMG_20200128_163912.jpg
IMG_20200203_134852.jpg
IMG_20200204_133938.jpg
 
I need a step by step walkthrough. I download and expand the Github zip file to a folder on my win 10 laptop desktop but not sure where to go from there.
 
Flashing the TFT version did get my display to work and it sees the Tilt. Unfortunately, now I can't access the device through the browser. Using http://tiltbridge.local/ or the IP address results in a blank tab. My router says it's connected, but I can't access it to finish setting it up. The files linked from the TiltBridge documents did allow me to connect with the browser -just no TFT display. Using the erase flash function basically breaks everything and I have to load something else via Arduino and then re-run BrewFlasher to get back to the working TFT display & blank browser.
 
Update - I just released a new version of BrewFlasher which includes support for flashing the bootloader & otadata partitions to ESP32s. This should fix the issues that some users have reported with TiltBridge. This support has to be enabled firmware-by-firmware, and is currently only enabled for the TiltBridge BETA firmware - not the original (non-beta) TiltBridge firmware.

As always, let me know if you have any issues. The release can be downloaded here.
 
Flashing the TFT version did get my display to work and it sees the Tilt. Unfortunately, now I can't access the device through the browser. Using http://tiltbridge.local/ or the IP address results in a blank tab. My router says it's connected, but I can't access it to finish setting it up. The files linked from the TiltBridge documents did allow me to connect with the browser -just no TFT display. Using the erase flash function basically breaks everything and I have to load something else via Arduino and then re-run BrewFlasher to get back to the working TFT display & blank browser.

Reflash with the new version of BrewFlasher and the Beta firmware and let me know if that fixes it. If it doesn’t, post over in the TiltBridge thread and I’l see what I can do to help.
 
I am attempting to use BrewFlasher to flash my new boards using Windows. My Windows can see the boards when I connect them, they show up in Device Manager as "USB SERIAL CH340 (COM3)".

But when I try to run BrewFlasher, and select "COM3" as the serial port, the flasher just hangs. It gets to the third line "Command: esptool.py..." as shown in the photo above and just sits there. I've left it for about an hour hoping to give it time, but it doesn't seem to help. Using the Auto-select (instead of "COM3") doesn't seem to work either. I've also tried changing the baud rate, no difference.

Am I missing something? Are these boards not compatible, or is there something missing that BrewFlasher is expecting?

EDIT: this only happens when I select "BrewBubbles v2 rev2 -1" as the firmware. "Rev1-1" flashes fine.

Thanks!
 
Last edited:
Lee,

Thank you so much for the quick reply! And yes, it works fine now! V2 flashed without issue.

I'm excited to get my BrewBubbles up and running!

-Jake
 
Last edited:
Just flashed 7 brewbubbles devices. Really easy to use tool, well done. Took me a second to understand how versioning is represented. Does this connect with a remote firmware database? Or does it check github repos directly?
 
There is a firmware database that maintains the metadata I enter, it calculates a checksum, and compares that against the firmware it downloads directly from GitHub (or wherever I point it.)
 
After messing with the NodeMCU flasher and the Espressif one and the python ones, which are all really the same and probably all worked fine, assuming I had the right settings for flashing the iSpindel, but I was always a bit uncertain about the outcome because documentation and tools' feedback was always kind of sketchy. Yeah, I saw all the forum discussions, but they seemed to always be a matter of the blind leading the blind with a few anecdotal successes using what I considered to be odd settings. No details at all from the iSpindel folks's docs, at least not in English. And just as my expectations were starting to suck yeasty muck through the beer-out tube, I discovered that BrewFlasher supports flashing iSpindel.

And it just... worked. And it told me so. Not too much to ask really.

Thanks guys! :)
 
Last edited:
I've gotta say this software is a great idea and really easy to use. It's perfect for anyone who want's to build some of the popular IoT projects but doesn't want to code or compile. It's also nice that the software always pulls the most recent versions for each project, so you don't have to go and find it...
 
After messing with the NodeMCU flasher and the Espressif one and the python ones, which are all really the same and probably all worked fine, assuming I had the right settings for flashing the iSpindel, but I was always a bit uncertain about the outcome because documentation and tools' feedback was always kind of sketchy. Yeah, I saw all the forum discussions, but they seemed to always be a matter of the blind leading the blind with a few anecdotal successes using what I considered to be odd settings. No details at all from the iSpindel folks's docs, at least not in English. And just as my expectations were starting to suck yeasty muck through the beer-out tube, I discovered that BrewFlasher supports flashing iSpindel.

And it just... worked. And it told me so. Not too much to ask really.

Thanks guys! :)

Glad that everything worked! The iSpindel version that BrewFlasher flashes can fall out of date, but it's not that hard to update. I just need poking. :)
 
While I would argue that BrewFlasher was perfect as released, I have managed to find a few updates to make over the past two years. That said - BrewFlasher v1.2.0 is now released on GitHub!

BrewFlasher v1.2.0
- Refresh, Cleanup, and M1 Mac Support
  • Removed "flash_mode" selector (now auto-detected from firmware headers)
  • Switched from Fermentrack.com to BrewFlasher.com for firmware lists
  • Incorporated additional "pre-flash" firmware checksum check
  • Upgraded to esptool 3.2
  • Added support for M1 Macs (Apple Silicon)
  • No longer producing x32 binaries for Windows
  • Added additional error messages to clarify when things go wrong during the flashing process
Upgrading is recommended for all users with binaries available at GitHub.
 
I just released my latest project - BrewFlasher Web Edition!

This project took all the magic of BrewFlasher, and stuck it in a web app. Flash any ESP8266/ESP32 firmware supported by BrewFlasher, straight from your web browser. No downloads needed.

BrewFlasher Web Edition is available at: BrewFlasher Web Edition

The code is open source, and is available at GitHub.

Note - Due to the APIs required, BrewFlasher Web Edition only works in recent desktop versions of Google Chrome, Microsoft Edge, and Opera. If you don't use one of those browsers, try BrewFlasher desktop edition instead.
 
Wondered if it would be possible to add this Tilt Repeater Project to the list. I use TiltPi to log to google sheets, but signal from Tilts are weak getting through my stainless fermenters, and are almost impossible to pick up outside my fermentation fridges. I've successfully flashed one with the Arduino IDE but seems like it would be much easier with BrewFlasher. The repeater works great and the TiltPi can get the signal from the other side of the room with the repeater inside the fridge. I'm sure others could benefit from it too. Thanks so much for sharing your awesome work with the rest of us!
 
Wondered if it would be possible to add this Tilt Repeater Project to the list. I use TiltPi to log to google sheets, but signal from Tilts are weak getting through my stainless fermenters, and are almost impossible to pick up outside my fermentation fridges. I've successfully flashed one with the Arduino IDE but seems like it would be much easier with BrewFlasher. The repeater works great and the TiltPi can get the signal from the other side of the room with the repeater inside the fridge. I'm sure others could benefit from it too. Thanks so much for sharing your awesome work with the rest of us!

As long as someone out there is willing to maintain it, that can be done! Shoot me a PM on HBT and I can get you set up.

(Though, of course, I'd always recommend you just use a TiltBridge ;) )
 
I've just released the latest version of BrewFlasher Desktop Edition on GitHub!

BrewFlasher v1.3.0 - ESP32-S2 Support
  • Adds support for flashing ESP32-S2 devices
  • Updates to the latest PyInstaller/esptool
Updating to this version from GitHub is recommended for all BrewFlasher users.
 
Back
Top