Problem: My device is not supported by PMS. How can I create a custom renderer.conf to make PMS recognize my device?

PMS contains a directory "renderers" which contains the renderer configuration profiles for all devices that are supported. Every configuration profile serves two purposes:

Allow PMS to recognize a specific renderer when it tries to connect

Define the possibilities of that renderer

When PMS does not recognize your device properly, it means none of the renderer configuration profiles (or the wrong one) matches your device.The result is that PMS displays an "Unknown Renderer" or an unrelated device, and since it does not know the possibilities of your renderer, it cannot provide optimized output for your device.

Solution:You can try creating your own renderer configuration file. For a detailed description of all available options in a configuration file, examine the file "PS3.conf".The steps below explain how to create a basic .conf file.

1. Shut down PMS.

2. Create a directory named "backup" and copy all .conf files to it.

3. Remove all .conf files from the "renderers" directory.

4. Choose the .conf file that matches your device most. For example, if your Samsung TV is not recognized, "Samsung.conf" might be a good place to start from. If you do not know which one to choose, pick "PS3.conf" as starting point.

5. Copy the chosen .conf file to the "renderers" directory and rename it as your device.

You now have created a setup where PMS cannot be distracted by settings in other configuration files, ideal for experimentation.

Now it is time to figure out how PMS can recognize your renderer. When your device tries to connect to PMS or tries to play a file, it sends identifying information to PMS. You need to know this information and use it in your .conf file. To intercept the information you need to dumb down PMS and crank up its logging information temporarily:

6. Open your .conf file with your favorite text editor. Look for the line that defines "UserAgentSearch" and change it to:

This line was captured from a PlayStation 3 trying to connect to PMS and play some media file.It is interesting because it contains a comma separated list of information that can identify the device to PMS. The information is logged in the form of "header: value, header: value", so the line above logs two headers ("User-Agent" and "X-AV-Client-Info") and their values.

When you search the output of the "Traces" tab, you might find that the identifying information is not always the same for each request.

12. Edit the "UserAgentSearch" so it matches the headers that you discovered. If there are extra headers that can help with identification, use the "UserAgentAdditionalHeader" and "UserAgendAdditionalHeaderSearch" settings as well. For the PS3, this results in:

These lines should be interpreted as "if the 'User-Agent' header contains 'PLAYSTATION' or if the 'X-AV-Client-Info' header contains 'PLAYSTATION' we have a certain match with the PS3".

Note that we did not try to match "UPnP/1.0" or "DLNADOC/1.50". That string is too generic; another device might use the same string and PMS would wrongly identify it as a PS3. Hence the match for 'PLAYSTATION', which is very specific for the PS3 and no other device. Be sure to look for a specific match for your device as well.

Now PMS will be able to positively match your device to your .conf file. From now on, it will use your .conf file to determine what the device is capable of. Try to determine what formats your device supports, using its manual or Google.

13. Configure the .conf file for your device. Refer to "PS3.conf" for a detailed description of each option. At the very least, make sure you configure these settings:

You can uncomment other settings if you are not sure they would work for your device.

Tip: If you define "MediaInfo = true" and do not define any "Supported" lines, PMS is forced to transcode everything. This is the best way to find out the correct values for "TranscodeVideo" and "TranscodeAudio" for your device.

14. Shut down PMS.

15. Start PMS and connect your device to it. PMS should recognize it now. If your device is not recognized, return to step 12.

16. Try to open media. If it does not work, try different settings for the "TranscodeVideo" and "TranscodeAudio" options in your .conf file. See "PS3.conf" for a detailed description of the options.

Restart PMS every time you want to view the results.

From there on, you can tune your .conf file by adding "Supported" lines and configuring more options. Use the backup .conf files of similar devices for inspiration.

Finally, don't forget to:

17. Backup your custom .conf file to another directory, so you still have the file somewhere when PMS is reinstalled (which cleans out the "renderers" directory).

Problem: You have a black screen on PS3 when playing some video files but not others.(PMS could print "The video will not play or show a black screen on the ps3..." on the "debug.log")

Solution: The PS3 can playback at the maximum for H.264 : AVC High@L4.1.

The "black screen" is due to TSmuxer trying to re-header H.264 MKVs with higher profiles (eg 5.1) into 4.1, but it can't change the reference frames so the PS3 can't process the video if the ref frames is too high.

Problem: I am on Mac OS X 10.5 (Leopard) or older and I always get "Data corrupted".

Solution:For cutting edge playback PMS is shipped with the latest versions of binaries like FFmpeg and MEncoder. These binaries are being compiled under the latest version of Mac OS X, which Apple distributes with a limited set of libraries to link against. At the same time the newer libraries that Apple distributes are incompatible with the older ones. This makes that the binaries shipped with PMS are only compatible with Mac OS X 10.6 (Snow Leopard) or higher.

There are four ways to solve the problem, choose the one that fits you best:

Upgrade to a more recent version of Mac OS X.Upgrades can be bought in the Apple Store. After the upgrade you will be able to run the shipped version of PMS.

Install an older version of PMSDownload and install PMS 1.30.1. It may be older, but it may still work fine for you.

Replace the binaries that were shipped with PMS with binaries from an older version of PMS.The latest version of PMS that was still compatible with Mac OS X 10.5 is PMS 1.30.1. You can download its binaries here by clicking on a file and on the resulting page save the link "View raw file" to your Downloads folder. Do this for the files "dcraw", "ffmpeg", "flac", "mencoder" and "mplayer". Open the hidden folder "/Applications/PS3 Media Server.app/Contents/Resources/Java/osx/" with the "Go to Folder" command (CMD + SHIFT + G in Finder) and copy the downloaded files there. You should now get better results from PMS even though you are using outdated binaries.

Compile your own binariesThe scripts that are used to compile the binaries are publicly available on GitHub. The "build-pms-binaries.sh" script defines the minimum OS X version, be sure to change that to "OSX_VERSION=10.5". If everything works well for you, you can copy the newly compiled binaries "dcraw", "ffmpeg", "flac", "mencoder" and "mplayer" from "../target/bin-tools/target/bin/" to "/Applications/PS3 Media Server.app/Contents/Resources/Java/osx/". With the newly compiled binaries PMS will now be on par with its shipped counterpart.

Question: How can I tweak video playback options such as audio/video delay, volume, brightness &c.?

Answer:

These (and hundreds of other customisations) can be enabled by setting MEncoder options.

Note:

You'll need to force PMS to use MEncoder via the #--TRANSCODE--# folder for files that don't already use it.

These options only work with the MEncoder engine i.e. not with MPlayer, MEncoder Web or PMSEncoder.

There are two ways of setting MEncoder options (don't forget to reset the other settings if you switch):

Globally:

Global MEncoder options can be set in the GUI via: Transcoder Settings -> MEncoder -> Custom options. The corresponding PMS.confoption (e.g. for headless servers) is mencoder_decode.

Options added here are read each time a file is streamed, so it can be used to experiment with different settings by stopping playback, adjusting the settings and restarting playback. This is a global option (i.e. it applies to all renderers). If you only have one renderer, or have an issue that affects multiple renderers (e.g a dark TV display), then this is the quickest and easiest solution.

To reset/clear global custom MEncoder options, remove them from the text box or shut down PMS and reset mencoder_decode to its default blank value:

if you want to start it in GUI mode later to prevent network conflicts.

This is the easiest way to run PS3 Media Server on headless server:Configure PS3 Media Server locally in GUI mode then copy the "~/.config/ps3mediaserver" folder to server to "/home" folder of the appropriate user. Then edit "/etc/default/ps3mediaserver" (see above) and start server.