FAQ for Universal Media Server


The following is a list of frequently asked questions for Universal Media Server.
Click on the questions below to see the answer. You can then click on the name of the question above its answer to go back to the menu.


Is UMS open source?

Yes, completely.

Is UMS free?

Yes, and it always will be.

What are the reasons for developing UMS instead of PMS?

UMS was started with the belief that more can be achieved with a fresh start with new people and new ideas.

How can I donate to the project?

Donations are very appreciated, they help us with server costs. You can use the button below:

Another way to contribute is to donate hardware so we can test it ourselves, so if you are upgrading to a new device and have no need for the old one please consider it.


Which codecs or codec packs should I install for the best file-support?

When using the default options in UMS, no codecs are needed. The only time you need codec is to use the AviSynth engine.
In that case we recommend using K-Lite Mega Codec Pack.
If you already have codecs or a codec pack installed, uninstall them first and restart the computer before installing K-Lite.
In the installer options select "Lots of stuff", the rest can be left at defaults.

How can I launch UMS with a custom profile?

There are three ways to set up UMS for custom profiles:

  1. GUI:

    You can select a custom profile (i.e. UMS.conf) or create a new one by launching UMS via the "Universal Media Server (Select Profile)" Start Menu shortcut on Windows and Linux. A similar shortcut/launcher may be available in builds on other platforms.

    A profile can be loaded by navigating to a directory with a saved .conf file and selecting it.

    A profile can be created either by navigating to a directory without a UMS.conf file (the profile will be saved there as UMS.conf), or navigating to any directory and manually adding the profile filename (with a .conf extension) after the directory in the file name field.

    Note: new profiles should be saved via the Save button in the GUI if they are to be reused, and each profile should use a different port if it needs to run at the same time as other profiles.

    To distinguish between different profiles in the renderer, set the name option (this must currently be set manually in the .conf file) e.g.:

    name = My Profile

    If no name is specified, the hostname is used.
  2. Environment Variable (Advanced):

    UMS also supports multiple profiles by means of the UMS_PROFILE environment variable.

    If this variable is unset, the default profile directory is used to locate UMS.conf (and WEB.conf, if used).

    If UMS_PROFILE is an absolute or relative (to the working directory) path pointing to an existing directory, then UMS.conf is loaded from and saved to that directory. If UMS_PROFILE is set, but doesn't point to an existing directory, it is assumed to be a relative or absolute path to a profile file. Note: while the file doesn't need to exist, the directory containing it must exist if the file is to be saved.


    UMS_PROFILE=UMS.conf ./UMS.sh
    UMS_PROFILE=relative/path/to/profile.conf ./UMS.sh
    UMS_PROFILE=/absolute/path/to/myprofile.conf ./UMS.sh
  3. Property (Advanced):

    The profile file/directory can also be set via the ums.profile.path property e.g.

    java -Dums.profile.path=/path/to/UMS.conf net.pms.PMS

The program will not start

This can often be fixed by uninstalling Java, restarting the computer, then installing it again.

Video problems

How can I stop videos from stuttering?

