Giter Site home page Giter Site logo

brewflasher's Introduction

BrewFlasher

BrewFlasher Logo

A standalone desktop application for flashing brewing-related firmware to your ESP8266, ESP32, ESP32-C3 or ESP32-S2.

Espanol

BrewFlasher es una aplicación de escritorio independiente que permite al usuario actualizar o flashear un firmware específico (y subir un software) a un ESP32, ESP32-S2 o un ESP8266. BrewFlasher ubicará automáticamente el firmware en Internet, lo descargará y lo flasheará a tu chip sin ningún otro esfuerzo. Simple, rápido y mágico.

Deutsche

BrewFlasher ist eine eigenständige Desktopanwendung, welche es Nutzern erlaubt, spezifische Firmware auf einen ESP32, ESP32-S2 oder ESP8266 zu flashen (installieren). Es findet die benötigte Firmware aus dem Internet und flasht sie eigenständig auf deinen Chip. Einfach, schnell und magisch.

Svenska

BrewFlasher är en desktop applikation för att programmera mjukvara till projekt med fokus på bryggning.

Norsk

BrewFlasher er en programvare som gir brukeren mulighet til å flashe spesifikk firmware (laste opp programvaren til en ESP32, ESP32-S2 eller ESP8266 chip. Programmet vil automatisk finne firmware på internett, laste ned det, og flashe det til din chip med få valg. Enkelt, raskt og magisk.

About

Image of BrewFlasher GUI

BrewFlasher is a standalone desktop application that allows the user to flash specific firmware (upload software) to an ESP32, ESP32-S2, or ESP8266. It will automatically locate the firmware on the internet, download it, and flash it to your chip with minimal input required. Simple, fast, and magic.

This project was built as a natural complement to a handful of other projects I either support or collaborate on, where a user is expected to flash firmware to an ESP8266, ESP32, or ESP32-S2 controller. For many users, this step of the installation process is the most daunting - either because it requires the use of third-party tools that aren't mentioned in the project they want to use, requires the use of the command line, or - in some cases - isn't well explained at all. I solved this problem in my Fermentrack project by building in a guided "firmware flash" workflow - but this only helps when the user has installed Fermentrack. BrewFlasher was designed to take the best parts of the Fermentrack firmware flash workflow and integrate them into a standalone desktop application.

Supported Firmware

BrewFlasher is designed to specifically support a handful of beer- and brewing-related projects for the ESP32, ESP32-S2, or ESP8266. Those projects include:

  • BrewPi-ESP (ESP32, ESP8266, and ESP32-S2)
  • TiltBridge
  • BrewBubbles
  • Keg Cop
  • Flite
  • iSpindHub
  • SBL4TILT
  • GravityMon
  • FermWatch
  • BrewUNO

An up-to-date list of supported firmware can be found at the BrewFlasher website.

If you have a beer- or brewing-related project you would like supported, raise an issue and we can discuss it.

If you are looking to flash generic firmware, I recommend the NodeMCU PyFlasher tool that BrewFlasher was based on. It works great for ESP8266 boards (and might work for some ESP32 boards as well)!

Installation

MacOS and Windows releases

Download the latest release. BrewFlasher doesn't have to be installed; just double-click it and it'll start.

Running from python source on Linux

You can run BrewFlasher on Linux as follows:

git clone [email protected]:thorrak/brewflasher.git; cd brewflasher
pip install -r requirements.txt # you may need to e.g. `apt install libgtk-3-dev` for wxPython
python Main.py

The esptool.py utility may require that your user can access e.g. /dev/ttyUSB0:

sudo usermod -a -G dialout
su - $USER # to pick-up the new group in the shell

Manually toggling "Flash" Mode

Deutsche / Español

For certain chips (e.g. ESP32-S2) the USB-to-serial functionality is provided by the controller itself rather than a separate piece of hardware. For these chips, you may be required to manually set the controller into "flash" mode before BrewFlasher can install new firmware. Below is the process for doing this for the Lolin S2 mini -- other controllers are likely similar (though the "0" button may be labeled something else, like "boot" or "flash")

  1. Plug the Lolin S2 Mini into your computer
  2. Hold down the "0" button on the right of the board
  3. While continuing to hold the "0" button, press the "RST" button on the left of the board
  4. Wait several seconds, then release the "0" button
  5. Flash your controller with the desired firmware
  6. Manually press the "RST" button on the left of the board to reset the controller once flashing is complete

Background & Development

BrewFlasher is based heavily on the NodeMCU PyFlasher project. In comparison to that project, BrewFlasher adds explicit ESP32 & ESP32-S2 support as well as a workflow to automate selecting and downloading brewing-related firmware to flash. The firmware selection is taken from a curated list maintained behind-the-scenes on BrewFlasher.com.

Special Thank You

A special THANK YOU goes out to the following people who assisted with translating BrewFlasher into other languages:

  • Deutsche: TheySaidGetAnAlt on Reddit
  • Español: iloverentmusical on Reddit
  • Svenska: @mp-se
  • Norsk: bardevjen on HomeBrewTalk

Interested in helping translate BrewFlasher, or have suggestions to improve one of the translations? Please reach out - either on HomeBrewTalk or by raising an issue/pull request here on GitHub!

License

This package was based on the NodeMCU PyFlasher project which is licensed under MIT license, the code for which is © Marcel Stör

All subsequent additions are additionally licensed under the MIT license and are © John Beeler

As noted in the license, BrewFlasher is provided without warranty of any kind. As when flashing any microcontroller, a possibility of damage exists. Be careful, as all use of BrewFlasher is at your own risk.

brewflasher's People

Contributors

mp-se avatar robsteranium avatar thorrak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brewflasher's Issues

Implement Bierbot Bricks software for Sonoff ESP32

I'd like to flash the software from BernhardSchlegel (Brick-23) from git on an ESP-32 and thought, that this would be the right software for that.
Maybe add that as an option?

Best wishes from Germany.

P.S.: I could also provide a better translation into German... :)

