An interfaceless PLEX client for Raspberry Pi, designed to be used with an iOS remote.
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 14 commits ahead, 77 commits behind megawubs:master.
Latest commit 05be4e6 Apr 11, 2013
Failed to load latest commit information.



This is an implementation of an idea on the Plex forums - that the Raspberry Pi could use a Plex client that had no interface, and was just designed to be operated using an iOS, android device, or plex web app.


Server running the latest version of PMS, or may experience transcode buffer overrun problems.

Must be installed by you:

  • omxplayer
  • libsdl with framebuffer and alsa support
  • avahi with dbus, gtk, and python support
  • twisted-web
  • requests
  • pygame
  • pexpect

You must be running the latest raspberry pi firmware (, or else omxplayer won't compile.

You must have at least 128 MB graphics memory, and overclocking is recommended. A Sample /boot/config.txt:


hdmi_force_hotplug=1 # needed for sound over hdmi

##How to build


I highly recommend setting up a crossdev distcc chain to speed up building all of the dependencies. For help on that:

See for the pyplex ebuild.

echo 'PORTDIR_OVERLAY="/usr/local/portage"' >> /etc/portage/make.conf.
mkdir -p /usr/local/portage
cd /usr/local/portage
git clone 
ln -s PlexOverlay/*
emerge -av pyplex --autounmask-write
etc-update # merge strategy 3
emerge -av pyplex #this may take quite a while to build all of the dependencies...


sudo apt-get update && sudo apt-get upgrade
sudo wget
sudo cp rpi-update /usr/local/bin/rpi-update
sudo chmod +x /usr/local/bin/rpi-update 
sudo rpi-update 192
sudo reboot
sudo vim config.txt > to set arm_freq to 1000
sudo reboot
sudo apt-get install avahi-daemon
sudo apt-get install python-pip
sudo pip install twisted-web
sudo pip install pexpect
sudo pip install requests
sudo apt-get install python-avahi 

##How to use

Install to system

python install

This will install a script called pyplex to /usr/bin (or wherever your system puts it)

Or you can run the package without installing it by running scripts/pyplex


usage: pyplex [-h] [--hdmi] [--user USER] [--password PASSWORD]

A daemon to listen for UDP plex playback requests, and relay them to OMXPlayer

optional arguments:
    -h, --help           show this help message and exit
    --hdmi               Send audio over HDMI instead of 3.5mm jack
    --user USER          myPlex username. Will be saved once provided or updated if already exists.
    --password PASSWORD  myPlex password. Will be saved once provided or updated if already exists.

Setup myPlex

If you wish to playback somewhere other than on the same subnet that the server is located, you must setup myplex:

Give pyplex your myPlex username and password:

pyplex --user --password yoursecret

This will store your authentication data in ~/.myplex.json. This is just a flatfile, so limit who has access to viewing it! Note to self: should change this to only store token...

In order to playback on a different subnet than the server you wish to play from, you must set up a "dummy" server on the same subnet as pyplex. This is because your main server can't see the avahi broadcast from pyplex, and an intermediate server is needed as a relay for the initial handshaking (it won't do any transcoding though).

Launch the daemon

Launch with

pyplex [--hdmi]

Where [hdmi] is optional to make sure audio is going over hdmi, leaving it out will devault to the 3,5mm jack output.

Then 'Raspberry Plex' should appear as a player you can choose in your Plex client. Choose your media, and select this as the player to play it on. It should begin playing on your Raspberry Pi!

To control playback you can use the remote tab on your iDevice or android device. Currently the following commands are supported:


Support can be found on the Plex forum