/home/pikietchu/data/
├── torrents/ ← ruTorrent downloads & seeds here
│ ├── tv/
│ ├── movies/
│ └── anime/
└── media/ ← hardlinked library, Plex reads here
├── tv/
├── movies/
└── anime/
We're moving from the split /files/ structure to a unified /data/ structure. This is done via SSH before uninstalling anything so your existing data stays intact.
ssh pikietchu@[your-seedbox-hostname] — your hostname is visible in the USB dashboard.
# Create the new unified data directory
mkdir -p ~/data/torrents/tv
mkdir -p ~/data/torrents/movies
mkdir -p ~/data/torrents/anime
mkdir -p ~/data/media/tv
mkdir -p ~/data/media/movies
mkdir -p ~/data/media/anime
# Move torrent files to new structure
# (rsync preserves hardlinks, mv does not)
rsync -av --remove-source-files ~/files/sonarr/ ~/data/torrents/tv/
rsync -av --remove-source-files ~/files/radarr/ ~/data/torrents/movies/
# Move media library to new structure
rsync -av --remove-source-files ~/media/TV\ Shows/ ~/data/media/tv/
rsync -av --remove-source-files ~/media/Movies/ ~/data/media/movies/
rsync -av --remove-source-files ~/media/Anime/ ~/data/media/anime/
# Confirm files are in new locations
ls ~/data/torrents/tv/
ls ~/data/media/tv/
# Check nothing was left behind
ls ~/files/sonarr/
ls ~/files/radarr/
ls -i ~/data/torrents/tv/[any file] and ls -i ~/data/media/tv/[same file] — the inode number (first column) must be identical. If it is, hardlinks survived the rsync.
In the USB dashboard, uninstall in this exact order. Select delete config/data each time. Do not touch ruTorrent.
Install in this order from the USB dashboard app installer. Don't configure anything yet — just get them all installed and running first.
Prowlarr replaces Jackett. Configure it first — Sonarr and Radarr will sync their indexers from it automatically.
Settings → Apps → Add Application → Sonarr
Prowlarr Server: http://127.0.0.1:9696
Sonarr Server: http://127.0.0.1:8989
API Key: [Sonarr TV → Settings → General → API Key]
Sync Level: Full Sync
Settings → Apps → Add Application → Sonarr
Prowlarr Server: http://127.0.0.1:9696
Sonarr Server: http://127.0.0.1:8990
API Key: [Sonarr Anime → Settings → General → API Key]
Sync Level: Full Sync
Settings → Apps → Add Application → Radarr
Prowlarr Server: http://127.0.0.1:9696
Radarr Server: http://127.0.0.1:7878
API Key: [Radarr → Settings → General → API Key]
Sync Level: Full Sync
Settings → Download Clients → Add → rTorrent
Name: ruTorrent
Host: 127.0.0.1
Port: [your ruTorrent port]
URL Path: /RPC2
Username: pikietchu
Password: [your USB password]
Category: sonarr-tv
Directory: /home/pikietchu/data/torrents/tv/
Settings → Media Management
✓ Rename Episodes: ON
✓ Use Hardlinks instead of Copy: ON ← critical
✓ Import Extra Files: ON
Extra file extensions: srt,ass,ssa,sub,idx
Episode naming:
{Series Title} - S{season:00}E{episode:00} - {Episode Title}
Root Folder:
/home/pikietchu/data/media/tv/
Settings → Profiles → Add
Name: Standard HD
Upgrade Until: Bluray-1080p
Quality order (top = most preferred):
✓ Bluray-1080p Remux
✓ Bluray-1080p
✓ WEB-DL-1080p
✓ WEBRip-1080p
✗ 720p and below (disable)
/home/pikietchu/data/media/tv/This is a completely separate Sonarr instance on port 8990. Same process as TV but with anime-specific settings.
Settings → Download Clients → Add → rTorrent
Name: ruTorrent
Host: 127.0.0.1
Port: [your ruTorrent port]
URL Path: /RPC2
Username: pikietchu
Password: [your USB password]
Category: sonarr-anime
Directory: /home/pikietchu/data/torrents/anime/
Settings → Media Management
✓ Rename Episodes: ON
✓ Use Hardlinks instead of Copy: ON
✓ Import Extra Files: ON
Extra file extensions: srt,ass,ssa,sub,idx
Episode naming:
{Series Title} - S{season:00}E{episode:00} - {Episode Title} [{Quality Title}]
Root Folder:
/home/pikietchu/data/media/anime/
Settings → Profiles → Add
Name: Anime
Upgrade Until: Bluray-1080p
Quality order:
✓ Bluray-1080p Remux
✓ Bluray-1080p
✓ WEB-DL-1080p
✓ WEBRip-1080p
Custom Formats (Settings → Custom Formats → Add):
+100 SubsPlease
+100 Erai-raws
+50 Dual Audio
+30 BluRay
-100 FRENCH
-100 VOSTFR
-100 DUBBED
/home/pikietchu/data/media/anime/Settings → Download Clients → Add → rTorrent
Name: ruTorrent
Host: 127.0.0.1
Port: [your ruTorrent port]
URL Path: /RPC2
Username: pikietchu
Password: [your USB password]
Category: radarr-movies
Directory: /home/pikietchu/data/torrents/movies/
Settings → Media Management
✓ Rename Movies: ON
✓ Use Hardlinks instead of Copy: ON
✓ Import Extra Files: ON
Extra file extensions: srt,ass,ssa,sub,idx
Movie naming:
{Movie Title} ({Release Year}) {tmdb-{TmdbId}}
Root Folder:
/home/pikietchu/data/media/movies/
/home/pikietchu/data/media/movies/Recyclarr automatically syncs TRaSH Guides quality profiles and custom formats into Sonarr and Radarr. This means your quality settings stay best-practice without manual maintenance.
# Check if available in USB dashboard first
# If not, install manually:
# Download latest release
mkdir -p ~/recyclarr
cd ~/recyclarr
wget https://github.com/recyclarr/recyclarr/releases/latest/download/recyclarr-linux-x64.tar.gz
tar -xzf recyclarr-linux-x64.tar.gz
# Initialize config
./recyclarr config create
Edit the generated config at ~/.config/recyclarr/recyclarr.yml:
sonarr:
tv:
base_url: http://127.0.0.1:8989
api_key: [sonarr-tv-api-key]
quality_profiles:
- name: Standard HD
custom_formats:
- trash_ids:
- 85c61753a347e0f938f5e2e2 # x265 HD
- 9b27ab6498ec0f31a3353992 # x264
anime:
base_url: http://127.0.0.1:8990
api_key: [sonarr-anime-api-key]
quality_profiles:
- name: Anime
custom_formats:
- trash_ids:
- 026d5aadd1a6b4e550b134cb6 # Anime BD Tier 01
- b4a1b3d705159cdca36d71e8 # v0 (release group)
radarr:
movies:
base_url: http://127.0.0.1:7878
api_key: [radarr-api-key]
quality_profiles:
- name: Standard HD
# Test sync (dry run first)
./recyclarr sync --dry-run
# If output looks correct, run for real
./recyclarr sync
# Set up a cron job to keep it synced weekly
crontab -e
# Add this line:
0 4 * * 0 /home/pikietchu/recyclarr/recyclarr sync
Add Library → TV Shows
Name: TV
Folders:
/home/pikietchu/data/media/tv/
/home/pikietchu/data/media/anime/ ← add both to same TV library
Add Library → Movies
Name: Movies
Folders:
/home/pikietchu/data/media/movies/
| Settings → Transcoder → Hardware Acceleration | Enabled |
| Settings → Transcoder → Generate video preview thumbnails | As a media scan job |
| Settings → Library → Scan my library automatically | Enabled |
| Settings → Library → Run a partial scan when changes are detected | Enabled |
| Settings → Network → Enable Relay | Enabled (fallback for Tesla/Airbnb) |
Bazarr automatically fetches subtitles for your entire library and new downloads. For anime it will pull ASS fansub subtitles as primary and SRT as fallback — giving you full styled subs in Kodi and compatible subs for Tesla.
Settings → Sonarr
Address: 127.0.0.1
Port: 8989
API Key: [Sonarr TV API key]
→ Test → Save
Settings → Sonarr (second connection if supported)
or manage anime series manually within same Sonarr connection
Address: 127.0.0.1
Port: 8990
API Key: [Sonarr Anime API key]
→ Test → Save
Settings → Radarr
Address: 127.0.0.1
Port: 7878
API Key: [Radarr API key]
→ Test → Save
Add in this priority order under Settings → Providers:
| 1. OpenSubtitles.com | Free account required — best general coverage |
| 2. Jimaku | Japanese/anime ASS subtitle specialist |
| 3. Animetosho | Anime fansub subtitle archive |
| 4. Subscene | General fallback |
Settings → Languages → Add Profile
Profile: Anime
Language: English
Formats in priority order:
1. ASS ← fansub styled subs for Kodi
2. SSA ← older ASS format fallback
3. SRT ← Tesla/browser compatibility fallback
Profile: Standard
Language: English
Formats:
1. SRT
Before declaring victory, run through this verification checklist to confirm the full pipeline works end to end.
torrents/tv/ foldermedia/tv/# Compare inode numbers — must be identical for hardlinks to be working
ls -i /home/pikietchu/data/torrents/tv/[downloaded-file.mkv]
ls -i /home/pikietchu/data/media/tv/[same-file-after-import.mkv]
# Example of correct output (same inode = hardlink confirmed):
48293847 /home/pikietchu/data/torrents/tv/show.mkv
48293847 /home/pikietchu/data/media/tv/Show/Season 1/show.mkv
# ↑ same number ✓
# If numbers differ — hardlinks are not working
# Most likely cause: folders on different mount points
The best available option for native-feeling playback on the Tesla screen is Plex web via ABetterTheater — a fullscreen redirect trick using the YouTube app that removes all browser chrome and fills the entire display with your content. It's the same Plex web interface you already use, just actually fullscreen.
Tesla's YouTube app can be used as a fullscreen browser launcher. ABetterTheater exploits this to open any URL — including Plex — in true fullscreen Theater mode, bypassing the normal browser UI chrome that clips the bottom of the screen.
abettertheater.com and navigate to ithttps://abettertheater.comapp.plex.tv without ABetterTheater. The difference is ABetterTheater gives you true fullscreen via the YouTube Theater wrapper — the direct browser URL shows browser chrome around the video. Both work, fullscreen looks significantly better.
Your 2023 Model 3 has MCU3 (AMD Ryzen) — the most capable Tesla infotainment hardware. The browser is Chromium-based and handles these natively without transcoding:
| HEVC / H.265 | ✓ Native decode on MCU3 |
| H.264 | ✓ Native decode — universal |
| AAC stereo | ✓ Native — required for direct play audio |
| FLAC / Opus (in video) | ✗ Not supported in browser — forces transcode |
| DTS / TrueHD / AC3 | ✗ Not supported — forces transcode |
| ASS / SSA subtitles | ✗ Not supported — forces burn-in transcode |
| SRT subtitles | ✓ Native text render — no transcode needed |
| PGS / image subs | ✗ Not supported — forces burn-in transcode |
For Tesla browser direct play with zero transcoding your files need:
Video: HEVC Main 10 ✓ (MCU3 handles it natively)
Audio: AAC stereo 256k ✓ (keep as Track 2 — FLAC/Opus stays as Track 1)
Subtitles: SRT ✓ (keep as Track 2 — ASS stays as Track 1 for Kodi)
Container: MKV or MP4 (both work in browser)
This means Tdarr's AAC compatibility track job and Bazarr's SRT fallback job are both essential — not optional. Files missing either will transcode on Tesla, causing buffering and quality loss.
In Plex web on your Tesla, set these to minimize unnecessary transcoding:
| Quality → Video quality | Original (Maximum) — never let Plex downgrade unnecessarily |
| Quality → Allow insecure connections | Enabled — reduces relay overhead |
| Subtitles → Subtitle mode | Shown with foreign audio — won't auto-force subs |
| Subtitles → Burn subtitles | Only image formats — burns PGS but not SRT |
Every encoding decision below is driven by two device requirements: Kodi on Steam Deck (primary, full quality) and Plex browser on Tesla MCU3 (secondary, browser constraints). All other devices — Airbnb TVs, phones — are handled by Plex server-side transcoding and need no special consideration.
anime_show_s01e01.mkv
├── Video: HEVC Main 10
│ CRF 18–20 · -tune animation · yuv420p10le
│ Direct play: Kodi ✓ · Tesla MCU3 ✓ · Plex apps ✓
│
├── Audio 1: FLAC 2.0 or Opus (DEFAULT — for Kodi)
├── Audio 2: AAC 2.0 256k (Tesla browser direct play)
├── Audio 3: AAC 5.1 384k (if source has surround — Airbnb TVs)
│
├── Sub 1: ASS / SSA (DEFAULT — full styling for Kodi)
└── Sub 2: SRT (Tesla browser fallback — no transcode)
These are the only operations Tdarr should perform. Order matters — audio mux runs first since it's fast and safe, video re-encode last since it's slow and lossy.
| ① Audio — always run | Missing AAC stereo track? → Mux AAC 2.0 256k from existing audio. Fast operation, no video touch. |
| ② Audio surround — conditional | Source has surround + missing AAC 5.1? → Mux AAC 5.1 384k. Skip if source is stereo only. |
| ③ Subtitles — flag only | Missing SRT track? → Flag file for Bazarr, do not convert in Tdarr. Bazarr fetches proper timed SRT from providers. |
| ④ Dolby Vision — convert | DV detected? → Convert to HDR10. DV unsupported outside Apple ecosystem, breaks most players. |
| ⑤ Video VC-1 / MPEG-2 — re-encode | Old codec detected → Re-encode to HEVC Main 10 CRF 18 -tune animation. Only affects old rips. |
| ⑥ Existing HEVC — skip always | Never re-encode HEVC to HEVC. Generation loss with no meaningful size benefit. |
| ⑦ Existing H.264 — skip by default | Leave untouched unless storage is critical. H.264 plays everywhere already. |
ffmpeg -i input.mkv \
-c:v libx265 \
-crf 18 \ # anime flat colors need lower CRF to prevent banding
-preset slow \
-tune animation \ # critical — optimises flat colors + sharp edges for anime
-profile:v main10 \
-pix_fmt yuv420p10le \ # preserve 10-bit colour depth
-c:a copy \ # copy ALL existing audio tracks untouched
-c:s copy \ # copy ALL existing subtitle tracks untouched
output.mkv
# CRF guide:
# Anime BD source: CRF 18
# Anime WEB-DL source: CRF 20
# Live action BD: CRF 20
# Live action WEB-DL: CRF 22
# Never exceed CRF 23 for anything you intend to keep long term
| Device | Method | Audio used | Subs used |
| Steam Deck (primary) | Kodi — direct play | FLAC / Opus (Track 1) | ASS full styling |
| Tesla Model 3 2023 | Plex web via ABetterTheater | AAC (Track 2) | SRT (Track 2) |
| Airbnb smart TVs | Plex native app | Plex transcodes as needed | SRT or burn-in |
| Any phone / tablet | Plex mobile app | Plex transcodes as needed | SRT or burn-in |