Updated UMS sees only folder but no video files

For help and support with Universal Media Server
Forum rules
Please make sure you follow the Problem Reporting Guidelines before posting if you want a reply
johnbear
Posts: 6
Joined: Mon Sep 01, 2025 10:54 pm

Re: Updated UMS sees only folder but no video files

Post by johnbear »

Thanks for that, mik_s! Had a bit of time there this morning; I discovered that with the Docker container version, the regular web-GUI way of enabling trace logs doesn't work (when the server restarts, it stays in debug log mode), so I had to use the config file to enable trace logs. I set that up, wiped the DB and started fresh again.

From the extra logs, I can see that the 15 I was seeing was part of a request coming from the Xbox 360 itself; when choosing "Universal Media Server" in the Xbox's System Video Player, the following appears in UMS's logs:

Code: Select all

DEBUG 2025-09-02 13:20:04.367 [jupnp-sync-protocol 809-1] Received a request from 10.0.1.28:
============================= UPNP HTTP SERVER REQUEST BEGIN ================================
GET /dev/1c7415f1-74d0-4833-a9f8-63a24a169fe9/desc HTTP/1.1

HEADER:
  User-Agent: Xbox/2.0.17559.0 UPnP/1.0 Xbox/2.0.17559.0
  Connection: keep-alive
  Host: 10.0.1.20:5001
============================= UPNP HTTP SERVER REQUEST END ==================================
TRACE 2025-09-02 13:20:04.368 [jupnp-sync-protocol 809-1] Matched media renderer "Xbox 360" based on address 10.0.1.28
DEBUG 2025-09-02 13:20:04.368 [jupnp-sync-protocol 809-1] Recognized media renderer "Xbox 360"
To which UMS replies with a list of basic device details, icons, and a list of three available services (ContentDirectory, ConnectionManager, and MediaReceiverRegistrar). The Xbox then replies with the following:

Code: Select all

DEBUG 2025-09-02 13:20:06.827 [jupnp-sync-protocol 815-1] Received a request from 10.0.1.28:
============================= UPNP HTTP SERVER REQUEST BEGIN ================================
POST /dev/1c7415f1-74d0-4833-a9f8-63a24a169fe9/svc/upnp-org/ContentDirectory/action HTTP/1.1

HEADER:
  User-Agent: Xbox/2.0.17559.0 UPnP/1.0 Xbox/2.0.17559.0
  Connection: keep-alive
  Host: 10.0.1.20:5001
  SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
  Content-Type: text/xml; charset="utf-8"
  Content-Length: 579

CONTENT:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <ContainerID>15</ContainerID>
            <BrowseFlag>BrowseDirectChildren</BrowseFlag>
            <Filter>REDACTED because the forum spam filter thought this contained email addresses; filtering based on title, resolution, duration, bitrate, genre, actor and codec</Filter>
            <StartingIndex>0</StartingIndex>
            <RequestedCount>1000</RequestedCount>
            <SortCriteria>+upnp:class,+dc:title</SortCriteria>
        </u:Browse>
    </s:Body>
</s:Envelope>

============================= UPNP HTTP SERVER REQUEST END ==================================
So it looks like it's requesting to browse the direct children of ContainerID 15... which apparently UMS doesn't know anything about:

Code: Select all

