Skip to content

Releases: doccaz/mister-tty2oled-gc9a01

v0.5.3

Choose a tag to compare

@doccaz doccaz released this 17 Oct 15:53
79564ee

Full Changelog: v0.5.2...v0.5.3

v0.5.2

Choose a tag to compare

@doccaz doccaz released this 16 Oct 02:34
4a3db0f

Full Changelog: v0.5.1...v0.5.2

v0.5.1

Choose a tag to compare

@doccaz doccaz released this 14 Oct 13:17
1a8b4a8

0.5.1

  • Tint now also applies to grayscale pictures sent from the web app (JPEG), not only the MiSTer's .gsc/.xbm; colour art is left alone.
  • Settings: the blank-after-clock interval defaults to 0 (never).

v0.5.0

Choose a tag to compare

@doccaz doccaz released this 14 Oct 11:58
3db2b59

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

Choose a tag to compare

@doccaz doccaz released this 14 Oct 04:13
f43f8c8

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 with esptool and 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>/status reports how the last join went: join_ms (milliseconds from boot to getting an IP), disc_count (times the connection dropped or was refused) and disc_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=1 limits 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

Choose a tag to compare

@doccaz doccaz released this 14 Oct 03:42
e179f5b

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>/status now reports WiFi signal strength (rssi, dBm) and txpower.
  • 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

Choose a tag to compare

@doccaz doccaz released this 14 Oct 01:09
4930580

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).