M6 DONE — torttube ships, Rick Astley plays fullscreen on the LibreELEC Pi
Live install verified end-to-end:
- SSH'd into kodi-host (LibreELEC, Kodi 20.3 Nexus, kernel aarch64
/ userspace armhf — that's why the static Rust sidecar runs but the
PyInstaller yt-dlp binary couldn't)
- Dropped addon dir into /storage/.kodi/addons/
- systemctl restart kodi → Kodi rescans /storage/.kodi/addons/
- JSON-RPC Addons.SetAddonEnabled flipped enabled:false → true
- Player.Open with plugin URL → 7s yt-dlp resolve → VideoFullScreen.xml,
fullscreen:true, currentwindow 12005, audio+video synced
Fixes that surfaced during the install:
- yt-dlp swap: PyInstaller aarch64 binary needs ld-linux-aarch64.so.1
which LibreELEC doesn't ship. Switched to the universal Python zipapp
(~3MB) which runs on /usr/bin/python3.11. build-addon-zip.sh updated.
- main.py now puts the addon's bin/ dir on PATH so the sidecar's
Command::new('yt-dlp') call resolves to the bundled zipapp.
- Cosmetic fix: resolve.rs's classify_yt_dlp_error preserves the
original error message (was downcasing it for keyword matching and
then using the lowercased copy as the user-facing error).
Caveats logged for later:
- 360p ceiling (yt-dlp '-f best[ext=mp4]' picks itag 18; 720p
progressive itag 22 is deprecated by YouTube; higher quality wants
DASH manifest generation).
- ALSA sink: device 'sysdefault:CARD=vc4hdmi1' fails to open on this
Pi but Kodi auto-falls-back to 'sysdefault' so audio works. Worth
cleaning up in Kodi audio settings later.
MILESTONES + docs/install.md updated with the SSH + JSON-RPC alternate
install path.
This commit is contained in:
parent
55f8fc7c06
commit
2020035373
5 changed files with 72 additions and 40 deletions
|
|
@ -48,19 +48,27 @@
|
|||
- [ ] toast on skip + skip-counter in settings
|
||||
- [ ] category toggles in `settings.xml`
|
||||
|
||||
## M6 — install + cross-compile [PARTIAL]
|
||||
## M6 — install + cross-compile [DONE]
|
||||
|
||||
- [x] cross-compile sidecar for aarch64-musl static via throwaway
|
||||
`messense/rust-musl-cross:aarch64-musl` container. 6.2MB stripped
|
||||
static binary. Builds clean from `scripts/build-addon-zip.sh`.
|
||||
- [x] bundle yt-dlp's `yt-dlp_linux_aarch64` release binary for Tier 2/3
|
||||
- [x] bundle yt-dlp's universal Python zipapp (~3MB, not the PyInstaller
|
||||
binary — that breaks on LibreELEC's armhf userspace because the
|
||||
aarch64 dynamic loader doesn't exist; Python zipapp runs on
|
||||
`/usr/bin/python3` which is always there).
|
||||
- [x] zip layout matches Kodi "install from zip" expectations
|
||||
- [x] addon.zip dropped at `smb://fileserver/downloads/torttube/` for Pi-side install
|
||||
- [x] addon.zip dropped at `smb://fileserver/downloads/torttube/`
|
||||
- [x] install + smoke recipe documented at `docs/install.md`
|
||||
- [ ] **install on the actual Pi** + verify the JSON-RPC `Player.Open`
|
||||
smoke against `kodi-host` — needs the maintainer to either install via
|
||||
Kodi UI or grant SSH to drop the zip directly
|
||||
- [ ] armv7 build for older Pis (deferred — the maintainer's TVs are all aarch64-capable)
|
||||
- [x] **installed on a LibreELEC Pi** (`kodi-host`) via SSH +
|
||||
`systemctl restart kodi` + `Addons.SetAddonEnabled`
|
||||
- [x] **JSON-RPC `Player.Open` smoke verified** — Rick Astley played
|
||||
end-to-end with audio + video synced (yt-dlp `-f best[ext=mp4]/best`
|
||||
picked format 18, 360p H.264+AAC progressive)
|
||||
- [ ] armv7 build for older Pis (deferred — current TV is aarch64-capable
|
||||
and my static sidecar runs on it even though userspace is armhf)
|
||||
- [ ] 720p+ playback (deferred to M5+) — itag 22 (720p progressive) is
|
||||
deprecated by YouTube; higher quality needs DASH manifest generation
|
||||
|
||||
## Upstream PR work (parallel lane — every bug evaluated for "fix it upstream?")
|
||||
|
||||
|
|
|
|||
Reference in a new issue