TRACE 2025-09-02 13:20:06.828 [jupnp-sync-protocol 815-1] Matched media renderer "Xbox 360" based on address 10.0.1.28
DEBUG 2025-09-02 13:20:06.828 [jupnp-sync-protocol 815-1] Recognized media renderer "Xbox 360"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "TV Shows" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "Movies" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "3D Movies" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "Unsorted" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "Recently Added" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "Recently Played" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "In Progress" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "Most Played" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "All Videos" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "By Date" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "4K Videos" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "HD Videos" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "SD Videos" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "DVD Images" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "Video" with class "LocalizedStoreContainer"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "All Audio Tracks" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.829 [jupnp-sync-protocol 815-1] Adding new child "All Audio Playlists" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "By Artist" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "By Album" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "By Genre" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "By Artist/Album" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "By Genre/Artist/Album" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "By Date" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "By Letter/Artist/Album" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "Audio" with class "LocalizedStoreContainer"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "All Photos" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "By Date" with class "MediaLibraryFolder"
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "Photo" with class "LocalizedStoreContainer"
DEBUG 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Discovering the root folder for Xbox 360
TRACE 2025-09-02 13:20:06.830 [jupnp-sync-protocol 815-1] Adding new child "Media Library" with class "MediaLibrary"
TRACE 2025-09-02 13:20:06.839 [jupnp-sync-protocol 815-1] Adding new child "media" with class "RealFolder"
TRACE 2025-09-02 13:20:06.840 [jupnp-sync-protocol 815-1] try recreating resource with id '15'
TRACE 2025-09-02 13:20:06.840 [jupnp-sync-protocol 815-1] resource with id '15' was not found in database
TRACE 2025-09-02 13:20:06.840 [jupnp-sync-protocol 815-1] try recreating resource with id '15'
TRACE 2025-09-02 13:20:06.840 [jupnp-sync-protocol 815-1] resource with id '15' was not found in database
DEBUG 2025-09-02 13:20:06.840 [jupnp-sync-protocol 815-1] Bad id 15 found in path
TRACE 2025-09-02 13:20:06.841 [jupnp-sync-protocol 815-1] try recreating resource with id '15'
TRACE 2025-09-02 13:20:06.841 [jupnp-sync-protocol 815-1] resource with id '15' was not found in database
DEBUG 2025-09-02 13:20:06.841 [jupnp-sync-protocol 815-1] Trying to browse direct children on a null object for objectID '15' !
TRACE 2025-09-02 13:20:06.842 [jupnp-sync-protocol 815-1] Preparing HTTP response message: (OutgoingActionResponseMessage) 500 Internal Server Error
TRACE 2025-09-02 13:20:06.842 [jupnp-sync-protocol 815-1] Sending HTTP response status: 500
DEBUG 2025-09-02 13:20:06.846 [jupnp-sync-protocol 815-1] Response sent to 10.0.1.28:
============================= UPNP HTTP SERVER RESPONSE BEGIN ===============================
HTTP/1.1 500

HEADER:
  Server: Linux-amd64-5.10.60-qnap, UPnP/1.0 DLNADOC/1.50, UMS/15.0.0
  Date: Tue, 02 Sep 2025 12:20:06 GMT
  Ext: 
  Content-type: text/xml;charset="utf-8"
  Content-Length: 472

CONTENT:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <s:Fault>
            <faultcode>s:Client</faultcode>
            <faultstring>UPnPError</faultstring>
            <detail>
                <UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
                    <errorCode>701</errorCode>
                    <errorDescription>The specified ObjectID is invalid</errorDescription>
                </UPnPError>
            </detail>
        </s:Fault>
    </s:Body>
</s:Envelope>

============================= UPNP HTTP SERVER RESPONSE END =================================
So ultimately it sends that UPnPError 701 back to the Xbox, and the Xbox just shows "No videos found."

I don't know enough about DLNA to know what the <ContainerID>15</ContainerID> request from the Xbox relates to, or where it might be getting "15" from - where do you think I should go from here? Is this still something appropriate for the forum here, or should I post a bug report over in Github?

Cheers!
User avatar
mik_s
Moderator
Posts: 1766
Joined: Wed Aug 23, 2017 11:03 pm
Location: UK

Re: Updated UMS sees only folder but no video files

Post by mik_s »

Could you post your logs? I might be able to spot something that could be the main cause.
I am no expert on communication between renderers but I do try and stumble though them and see if anything looks wrong.
I have filters set up in my log viewer to look for common things.

You can continue on here for now till we can confirm the source of the problem. If this does appear to be a bug then you can create an issue on Github.


The forum has been flagging your posts for approval, I don't know why as it allows a lot of other spam just fine.
If they don't appear then I will approve them when I am online.
Logs are important for us to help, Please follow This Link before asking for support. Just a forum cleaner, Will help if I can but no expert.
johnbear
Posts: 6
Joined: Mon Sep 01, 2025 10:54 pm

Re: Updated UMS sees only folder but no video files

Post by johnbear »

