Ben Nicholson bsncubed
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-27 22:19:44 +10:00
02c02a821d Added factory reset todo item
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-27 08:38:00 +10:00
41103e3b5e Licences: MIT for the AES67 core and web page, GPL-3.0 for the rest
c641671d24 CLAUDE.md: AirPlay 1 source check (licences, what to take, caveats)
Compare 2 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-27 08:27:43 +10:00
4c16686c6b CLAUDE.md: phase 2 gets clock-drift correction and AirPlay 1
fd30ac3eb1 CLAUDE.md: autoplay off the to-do list
e2721d6bd1 CLAUDE.md: step 8 status (mono sum, gain, polish done so far), step 6 roles
Compare 3 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-26 08:32:17 +10:00
d4aa9c7be1 PTP status: 2-min average offset, details split; uptime as d/h/m/s
5f27262b27 PTP: drop the "Preferred TimeTransmitter" role
ee03d9f9f1 PTP: hardware timestamping is not a setting any more
ec65374e8d Web UI: firmware table without build date, project and ESP-IDF
214d6b2c29 Firmware version: <version.txt>-<git short hash>, starting at 0.0.1
Compare 8 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-26 07:24:10 +10:00
5d1627f8d0 tools/flash_board.py: flash another board over USB and give it its own identity
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-26 07:16:07 +10:00
d744a36275 Web UI: dark by default with a light/dark toggle; fix hidden labels
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-26 00:04:47 +10:00
b2c5496057 Web UI: hide the VLAN split option until it is implemented
b36419477c Network: static IP addressing
c4468c4af0 Network: status reports mask/gw/dns; UI shows the DHCP lease in the static fields
Compare 3 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 23:39:21 +10:00
122e46e862 Pink noise as a source (mode "pink")
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 23:33:58 +10:00
bbeb7d3fd2 Player: apply source.gain_db as a fixed trim on top of the volume
c9e06da47c aes67_tx: mono sum; the source always delivers stereo
Compare 2 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 23:22:58 +10:00
faf427c897 Web UI: sticky save bar; drop the Force source dropdown
e5c3c0ad8a Player: runtime source override and play-a-URL on /api/player
fd88e02e96 Web UI: player progress bar with seek
a55a3ce14a Player: seek and volume on /api/player
8485ecb5b7 Player: transport commands on /api/player
Compare 6 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 22:37:46 +10:00
c6ecbbeb25 Player: auto mode fails over between Spotify and HLS
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 21:06:47 +10:00
78c480a7c2 CLAUDE.md: Spotify status after the connection fixes
b8702e6faa Spotify: tell cspot when a new track becomes audible
5ce4588c80 cspot: delayed Pong (like librespot) stops the 6-minute connection resets
8008aa175f cspot: patch in philippe44/cspot PR #3 (crash when a request races a reconnect)
f0fe53d5d1 Spotify: end the session for OTA; app volume starts at the player's
Compare 5 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 19:44:18 +10:00
0aac7bc339 Spotify follows source mode, name and credentials live
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 19:06:17 +10:00
8ba4de5eda OTA: quiet the audio sources during a firmware upload
cd747aec40 Step 7.5b4a: player volume (Spotify app slider), applied after the ring
Compare 2 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 18:43:27 +10:00
4a38254660 Step 7.5b3b: Spotify audio on AES67
5b0d7c9ba4 Step 7.5b3a: per-source PCM converter (audio_out), shared by HLS and Spotify
c240ac9a3c Step 7.5b2: Spotify Connect zeroconf and login work (PCM counted only)
039ec75473 Step 7.5b1: cspot (philippe44 fork) builds and links on the P4
7bbda0a1e8 Step 7.5a: Spotify client credentials in config/UI, write-only secrets
Compare 5 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 15:00:09 +10:00
c0e0388ff0 CLAUDE.md: step 7 progress and open HLS items
3ebb27e4bb Step 7.4: HLS audio on AES67 (44.1 -> 48 kHz into the ring)
8a6cb53e3b Step 7.3: decode HLS TS segments to PCM (own TS demux + AAC decoder)
852c0ffa0f Step 7.2: HLS client fetches live segments (log only)
d3897f3179 Step 7.1: player plumbing (PSRAM ring -> AES67 TX), test tone mode
Compare 6 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 08:27:16 +10:00
1961c7fe13 Phase 3: remote access via VPN / Tailscale
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 08:24:13 +10:00
e763dc81bd Phase 2: NTP with hostnames (pool.ntp.org) or IPs
5bd1a20e43 Step 6.3: PTP hybrid mode (unicast Delay_Req/Resp), step 6 done
dcea39b216 Step 6.2: role hand-over, session_ver bump on GM change
08b83a069c Step 6.1: PTP TimeTransmitter with BMCA (multicast)
6d85eb49f8 lwIP: 16 sockets so web clients are not starved
Compare 5 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 07:28:48 +10:00
e2dc7552c2 Build order: step 5 done without VLAN; VLAN split parked for phase 2
f6dfa80b19 Step 5 (health): temperatures in status.temps
2dd8f60cd6 Web: keep httpd warnings out of the log
2522901918 PTP: don't report the pre-step offset
8b3bd39857 Step 5 (syslog): esp_log to remote syslog
Compare 6 commits »
bsncubed pushed to main at bsncubed/aes67-ESP32-P4 2026-09-25 06:52:01 +10:00
044e9913a7 AES67 TX: send each packet right after its last sample is due
bae6a8a2f9 Step 4.2: PTP-paced AES67 RTP sender with 1 kHz test tone
3d05768f00 Step 4.1: /stream.sdp from the live config and PTP GM
Compare 3 commits »