Usually this is due to wireless connections being too slow.
To make the videos use less bandwidth you can go to the Transcoding Settings tab and select a new value in the "Video quality settings" option.
Try moving down the list (don't forget to click Save before testing) until your video plays smoothly.

Why aren't Live Subtitles showing up for my language?

Make sure your language is in your priority list. You can do this by going to the "Transcoding Settings" tab, then selecting the "Subtitles settings" tab on that page, and add your language to the "Subtitles language priority" input box.
If that doesn't fix it, the subtitle probably doesn't exist for your language.

Why aren't my subtitles working?

The most likely reason is that your priority settings are not what you would prefer.
You can see your priority settings on the Transcoding Settings tab, in the Subtitles settings section of that tab.

The default value for the "Audio/subtitle language priority" setting for English users is:

Which means:
If the audio is English, turn subtitles off. If the audio is anything else, display either English or Undefined subtitles.

If you would like to always display subtitles, you can change it to something like:

Or just leave it blank.

In the future, there will be a more graphical way to choose your priorities.

How can I make sure the correct 3D video format is detected?

By default, UMS detects the most common 3D formats by checking the width and height of the video along with the filename. If this automatic detection fails, you can add one of the following tags to the start of the filename:

Tag: Description:
3DSBSLF Side by side (Left eye first)
3DSBSRF Side by side (Right eye first)
3DOULF Over Under (Left eye first)
3DOURF Over Under (Right eye first)
3DARCG Anaglyph (Red, Cyan, Gray)
3DARCH Anaglyph (Red, Cyan, Half Color)
3DARCC Anaglyph (Red, Cyan, Color)
3DARCD Anaglyph (Red, Cyan, Dubois)
3DAGMG Anaglyph (Green, Magenta, Gray)
3DAGMH Anaglyph (Green, Magenta, Half Color)
3DAGMC Anaglyph (Green, Magenta, Color)
3DAGMD Anaglyph (Green, Magenta, Dubois)
3DAYBG Anaglyph (Yellow, Blue, Gray)
3DAYBH Anaglyph (Yellow, Blue, Half Color)
3DAYBC Anaglyph (Yellow, Blue, Color)
3DAYBD Anaglyph (Yellow, Blue, Dubois)

Renderer Support

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

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

- Allow UMS to recognize a specific renderer when it tries to connect
- Define the possibilities of that renderer

When UMS 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 UMS 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.

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

  1. Make sure your UMS version is 5.0.0 or higher.
  2. Create a directory named "backup" and copy all .conf files in the "renderers" directory 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 "DefaultRenderer.conf" as starting point.
  5. Copy the chosen .conf file to the "renderers" directory and rename it as your device.
  6. Open your .conf file with your favorite text editor. Look for the line that defines "UserAgentSearch" and change it to:

    UserAgentSearch = This should not match anything
    Look for "UserAgentAdditionalHeader" and "UserAgentAdditionalHeaderSearch" as well, make sure they are empty:

    UserAgentAdditionalHeader =
    UserAgentAdditionalHeaderSearch =
  7. Start UMS
  8. Connect your device to UMS. If possible, try to browse UMS and play some media as well. Chances are it does not work at all. This is fine, since we are only after logging information.
  9. Open the file "debug.log". If you do not know where it lives on your file system, there is a button "debug.log" on the "Traces" tab in UMS that will open an editor.
  10. Shut down UMS
  11. Look for lines containing "User-Agent" in your "debug.log" and examine the "Received on socket" lines, for example:

    [New I/O server worker #1-1] TRACE 11:05:50.702 Received on socket: Date: Sun, 02 Oct 2011 09:12:22 GMT
    [New I/O server worker #1-1] TRACE 11:05:50.702 Received on socket: Host:
    [New I/O server worker #1-1] TRACE 11:05:50.703 Received on socket: User-Agent: UPnP/1.0
    [New I/O server worker #1-1] TRACE 11:05:50.703 Received on socket: X-AV-Client-Info: av=5.0; cn="Sony Computer Entertainment Inc."; mn="PLAYSTATION 3"; mv="1.0";

    These lines were captured from a PlayStation 3 trying to connect to UMS and play some media files.
    The first two lines are not relevant, but the last two are interesting. They identify the device to UMS.

    When you search the "debug.log", you might find that the identifying information is not always the same for each request.

    For example (edited for readability):

    Received on socket: User-Agent: PLAYSTATION 3
    Received on socket: User-Agent: UPnP/1.0
    Received on socket: X-AV-Client-Info: av=5.0; cn="Sony Computer Entertainment Inc."; mn="PLAYSTATION 3"; mv="1.0";
    Received on socket: User-Agent: UPnP/1.0 DLNADOC/1.50
    Received on socket: X-AV-Client-Info: av=5.0; cn="Sony Computer Entertainment Inc."; mn="PLAYSTATION 3"; mv="1.0";

    As you can see, the device does not always send the same "User-Agent" information.
    Now you need to integrate this knowledge into your .conf file:
  12. Extract all different "User-Agent" snippets from the "debug.log" and copy them into your .conf file as a mental note. For example:

    # ============================================================================
    # PlayStation 3 uses the following strings:
    # User-Agent: PLAYSTATION 3
    # ---
    # User-Agent: UPnP/1.0
    # X-AV-Client-Info: av=5.0; cn="Sony Computer Entertainment Inc."; mn="PLAYSTATION 3"; mv="1.0";
    # ---
    # User-Agent: UPnP/1.0 DLNADOC/1.50
    # X-AV-Client-Info: av=5.0; cn="Sony Computer Entertainment Inc."; mn="PLAYSTATION 3"; mv="1.0";
    # ============================================================================
  13. 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:

    UserAgentSearch = PLAYSTATION
    UserAgentAdditionalHeader = X-AV-Client-Info
    UserAgentAdditionalHeaderSearch = PLAYSTATION

    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 definite match with the PS3".

    Note that we did not try to match "UPnP/1.0". That string is too generic; another device might use the same string and UMS 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 UMS 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.
  14. Configure the .conf file for your device. Refer to "DefaultRenderer.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, UMS is forced to transcode everything. This is the best way to find out the correct values for "TranscodeVideo" and "TranscodeAudio" for your device.

  15. Start UMS and connect your device to it. UMS should recognize it now. If your device is not recognized, return to step 14
  16. Try to open media. If it does not work, try different settings for the "TranscodeVideo" and "TranscodeAudio" options in your .conf file. See "DefaultRenderer.conf" for a detailed description of the options.

    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.

    Restart UMS every time you want to view the results.

    Be sure to share your working results on the Alternative Media Renderers forum.

If my PS3 has been on for a while and then I start UMS, they do not connect with eachother

This is a bug caused by a PS3 firmware update and was first reported in early June 2012.
You can fix it by reverting to an older version of the PS3 firmware or just by restarting your PS3.