discstation 0.1.23 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -8
- package/arduino/c6/DiscStation_C6.ino +293 -84
- package/arduino/c6/secrets.h.example +14 -0
- package/arduino/v1/DiscStation.ino +214 -65
- package/arduino/v1/secrets.h.example +14 -0
- package/discstation.env.example +7 -0
- package/package.json +1 -1
- package/requirements.txt +1 -0
- package/src/discstation.py +150 -15
- package/src/discstation_burn.py +9 -0
- package/src/discstation_host.py +84 -0
package/README.md
CHANGED
|
@@ -9,12 +9,37 @@ use every mode.
|
|
|
9
9
|
## Hardware
|
|
10
10
|
|
|
11
11
|
- **Brain:** Raspberry Pi 4/5 (or any Linux box)
|
|
12
|
-
- **Remote (optional):** ESP32-C6 with SSD1306 OLED,
|
|
13
|
-
buttons
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
- **Remote (optional):** ESP32 DevKit or ESP32-C6 with an SSD1306 OLED, 3
|
|
13
|
+
buttons, and a volume pot — connected by **USB serial** or over **Wi-Fi**
|
|
14
|
+
(see below) — or none at all; the web UI / mobile app's on-screen remote
|
|
15
|
+
covers the same controls when no ESP32 is detected, and steps aside
|
|
16
|
+
(greyed out, auto-collapsing) the moment one appears.
|
|
16
17
|
- **Drive:** ATAPI DVD writer (e.g. iHAS124) over USB
|
|
17
18
|
|
|
19
|
+
### Wi-Fi remote (optional)
|
|
20
|
+
|
|
21
|
+
The firmware also serves the same line protocol over TCP 2323, so the
|
|
22
|
+
remote can talk to the host over Wi-Fi instead of a USB cable.
|
|
23
|
+
|
|
24
|
+
- **Provisioning (no code edit):** on first boot with no stored credentials
|
|
25
|
+
the remote starts an open `DiscStation-XXXX` access point; join it from a
|
|
26
|
+
phone, the captive portal (or `http://192.168.4.1`) lists nearby networks
|
|
27
|
+
— pick yours, enter the password, done. It reconnects on every boot after
|
|
28
|
+
that. Change networks later: **hold SELECT for 10 s** on the home screen
|
|
29
|
+
to wipe the credentials and reopen the portal.
|
|
30
|
+
Power users can instead `cp arduino/<board>/secrets.h.example secrets.h`
|
|
31
|
+
and set `WIFI_SSID` / `WIFI_PASS` at build time (git-ignored).
|
|
32
|
+
- **Host side:** nothing to configure. With no USB cable present the host
|
|
33
|
+
finds the remote by mDNS automatically (`discstation-xxxx.local`). Set
|
|
34
|
+
`DISC_REMOTE_HOST` in `discstation.env` to an explicit IP only if mDNS is
|
|
35
|
+
blocked on your network, or `off` to never look. A USB cable always wins
|
|
36
|
+
when both are present.
|
|
37
|
+
- **Trust model:** TCP 2323 is unauthenticated on the LAN, same as the USB
|
|
38
|
+
link and the LAN web UI — fine for a home appliance. During the ~30 s of
|
|
39
|
+
portal setup the password crosses an open AP; the ESP32 is 2.4 GHz only
|
|
40
|
+
(a "connected to the router but no data" symptom usually means a
|
|
41
|
+
5 GHz-only / band-steering network or a wrong password).
|
|
42
|
+
|
|
18
43
|
## Features
|
|
19
44
|
|
|
20
45
|
| Mode | Description |
|
|
@@ -58,10 +83,12 @@ discstation-setup # dispatches to the installer for your OS, then opens
|
|
|
58
83
|
|
|
59
84
|
The host runs as a background service; the UI is the built-in web app at
|
|
60
85
|
`http://localhost:8081`. `discstation-setup` opens it when it finishes, and the
|
|
61
|
-
`discstation` command re-opens it any time
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
86
|
+
`discstation` command re-opens it any time — both also print the LAN address
|
|
87
|
+
(e.g. `Also reachable at http://192.168.1.50:8081/ ...`) so you know what to
|
|
88
|
+
open from a phone or another computer, or enter into the mobile app. It's a
|
|
89
|
+
PWA — use your browser's **Install DiscStation** (or the in-page
|
|
90
|
+
**INSTALL APP** button on Chromium) to get a standalone app window with a
|
|
91
|
+
dock/taskbar icon on macOS, Linux, and Windows.
|
|
65
92
|
|
|
66
93
|
`discstation-setup --help` lists the forwarded env vars. From a git clone,
|
|
67
94
|
`npm run setup` does the same thing.
|
|
@@ -123,6 +150,14 @@ self-signed cert. On startup the host prints the LAN URL to open
|
|
|
123
150
|
with no ESP32 attached; greys out and auto-collapses the instant a
|
|
124
151
|
physical remote is detected, so the two never fight for control.
|
|
125
152
|
|
|
153
|
+
## Mobile App
|
|
154
|
+
|
|
155
|
+
The `mobile/` Expo app (enter the host's LAN address in its settings screen)
|
|
156
|
+
has the same on-screen remote as the web UI — mode buttons, EJECT/CLOSE,
|
|
157
|
+
disc status, and playback transport, tapped from the "REMOTE" tag next to
|
|
158
|
+
the wordmark. Same auto-collapse behavior when a physical ESP32 shows up,
|
|
159
|
+
same underlying `/remote/button` protocol.
|
|
160
|
+
|
|
126
161
|
## Disc Support
|
|
127
162
|
|
|
128
163
|
- DVD-R, DVD+R (single and dual-layer)
|