Sure thing! My logs are attached. Here are a few notes to go with them:
  • Because of Docker-image stuff, I assembled the ZIP file myself - sorry if that causes any issues!
  • In addition to the regular files, I added an stdout.log file which contains the command line standard output/errors from Java, in case there's extra clues for you in there
  • This was the fourth boot of a completely fresh instance created this morning (first boot had me sign into the web interface, configure my media share, configure the network interface binding and then shut down; second boot was to let network interface bind take effect and allow some of my network devices not including the Xbox 360 to talk to the server, including the web player; third boot was just to let the server sit for a few minutes doing nothing and chat away with the devices it already knew about)
  • I took the following actions at timed intervals as close to the minute-change as possible - hopefully this will help to match my user-actions against the timestamps in the log:
    • 13:24 - Started the UMS Docker container and just let it sit
    • 13:26 - Powered up my Xbox 360 and signed into my profile (this was the first time the server had any visibility of the Xbox 360)
    • 13:28 - On the Xbox 360, launched the "System Video Player" app, which populated the video sources list with the UPnP-detected "Universal Media Server" entry
    • 13:30 - On the Xbox 360 in the "System Video Player" menu, pressed the "A" button on the "Universal Media Server" entry - this should ordinarily query the server for a list of video categories or whatever the server is supposed to return, but in my case it just returns "No videos found."
    • 13:32 - On the Xbox 360, pressed the "B" button to exit/disconnect from "Universal Media Server"
    • 13:34 - Shut down the Xbox 360
    • 13:36 - Stopped the UMS Docker container
Some notes of things I've spotted:
  • In debug.log line 8827, you can see the estimated network speed for the Xbox 360 is calculated as NaN ("not a number"), so there might also be an issue with how network speeds are estimated (maybe a divide-by-zero in there somewhere?)
  • In debug.log line 9351, that's where the <ContainerID>15</ContainerID> coming from the Xbox 360 is that's apparently something UMS doesn't know anything about; you can see the failures for that and the HTTP 500 and UPnP 701 errors raised in the few dozen or so lines following that, thus the Xbox 360 not getting a resource listing back from UMS
Thanks again for your help, and let me know if you need any other details!
Attachments
johnbear-logs.zip
(104.39 KiB) Downloaded 1030 times
User avatar
mik_s
Moderator
Posts: 1766
Joined: Wed Aug 23, 2017 11:03 pm
Location: UK

Re: Updated UMS sees only folder but no video files

Post by mik_s »

OK I can confirm it is not a database problem as it is initialising properly and there are no errors.

I can see the ID 15 is coming from the Xbox itself and there is no matching entry to the database which causes that error.

I can't see where the Xbox would get 15 from, I even searched for just "15" and this is never sent to it.
It does not help this is UMS v15 so it does appear a lot but I don't think it would be coming from the version number.

Comparing with what my PS4 sends

Code: Select all

DEBUG 2025-09-04 07:50:11.180 [jupnp-sync-protocol 473-1] Received a request from 192.168.1.194:
============================= UPNP HTTP SERVER REQUEST BEGIN ================================
POST /dev/2ae59829-1a55-4c49-8b1c-d06460f55c42/svc/upnp-org/ContentDirectory/action HTTP/1.1

HEADER:
  Host: 192.168.1.177:5001
  User-Agent: MediaPlayer/4.01 UPnP/1.0 DLNADOC/1.50 (PlayStation 4)
  Content-Length: 547
  Content-Type: text/xml; charset="utf-8"
  SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"

CONTENT:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <ObjectID>0</ObjectID>
            <BrowseFlag>BrowseDirectChildren</BrowseFlag>
            <Filter>dc:creator,dc:date,dc:title,upnp:album,upnp:albumArtURI,upnp:artist,upnp:genre,res,res@size,res@duration</Filter>
            <StartingIndex>0</StartingIndex>
            <RequestedCount>30</RequestedCount>
            <SortCriteria>+dc:title</SortCriteria>
        </u:Browse>
    </s:Body>
</s:Envelope>

============================= UPNP HTTP SERVER REQUEST END ==================================
and your Xbox

Code: Select all

DEBUG 2025-09-03 13:30:02.703 [jupnp-sync-protocol 904-1] Received a request from 10.0.1.28:
============================= UPNP HTTP SERVER REQUEST BEGIN ================================
POST /dev/8dac767b-ea8a-44aa-b688-1b9e45ac0fe5/svc/upnp-org/ContentDirectory/action HTTP/1.1

HEADER:
  User-Agent: Xbox/2.0.17559.0 UPnP/1.0 Xbox/2.0.17559.0
  Connection: keep-alive
  Host: 10.0.1.20:5001
  SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
  Content-Type: text/xml; charset="utf-8"
  Content-Length: 579

