Page 1 of 1

BubbleUPnP as a controller

PostPosted: Thu Jun 07, 2012 2:55 pm
by OffColour
Hi,
I've already seen an answer to this in another post, but it was a workaround rather than a solution.

When BubbleUPnP has its renderer enabled and appears on Serviio's list of renderers, it can't be used as a controller for any device that requires media to be transcoded. This appears to be because Serviio treats any requests from BubbleUPnP as being for its renderer and not the target device, e.g. a Bravia TV.
A previous answer to this was to change bubble upnp to have the bravia profile in Serviio, but this seems like a workaround where you'd have to keep changing the profile each time you wanted to control a different device.
I've asked on the bubble upnp thread and they're saying it's a serviio issue.
Does serviio attempt to read the full request from bubble or does it just look and say it came from device x therefore use that profile without considering that it might just be a controller command?
Thanks

Re: BubbleUPnP as a controller

PostPosted: Thu Jun 07, 2012 5:19 pm
by zip
it doesn't distinguish between controller and renderer ATM

Re: BubbleUPnP as a controller

PostPosted: Thu Jun 07, 2012 9:22 pm
by OffColour
Thanks. Hope it gets implemented one day given that smart phones make perfect controllers.

Re: BubbleUPnP as a controller

PostPosted: Fri Jun 08, 2012 10:09 pm
by zip
AKAIK the controller sends the same commands as the TV would, but from it's own IP address. Profile matching is dependent on the IP address of incomming request, so unless the controller sends some information about the target device it won't work dynamically. Will try later.

Re: BubbleUPnP as a controller

PostPosted: Sat Jul 28, 2012 11:15 pm
by OffColour
Hi,

Finally got a bit of time and compared the logs of a direct request from my Bravia and a controller request from Bubble UPnP.
Compare these two extracts:

Request from Bravia after browsing Serviio on Bravia:
  Code:
2012-07-28 23:48:58,605 DEBUG [WebServer] Incoming connection from /192.168.0.71:60061
2012-07-28 23:48:58,613 DEBUG [ResourceTransportRequestHandler] HEAD /resource/95169/MEDIA_ITEM/LPCM16_44_STEREO*0 HTTP/1.1, headers = [getcontentFeatures.dlna.org: 1,Pragma: getIfoFileURI.dlna.org,transferMode.dlna.org: Streaming,X-AV-Physical-Unit-Info: pa="BRAVIA KDL-40EX503";,X-AV-Client-Info: av=5.0; cn="Sony Corporation"; mn="BRAVIA KDL-40EX503"; mv="1.7";,Host: 192.168.0.2:8895]]


Request from Bravia after browsing Serviio from BubbleUPnp:
  Code:
2012-07-28 23:41:27,961 DEBUG [WebServer] Incoming connection from /192.168.0.71:45801
2012-07-28 23:41:27,962 DEBUG [ResourceTransportRequestHandler] HEAD /resource/95169/MEDIA_ITEM/FLAC*0 HTTP/1.1, headers = [getcontentFeatures.dlna.org: 1,transferMode.dlna.org: Streaming,X-AV-Physical-Unit-Info: pa="BRAVIA KDL-40EX503";,X-AV-Client-Info: av="5.0"; cn="Sony Corporation"; mn="BRAVIA KDL-40EX503"; mv="1.7";,Host: 192.168.0.2:8895]]


Then a few lines down the BubbleUPnP version errors with:
  Code:
2012-07-28 23:41:28,010 DEBUG [AudioDeliveryEngine] Found Format profile for transcoded file 01-Fear on the Bridge (Upon the Boiling Sea I)-3 Inches of Blood.flac: LPCM16_44_STEREO
2012-07-28 23:41:28,012 ERROR [ResourceTransportRequestHandler] Error while processing resource, sending back 500 error. Message: No media description available for required version: FLAC
org.serviio.dlna.UnsupportedDLNAMediaFileFormatException: No media description available for required version: FLAC


