Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ Add to `## [Unreleased]` as you go; rename it when you tag.
`sudo syncphony-box update` runs it by hand.
- `/v1/info` reports uptime and the last update (when, and whether it worked) for the
room's Screens list.
- The Wi-Fi setup hotspot for a box with no network.
- The Wi-Fi setup hotspot for a box with no network. The setup screen
counts down to it, says why when it can't start, and has a **Start
setup Wi-Fi now** button. **Choose Wi-Fi on this screen** sets the
Wi-Fi from the TV with a keyboard, no phone needed.
- HDMI-CEC: the TV wakes and switches when music starts; the remote's
keys drive the box; optional standby when the room is idle.
- Watchdogs and self-healing: hardware watchdog, kiosk watchdog,
Expand All @@ -42,6 +45,16 @@ Add to `## [Unreleased]` as you go; rename it when you tag.
- Audio output selection (`audio=`) on PipeWire.
- `syncphony.txt` boot config file and the cage + Chromium kiosk session.

### Fixed
- x86 live session: booting from a stick without a `syncphony-data`
partition no longer stalls on a missing `/data` device and then fails
SSH and the kiosk (`mkdir: cannot create directory '/data/chromium'`).
`/data` is the stick's partition when there is one, and RAM otherwise.
- x86: the setup hotspot never appeared, because the image had no
`wpasupplicant` (NetworkManager only recommends it), so NetworkManager
couldn't scan or run an access point. It also gains `wireless-regdb`
and MediaTek and Broadcom Wi-Fi firmware.

### Changed
- The image is smaller: documentation, man pages and translations are
stripped (copyright files stay).
Expand Down
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,9 +207,15 @@ and serves the box's own screens:
the TV says why. A new box starts the hotspot 60 s after boot. A box
that has been online before shows the offline screen first and only
falls back to the hotspot after 5 minutes without a network, so a
router reboot never puts it in setup mode. Imager's Wi-Fi settings
still work and are the fast path
router reboot never puts it in setup mode. Until the hotspot starts,
the setup screen counts down to it and says why if it can't start.
Imager's Wi-Fi settings still work and are the fast path
([ADR 0010](docs/adr/0010-wifi-setup-hotspot.md)).
- **Wi-Fi from the TV itself.** With a mouse, a keyboard or the remote,
the setup screen's **Start setup Wi-Fi now** skips the wait. **Choose
Wi-Fi on this screen** (also on the hotspot screen) lists the networks
in range on the TV: pick one, type its password, and the box joins it
with no phone needed.

Logs go to journald: `journalctl -u boxd -u syncphony-kiosk`.

Expand Down
7 changes: 7 additions & 0 deletions boxd/internal/daemon/bridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ func (d *Daemon) bridgeMux() *http.ServeMux {
mux.HandleFunc("GET /start", d.handleStartScreen)
mux.HandleFunc("GET /storage", d.handleStorageScreen)
mux.HandleFunc("GET /hotspot", d.handleHotspotScreen)
// The TV's own Wi-Fi controls (the setup and hotspot screens' buttons,
// and the on-screen network picker).
mux.HandleFunc("GET /wifi", screenOnly(d.handleWiFiScreen))
mux.HandleFunc("POST /wifi/hotspot", screenOnly(d.handleWiFiHotspotNow))
mux.HandleFunc("POST /wifi/scan", screenOnly(d.handleWiFiScan))
mux.HandleFunc("POST /wifi/join", screenOnly(d.handleWiFiJoin))
mux.HandleFunc("POST /wifi/hold", screenOnly(d.handleWiFiHold))
return mux
}

Expand Down
Loading
Loading