addon.xml now requires plugin.video.youtube >=7.0.0 in addition to xbmc.python and (optional) inputstream.adaptive. When a user installs torttube, Kodi resolves the dep and auto-fetches plugin.video.youtube from the official Kodi addon repository — user only manages torttube, the dep is transparent. This is Cobb's preferred 'one-addon experience' without the maintenance liability of vendoring + maintaining 5.6MB / 15k LOC of their player code in our tree. README architecture diagram updated to show pv.youtube as a dependency rather than a sibling. docs/install.md notes that Kodi auto-installs the dep — no manual pv.youtube step needed. Addon version 0.0.12.
3.7 KiB
Installing torttube on the LibreELEC RPi
The addon ships as a single plugin.video.torttube-<version>.zip that
contains the Python addon, a static aarch64 sidecar binary, and yt-dlp's
aarch64 release binary (for Tier 2/3 fallback). Nothing else needs to be
installed on the Pi.
Build the zip (Sulkta-internal)
bash scripts/build-addon-zip.sh
# → /mnt/user/downloads/torttube/plugin.video.torttube-0.0.1.zip on Lucy
The script cross-compiles the sidecar in a throwaway
messense/rust-musl-cross:aarch64-musl container, fetches yt-dlp's
official yt-dlp_linux_aarch64 release binary, packages everything,
drops the result at /mnt/user/downloads/torttube/ (Lucy SMB).
Install on the Pi (Kodi UI flow)
- On the Pi: Settings → File manager → Add source → enter
smb://lucy/downloads/→ name itlucy-downloads. - Settings → Add-ons → Install from zip file →
lucy-downloads→torttube/plugin.video.torttube-<version>.zip. - Kodi installs torttube and automatically installs
plugin.video.youtubefrom the official Kodi repo because it's declared as a dep in our addon.xml. No separate install step needed. - The addon appears under Video add-ons.
Unsigned addons need Settings → System → Add-ons → Unknown sources ON.
Install via SSH + JSON-RPC (no UI needed)
If SSH is enabled (Settings → Services → SSH):
# from any LAN host with ssh access to the Pi
scp plugin.video.torttube-0.0.1.zip kodi-host:/tmp/
ssh kodi-host 'cd /storage/.kodi/addons && unzip -o /tmp/plugin.video.torttube-0.0.1.zip && chmod +x plugin.video.torttube/bin/*'
ssh kodi-host 'systemctl restart kodi'
# wait ~5s for Kodi to come back, then enable the addon
curl -u kodi:<pw> -H "Content-Type: application/json" -X POST http://<kodi-host>:8080/jsonrpc \
-d '{"jsonrpc":"2.0","id":1,"method":"Addons.SetAddonEnabled","params":{"addonid":"plugin.video.torttube","enabled":true}}'
Freshly-installed addons land in Kodi's database as enabled:false —
the SetAddonEnabled call above flips that. Without it, Player.Open with
the plugin URL fails silently with "Unable to find plugin" in kodi.log.
Verify
After install, fire the smoke from any LAN client:
curl -u kodi:pineapple -H "Content-Type: application/json" \
-X POST http://192.168.0.158:8080/jsonrpc -d '{
"jsonrpc": "2.0", "id": 1, "method": "Player.Open",
"params": {"item": {"file":
"plugin://plugin.video.torttube/?action=play&id=dQw4w9WgXcQ"}}}'
The TV should switch to playback of "Never Gonna Give You Up" within a few seconds (rustypipe resolve takes ~1s, then Kodi starts the stream).
Troubleshooting
- Black screen + "no stream URL" notification: rustypipe returned separate audio + video streams (DASH-style), and we're picking the video stream which may be video-only. This is the M3 known gap — needs the audio+video merge work in M3+. Workaround: try a video that yt-dlp's tier-2 path can resolve to a combined format; the sidecar falls back automatically.
- Sidecar crashes:
cat /storage/.kodi/temp/kodi.log | grep torttubeon the Pi. Sidecar logs to stderr; Kodi captures those. - yt-dlp permission denied: addon's bin/ dir needs +x. The zip
preserves perms but if you copied files manually,
chmod +x bin/*. - HTTPS errors from sidecar: it bundles rustls + webpki roots, so no system CA store needed. If you see "invalid certificate", your Pi clock is wrong (LibreELEC's NTP failed).
Updating
Just rebuild + bump the version in addon/plugin.video.torttube/addon.xml,
re-run build-addon-zip.sh, install the new zip from the same SMB
location. Kodi will treat it as an upgrade if the version is higher.