iSpindel Firmware

Hi,

A new firmware version is available for the iSpindel (7.1.2).
Is it possible to have an update of Brewflasher?

Thank's a lot!!!!

Ispindel firmware flash not appearing to work

Hi there,

I've flashed my Ispindel using the latest available firmware on brewflasher. It appeared to work as expected, however the SSID of the device is ESP-6229.. instead of the expected iSpindel..

Wondering if you can help. thanks

Filesystem Flash Not Honored

It's hard to come up with a title here that's 100% descriptive but here's what's happening:

In Keg Cop (and Brew Bubbles I think) there is an application configuration JSON that has demo data. Especially in Keg Cop where there is a configuration per tap, there is a value in shipping this configuration intact. When this is intact, nine taps are displayed on the home screen after the first flash. When it's not intact the screen is bare.

If locally I flash the firmware and then the SPIFFS partition, the reset then loads the demo config and all is well.

When I use BrewFlasher (web) I flash both partitions, but the demo data is gone. The application does write default data but that demo data is missing.

Theory: The flashing process allows/causes the application to start and create the default configuration. Even though that configuration is overwritten on the filesystem, the process allows/causes the application to save what's in memory which is at this point "default."

Does BrewFlasher support the latest Heltec ESP32 Wifi kits?

According to the TiltBridge documentation, a Heltec ESP32 WiFi kit was purchased.

As can be seen on the Heltc homepage, the V3 is currently being sold.

When trying to flash the TiltBridge firmware, the following error message appears.

Note: Changing the speed does not change anything. The USB cables used are data cables.

Check the firmware list before the download starts...
Downloading firmware...
Downloading partitions file...
Downloading SPIFFS/LittleFS file...
Downloading bootloader file...
Downloading otadata file...
Downloading main firmware file...
Download abgeschlossen!

