GNOME Bugzilla – Bug 626196
OPPO DBP-80/83
Last modified: 2010-09-16 17:57:12 UTC
Copy pasting the report from Guillaume Lanquepin-chesnais <guyomel@gmail.com>: ------------------------ I'm trying to use Rygel with the OPPO DBP-80(http://www.oppodigital.com/blu-ray-bdp-80/) but the player (with the last firmware) does not even see the share. I've tried on ubuntu lucid with Rygel 0.4.10-2 from the Ubuntu's repository and I compiled the lastest releases, ie the 0.6.0 and 0.7.1. However, my Coherence share (http://coherence.beebits.net) works well with the Oppo's device. ----------------------
Created attachment 167266 [details] Wireshark capture
I compiled rygel from http://static.fi/~zeenix/tmp/rygel-0.7.3.37-0d15.tar.gz who containts the patch (kindelly :-) ) made by Zeeshan Ali. However, I didn't get any positive answer for my Oppo player. I jointed capture from wireshark when the device is discovering upnp servers on the network.
Thanks for providing the log, I'm looking at it right and comparing with code in gssdp to find out why discovery might be failing. Before I go any further, is there by any chance any errors or warnings on the rygel console?
Ah, my patch was incomplete. Sorry for that and Please grab & try this one out: http://static.fi/~zeenix/tmp/rygel-0.7.3.54-32b6c.tar.gz If it doesn't work, please paste the new wireshark log again.
Created attachment 167448 [details] Wireshar log with new patch
I tryied the new patch version without more success. I ran Oppo upnp client against n900 one who works. I didn't see any errors on rygel logs. ** (rygel:2075): DEBUG: Loaded user configuration from file '/home/jess/.config/rygel.conf' ** (rygel:2075): DEBUG: Searching for modules in folder '/usr/local/lib/rygel-1.0' .. ** (rygel:2075): DEBUG: new network context lo (127.0.0.1) available. ** (rygel:2075): DEBUG: Ignoring network context lo (127.0.0.1). ** Message: New plugin 'Playbin' available ** (rygel:2075): DEBUG: Loaded module source: '/usr/local/lib/rygel-1.0/librygel-playbin.so' ** (rygel:2075): DEBUG: Loaded module source: '/usr/local/lib/rygel-1.0/librygel-external.so' ** Message: New plugin 'MediaExport' available ** (rygel:2075): DEBUG: Loaded module source: '/usr/local/lib/rygel-1.0/librygel-media-export.so' ** (rygel:2075): DEBUG: Plugin 'Tracker' disabled in user configuration, ignoring.. ** (rygel:2075): DEBUG: Loaded module source: '/usr/local/lib/rygel-1.0/librygel-media-tracker.so' ** (rygel:2075): DEBUG: Finished searching for modules in folder '/usr/local/lib/rygel-1.0' ** (rygel:2075): DEBUG: new network context eth1 (192.168.10.184) available. ** (rygel:2075): DEBUG: No icon provided by plugin 'MediaExport'. Using Rygel logo.. ** (rygel:2075): DEBUG: Using database file /home/jess/.cache/rygel/media-export.db ** (rygel:2075): DEBUG: No icon provided by plugin 'Playbin'. Using Rygel logo.. ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'TransportState = STOPPED' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'TransportStatus = OK' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'PlaybackStorageMedium = NOT_IMPLEMENTED' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'RecordStorageMedium = NOT_IMPLEMENTED' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'PossiblePlaybackStorageMedia = NOT_IMPLEMENTED' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'PossibleRecordStorageMedia = NOT_IMPLEMENTED' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'CurrentPlayMode = NORMAL' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'TransportPlaySpeed = 1' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'RecordMediumWriteStatus = NOT_IMPLEMENTED' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'CurrentRecordQualityMode = NOT_IMPLEMENTED' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'PossibleRecordQualityMode = NOT_IMPLEMENTED' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'NumberOfTracks = 0' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'CurrentTrack = 0' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'CurrentTrackDuration = 00:00:00' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'CurrentMediaDuration = 00:00:00' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'CurrentTrackMetadata = ' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'CurrentTrackURI = ' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'AVTransportURI = ' logged ** (rygel:2075): DEBUG: rygel-changelog.vala:74: 'NextAVTransportURI = NOT_IMPLEMENTED' logged ** Message: 'file:///home/jess/Videos' harvested ** (rygel:2075): DEBUG: rygel-browse.vala:104: Fetching 64 children of container '0' from index 0.. ** (rygel:2075): DEBUG: rygel-browse.vala:111: Fetched 64 children of container '0' from index 0. ** (rygel:2075): DEBUG: rygel-media-query-action.vala:134: searching for object '0a3c9e4c00c452166b74003fca866e11'.. ** (rygel:2075): DEBUG: rygel-media-query-action.vala:142: object '0a3c9e4c00c452166b74003fca866e11' found. ** (rygel:2075): DEBUG: rygel-browse.vala:104: Fetching 64 children of container '0a3c9e4c00c452166b74003fca866e11' from index 0.. ** (rygel:2075): DEBUG: rygel-browse.vala:111: Fetched 64 children of container '0a3c9e4c00c452166b74003fca866e11' from index 0. ** (rygel:2075): DEBUG: rygel-media-query-action.vala:134: searching for object '435734868ff137e8cba2a958df756fa9'.. ** (rygel:2075): DEBUG: rygel-media-query-action.vala:142: object '435734868ff137e8cba2a958df756fa9' found. ** (rygel:2075): DEBUG: rygel-media-query-action.vala:134: searching for object '435734868ff137e8cba2a958df756fa9'.. ** (rygel:2075): DEBUG: rygel-media-query-action.vala:142: object '435734868ff137e8cba2a958df756fa9' found. ** (rygel:2075): DEBUG: HTTP GET request for URI 'http://192.168.10.184:30020/RygelHTTPServer/MediaExport/item/NDM1NzM0ODY4ZmYxMzdlOGNiYTJhOTU4ZGY3NTZmYTk='. Headers: ** (rygel:2075): DEBUG: rygel-http-server.vala:194: Host : 192.168.10.184:30020 ** (rygel:2075): DEBUG: rygel-http-server.vala:194: Connection : close ** (rygel:2075): DEBUG: rygel-http-server.vala:194: icy-metadata : 1 ** (rygel:2075): DEBUG: rygel-http-server.vala:194: transferMode.dlna.org : Streaming ** (rygel:2075): DEBUG: rygel-http-server.vala:194: User-Agent : GStreamer souphttpsrc libsoup/2.26.3 ** (rygel:2075): DEBUG: rygel-http-get.vala:98: Following HTTP headers appended to response: ** (rygel:2075): DEBUG: rygel-http-get.vala:100: Date : Mon, 09 Aug 2010 18:50:18 GMT ** (rygel:2075): DEBUG: rygel-http-get.vala:100: Content-Type : video/x-msvideo ** (rygel:2075): DEBUG: rygel-http-get.vala:100: Accept-Ranges : bytes ** (rygel:2075): DEBUG: rygel-http-get.vala:100: Content-Range : bytes 0-734494719/734494720 ** (rygel:2075): DEBUG: rygel-http-get.vala:100: Content-Length : 734494720 ** (rygel:2075): DEBUG: rygel-http-get.vala:100: transferMode.dlna.org : Streaming ** (rygel:2075): DEBUG: rygel-http-get.vala:100: contentFeatures.dlna.org : * ** (rygel:2075): DEBUG: HTTP client aborted GET request for URI 'http://192.168.10.184:30020/RygelHTTPServer/MediaExport/item/NDM1NzM0ODY4ZmYxMzdlOGNiYTJhOTU4ZGY3NTZmYTk='. ** (rygel:2075): DEBUG: HTTP GET request for URI 'http://192.168.10.184:30020/RygelHTTPServer/MediaExport/item/NDM1NzM0ODY4ZmYxMzdlOGNiYTJhOTU4ZGY3NTZmYTk=' handled.
(In reply to comment #6) > I tryied the new patch version without more success. :( OK, one last shot in the dark: Stop rygel, run the following command and start rygel again: sed -i 's/Manager:2/Manager:1/' ~/.config/Rygel/MediaExport-xbox.xml > I ran Oppo upnp client > against n900 one who works. More important is what coherence provides the OPPO player to make it happy. If possible, please do run coherence and rygel both when you start the discovery/search on OPPO player next time and provide that log. I don't promise anything but believe me I'm trying my best to solve this issue and greatly appreciate your feedback and patience with us. :)
(In reply to comment #7) > (In reply to comment #6) > > I tryied the new patch version without more success. > > :( OK, one last shot in the dark: Stop rygel, run the following command and > start rygel again: > > sed -i 's/Manager:2/Manager:1/' ~/.config/Rygel/MediaExport-xbox.xml Forget that! It wont work cause rygel always creates that part from scratch. Just provide the new packet log against coherence for now and I'll provide another modified rygel tarball if the log gives me any clues.
Created attachment 167509 [details] Wireshark log for rygel
Created attachment 167510 [details] Coherence log
So, as the Oppo player have native surport for Mkv files, I added one to be sure that it does not hide the server since it did not see any "readible" files. But it changes nothing. After I remade a wireshark log for rygel. But as both my coherence server and my Oppo are on wire, I didn't see anything from my wireless laptop (on which run Rygel) thus I've tried to use tcpdump form the coherence's computer to get the same kind of log than with wireshark. My command where the following: sudo tcpdump host 192.168.10.110 -A -w coherence.bz2 -z bzip Please correct it if it is not what you expected. I also tried to get in touch with some technician from Oppo, but whithout success up to now.
(In reply to comment #11) > So, as the Oppo player have native surport for Mkv files, I added one to be > sure that it does not hide the server since it did not see any "readible" > files. But it changes nothing. That can't be the issue since OPPO just ignore rygel after getting the description from it. > After I remade a wireshark log for rygel. But as both my coherence server and > my Oppo are on wire, I didn't see anything from my wireless laptop (on which > run Rygel) Interesting! If you run wireshark as root and capture in 'promiscuous' mode, you must be able to see ALL packets on the network. If that is not the case, your network setup has some issues that *might* be the cause of all this. > thus I've tried to use tcpdump form the coherence's computer to get > the same kind of log than with wireshark. My command where the following: > > sudo tcpdump host 192.168.10.110 -A -w coherence.bz2 -z bzip > > Please correct it if it is not what you expected. The resulting file open fine in wireshark but I'm unable to find the packet(s) that has the device description document, which is the only thing I'm interesting in ATM. Also, the packet contents look.. modified. I think you want to drop that '-A' parameter. > I also tried to get in touch with some technician from Oppo, but whithout > success up to now. Yeah, I wouldn't push my luck on that one. :(
Created attachment 167541 [details] Log for coherence and rygel
I did previous tests with my laptop directly plug in the switch, but I didn't get more answer form the player... Especially, wireshark didn't see any packet from 192.168.10.3 (my coherence server) even in 'promiscuous' mode on ethernet. Probably a hardware limitation. Anyway I (normally) improve the log for coherence. Thank you to spen so much time on my bug.
(In reply to comment #14) > I did previous tests with my laptop directly plug in the switch, but I didn't > get more answer form the player... Especially, wireshark didn't see any packet > from 192.168.10.3 (my coherence server) even in 'promiscuous' mode on ethernet. > Probably a hardware limitation. That makes me even more suspicious of your setup. Have you tried running rygel on the same machine as coherence? > Anyway I (normally) improve the log for coherence. The packets are still truncated. Wireshark even tells that: [Packet size limited during capture: JXTA truncated] > Thank you to spen so much time on my bug. No problems, however I can't possibly do anything unless I get to see all the communication between coherence and your player.
Ok, I endly understand why I wasn't able to capture packet from others computers: it's because the Oppo and the server are plugged on a switch (http://www.tcpdump.org/faq.html#promiscsniff). Moreover, I also found how getting a descent log with tcpdump (http://www.wireshark.org/docs/wsug_html_chunked/AppToolstcpdump.html), then you should be able to read this new log.
Created attachment 167780 [details] Coherence Log
(In reply to comment #17) > Created an attachment (id=167780) [details] > Coherence Log Now we are talking. :) The first thing I notice is that coherence's description document doesn't contain any newline characters. If thats whats bothering OPPO in our description, here is a simple work-around: * Execute the following commands: * rm ~/.config/Rygel/* * for FILE in `ls ~/.config/Rygel`; do echo `cat ~/.config/Rygel/$FILE |tr -d \\\n` > ~/.config/Rygel/$FILE; done * Run the normal (unpatched) rygel. Let me know if it works cause this would be really easy to fix.
Created attachment 167902 [details] Rygel log
I removed all newline charaters of MediaExport.xml who is the only file in ~/.config/Rygel. To do so, I had to remove write permisssion on it, since at each run Rygel (0.4.10) addes a newline after <?xml version="1.0"?>. Anyway, Oppo still does not see Rygel I attached the resulting log.
> I removed all newline charaters of MediaExport.xml who is the only file in > ~/.config/Rygel. To do so, I had to remove write permisssion on it, Firstly, that should break it even further since rygel assumes that it can write to those files and in case of failure, it'll just give-up on creating the devices. I even tested this theory by doing exactly the same here but since your log clearly shows rygel up and running, I'm astonished how this worked for you. Anyway, it doesn't seem that newlines is what is bothering our friend OPPO. > since at > each run Rygel (0.4.10) addes a newline after <?xml version="1.0"?>. Wait, you are using rygel 0.4.10? Thats way toooo old. :( The last stable release was 0.6.0 and you should be at least using that. Actually, while we are working on this together, I would really appreciate if you could use the git master of rygel as when/if i get it fixed it git master, I would really like you to verify the fix. So comparing the description files again, another thing I find is that coherence prefixes all SCPD URLs with a "/". Since you've somehow managed to make rygel use the XML file without modifying it, could you try prepending a "/" to contents of all nodes having "URL" in their names?
I just fixed the following issues in git master: 1. rygel adding '<?xml version="1.0"?>' each time it starts. 2. rygel not providing "/" in front of URLs in the description. Please test rygel from this tarball that I built for you: http://static.fi/~zeenix/tmp/rygel-0.7.3.146-3aae.tar.gz . Please do remember to wipe the '~/.config/Rygel' clean before you run rygel. Also, if this still doesn't work, do give the 'newline' removal another chance as it might be a combination of more than one factors.
Oops, I spoke too early. The issue#1 in the previous comment is still there. It seems to be an libxml issue so i can't really solve it in rygel. Hopefully its the "/" issue so i'll now wait for the results of your next testing session. :)
Created attachment 167962 [details] Rygel log I ran the lastest version you gave my after wiping the Rygel's config directory. But without any improvement, Rygel is still not viewed by the Oppo
Created attachment 168110 [details] [review] Add "Server" header to HTTP GET responses
Ok, the patch I just attached is my last attempt. Please apply it on gupnp git master (it might just work on older gupnp source as well) and try again with this patch in place. Oh and either use rygel from tarball I provided or the one of latest (0.7.4) release. Other than that, I can't figure anything only through wireshark. :(
Created attachment 168223 [details] Rygel log I ran rygel from git master with gupnp, gupnp-dnla, gupnp-av also from git. Of course I patched gupnp. Nevertheless, I did get any positive answers from the Oppo, neither with end line neither without. I attached a last rygel log, thus you can check that I made everything in the rigth way. Thanj you for all the time you spent on this bug. I will try to get in touch with Oppo technical staff.
Created attachment 168921 [details] [review] Force content directory version Could you try this patch, please? It forces the ContentDirectory to version 1
Created attachment 168922 [details] [review] Force content directory version Oops, sorry. Typo. Try this one please
(In reply to comment #29) > Created an attachment (id=168922) [details] [review] > Force content directory version > > Oops, sorry. Typo. Try this one please Thats the first thing we tried. :)
So should I or not try this patch ? Else, I've tried the last git version without mor success. I also recieved mails from Oppo saying they are investigated the problem, but it seems that they had some problems to compile Rygel.
(In reply to comment #31) > So should I or not try this patch ? No need as we already tried this (possible) solution. > Else, I've tried the last git version > without mor success. I wouldn't expect rygel to work against OPPO until we find out what the issue is. > I also recieved mails from Oppo saying they are > investigated the problem, but it seems that they had some problems to compile > Rygel. I find it interesting that they not only replied but even tried to build rygel. :) Anyway, do emphasize to them the fact that your wireshark logs should be more than enough for them to find out the issue as (unlike us), they've access to sources of all the software involved: theirs, rygel's and coherence's.
Created attachment 170043 [details] Wireshark log for Rygel I recieved that mail from OPPO: He has installed the Rygel server on Ubuntu Linux and think the problem is related to the XML parser: the XML library on BDP-80’s DMP is slightly old and cannot parse all formats correctly. Could you please make a change to the file “RootDevice0x887b808.xml”? (The changes are marked in red color text) "<?xml version=\"1.0\"?>\r\n" \ "<root xmlns=\"urn:schemas-upnp-org:device-1-0\" xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">\r\n" \ "<specVersion>\r\n" \ "<major>1</major>\r\n" \ "<minor>0</minor>\r\n" \ "</specVersion>\r\n" \ "<device>\r\n" \ "<deviceType>urn:schemas-upnp-org:device:MediaServer:2</deviceType>\r\n" \ "<friendlyName>alexzhu's media</friendlyName>\r\n" \ "<manufacturer>Rygel Developers.</manufacturer>\r\n" \ "<manufacturerURL>http://live.gnome.org/Rygel</manufacturerURL>\r\n" \ "<modelName>Rygel</modelName>\r\n" \ "<modelNumber>0.1</modelNumber>\r\n" \ "<modelDescription></modelDescription>\r\n" \ "<serialNumber>0000001</serialNumber>\r\n" \ "<UDN>uuid:41c09cd9-3555-486a-8249-69b9ccc9eff6</UDN>\r\n" \ "<UPC></UPC>\r\n" \ "<presentationURL></presentationURL>\r\n" \ "<serviceList>\r\n" \ "<service>\r\n" \ "<serviceType>urn:schemas-upnp-org:service:ContentDirectory:2</serviceType>\r\n" \ "<serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>\r\n" \ "<SCPDURL>xml/ContentDirectory.xml</SCPDURL>\r\n" \ "<eventSubURL>MediaExport/RygelMediaExportContentDir/Event</eventSubURL>\r\n" \ "<controlURL>MediaExport/RygelMediaExportContentDir/Control</controlURL>\r\n" \ "</service>\r\n" \ "<service>\r\n" \ "<serviceType>urn:schemas-upnp-org:service:ConnectionManager:2</serviceType>\r\n" \ "<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>\r\n" \ "<SCPDURL>xml/ConnectionManager.xml</SCPDURL>\r\n" \ "<eventSubURL>MediaExport/RygelSourceConnectionManager/Event</eventSubURL>\r\n" \ "<controlURL>MediaExport/RygelSourceConnectionManager/Control</controlURL>\r\n" \ "</service>\r\n" \ "</serviceList>\r\n" \ "<dlna:X_DLNADOC>DMS-1.50</dlna:X_DLNADOC>\r\n" \ "<dlna:X_DLNADOC>M-DMS-1.50</dlna:X_DLNADOC>\r\n" \ "<dlna:X_DLNACAP></dlna:X_DLNACAP>\r\n" \ "</device>\r\n" \ "<URLBase>http://172.16.133.231:49200/</URLBase>\r\n" \ "</root>\r\n" I tryed to modify xml files in ~/.config/Rygel as OPPO proposed (ie replace \n by \r\n and avoid tag as <UPC \> for <UPC></UPC>). But it didn't work. I jointed again the wireshark log.
Thats really helpful, I'll make the appropriate changes soon (i'll be back from vacation on monday) and hopefully we'll be able to correct the issue. Since the coloring was lost in here, just to be completely sure I must ask if the only issues were the empty nodes (e.g UPC) and '\n' being used instead of '\n\r' ? Thanks so much for not giving-up and thanks OPPO for caring so much.
*** Bug 628557 has been marked as a duplicate of this bug. ***
(In reply to comment #34) > Thats really helpful, I'll make the appropriate changes soon (i'll be back from > vacation on monday) and hopefully we'll be able to correct the issue. Since the > coloring was lost in here, just to be completely sure I must ask if the only > issues were the empty nodes (e.g UPC) and '\n' being used instead of '\n\r' ? Yes, issues seem to be self-closing tag (e.g UPC and presentationURL) and '\n\r' in spite of '\n' > Thanks so much for not giving-up and thanks OPPO for caring so much. No problem ;-)
(In reply to comment #33) > > I tryed to modify xml files in ~/.config/Rygel as OPPO proposed (ie replace \n > by \r\n and avoid tag as <UPC \> for <UPC></UPC>). But it didn't work. Try removing all those files and apply needed modifications to '$PREFIX/rygel/xml/*' instead followed by a restart of rygel. If these are the only changes needed, rygel should finally appear on your OPPO player (you might need to refresh the discover on the player side).
(In reply to comment #36) > (In reply to comment #34) > > Thats really helpful, I'll make the appropriate changes soon (i'll be back from > > vacation on monday) and hopefully we'll be able to correct the issue. Since the > > coloring was lost in here, just to be completely sure I must ask if the only > > issues were the empty nodes (e.g UPC) and '\n' being used instead of '\n\r' ? > > Yes, issues seem to be self-closing tag (e.g UPC and presentationURL) and > '\n\r' in spite of '\n' Its '\r\n' instead of '\n\r' so that might have been the reason it didn't work for you.
I fixed both issues in git master. If the problem is still there, please feel free to re-open the bug. Here is a tarball for you to test: http://static.fi/~zeenix/tmp/rygel-0.7.7.5-eda5-dirty.tar.gz . Don't forget to remove '~/.config/Rygel/*' before you test.
Apparently, this didn't really get fixed because of libxml stripping of the '\r' characters on saving the file. I'll fix it very soon.
Hi all: HTTP/1.1 200 OK Date: Wed, 15 Sep 2010 11:42:57 GMT Content-Type: application/xml Accept-Ranges: bytes Content-Length: 2192 modified to HTTP/1.1 200 OK Date: Wed, 15 Sep 2010 11:42:57 GMT Content-Type: text/xml Accept-Ranges: bytes Content-Length: 2192
*** Bug 629582 has been marked as a duplicate of this bug. ***
Fixed the newline issue in git master. (In reply to comment #41) > Content-Type: application/xml > > modified to > > Content-Type: text/xml Thanks for pointing that out. However, according to the UPnP Device description document this needs to be: text/xml; charset="utf-8". Would that work against OPPO?
yes
(In reply to comment #44) > yes Good, in that case I just fixed this in gupnp git master. Dear reporters, Please try to reproduce this against gupnp git master together with rygel from this tarball: http://static.fi/~zeenix/tmp/rygel-0.7.8.5-14071.tar.gz . As usual, don't forget to remove the cached xml files in '~/.config/Rygel'.
Victory ! My Oppo player the Rygel's share. Thank you a lot! Just a last problem, Oppo didn't see any other videos than mkv files even if transcoding is enable... But everything else works great. Thanks