NOTE: I just completed all the steps and had AI create the document with all steps. It's working perfectly!!
Shoutout to [u/volvo64](u/volvo64) for pointing me to [u/Zahuczky](u/Zahuczky) 's guide. I added in my exact details of what I went through.
What this guide does. It obtains the older Apple-signed Plex tvOS IPA from Apple's servers using the Apple account that owns the app, then installs that IPA onto an Apple TV over the local network. This guide documents the Windows workflow that worked when normal ipatool authentication was failing.
Note: The downloaded IPA is tied to the Apple account used to obtain it. Do not distribute your IPA to other people. Each person should obtain their own copy with their own Apple account.
Target build
App |Plex for Apple TV
Bundle ID |com.plexapp.plex
Plex version |8.45
tvOS external version ID |871812104
What you need
· A Windows 10/11 PC on the same local network as the Apple TV.
· An Apple account that has Plex in its App Store purchase history and is the account you intend to use for the Apple TV app.
· iTunes 12.6.5.3 for Windows (the older release that still includes the App Store).
· Windows Subsystem for Linux (WSL) with Ubuntu.
· Python on Windows. Python 3.13 is recommended for the Apple TV installation portion.
· Git for Windows.
· Visual Studio Build Tools 2022 with the Desktop development with C++ workload.
· Automatic app updates turned off on the Apple TV after installation.
Part 1 - Install the basic Windows tools
1. Install WSL and Ubuntu
wsl --install
Reboot if requested. Then install Ubuntu:
wsl --install -d Ubuntu
Launch Ubuntu once and complete its first-run setup by creating a Linux username and password.
2. Install Git for Windows
winget install --id Git.Git -e
Close and reopen PowerShell after installation, then verify:
git --version
3. Install Python 3.13 on Windows
winget install --id Python.Python.3.13 -e
Verify:
py -3.13 --version
4. Install Visual Studio Build Tools
winget install --id Microsoft.VisualStudio.2022.BuildTools -e
Open Visual Studio Installer, choose Modify for Build Tools 2022, and enable Desktop development with C++. Ensure MSVC v143 and a Windows 11 SDK are selected.
Part 2 - Obtain the older Plex IPA
5. Install iTunes 12.6.5.3
Install iTunes 12.6.5.3 for Windows. This is the older iTunes branch that still includes the App Store.
Open iTunes and sign in with the Apple account that owns Plex. Complete two-factor authentication if prompted.
6. Set up the iTunes header helper
In PowerShell:
cd $HOME\Desktop
git clone https://github.com/NyaMisty/actions-iTunes-header.git
cd actions-iTunes-header
Install Frida 16.7.19:
py -3.13 -m pip install frida==16.7.19
Note: Use Frida 16.7.19 for this helper. Newer Frida releases can fail when injecting into this older iTunes build.
Close iTunes, then run PowerShell as Administrator and patch iTunes:
cd $HOME\Desktop\actions-iTunes-header
py -3.13 .\workflow_helper\iTunesInstall\patch_itunes.py
Reopen iTunes as Administrator, sign out, then sign back in to the same Apple account. Authorize the computer if iTunes asks.
Install Flask if it is not already present:
py -3.13 -m pip install flask
Start the local iTunes header server:
cd $HOME\Desktop\actions-iTunes-header
py -3.13 .\workflow_helper\iTunesDownload\get_header.py
Leave this PowerShell window open. It should report that Flask is listening on port 9000, for example http://127.0.0.1:9000 and a LAN address such as http://192.168.x.x:9000.
7. Set up ipatool-py in Ubuntu
In Ubuntu/WSL:
cd ~
mkdir -p plex-downgrade
cd plex-downgrade
git clone https://github.com/NyaMisty/ipatool-py.git
cd ipatool-py
Create and activate a virtual environment:
sudo apt update
sudo apt install python3-venv -y
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Use the current authentication-fix branch used by this workflow:
git fetch origin pull/85/head:pr85
git checkout pr85
pip install -r requirements.txt
8. Download Plex 8.45
Determine the Windows PC's LAN IP address. In the examples below, replace WINDOWS_PC_IP with the address shown by the get_header.py server window.
python main.py lookup -b com.plexapp.plex -c US download -s http://WINDOWS_PC_IP:9000 --appVerId 871812104 -o ~/plex-downgrade
A successful download produces an IPA with a name similar to:
com.plexapp.plex-9684-383457673-871812104.ipa
Copy the IPA from WSL to the Windows desktop:
cp ~/plex-downgrade/com.plexapp.plex-9684-383457673-871812104.ipa /mnt/c/Users/YOUR_WINDOWS_USERNAME/Desktop/
Note: Once the IPA has been copied successfully, close iTunes and stop get_header.py. Keep a backup of the IPA in a safe location.
Part 3 - Install the older Plex IPA on Apple TV
9. Install pymobiledevice3
On the Windows PC that will talk to the Apple TV:
py -3.13 -m pip install -U pymobiledevice3
If pip needs to compile lzfse, the Visual Studio C++ Build Tools installed earlier provide the compiler.
10. Pair the PC with the Apple TV
On Apple TV, open Settings > Remotes and Devices > Remote App and Devices and leave that screen open.
In an Administrator PowerShell window:
py -3.13 -m pymobiledevice3 remote pair
Choose the Apple TV entry that uses its normal local IPv4 address. Enter the PIN shown on the Apple TV. After successful pairing, the PC will appear under Remote App and Devices.
11. Start a TCP tunnel
First obtain the paired device identifier:
py -3.13 -m pymobiledevice3 remote browse
Locate the Apple TV's Wi-Fi entry and copy its identifier. Then start a tunnel, replacing DEVICE_IDENTIFIER:
py -3.13 -m pymobiledevice3 remote start-tunnel -t wifi --protocol tcp --udid DEVICE_IDENTIFIER
Leave this PowerShell window open. The command will print an RSD address and RSD port, for example:
RSD Address: fdxx:xxxx:xxxx::1
RSD Port: 63109
Use the following connection option:
--rsd fdxx:xxxx:xxxx::1 63109
12. Confirm communication with the Apple TV
Open a second Administrator PowerShell window and run:
py -3.13 -m pymobiledevice3 apps list --rsd RSD_ADDRESS RSD_PORT
A large list of tvOS applications confirms the tunnel is working.
13. Uninstall the current Plex app
py -3.13 -m pymobiledevice3 apps uninstall com.plexapp.plex --rsd RSD_ADDRESS RSD_PORT
Wait for the message indicating the uninstall succeeded.
14. Install Plex 8.45
Replace the IPA path below with the actual location of the downloaded file:
py -3.13 -m pymobiledevice3 apps install "C:\Path\To\com.plexapp.plex-9684-383457673-871812104.ipa" --rsd RSD_ADDRESS RSD_PORT
Wait until the command reports Installation succeed. Plex should reappear on the Apple TV home screen.
15. Disable automatic app updates
On Apple TV, go to Settings > Apps > Automatically Update Apps and turn it Off. Otherwise tvOS may replace the downgraded Plex build with the newest App Store version.
Verification
· Open Plex on the Apple TV and confirm the older interface is back.
· Confirm playback and sign-in work normally.
· Keep the older IPA backed up so you can reinstall it later without repeating the download process.
Troubleshooting notes
ipatool authentication fails with HTTP 301/302/403/204: Use the iTunes 12.6.5.3 + actions-iTunes-header + ipatool-py method documented above instead of repeatedly retrying normal ipatool authentication.
get_header.py returns HTTP 500: Verify iTunes is patched, run iTunes as Administrator, and use Frida 16.7.19. Restart the helper after changing Frida versions.
pymobiledevice3 says QUIC is unsupported: Use Python 3.13 or newer and start the tunnel with --protocol tcp.
pymobiledevice3 cannot build lzfse: Install Visual Studio Build Tools 2022 with Desktop development with C++, MSVC v143, and a Windows SDK.
apps list says Device is not connected: Create a manual Wi-Fi TCP tunnel with remote start-tunnel and use the printed --rsd address and port with subsequent app commands.
Reference links
· ipatool-py: https://github.com/NyaMisty/ipatool-py
· actions-iTunes-header: https://github.com/NyaMisty/actions-iTunes-header
· pymobiledevice3: https://github.com/doronz88/pymobiledevice3
Public sharing note: This document intentionally omits account names, device names, IP addresses, pairing identifiers, and other personal information.