Esptool command: esptool.py --port /dev/cu.usbserial-0001 --chip esp32 --baud 115200 --before default_reset --after hard_reset write_flash 0x10000 /private/var/folders/bd/tdd902m93mgckswr83knj_l40000gn/T/firmware.bin 0x8000 /private/var/folders/bd/tdd902m93mgckswr83knj_l40000gn/T/partitions.bin 0x1000 /private/var/folders/bd/tdd902m93mgckswr83knj_l40000gn/T/bootloader.bin 0x330000 /private/var/folders/bd/tdd902m93mgckswr83knj_l40000gn/T/spiffs.bin 0xe000 /private/var/folders/bd/tdd902m93mgckswr83knj_l40000gn/T/otadata.bin --erase-all -fs detect

esptool.py v4.7.0
Serial port /dev/cu.usbserial-0001
Connecting....
Firmware flash failed. esptool reports an error.

Try the flash again, or flash at a slower speed.

ESP32-S2 presents false error message when set up without the 1200bps reset

When doing the initial installation of firmware on an ESP32-S2 that hasn't previously been flashed, the 1200 bps reset doesn't work requiring the user to hold down the "0" button while pressing "reset". Once this is complete, an error message is raised since the chip cannot be automatically reset to exit flash mode, but BrewFlasher interprets this as a failed flash.

Sample log is as follows:

Verifying firmware list is up-to-date before downloading...
Downloading firmware...
Downloading partitions file...
Downloading SPIFFS/LittleFS file...
Downloading bootloader file...
Downloading otadata file...
Downloading main firmware file...
Downloaded successfully!

Performing 1200 bps touch
...done

Command: esptool.py --port /dev/cu.usbmodem01 --chip esp32s2 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m 0x10000 /private/var/folders/_2/8s8y9m_j3gb419d4ynb0h6p80000gn/T/firmware.bin 0x8000 /private/var/folders/_2/8s8y9m_j3gb419d4ynb0h6p80000gn/T/partitions.bin 0x1000 /private/var/folders/_2/8s8y9m_j3gb419d4ynb0h6p80000gn/T/bootloader.bin 0x330000 /private/var/folders/_2/8s8y9m_j3gb419d4ynb0h6p80000gn/T/spiffs.bin 0xe000 /private/var/folders/_2/8s8y9m_j3gb419d4ynb0h6p80000gn/T/otadata.bin --erase-all -fs detect

