Repository navigation
Releases: doccaz/mister-tty2oled-gc9a01
Release list
v0.5.3
v0.5.2
v0.5.1
v0.5.0
0.5.0
- Settings page at
http://<device>/settings: status, brightness/orientation defaults, idle clock (after X minutes idle, optional blank after a further Y minutes), status-OLED idle blank, NTP time + timezone, optional admin password. - Tint for monochrome pictures: colour the MiSTer's black-and-white marquees with a fixed colour, a gradient, or a random colour per picture.
- Fix: the device could stop answering HTTP/USB for minutes while still pinging when serving one large page. Settings is now served as small pieces (every HTTP response stays under the TCP send buffer).
- Flashing keeps saved WiFi/MQTT/settings (flash the separate parts; the web flasher does).
v0.4.3
Firmware 0.4.3: the setup-page WiFi test, join diagnostics, and a flasher that no longer erases your settings.
Fixes
- The web flasher and the release no longer erase saved WiFi/MQTT settings. Until now the flasher wrote one merged image, and merging fills the gaps between partitions with
0xFF, which overwrote the settings partition. Updating from the flasher (or withesptooland the merged image) wiped your WiFi and the device came back in access-point setup mode. The flasher now writes the firmware's four parts separately and leaves the settings area alone. The old merged images in v0.4.2 and earlier did erase settings. - The setup page's "Test connection" no longer times out on a network the device joins fine. It gave up after 10 s ("Timed out connecting") but joins take 3 to 10 s. It now waits up to 20 s with a fresh attempt halfway, and reports "Wrong password" immediately when the router rejects it.
- WiFi power-save is now also off while in access-point mode (v0.4.2 turned it off once connected).
New
http://<device>/statusreports how the last join went:join_ms(milliseconds from boot to getting an IP),disc_count(times the connection dropped or was refused) anddisc_reason(the driver's reason code of the last drop, for example 204 = WPA handshake timeout).- Build-time options to experiment with WiFi, both off by default:
-DWIFI_TX_POWER_DBM=<n>pins TX power,-DWIFI_FORCE_HT20=1limits the radio to 20 MHz. On the maintainer's network, lowering TX power made joining much worse and 20 MHz gave inconsistent results.
Good to know
On some networks the first join attempt after a reset fails about a third of the time (WPA handshake timeout). The device retries three times and, from access-point mode, retries the saved network by itself every couple of minutes, so it ends up on your network without a manual reset. If it keeps happening, the usual fixes are physical: move the board away from metal and the display wiring, and give your router a dedicated 2.4 GHz network name with WPA2 and a fixed channel (1, 6 or 11).
Flash it
Use the web flasher (hold BOOT while plugging in; unplug and replug afterwards). It keeps your saved settings.
With esptool, write the four parts at their own offsets, which also keeps your settings:
esptool.py --chip esp32c3 --port /dev/ttyACM0 write_flash \
0x0 tty2oled-gc9a01-0.4.3-bootloader.bin \
0x8000 tty2oled-gc9a01-0.4.3-partitions.bin \
0xe000 tty2oled-gc9a01-0.4.3-boot_app0.bin \
0x10000 tty2oled-gc9a01-0.4.3-<board>-app.bin| Board | App image |
|---|---|
| ESP32-C3 Super Mini with the onboard OLED + GC9A01 module | …-esp32c3-app.bin |
| Same board without the OLED | …-esp32c3_nooled-app.bin |
| Sunton ESP32-2424S012C all-in-one board | …-esp32c3_2424s012-app.bin |
The bootloader, partition table and boot_app0 are identical for all boards.
Full-chip images (tty2oled-gc9a01-0.4.3-<board>-full.bin, write at 0x0) are for a brand-new device only. Writing one erases the saved WiFi and MQTT settings.
SHA-256 sums for every file are in SHA256SUMS.
v0.4.2
Firmware 0.4.2: a much more reliable WiFi link, plus onboard-OLED burn-in protection.
Fixes
- WiFi was very laggy and lossy. The ESP32's default WiFi power-save batched incoming packets. Measured on a real home network: 47% ping loss, 233 ms average round trip, and picture acknowledgements taking up to 10 s (some never arriving), which showed up as a black screen between images sent from the web app. With power-save off: 0% loss, 22 ms average, and acknowledgements that arrive as soon as the picture is drawn.
- Joining the saved WiFi is more reliable. The device now makes three attempts before falling back to its own access point, and from the access point it retries the saved network on its own every couple of minutes while nobody is connected. No more resetting it two or three times.
- Pictures over the 20 KB buffer limit. The firmware refuses a picture larger than 20,000 bytes with
ERR CMDCORC;. The web app now fits its JPEG under that limit and reports device errors instead of ignoring them (this ships with the hosted app, not the firmware).
New
- Onboard OLED (Super Mini with OLED): blanks after 60 s with no command or button press, to avoid burn-in, and wakes on any activity. It also shows the last command received, for example
> CMDCOR. http://<device>/statusnow reports WiFi signal strength (rssi, dBm) andtxpower.CMDWTX,<dBm>sets the WiFi TX power live, as a diagnostic.
Flash it
Use the web flasher (hold BOOT while plugging in; unplug and replug afterwards). It writes the separate parts below, so your saved WiFi and MQTT settings are kept.
With esptool, write the four parts at their own offsets, which also keeps your settings:
esptool.py --chip esp32c3 --port /dev/ttyACM0 write_flash \
0x0 tty2oled-gc9a01-0.4.2-bootloader.bin \
0x8000 tty2oled-gc9a01-0.4.2-partitions.bin \
0xe000 tty2oled-gc9a01-0.4.2-boot_app0.bin \
0x10000 tty2oled-gc9a01-0.4.2-<board>-app.bin| Board | App image |
|---|---|
| ESP32-C3 Super Mini with the onboard OLED + GC9A01 module | …-esp32c3-app.bin |
| Same board without the OLED | …-esp32c3_nooled-app.bin |
| Sunton ESP32-2424S012C all-in-one board | …-esp32c3_2424s012-app.bin |
The bootloader, partition table and boot_app0 are identical for all boards.
Full-chip images (tty2oled-gc9a01-0.4.2-<board>.bin, write at 0x0) are for a brand-new device only. They fill the space between partitions, so writing one erases the saved WiFi and MQTT settings and the device starts in access-point setup mode again.
SHA-256 sums for every file are in SHA256SUMS.
v0.4.1
First tagged release. Firmware 0.4.1 for the ESP32-C3 + GC9A01 round display.
Fix
- Garbage drawn after a core change on a MiSTer running Zaparoo. Zaparoo's PN532 reader auto-detect probes every
/dev/ttyACM*after each core change and writes a wake-up preamble (0x55 0x55 0x00 …). The firmware drew those bytes as a corename a second after the logo. Bare lines containing control or non-ASCII bytes are now ignored, so nothing needs changing on the MiSTer.
Flash it
Each .bin is a complete image (bootloader + partitions + app) to write at offset 0x0:
esptool.py --chip esp32c3 --port /dev/ttyACM0 write_flash 0x0 tty2oled-gc9a01-0.4.1-<board>.bin| File | Board |
|---|---|
…-esp32c3.bin |
ESP32-C3 Super Mini with the onboard 0.42" OLED + GC9A01 module |
…-esp32c3_nooled.bin |
Same board without the OLED |
…-esp32c3_2424s012.bin |
Sunton ESP32-2424S012C all-in-one round board |
SHA-256 sums are in SHA256SUMS. Or build it yourself with PlatformIO (see the README).