Name Last modified Size
Parent Directory -
PWAVplayer_config_editor.html 2026-04-23 12:31 143K
PWAVplayer_config_editor.html is a single-file,
browser-based tool for configuring a PWAVplayer device, managing files
on its SD card, and flashing firmware — over USB (Web
Serial) or WiFi (HTTP REST on port 8080). No
installation required.
UsbSerial task is always active; the HTTP server starts
only when wifi_enable=yes in config.txt and
the device got an IP.Just open the HTML file in Chrome/Edge. The page works locally — no
server or network connection is required (except for optional downloads
from lisy.dev, see below).
You can also host the file on any static web server and open it from there.
Connect, monitor, and control the device. The Mode
radios at the top switch between USB Mode and IP Mode;
the selection is persisted in localStorage. Firmware-wise
the two transports run in parallel — the editor just picks one.
OK:READY.usbbaud setting (default 115200). Available:
9600, 57600, 115200,
230400, 460800, 921600. If the
editor hangs on Connecting… for more than a few seconds, the
two sides disagree about the baud rate.idf.py monitor.GET /status with a
6-second timeout + one retry, shows the firmware version, and warns if
the device’s api_version doesn’t match the editor’s
expected value.Under Config Transfer there is a dedicated WiFi
Status block with a Get IP Status button. It
sends WIFI:STATUS over USB and reports one of:
disabled, no_ssid, connection failed, or
connected with the assigned IP and SSID. When connected, the IP
is automatically copied into the IP Address field above, so you
can switch to IP Mode without typing.
The low-level USB protocol log (bytes/lines exchanged) has its own tab, separate from the Device tab. Useful for troubleshooting USB-mode issues. (IP-mode HTTP requests are logged here too for consistency.)
A second log below it — Activity Log — shows
sound-card activity reported by the device (Lookup Sound, Start Sound,
Attract Mode, …). It is only available in IP mode and
polls GET /activity?since=<seq> at ~1.5 s while the
“Poll activity” checkbox is on. Polling stops automatically on
disconnect or when switching to USB.
Edits config.txt line by line via form fields. The table
below lists the keys; defaults match the firmware’s
InitConfig().
| Key | Values | Default | Purpose |
|---|---|---|---|
dac |
12, 16 |
12 |
DAC output bit depth |
mix |
sum, div2, sqrt |
div2 |
Track mixing algorithm |
evt |
none, flat, flat0,
bw11, bg80, by35 |
bg80 |
GPIO event mode |
deb |
milliseconds | 10 |
Debounce time (GPIO edge lockout) |
rpd |
milliseconds | 60 |
Rest period — flat mode only |
ser |
none, uart, i2c |
none |
Sound-command serial interface |
addr |
hex | 0x66 |
I2C slave address, only when ser=i2c |
usbbaud |
115200…921600 |
115200 |
UART0 baud used by this editor |
wifi_enable |
yes, no |
no |
Enable WiFi STA + HTTP server on port 8080 |
wifi_ssid |
string | (empty) | WiFi SSID |
wifi_pwd |
string | (empty) | WiFi password |
Workflow:
config.txt, or
File → From device to download the current one from the SD
card.config.txt and prompts you to reboot.Changing
usbbaudtakes effect after reboot. Before you click Connect USB again, set the Baud drop-down on the Device tab to the same value.
Manage the sound-file slots (IDs 0001–0031). The editor parses the
NNNN-AAAA-VVV-description.wav naming scheme and displays
attributes (loop, break, init/background, kill) in a table.
Each row has two assign buttons — PC uploads a new
file from your computer, SD picks an already-existing
WAV file on the SD card and just renames it. Both derive the target
filename from the slot ID and the source file’s base name (attributes
default to x / volume 100; edit them later via
Write Soundconfig).
PC — upload from local disk
.wav file from your
computer.alarm.wav for slot 0005
produces 0005-xxxx-100-alarm.wav.0% →
100%). On success a toast confirms the new filename and the
table reloads automatically.SD — rename a file already on the card
.wav file is already on the SD
card (copied via card reader or previously uploaded)..wav files on the SD card; files that are already assigned
to a slot are marked.XXXX-xxxx-100-<desc>.wav. No upload needed — this is
instant.Finally, adjust attributes (loop / break / init / background / kill / volume) in the table and click Write Soundconfig to rename the files accordingly.
Tip: the description part of the filename is sanitized — only letters, digits and dashes are kept. Special characters and spaces are replaced with
-.Tip: for many files at once it is faster to raise
usbbaudfirst (see Faster file transfers below).
Manage .grp files on the SD card. A sound group bundles
several WAV IDs under one trigger ID; when the group is triggered, one
member is picked randomly (m) or in round-robin order
(r). See ../Groups.md for the format.
.grp files..grp files
and renames existing ones so their filenames match the ID / mode /
members / description fields in the table.Per group:
m random or r
round-robin..grp file from
the SD card (with confirmation). Deleting an unsaved new row just
removes it locally.Since a .grp file’s content is ignored by the firmware,
all state lives in the filename — changing members, mode, ID, or
description translates to a rename on Write Groups.
Generic file manager for the SD card root.
SET:TIME= automatically right after the
handshake).API.md.lisy.dev and uploads it to the device. Useful for a fresh
card. The Overwrite existing checkbox controls whether existing
files are replaced.Two independent actions:
lisy.dev and places it on
the SD card as update.bin. The device flashes it on the
next boot via its built-in OTA path.The browser flasher holds the serial port exclusively. Disconnect the editor’s USB session first, and don’t run
idf.py monitorat the same time.
idf.py build flash
(or use the browser flasher).115200).For quick transfers of many WAV files, raise
usbbaud:
usbbaud to
921600 → Save to device.921600.To go back, reverse the steps. If you end up with a mismatch and can
no longer connect, either: - pick the correct baud in the editor, or -
delete config.txt on the SD card (via card reader) — the
firmware will fall back to 115200.
| Symptom | Likely cause | Fix |
|---|---|---|
| Connect USB shows no devices | Another program holds the port (idf.py monitor, other
editor tab, esptool) |
Close the other session |
| Connects but stays Connecting… and times out | Baud mismatch between editor and firmware | Match the Baud drop-down to the firmware’s
usbbaud |
idf.py monitor shows garbage after boot |
usbbaud ≠ 115200 and monitor is at 115200 |
Either set usbbaud=115200, or run
idf.py monitor -B <rate> |
| File upload stalls | Weak USB cable or hub, very large file | Try a direct USB port; retry |
| Browser flasher fails | Wrong chip target or port busy | Verify the device resets into bootloader; disconnect other sessions |
API.md — wire-level protocol specification for both USB
frames and HTTP REST.../README.md / ../LIESMICH.md — project
overview and firmware-side configuration.