Installing Plex Media Server on the Raspberry Pi 2 has been very popular since uglymagoo created his repository (guide). Unfortunately, many users have gotten the error ‘This server is not powerful enough to convert this video' error. It seems that this is due to the Plex Web Client blocking transcoding automatically for ARM servers running Plex Media Server. For now, we can override this behavior by modifying the web client's javascript file to force transcoding thanks to daniele.testa and jonathanmcalroy on the Plex forum. It does not guarantee transcoding will work flawlessly but it does give the Raspberry Pi 2 a chance to transcode using Plex's new transcoder. This will also work on the Banana Pi, ODROID devices, Hummingboard, Orange Pi, CubieBoard and other ARMv7 SBCs.
If you are trying to figure out which hardware would work best for you, consider reading the Pi benchmarks.
USB Hard Drive Model | |||
---|---|---|---|
Western Digital My Passport Ultra Portable Hard Drive | |||
Western Digital My Passport Ultra Portable Hard Drive |
Fix Plex Media Server ‘is not powerful enough' Error
Important: for this to work you must access your Plex server through its local IP address or DNS address not plex.tv. If you access the server through plex.tv, it overrides your modified plex.js file.
NB if you use a Smart TV, PS4 or other Plex app it may use plex.tv which means you'll still get the error. Consider using the DLNA function of Plex Media Server instead to workaround this issue or ask the developer of the Plex app to add an option to use the local Plex server instead of plex.tv.
Use Dynamic DNS with Plex instead to avoid plex.tv
Subtitle Users: use chrome and go to Plex Settings -> Web and choose Player. Click Show Advanced button.
- Check Experimental Player
- Check Direct Play
- Check Direct Stream
- Check Allow Direct Play of AC3 Audio
- Set Burn Subtitles to Automatic – may need to set to Always
Chromecaset users see this solution (link updated and fixed).
Updated December 29th for Plex 0.9.14 and the missing plex.js fix.
You may have seen this dreaded Plex error ‘This server is not powerful enough to convert video' now you will be able to solve it by fixing the plex.js web client file.
Here's another Plex error stating ‘there was a problem playing this item' on Plex, installing libexpat solved it for me
SSH in to your device using Putty or your favorite terminal client.
Automated Fix Server is not Powerful Enough Method
This should work on the latest Plex Media Server on ARM processor versions, you may need to do it with root privileges.
You can copy and paste this whole block into SSH to automatically find the main.js file, add the right code to override the server is not powerful enough check, and restart Plex. It backs up the main.js file just in case and you can restore it if there are any issues.
plexjstofix=$(sudo find /usr/lib/plexmediaserver -name main*.js)
sudo cp $plexjstofix $plexjstofix".bak"
sudo sed -i s'/validateTranscoder:function([a-zA-Z],[a-zA-Z]){/&return false;/' $plexjstofix
sudo service plexmediaserver restart
That was it, you are done.
You can now force refresh your Plex web interface and transcoding will be attempted for your video files on your Pi 2.
If it failed you can restore the main.js file
mv $plexjstofix".bak" $plexjstofix
Plex 0.9.14 and Older Versions Additional Fixes
You can also remove the hash check for the plex.js file in the Plex web server which users have reported to help. It also backs up the Plex index.html file.
If you are on Plex 0.9.14 and later do not run this section
plexindextofix=$(sudo find /usr/lib/plexmediaserver -name index.html)
sudo cp $plexindextofix".bak" $plexindextofix
sudo sed -i s'/js\/plex.js[\?]hash.\+\"/js\/plex.js"/' $plexindextofix
sudo service plexmediaserver restart
Restore the Plex index.html file in case it fails
mv $plexindextofix".bak" $plexindextofix
To exit root
exit
Manual Fix Server is not Powerful Enough Method
You can search the whole system to find the plex.js files we are going to modify.
For Plex 0.9.14 or lower replace main*.js with plex.js
sudo find /usr/lib/plexmediaserver -name *.js
For me these 2 locations popped up, the /usr/lib is owned by root, the Web Client js is updated in the /var/lib folder so that is where we are going to make changes.
/usr/lib/plexmediaserver/Resources/Plug-ins/WebClient.bundle/Contents/Resources/js/plex.js
/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/WebClient.bundle/Contents/Resources/js/plex.js
If you are on a newer version of Plex Media Server you may get these files, just edit them instead
/usr/lib/plexmediaserver/Resources/Plug-ins-4601e39/WebClient.bundle/Contents/Resources/js/plex.js
Make sure libexpat is installed which enables playback in the Web Client and Android Plex App
sudo apt-get install libexpat1 -y
Enter the Plex Media Server Resources folder, notice the folders with spaces are escaped with\
cd /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/WebClient.bundle/Contents/Resources/js/
Open the plex.js
sudo nano plex.js
Hit Ctrl+W to search and Paste this line by right clicking in nano
validateTranscoder:function(e,t)
In this section
validateTranscoder:function(e,t){if(!e.canDirectPlay)
Add return false;
so it looks like this
validateTranscoder:function(e,t){return false;if(!e.canDirectPlay)
Ctrl+X, Y and Enter to Save the modified plex.js
If you are on a newer version of Plex the search string is slightly different search using Ctrl+W for
validateTranscoder:function(t,n)
Add return false so it matches like this
validateTranscoder:function(t,n){return false;var r=i
Ctrl+X, Y and Enter to save.
Try to Prevent Plex from Updating the Javascript File
Change the ownership of the plex.js file to root and make it so only root users can write to the file which will prevent it from being updated from Plex. However, when updating the Plex package it will be overwritten and you will have to repeat this guide
sudo chown root:root plex.js
sudo chmod -w plex.js
If there are ever problems with the plex.js needing to be updated for overall plex functionality you may have to change the permissions back and then update
sudo chown plex:nogroup plex.js
sudo chmod 644 plex.js
If you still have issues you can modify the other plex.js file
Browse to the plexmediaserver install directory
cd /usr/lib/plexmediaserver/Resources/Plug-ins/WebClient.bundle/Contents/Resources/js
Open the plex.js file and make the same modification as above
sudo nano plex.js
Save and modify the permissions
sudo chown root:root plex.js
sudo chmod 444 plex.js
Now modify the index.html file (thanks to William), since Plex has added a hash to verify the integrity of the plex.js file
sudo find /usr/lib/plexmediaserver -name index.html
Open the file that is returned
sudo nano /usr/lib/plexmediaserver/Resources/Plug-ins-f38ac80/WebClient.bundle/Contents/Resources/index.html
Use Ctrl+W to find this string
<script id="plex-script" src="js/plex.js
Modify this line to match by removing hash and version
<script id="plex-script" src="js/plex.js">
Ctrl+X, Y and enter to save and change the index.html file to be immutable, use the same path to the file as you found before
sudo chattr +i /usr/lib/plexmediaserver/Resources/Plug-ins-f38ac80/WebClient.bundle/Contents/Resources/index.html
Restart Plex
sudo service plexmediaserver restart
Refresh your browser and the message should disappear and Plex transcoding will be attempted on the Raspberry Pi 2, Banana Pi, Orange Pi, ODROID, CubieBoard, Hummingboard, Beaglebone etc. You may need to empty your browser's cache as well.
If it changes anyway you can try this tip Lee shared in the comments, the Plex web client checks for new versions based on the version file in the Contents folder so we can modify that to make Plex think it is already up to date.
cd /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/WebClient.bundle/Contents/
Open the version file
nano VERSION
Change the Year in the only line in the file, I made mine 2050
7feca36 (Thu Jun 4 16:37:08 UTC 2050)
Ctrl+X, Y and Enter to save
Then remove write access to the versions file
sudo chmod -w VERSION
To add write access back use this command in case you want an updated version of the Plex Web client
sudo chmod +w VERSION
Enjoy forcing trancoding for Plex on the Raspberry Pi 2, Banana Pi, Orange Pi, Cubieboard and ODROID devices 🙂