CONTENT:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <ContainerID>15</ContainerID>
            <BrowseFlag>BrowseDirectChildren</BrowseFlag>
            <Filter>dc:title,res,res@protection,res@duration,res@bitrate,upnp:genre,upnp:actor,res@microsoft:codec</Filter>
            <StartingIndex>0</StartingIndex>
            <RequestedCount>1000</RequestedCount>
            <SortCriteria>+upnp:class,+dc:title</SortCriteria>
        </u:Browse>
    </s:Body>
</s:Envelope>

============================= UPNP HTTP SERVER REQUEST END ==================================
one major difference is the PS4 uses <ObjectID>0</ObjectID> while the Xbox has <ContainerID>15</ContainerID>
I'm guessing the 0 and 15 values are defaults for the root as I cannot see this being sent to either of them.

As for the different types of ID I don't know but maybe UMS is confusing ContainerID with ObjectID, I don't know anything about these to know what they should be used for.

Hopefully this will help in tracking down the part of code that is handling them.
Logs are important for us to help, Please follow This Link before asking for support. Just a forum cleaner, Will help if I can but no expert.
User avatar
mik_s
Moderator
Posts: 1766
Joined: Wed Aug 23, 2017 11:03 pm
Location: UK

Re: Updated UMS sees only folder but no video files

Post by mik_s »

For completeness this is the communication with my TV

Code: Select all

DEBUG 2025-09-04 08:22:14.084 [jupnp-sync-protocol 1967-1] Received a request from 192.168.1.89:
============================= UPNP HTTP SERVER REQUEST BEGIN ================================
POST /dev/2ae59829-1a55-4c49-8b1c-d06460f55c42/svc/upnp-org/ContentDirectory/action HTTP/1.1

HEADER:
  Accept: */*
  User-Agent: SEC_HHP_[TV]Mik's TV/1.0 DLNADOC/1.50
  Host: 192.168.1.177:5001
  SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#X_GetFeatureList"
  Content-Type: text/xml; charset="utf-8"
  Content-Length: 291
  Connection: close

CONTENT:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:X_GetFeatureList xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"/>
    </s:Body>
</s:Envelope>

============================= UPNP HTTP SERVER REQUEST END ==================================
This is slightly different as it uses #X_GetFeatureList while the consoles used #GetSortCapabilities

Code: Select all

DEBUG 2025-09-04 08:22:14.095 [jupnp-sync-protocol 1967-1] Response sent to 192.168.1.89:
============================= UPNP HTTP SERVER RESPONSE BEGIN ===============================
HTTP/1.1 200

HEADER:
  Server: Windows_11-amd64-10.0, UPnP/1.0 DLNADOC/1.50, UMS/15.0.0-SNAPSHOT
  Date: Thu, 04 Sep 2025 07:22:14 GMT
  Ext: 
  Content-type: text/xml;charset="utf-8"
  Content-Length: 812

CONTENT:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:X_GetFeatureListResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <FeatureList>
&lt;Features xmlns="urn:schemas-upnp-org:av:avs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:schemas-upnp-org:av:avs http://www.upnp.org/schemas/av/avs.xsd"&gt;
&lt;Feature name="samsung.com_BASICVIEW" version="1"&gt;
&lt;container id="0" type="object.item.audioItem"/&gt;
&lt;container id="0" type="object.item.videoItem"/&gt;
&lt;container id="0" type="object.item.imageItem"/&gt;
&lt;/Feature&gt;
&lt;/Features&gt;
</FeatureList>
        </u:X_GetFeatureListResponse>
    </s:Body>
</s:Envelope>

============================= UPNP HTTP SERVER RESPONSE END =================================
In this one it does mention "container id" in escaped xml but probably not the same as <ContainerID>

Code: Select all

DEBUG 2025-09-04 08:22:14.185 [jupnp-sync-protocol 1968-1] Received a request from 192.168.1.89:
============================= UPNP HTTP SERVER REQUEST BEGIN ================================
POST /dev/2ae59829-1a55-4c49-8b1c-d06460f55c42/svc/upnp-org/ContentDirectory/action HTTP/1.1

HEADER:
  Accept: */*
  User-Agent: SEC_HHP_[TV]Mik's TV/1.0 DLNADOC/1.50
  Host: 192.168.1.177:5001
  SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
  Content-Type: text/xml; charset="utf-8"
  Content-Length: 451
  Connection: close

CONTENT:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <ObjectID>0</ObjectID>
            <BrowseFlag>BrowseDirectChildren</BrowseFlag>
            <Filter>*</Filter>
            <StartingIndex>0</StartingIndex>
            <RequestedCount>1</RequestedCount>
            <SortCriteria/>
        </u:Browse>
    </s:Body>
