Flash the latest firmware to your ESP32-S3 touchscreen straight from the browser. No Arduino IDE, no CLI.
Browser not supported
This flasher needs the Web Serial API. Open this page in Chrome, Edge, or Opera on desktop. Firefox and Safari are not supported.
Install
Pick your board, plug the device into a USB port, then click Connect and choose the matching serial port from the list.
First-time installs will erase the flash; existing settings on the SD card are untouched.
Device already running the firmware? Skip the cable: Download .bin and drop the file on the device's own web page (Config → Firmware card), or put it on the SD card for the on-device FW UPDATE. This downloads the app image only — exactly what over-the-air updates expect.
Before you start
Use a data cable. A power-only USB cable is the #1 support call: the device boots and WiFi works, but no serial port ever appears — on any computer. If in doubt, try the cable on a phone: file transfer must work.
Boot mode. If no serial port shows up after plugging in: hold the small BOOT button while inserting the USB cable (or hold BOOT and tap RESET), then release. The port appears within a few seconds.
Close the Arduino IDE and any other serial monitor — Windows allows only one program on the port.
XIAO owners: connect the external u.FL antenna before first use. The XIAO has no usable onboard antenna; without it, WiFi will look broken.
First boot — touchscreen (JC3248 / Waveshare)
SD card: FAT32, with your .ADF (Amiga) or .DSK (ZX/CPC) files — loose in the root or one folder per game (cover art .jpg/.png and info .nfo files next to them are picked up automatically). The device creates CONFIG.TXT on first boot; you rarely need to edit it by hand.
Power & connect: plug the device's USB into the Gotek drive. It powers the board and carries the floppy data — FlashFloppy sees a USB stick. Any 5V USB source works for setup on the bench.
WiFi portal: the device broadcasts its own network:
SSID GotekOMEGA — password gotek1234
Connect with a phone or laptop and open http://192.168.4.1. That is the full web interface: browse the library, insert disks, and enter your home WiFi credentials on the Config tab.
Installed before v0.25.4? Then the network may be called Gotek-Setup with password retrogaming — it keeps whatever it was set to.
On your home network the device is reachable at http://gotek.local (rename via MDNS_NAME=gotek1 etc. when you run several).
Updates from here on are wireless: drop a new firmware file on the web page's Firmware card, or use the on-device FW UPDATE options. The cable was a one-time affair.
Picture upside-down? Tap FLIP 180 on the splash — the choice is remembered.
First boot — screenless dongle (SuperMini / XIAO)
Plug the dongle into the Gotek's USB port (it draws its power there too).
It broadcasts GotekOMEGA-xx (a unique suffix per dongle) — password gotek1234.
On your phone: join that network and open http://192.168.4.1. Upload an .ADF from the phone or browse your WebDAV server — the disk mounts on the Gotek instantly.
Home-WiFi mode, WebDAV credentials and firmware updates all live on that same page. The SuperMini handles DD images (880 KB); the XIAO also does HD (1.76 MB).
Troubleshooting
No serial port appears: data cable? BOOT held while plugging in? On Windows, a port stuck at "access denied" is freed by disable/enable in Device Manager or a reboot.
Dongle seems dead right after flashing: normal — it does not leave download mode by itself. Unplug and replug, then it boots the new firmware.
Gotek shows no drive but a PC does (or vice versa): power the device from the Gotek's own USB port, and check the cable again. FlashFloppy is pickier than a PC.
gotek.local not resolving: use the device's IP (shown on the touchscreen's CONFIG page, or in your router's client list). Android phones often lack mDNS — use the IP there.
WiFi network called Gotek-FAIL-PSRAM: the board reports a hardware/build mismatch — get in touch, that unit needs attention.
iPhone: "choose a file" greys everything out: fixed in v0.25.3 — flash the current firmware from this page first, or do that one update from a desktop browser.