Where the direct Bravia goes:
  Code:
2012-07-28 23:48:58,620 DEBUG [AudioDeliveryEngine] Found Format profile for transcoded file 01-Fear on the Bridge (Upon the Boiling Sea I)-3 Inches of Blood.flac: LPCM16_44_STEREO
2012-07-28 23:48:58,621 DEBUG [ResourceTransportRequestHandler] Sending HEAD response back
2012-07-28 23:48:58,621 DEBUG [ResourceTransportRequestHandler] HTTP/1.1 200 OK, headers = [[Content-Type: audio/L16;rate=44100;channels=2,Date: Sat, 28 Jul 2012 22:48:58 GMT,Server: Windows Server 2008 R2, UPnP/1.0 DLNADOC/1.50, Serviio/0.6.2,Cache-control: no-cache,contentFeatures.dlna.org: DLNA.ORG_PN=LPCM;DLNA.ORG_OP=10;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=01500000000000000000000000000000,transferMode.dlna.org: Streaming]]
2012-07-28 23:48:58,637 DEBUG [WebServer] Incoming connection from /192.168.0.71:60062
2012-07-28 23:48:58,640 DEBUG [ResourceTransportRequestHandler] GET /resource/95169/MEDIA_ITEM/LPCM16_44_STEREO*0 HTTP/1.1, headers = [TimeSeekRange.dlna.org: npt=0.000-,getcontentFeatures.dlna.org: 1,Pragma: getIfoFileURI.dlna.org,transferMode.dlna.org: Streaming,X-AV-Physical-Unit-Info: pa="BRAVIA KDL-40EX503";,X-AV-Client-Info: av=5.0; cn="Sony Corporation"; mn="BRAVIA KDL-40EX503"; mv="1.7";,Host: 192.168.0.2:8895]]


I'm guessing that Bubble is telling the Bravia what to request, Bravia goes off and requests it and then Serviio says the Bravia can't support that so throws an error, i.e. the initial browsing of the library tells a renderer what it can ask for so the need for transcoding is determined before an actual request to play something is made.

Can anything be done about this as it seems to be the key thing that stops Serviio supporting a generic DLNA controller?

Is this where you tell me it's been changed in version 1.0? :)

Thanks

Gary

Re: BubbleUPnP as a controller

PostPosted: Sun Jul 29, 2012 8:13 pm
by zip
you have to look further up in the logs where it invokes Browse() method. It will also say what profile it used... it looks like the Bravia uses correctly Bravia profile (and responds with the right URL transcoding to LPCM), which is consequently requested as per your logs.

Bubble is probably using a different profile, one that transcodes the audio to flv (?) or gets ute (FLV) Url from it's cache somewhere

Re: BubbleUPnP as a controller

PostPosted: Mon Jul 30, 2012 8:54 pm
by OffColour
The bubble profile doesn't transcode (it doesn't need to). What I'm getting at is that by having the browse determine whether to transcode, Serviio can't work with a pure controller. Bubble doesn't (and probably shouldn't) have any knowledge of what the renderer is capable of playing and Serviio ought to transcode to a supported format when a request comes through for an unsupported format.
That's my opinion anyway :-)

Re: BubbleUPnP as a controller

PostPosted: Mon Jul 30, 2012 9:07 pm
by zip
This is how it works:

1) Renderer/controller call Browse method which responds with a URL for the video resource.
2) Renderer makes a GET request to the URL - it has no extensive knowledge of what it is, the only thing it can do is call this URL, which includes a hint used by Serviio of what format it is (as determined by the Browse method)

DLNA itself doesn't have a concept of profiles, it doesn't REALLY deal with transcoded files and if everything was mpeg2 it'd just work. Serviio could also offer multiple resources and let the renderer pick one, but that hardly ever works.

So you can see that deciding whether to transcode based on the incoming GET request is impossible (partly because the Browse method requires already target codec/container/resolution etc).