</s:Envelope>

============================= UPNP HTTP SERVER REQUEST END ==================================



I don't know what is happening with the speed test reading NaN, maybe one if the pings failed so was unable to calculate it?

I did see that tsMuxeR was unable to run with this message

Code: Select all

DEBUG 2025-09-03 13:24:07.343 [main] IOException when trying to start "tsMuxeR" process: Cannot run program "/ums/linux/tsMuxeR": error=13, Permission denied
Someone on Github mentioned that this and a few other bin files were not set as executable in this build on Linux.
Logs are important for us to help, Please follow This Link before asking for support. Just a forum cleaner, Will help if I can but no expert.
johnbear
Posts: 6
Joined: Mon Sep 01, 2025 10:54 pm

Re: Updated UMS sees only folder but no video files

Post by johnbear »

Thanks for looking mik_s!
I can see the ID 15 is coming from the Xbox itself and there is no matching entry to the database which causes that error.

I can't see where the Xbox would get 15 from, I even searched for just "15" and this is never sent to it.
It does not help this is UMS v15 so it does appear a lot but I don't think it would be coming from the version number.
So, interesting development this morning: I was doing a bit of digging around in the UMS source this morning, and I came across this comment for a function called getResourceId():

Code: Select all

	/**
	 * String representing this resource ID. This string is used by the UPNP
	 * ContentDirectory service. There is no hard spec on the actual numbering
	 * except for the root container that always has to be "0". In UMS the
	 * format used is <i>number($number)+</i>. A common client that expects a
	 * different format than the one used here is the XBox360. UMS translates
	 * the XBox360 queries on the fly. For more info, check
	 * <ul>
	 * <li><a href="http://www.mperfect.net/whsUpnp360/">whsUpnp360</a></li>
	 * <li><a href=
	 * "https://code.google.com/archive/p/jems/wikis/XBox360Notes.wiki">jems -
	 * XBox360Notes.wiki</a></li>
	 * <li><a href=
	 * "https://web-beta.archive.org/web/20100501042404/http://download.microsoft.com:80/download/0/0/b/00bba048-35e6-4e5b-a3dc-36da83cbb0d1/NetCompat_WMP11.docx">NetCompat_WMP11.docx</a></li>
	 * </ul>
	 *
	 * @return The StoreResource id.
	 * @since 1.50
	 */
