e0bc4785e9
Flashes the diskOS custom UI onto the FiiO Snowsky Disc over Ingenic mask-ROM USB, building the image from your own stock firmware. Runs from source via install.sh.
62 lines
3.8 KiB
Markdown
62 lines
3.8 KiB
Markdown
# diskOS privacy and network disclosure
|
|
|
|
This lists everything the installer and the diskOS UI (`mq_ui`) send over the network. The UI ships
|
|
as a binary-only component (source not yet published), so this is a good-faith disclosure based on the
|
|
code and observed behaviour, not a guarantee; it will be tightened when the UI source is published.
|
|
|
|
## The installer (this repo)
|
|
|
|
- **`./install.sh` uses `pip`** to upgrade `pip` itself and download two packages - `pyusb` and
|
|
`pycryptodome` - from **PyPI** into a local `.venv`. That `pip`/PyPI traffic is the only network
|
|
activity in setup. Point `pip` at your own mirror if you prefer, or pre-install the packages offline.
|
|
- **The installer app itself makes no network requests.** Building the image, decrypting/extracting
|
|
your firmware, saving the recovery image, and flashing over USB are all fully local. It does not
|
|
phone home and sends no telemetry.
|
|
|
|
## The diskOS UI (`mq_ui`) on the device
|
|
|
|
diskOS is a local music player. The online features below reach out **only when you use them**; each
|
|
request unavoidably reveals your device's public IP to the service it contacts.
|
|
|
|
| Feature | Endpoint | Protocol | What is sent |
|
|
|---|---|---|---|
|
|
| **Weather** | `wttr.in` | **plain HTTP** | A location string if you set one, else nothing - wttr.in then **auto-geolocates you by IP** (approximate). Over HTTP, so treat it as visible on your network. |
|
|
| **Lyrics** | `lrclib.net` | HTTPS | The current track's **title and artist**, to find matching lyrics. |
|
|
| **Scrobbling (Last.fm)** | `ws.audioscrobbler.com` | HTTPS | If enabled and connected: the tracks you play (artist/title/album/timestamp) are reported to **your** Last.fm account. |
|
|
| **Last.fm sign-in** | `www.last.fm/api/auth/` | HTTPS | Only a QR code containing the approval URL is shown; **your phone**, not the device, opens it. `www.last.fm/api/account/create` is shown as text so you know where to get an API key. |
|
|
|
|
### Last.fm credential setup happens over your LOCAL network in plaintext
|
|
|
|
To connect Last.fm, diskOS runs a **temporary web server on the device** at
|
|
`http://<device-wifi-ip>:8080/<random-token>/`, shows a QR for it, and your phone posts your Last.fm
|
|
**API key and shared secret** to it. Important properties:
|
|
- It is **plain HTTP on your Wi-Fi LAN** - your API key/secret cross your local network unencrypted.
|
|
Do this on a network you trust.
|
|
- The server is **transient** (runs only during setup), bound to the Wi-Fi interface, and gated by a
|
|
random URL token.
|
|
- Your Last.fm **API key, secret, and session key are then stored on the device** under `/usr/data`
|
|
(device config); **offline scrobbles are queued** in `/usr/data/lastfm.queue` until they can be sent.
|
|
Nothing Last.fm-related is sent anywhere except your device, your phone (during setup), and Last.fm.
|
|
|
|
> **Last.fm is BETA and unverified end-to-end** - see the README's Known Issues. The transport and
|
|
> signing are tested, but a full connect-and-scrobble round-trip to a live account has not been.
|
|
|
|
### The stock FiiO player still runs alongside diskOS
|
|
|
|
diskOS replaces only the UI; FiiO's original player process still runs underneath it. That stock
|
|
component - not diskOS - is responsible for any Bluetooth, firmware-update checks, and LAN media
|
|
endpoints (DLNA/AirPlay/Roon/QPlay-style discovery) the device may present on your local network. Those
|
|
behaviours are inherited from the stock firmware and are outside diskOS's code.
|
|
|
|
## What diskOS does NOT do
|
|
|
|
- No analytics, telemetry, or usage tracking.
|
|
- It does not upload your music library, your listening history (beyond Last.fm scrobbles if you turn
|
|
them on), or any personal files.
|
|
- If you never enable weather, lyrics, or Last.fm, diskOS itself makes no outbound requests.
|
|
|
|
## Reporting
|
|
|
|
Report anything that looks like unexpected data leaving the device via the process in
|
|
[`SECURITY.md`](../SECURITY.md).
|