esptool.py v4.1
Serial port /dev/cu.usbmodem01
Connecting....
Chip is ESP32-S2FNR2
Features: WiFi, Embedded Flash 4MB, Embedded PSRAM 2MB, ADC and temperature sensor calibration in BLK2 of efuse V1
Crystal is 40MHz
MAC: 84:f7:03:f5:16:96
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Erasing flash (this may take a while)...
Chip erase completed successfully in 16.5s
Compressed 946352 bytes to 601011...
Writing at 0x00010000... (0 %)
Writing at 0x00010e7b... (0 %)
...
Writing at 0x000f5f55... (99 %)
Writing at 0x000f6af7... (100 %)
Wrote 946352 bytes (601011 compressed) at 0x00010000 in 10.8 seconds (effective 703.4 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 129...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (129 compressed) at 0x00008000 in 0.0 seconds (effective 595.0 kbit/s)...
Hash of data verified.
Compressed 13440 bytes to 9428...
Writing at 0x00001000... (20 %)
Writing at 0x00001c1c... (40 %)
Writing at 0x0000277a... (60 %)
Writing at 0x0000318b... (80 %)
Writing at 0x00003d5d... (100 %)
Wrote 13440 bytes (9428 compressed) at 0x00001000 in 0.2 seconds (effective 522.8 kbit/s)...
Hash of data verified.
Compressed 851968 bytes to 1760...
Writing at 0x00330000... (100 %)
Wrote 851968 bytes (1760 compressed) at 0x00330000 in 5.4 seconds (effective 1268.7 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 806.4 kbit/s)...
Hash of data verified.

Leaving...
WARNING: ESP32-S2FNR2 chip was placed into download mode using GPIO0.
esptool.py can not exit the download mode over USB. To run the app, reset the chip manually.
To suppress this note, set --after option to 'no_reset'.
Firmware flashing FAILED. esptool.py raised an error.

Try flashing again, or try flashing with a slower speed.


Alternatively, you may need to manually set the device into 'flash' mode.
For instructions on how to do this, check this website:
http://www.brewflasher.com/manualflash/

Key message to note is WARNING: ESP32-S2FNR2 chip was placed into download mode using GPIO0.. I don't think that we can capture this specific error coming out of esptool (though we should check) so the solution here may be to add a note about this in the message that we present about the firmware flashing failing.

Download errors generate a generic error message

The download status reported to a BrewFlasher user is binary (either "Download Failed" or "Download Succeeded") but there are many reasons why a download can fail (Missing file, unable to save the downloaded file to the filesystem, invalid checksum, etc.).

For debugging end-user issues, having a more verbose error message would be helpful.

OSX: App is damaged

Tried to run this today on my mac but got the following error message instead:
Screenshot 2020-02-05 at 14 13 12

Tried control-click and open it if it was some security problem but still the same problem.

Add support for esp32s3 boards

Can you add support for esp32s3 boards this is the command used in platformio for flashing

esptool.py --chip esp32s3 --port "COM15" --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0000 bootloader.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 firmware.bin

LittleFS Not Supported

SPIFFS is now deprecated for ESP8266. LittleFS is more or less a drop-in for SPIFFS, however, Brewflasher will not upload the LittleFS file. It looks like it never tries actually:

Downloading firmware...
Downloaded successfully!

Command: esptool.py --chip esp8266 write_flash --flash_mode dio 0x00000 C:\Users\Xxxxxxxx\AppData\Local\Temp\firmware.bin

esptool.py v2.8
Found 1 serial ports
Serial port COM6
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 84:f3:eb:e3:fd:f0
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 506880 bytes to 348030...
Wrote 506880 bytes (348030 compressed) at 0x00000000 in 30.4 seconds (effective 133.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Firmware successfully flashed. Unplug/replug or reset device to switch back to normal boot mode.

On the Firmware admin tool, the LittleFS link is present and valid, however, no checksum was created.

Filesystem and SPIFFS are no longer synonymous

Although it used to be that all filesystems used SPIFFS, there is a trend towards replacing SPIFFS implementations with littlefs - at least for ESP8266.

Although the code is generic enough that BrewFlasher can support both in its current state, to make it clear what is happening all language referring to the "SPIFFS" firmware/checksum should be changed to "filesystem" so as to reflect what is actually happening.

Add support for ESP32C3 mini boards

Can you add support for ESP32C3 mini board, just ported my GravityMon software to that board and it looks like it was not supported by brewflasher.

iSpindel new firmware

Hi @thorrak ,

A new firmware version is available for the iSpindel (7.1.4).
Is it possible to update Brewflasher?

Thank's a lot!!!!

Pull GitHub Info for Project

Using GitHub as a code repository seems ubiquitous, most errors seem to come from the firmware links being incorrect.

Allow adding the GitHub link to the project in order that firmware selection can be a true selection rather than a cut and paste.

Extra credit: Poll (hourly?) and if chosen in the project setup, grab the latest release firmware automatically.

windows 11 will not open

both 1.3 and 1.4 do not open on my windows 11 install. After extracting and double clicking, smart screen pops up and I allow it to run. THen, nothing happens. Tried win8 compatibility mode with no luck.

v22000.795 (21H2)

Windows 32-Bit Support

Anecdotally, it seems like the Windows binaries are 64-bit (judging by some problems people are having.) 32-bit is still viable in the Windows ecosystem. Unless there's a real need to have 64-bit binaries, it might be better to have all Windows versions done in 32-bit for compatibility.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.