Note how it says that Xbox 360 uses a different resource ID format for the ContentDirectory service than other clients, and that UMS is supposed to be translating the XBox 360 format on the fly. If you check out the second "more info" link and scroll all the way to the bottom to the "Browsing and Searching" section, you can see that it says the XBox 360 uses a content directory layout following Microsoft's own design for Windows Media Connect or Windows Media Player (WMC/WMP); and under that it lists what those layouts are for Music, Pictures and Video... and video is 15. That's corroborated by the first link (archive.org version), which goes into a lot more detail including snippets of comms between the Xbox 360 and a server... in section "1.3.2 Videos", you can see the exact same type of comms that I'm seeing in my logs from UMS, including the <ContainerID>15</ContainerID> reference. The third link (broken, but remove the "-beta" bit from the "web-beta.archive.org" URL to view it) is a specification document from Microsoft for WMP's comms, and also refers to subcontainer "Video/Folders" as having an ID of 15 (there's also a bunch of other IDs, like "Video/All Video" having an ID of 8, etc.).

The second "more info" link above also points out that the IDs used for Music are 4, 5, 6, 7 and F - and you can see that still mostly being accounted for in the current UMS source code here - note the xbox360 boolean in the if-statement, and the switch statement checking the music IDs. In fact, if I check out the Music Player app on my Xbox 360 instead of the Video Player app, it actually does load content from UMS - I can see metadata tags for the videos in there - so that part is at least partially working.

Checking out the resource.getFakeParentId() function call eventually leads back to a public void setFakeParentId(String fakeParentId) function defined here. That function is only called in one place in the entire codebase - here. If you scroll up a bit to line 929 you see a comment // Xbox 360 virtual containers ... d'oh!, and a bunch of checks against the Microsoft WMP format IDs into UMS's format... but nothing for 15.

So at this juncture I'm willing to suggest that video playback on the Xbox 360 from UMS is currently broken, and has been for some time (I checked back as far as v14.0; there was a bigger codebase re-shuffle before then, and finding stuff is trickier), and that the issues I'm facing aren't related to any strange configuration or setup on my side. If you concur, let me know and I'll go ahead and file a bug report on Github.
As for the different types of ID I don't know but maybe UMS is confusing ContainerID with ObjectID, I don't know anything about these to know what they should be used for.
In my shuffle through the source code today I came across this; so it looks like ContainerID might be treated as an alias for ObjectID in at least some cases - I'm not really familiar with the DLNA spec, so I can't comment further.
I don't know what is happening with the speed test reading NaN, maybe one if the pings failed so was unable to calculate it?
That log line comes from here. If the variable cnt is zero, then there will be a divide-by-zero, and NaN will be returned. cnt is initialised to 0 (line 169), and only has its value changed if the looped calls to doPing(sizes[­i]) returns non-zero. There probably is a small bug there, the handling should be better - I'll file that one too.
Someone on Github mentioned that this and a few other bin files were not set as executable in this build on Linux.
That was me 😅; I'm working around it at the moment with an injected startup command for the Docker image that runs a custom script to fix the permission issues before running the main UMS jar file, but hopefully whoever is maintaining the Docker image (SubJunk?) will get that sorted out for the next release of the image or so.

On a separate note: just going back to PanchaMaestro's original post (I feel bad that I kind of hijacked the thread!) - I'm guessing their Samsung TV's request for <ObjectID>null</ObjectID> is probably a bug in the TV's DLNA/UPnP logic; just like the XBox 360, there might need to be specific handling for if a null is received, or received from that specific renderer... maybe there is already, I'll confess my code diving was purely focused on Xbox 360 stuff.
User avatar
mik_s
Moderator
Posts: 1766
Joined: Wed Aug 23, 2017 11:03 pm
Location: UK

Re: Updated UMS sees only folder but no video files

Post by mik_s »

Good investigation. I think somewhere in the last few versions the Xbox ID translation went missing.
I can't remember if any of the others that have had missing files were using an Xbox too but I would have never be able to trace the cause.
My programming experience was with BASIC back in the day so I can sometimes follow small bits of code otherwise I rarely look at any.

Hopefully this is a simple fix to add that back in.
You seem to know enough to make that fix yourself and make a pull request to contribute your code.


I know some were definitely database related and I think that was the cause of PanchaMaestro's issue. The ID sent to the TV was null so that was why the request was null.

This is the unescaped DIDL sent to the TV, the id should have come from the database.

Code: Select all

DIDL-Lite result:
<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pv="http://www.pv.com/pvns/" xmlns:sec="http://www.sec.co.kr/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">
    <container childCount="3" id="null" parentID="0" restricted="1">
        <dc:title>Media Library</dc:title>
        <res xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_FLAGS=00900000000000000000000000000000">http://10.0.1.17:5001/ums/thumbnail/0db58580-00e6-1000-851e-508569984053//JPEG_SM_Media-Library.jpg?update=1</res>
        <res xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_FLAGS=00900000000000000000000000000000">http://10.0.1.17:5001/ums/thumbnail/0db58580-00e6-1000-851e-508569984053//JPEG_TN_Media-Library.jpg?update=1</res>
        <res xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" protocolInfo="http-get:*:image/png:DLNA.ORG_PN=PNG_LRG;DLNA.ORG_FLAGS=00900000000000000000000000000000">http://10.0.1.17:5001/ums/thumbnail/0db58580-00e6-1000-851e-508569984053//PNG_LRG_Media-Library.png?update=1</res>
        <res xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" protocolInfo="http-get:*:image/png:DLNA.ORG_PN=PNG_TN;DLNA.ORG_FLAGS=00900000000000000000000000000000">http://10.0.1.17:5001/ums/thumbnail/0db58580-00e6-1000-851e-508569984053//PNG_TN_Media-Library.png?update=1</res>
        <upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="JPEG_SM">http://10.0.1.17:5001/ums/thumbnail/0db58580-00e6-1000-851e-508569984053//JPEG_SM_Media-Library.jpg?update=1</upnp:albumArtURI>
        <upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="JPEG_TN">http://10.0.1.17:5001/ums/thumbnail/0db58580-00e6-1000-851e-508569984053//JPEG_TN_Media-Library.jpg?update=1</upnp:albumArtURI>
        <upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="PNG_LRG">http://10.0.1.17:5001/ums/thumbnail/0db58580-00e6-1000-851e-508569984053//PNG_LRG_Media-Library.png?update=1</upnp:albumArtURI>
        <upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="PNG_TN">http://10.0.1.17:5001/ums/thumbnail/0db58580-00e6-1000-851e-508569984053//PNG_TN_Media-Library.png?update=1</upnp:albumArtURI>
        <upnp:class>object.container.storageFolder</upnp:class>
    </container>
</DIDL-Lite>
So selecting that on the TV it would have null too.

Code: Select all

Received a request from 10.0.1.158:
============================= UPNP HTTP SERVER REQUEST BEGIN ================================
POST /dev/5f5d9e1a-7013-44d6-a309-cf8e10ff4074/svc/upnp-org/ContentDirectory/action HTTP/1.1

HEADER:
  Accept: */*
  User-Agent: SEC_HHP_[TV]Samsung LED55/1.0 DLNADOC/1.50
  Host: 10.0.1.17:5001
  SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
  Content-Type: text/xml; charset="utf-8"
  Content-Length: 454
  Connection: close

CONTENT:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:Body>
        <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <ObjectID>null</ObjectID>
            <BrowseFlag>BrowseDirectChildren</BrowseFlag>
            <Filter>*</Filter>
            <StartingIndex>0</StartingIndex>
            <RequestedCount>1</RequestedCount>
            <SortCriteria/>
        </u:Browse>
    </s:Body>
</s:Envelope>

============================= UPNP HTTP SERVER REQUEST END ==================================
Some of the database upgrades in previous versions were done without proper checks that could corrupt it, or if updating from a very old version those checks can fail as table names have changed too much. This has become quite common that I even suggested a database reset option to be added and some sort of feedback like a notification if this is needed.

The Docker image is community maintained as the Devs don't use Linux and know little about docker so can't do any testing and miss simple things like setting the permissions on executables. If you are able to you could help improve it.
Another user did make a guide here on the forum on how to install it and there is the knowledge base guide too but I don't know how up to date these are.
From what I remember there are extra steps that need doing to get it running that could be made easier if the image was changed.
I know very little about Linux and even less about Docker so I struggle helping those that use it.
Logs are important for us to help, Please follow This Link before asking for support. Just a forum cleaner, Will help if I can but no expert.
johnbear
Posts: 6
Joined: Mon Sep 01, 2025 10:54 pm

Re: Updated UMS sees only folder but no video files

Post by johnbear »

Hopefully this is a simple fix to add that back in.
You seem to know enough to make that fix yourself and make a pull request to contribute your code.
Haha, I wouldn't go that far! Since I last posted, I have managed to bodge a "fix" in to my local copy that gets browsing working (in the System Video Player I'm now able to go through media and folders, see basic data for videos and attempt to initiate playback), but it's an ugly "fix" and it essentially ignores the four separate places in the codebase where I can see Xbox 360 specific stuff being used and mentioned (basically I jammed an "if xbox-360 and contentId is 15 then set contentId to 0" in the browsing code). I'll absolutely submit a Github issue in the next few days about Xbox 360 support being broken with my findings, but I wouldn't have the confidence in my understanding of UMS to dare submit a pull request 😅
I know some were definitely database related and I think that was the cause of PanchaMaestro's issue. The ID sent to the TV was null so that was why the request was null.
In the same place where I jammed in the hack above there was already a line that checks if the incoming contentId is "null", and sets it to 0 instead... so PanchaMaestro's TV sending a null shouldn't be an issue after all from what I can tell. Now I feel even worse about hijacking the thread!
The Docker image is community maintained as the Devs don't use Linux and know little about docker so can't do any testing and miss simple things like setting the permissions on executables. If you are able to you could help improve it.
Another user did make a guide here on the forum on how to install it and there is the knowledge base guide too but I don't know how up to date these are.
From what I remember there are extra steps that need doing to get it running that could be made easier if the image was changed.
I know very little about Linux and even less about Docker so I struggle helping those that use it.
Yeah, I've spotted a few small things that could be tweaked (the permissions issues on some of the binaries that I already submitted an issue for; there's a default umask of 022 which prevents mkfifo from setting the desired permissions on the pipes it creates, etc.). I'm a bit of a Linux and Docker n00b myself, so a lot of what I've spotted with UMS over the last week has mostly been learning from trying to eliminate random log errors. I'll submit Github issues for the stuff I find.

I did use that guide you linked when I was getting my Docker instance set up; if I end up with a working setup down the road, I'll post an update on that thread with my own final docker-compose.yml setup and my reasoning for it.

I do have a few questions for you about what a working setup should look like, just to help me with the last few bits of investigation and troubleshooting before I start submitting Github issues:
  • When you open up the video list root in any of your working clients, what's the first thing you see listed? With my browsing "fix" above, forcing the contentId to be 0 when it detects a 15 coming from an Xbox 360, the first thing I see is a list of two items - "Media Library" and "root" (the name of the default file share that I've left on while testing). Going into "Media Library" the next folder listing I see is "Video", "Audio" and "Photo". Going into "Video" I see entries like "TV Shows", "Movies", "3D Movies", etc.. That's more like what I'd want to see when opening the Xbox's "System Video Player" app and going into UMS, but I'm just curious as to what any standard video-playing client should see when starting to browse UMS's content
  • And secondly, if you have any experience with media that has to be transcoded for client playback, especially when transcoded by the "FFMPEG Video" encoder profile (trace-log entries text like Returning compatible engine "FFmpeg Video" and will be transcoded with transcodingSettings "FFmpeg Video) - in your experience does playback begin while transcoding is still ongoing? How long does it take for playback to start? The reason I ask is that although I've cludged together a fix to let me browse videos on the server, I haven't been successfully able to get any of them to play because transcoding for Xbox 360 is also separately broken. I have likewise hacked in a cludge to get WMV transcoding working again, and I can now see in the logs FFMPEG working away and processing the input video file to spit out a WMV video the Xbox can ingest. The server I have UMS running on isn't very powerful; for a source 1080p video, it's able to transcode to WMV at a rate of about 90 frames per second, and obviously that's not fast enough to transcode the entire video before playback can begin. On the Xbox when I press play on a working video, the Xbox sits with an "Opening..." screen for about 7.5 seconds, then I get a brief flash of a playback progress bar with transport controls, and then an error saying that the connection to the server was lost. On the server log side, I see transcoding going for almost precisely 10 seconds before I get a "broken pipe" error (and there's some issues with pipes in the Docker image that are probably related), and I'd just like to know if things break because they're breaking on the UMS side of things, or if the Xbox 360 times out and gives up on waiting for transcoded data to be streamed to it because my little server is too slow to transcode quickly enough
Thanks again for your patience and help!
User avatar
mik_s
Moderator
Posts: 1766
Joined: Wed Aug 23, 2017 11:03 pm
Location: UK

Re: Updated UMS sees only folder but no video files

Post by mik_s »

OK that may be for the best as there could be unintended side effects.
I remember when browsing zip files was broken but the suggested fix by a user actually revealed a bigger problem.

As long as you detail everything like you have here in your issue it will help a lot for the devs to check that this is the correct solution.

When you open UMS on a renderer you should see all the folders that you have shared plus the virtual "Media Library" folder created by UMS if you have this enabled.
If you want to have things showing the way you want then you can create those shared folders separately and turn off media library.
One thing that I think should be added is the option to customise how the media library is presented, like having "TV shows" and "Movies" showing immediately.
Maybe this would be better on the web player though.

When transcoding this will happen in real time when trying to play something that the renderer does not support.
If it is supported then the video will just be steamed unaltered to the renderer.
This relies on the renderer's conf to say what it can support so those can be streamed and how to transcode those that are not.

Usually it should start to play on the device in a few seconds depending on how powerful the computer is and the resolution of the video.
Videos with subtitles can take a bit longer to start with FFmpeg and on my old computer my PS4 would time out and say it could not play it. But trying again it will work just fine as the sub data has already been cached from the previous attempt.

When I first started to use UMS (might have still been PMS at the time) it was running on an already very old laptop (<2010) and could still transcode h265 videos to be able to play on the PS3. It could not quite keep up to do this in real-time but if I started a video and paused it for 10 mins it would create a big enough buffer that will be enough to watch it without it stuttering.

I looked at the conf for the Xbox 360 and it does have WMV as a supported format so that should have been able to play without transcoding unless the videos you have used newer codecs that it couldn't play. You can tweak its conf to fix this, have a look at DefaultRenderer.conf for what options there are.

A good way to see what UMS will do with a video is to have the logs in trace mode and look for "Final verdict:" then scroll up to see why UMS makes that decision.
Logs are important for us to help, Please follow This Link before asking for support. Just a forum cleaner, Will help if I can but no expert.
Post Reply