Firmware Flasher

Sleep Lamp

Flash your Sleep Lamp firmware straight from the browser. Plug in, pick a port, done — no drivers, no IDE, no command line.

Built for ESP32‑S3 N16R8
Your browser can't flash firmware. Please open this page in Chrome or Edge on a desktop computer. This page needs to be served over HTTPS to flash firmware. GitHub Pages does this automatically. Watch Tutorial

Supported hardware

Board ESP32‑S3 N16R8 Module
Chip family ESP32‑S3
Flash 16 MB
PSRAM 8 MB (Octal)

How to flash

  1. 01

    Connect your board

    Plug the Sleep Lamp board into your computer with a data‑capable USB‑C cable. Charge‑only cables won't work.

  2. 02

    Click Flash Firmware

    Use the button above in Chrome or Edge. A browser panel will ask you to pick a serial port.

  3. 03

    Select the port

    Choose the entry that matches your board — usually named USB Serial or CP210x / CH340.

  4. 04

    Wait for flashing to finish

    Keep the board connected until the progress bar completes. This takes 30–90 seconds.

  5. 05

    Reboot and enjoy

    The board restarts automatically once flashing finishes. Sleep Lamp is ready to use.

Before you flash

Browser & driver requirements

Supported browsers

Sleep Lamp's flasher uses Web Serial, supported on:

  • Google Chrome 89+ (Windows, macOS, Linux, ChromeOS)
  • Microsoft Edge 89+ (Windows, macOS)

Safari, Firefox, and all mobile browsers are not supported — Web Serial isn't available there.

USB drivers

Most Sleep Lamp boards use a CP2102 or CH340 USB‑to‑serial chip. If the board doesn't show up as a serial port:

Troubleshooting

“Failed to download manifest”

This means the browser can't reach manifest.json. Check that:

  • The file is named exactly manifest.json and sits next to index.html.
  • GitHub Pages has finished deploying (check the Actions tab for a green checkmark).
  • You're opening the Pages URL, not the raw GitHub file view.
No serial port shows up
  • Try a different USB cable — many cables are charge‑only.
  • Install the CP210x or CH340 driver (see above), then reconnect the board.
  • Close any other program (Arduino IDE, PlatformIO, Serial Monitor) that might be holding the port open.
  • Try a different USB port, ideally directly on the computer rather than through a hub.
Flashing fails partway through
  • Hold the board's BOOT button while clicking Flash Firmware, release once flashing starts.
  • Lower the USB cable length — long or poor‑quality cables cause dropouts.
  • Try a different USB port or computer to rule out a power issue.
GitHub Pages shows a 404
  • Confirm Pages is enabled under Settings → Pages and points at the correct branch/folder.
  • index.html must be in the repository root (or the folder you selected as the Pages source).
  • Wait 1–2 minutes after enabling Pages — the first deploy takes a moment.
Manually entering bootloader mode

If auto‑reset doesn't work on your specific board revision:

  • Hold BOOT, tap RESET once, then release BOOT.
  • The board is now in download mode — click Flash Firmware while it stays connected.
Verifying BIN files are accessible online

Open each file's URL directly in the browser, e.g.:

https://<username>.github.io/<repo>/firmware/sleeplamp.ino.bin

It should prompt a download or show binary data — not a 404 page.

Clearing browser cache issues

If you updated the firmware but the page still installs the old version, hard‑refresh with Ctrl/Cmd + Shift + R, or open the page in an incognito window.

Manual flashing (esptool)

If you'd rather flash from a terminal, or the web flasher isn't working on your setup:

pip install esptool

esptool.py --chip esp32s3 --port COM5 --baud 460800 write_flash ^
  0x0     sleeplamp.ino.bootloader.bin ^
  0x8000  sleeplamp.ino.partitions.bin ^
  0xe000  boot_app0.bin ^
  0x10000 sleeplamp.ino.bin

Replace COM5 with your board's port (/dev/tty.usbserial-* on macOS, /dev/ttyUSB0 on Linux).