Chef de Cambuse, cruising and wine

Entries in the Category “home-entertainment”

Fixtures for the next weeks

written by Frank, on Oct 19, 2010 12:40:00 PM.

Some news from this side if my life.

I’ll be at the Samsung Smart TV Developer Day 2010 this week in Frankfurt.

Next week I’ve the pleasure to host a BoF named “Android and Its Impact On Home Entertainment and Home Automation” at this years CELF Embedded Linux Conference Europe in Cambridge, UK.

Returning from ELC-E I will head straight to elektro:camp(<<2010>>).

A barcamp in Kaiserslautern about

  • Smart Metering
  • Home Automation
  • Home Displays
  • …and much more.
It is the first of its kind and I’m really looking forward to this to learn more about and see what the folks from Flukso are coming up with.

And last but not least I’ll be in Munich on November 9th for the Google Developer Day 2010.

Pont Mirabeau - an UPnP bridge

written by Frank, on Jun 30, 2009 10:56:00 PM.

What started over a year ago as a vague idea and got more concrete in a first prototype last October, is now ready for a first public beta - Mirabeau, an application level proxy for UPnP devices using XMPP as a transport to establish a connection between two or more local networks over the Internet.

Or in less technical terms, it allows the DLNA capable TV at your parents place to access for instance the images of your last vacation stored on an UPnP MediaServer in your home.

Mirabeau is part of Coherence and utilizes the D-Bus interface there to create a transport layer over XMPP with the help of Telepathy’s tubes.

Philippe and I will give a presentation about it during this years Gran Canaria Desktop Summit.

Mirabeau addresses the issue that UPnP is only meant to be used in a local network. With Mirabeau we are able to easily interconnect two or more networks and the UPnP devices therein. All that with a simple, well-used setup - Jabber, and without the need for complicated VPN-tunnels or similar techniques.

Philippe wrote already about our first successful - world premiere - connection with our two networks in Spain and here in Germany, where we tested the whole infrastructure with the UPnP-Inspector.

What I would like to highlight here is the point that arbitrary UPnP devices do participate in this.
Mirabeau is a transparent bridge for UPnP devices on the application level, not only an ‘I can share my media collection between two instances of the same software’ setup.
Which is of course nice too, but we lifted that to a more higher level and instantly integrate everything that can talk UPnP - PS3, Xbox 360, Totem

Nokia MediaStreamer browsing Phil's server in Spain

An unmodified UPnP application on the N810 - Nokia’s MediaStreamer is browsing Phil’s server in Spain.

And the same by a Playstation 3:

PS3 browsing Phil's server in Spain PS3 browsing Phil's server in Spain

So if you are interested in this or want to know more don’t miss our talk @ GCDS, or join us on IRC freenode #coherence.

media collection playing - the DLNA way

written by Frank, on Apr 23, 2009 3:00:00 PM.

Media collections - being it all songs from one album, a list of favorites, or an image slideshow - have not attracted much attention in the world of UPnP A/V.

Of course there are the ContentDirectory objects playlistContainer and playlistItem, but these - if at all - are mostly used to point to some M3U file. And in addition, the client has to support that format. Another drawback is that M3U files don’t fit very well into the UPnP A/V philosophy. A ControlPoint will only know about the M3U file, but not which item of it is played at the moment. Or what metadata is associated with that item. Neither are next and previous operations implementable.

So the task of handling the collection was handed off to the ControlPoint. It was responsible now for holding a list of items to play and to instruct the MediaRenderer to load and play the next item in the list the moment the previous was finished. With the drawback that this list has to be created somehow first.

Same for the autonomous MediaClient, like the Playstation 3 or the XBox 360, their internal part of a ControlPoint usually just continues with the next item in the container.

Now that wasn’t a big issue in the days when we had only autistic autonomous MediaClients, but now more and more real MediaRenderers - meaning alongside to their internal client UI they are (remote) controllable by a ControlPoint - are available. The new Sony Bravia TV 4500 or 5500 series are maybe the most prominent example.

But the DLNA specification offers an interesting approach - they created the dlna-playcontainer URI.

That’s the uri for an additional res element a MediaServer can add automatically to an existent container.
Encoded in the uri is

  • the UDN of the device, the MediaServer
  • the service type, usually a ContentDirectory
  • the container id
  • the id of the first item
  • the index of the first item
  • the optional sort-criteria
  • the max-depth information - aka the level of subcontainers, optional too
It looks a bit like this:


With that information a MediaRenderer is now able to call a Browse action on the ContentDirectory service of that device and retrieve all the items of that container. And propagate with AVTransportURI/AVTransportURIMetaData the “dlna-playcontainer” uri and with CurrentTrackURI/CurrentTrackMetaData the track item uri and the corresponding metadata.

I’ve started to add that functionality to the Coherence MediaServers and to the GStreamer MediaRenderer.
It will be part of the upcoming 0.6.4 release of Coherence and the 0.2.2 release of the UPnP-Inspector.

As the specification doesn’t describe the whole thing in detail and I haven’t seen yet an UPnP A/V MediaServer beside Coherence supporting this I’m glad about any feedback.

Coherence 0.6.0 - the late pumpkin

written by Frank, on Jan 1, 2009 1:54:00 PM.

One of my last computer related activities in 2008 was releasing version 0.6.0 of the Coherence DLNA/UPnP framework.

The plain facts first:

Kudos go especially to jmsizun, lightyear and superdump for their work on the new backends and their patient debugging sessions!

There are some remarkable things - beside the technical improvements or the feature additions - that make this release special.

Community created backends - just awesome!
A huge THANK YOU to you guys! And seeing them appear in such a short time of development shows that the backend, the data-provider centric approach of Coherence was the right way to go.

More online and social content providers!
The Flickr MediaServer was only the beginning. With more backends that retrieve their media via some RSS feed or an API provided by an service like You-Tube or GoogleVideo, Coherence will more and more evolve into a media-hub.
A media-gateway that does provide a central place to go for accessing digital media of different origins and types, via an unified and standardized form. And still leaving the choice to you which device or application to use for that.

With the new Eye of Gnome plugin one of the last UPnP jigsaw piece for the Gnome desktop has found its place.
After the RhythmBox plugin for audio, the Totem plugin for audio and video, images served via UPnP can now be accessed via the Eye of Gnome image viewer.
And with Nautilus on the other side there is an easy way to instantly share media or interact with other UPnP devices.

The last puzzle piece is enabling Nautilus to browse UPnP A/V MediaServers in its native way. I'm confident that this is a solvable, short-term task.

Wouldn't it be amazing if other environments would be able to benefit from the work done there too.

And there a more things to come.
In the pipeline for the next releases there are amongst others:

A Happy and Peaceful New Year!

Adding Transcoding to Coherence

written by Frank, on Dec 3, 2008 8:02:00 PM.

Yeah, you read right, transcoding - the holy grail when it comes to DLNA and UPnP A/V - is finally within Coherence's reach.

With current svn trunk we have a simple, yet powerful audio transcoder based on GStreamer, enabling our FSStore MediaServer to serve ogg, mp4 and flac media files to devices not able to playback these formats natively, like the Playstation 3.

The transcoded stream can be paused, but not seeked yet. That needs a bit of more work.

The complementary remuxer/transcoder for video is in the works too, hope we are able to finish that for the upcoming 0.6.0 release.

Coherence and Nautilus - Brothers in Arms

written by Frank, on Oct 26, 2008 10:30:00 PM.

One of the things I had on my list - unfortunately that list is quite long atm - was bringing Nautilus - Gnomes filemanager - and Coherence together.
Nautilus has the possibility to add something via an extension - luckily these extensions can be in Python too.

So it was pretty straight forward to add to Nautilus:

  • sharing one or more folders as a DLNA/UPnP MediaServer, allowing clients like the PS3 or the Nokia N810 to access these files
  • accepting files send from an ControlPoint
  • uploading files itself to other DLNA/UPnP MediaServers that allow media to be imported
  • instruct a MediaRenderer to playback a given file
You can watch the demonstration video here:

the link to Google Video, just in case that embedded player isn’t working

More details, download and install instructions as usual on the Coherence site.

As you might notice, there is one part missing - having Nautilus display and access the content of other MediaServers in the network.
This can’t be done with an extension, here the gvfs backend needs to be modified. But as Coherence exposes the MediaServers via DBus, a small layer mapping Nautilus’ requests to Coherence’ signals and methods shouldn’t be that difficult?

there will be light

written by Frank, on Mar 16, 2008 12:35:00 PM.

Over the last days I’ve added support for the UPnP Lighting Controls V 1.0 to Coherence.

Although there aren’t yet much application areas for this specification outside of maybe some futuristic showrooms and research laboratories - and here at my place with my little UPnP <-> EIB bridge - but that specification addresses one of the biggest obstacles when it comes to home-automation.

The need to know/to program the unique id of a new device you bring into your household and to establish the connection between a switch and that device, is in all serious automation systems diametrically opposed to the wish of the ordinary customer who just wants to buy a new lamp, plug it in and have it working.

Newer systems like digitalstrom or ZigBee take that (partially) into account, but here too UPnP has the potential to model a unified layer above the system and vendor specific peculiarities.

And having that in Coherence is a nice demonstration of the simplicity implementing a device with it anyway.

class SimpleLight(Backend):

    """ this is a backend for a simple light
        that only can be switched on or off

        therefore we need to inform Coherence
        about the state, and a method to change it

        everything else is done by Coherence

    implements = ['BinaryLight']
    logCategory = 'simple_light'

    def __init__(self, server, **kwargs): = kwargs.get('name','SimpleLight')
        self.server = server
        self.state = 0 # we start switched off
        louie.send('Coherence.UPnP.Backend.init_completed', None, backend=self)

    def upnp_init(self):
        if self.server:
            self.server.switch_power_server.set_variable(0, 'Target', self.state)
            self.server.switch_power_server.set_variable(0, 'Status', self.state)

    def upnp_SetTarget(self,**kwargs):'upnp_SetTarget %r', kwargs)
        self.state = int(kwargs['NewTargetValue'])
        if self.server:
            self.server.switch_power_server.set_variable(0, 'Target', self.state)
            self.server.switch_power_server.set_variable(0, 'Status', self.state)
        print "we have been switched to state", self.state
        return {}
Yep, that’s all. :-)

From the three UPnP actions the SwitchPower service defines, only one is actually needed to implement, the other two actions can be handled by Coherence autonomously.

Coherence 0.5.2 - the "little leap"

written by Frank, on Feb 29, 2008 10:06:00 PM.

I'm happy to announce a new release of

Coherence 0.5.2 - the "little leap"

on this 29th of February 2008.

This is on the one hand an interim release to get into the distributions an updated package providing support for new features used by the upcoming versions of Rhythmbox and Elisa.

On the other hand there are some enhancements that are of general interest too:

  • rework of the XBox 360 support
  • refinements and improvements on the client side API, incorporating things we learned on extending the Rhythmbox UPnP plugin
  • some efforts on smoothing the "just use it as a MediaServer/-Renderer" user experience
  • rearrangements in the way multiple res elements are ordered, fixes issues which we had with some UPnP stacks and their 'wayward' interpretation of the specs
  • and the usual bugfixes and improvements

More details at the Coherence site

The best showcase for what can be done with Coherence is at the moment for sure the Rhythmbox UPnP plugin.

It enables Rhythmbox

  • to act as an UPnP MediaServer, serving its media files to other UPnP clients
  • be an UPnP client itself
  • and handing over control to an UPnP ControlPoint, announcing itself as an UPnP MediaRenderer
A demonstration can be viewed in a little video over here.

Coherence and Rhythmbox UPnP interaction

written by Frank, on Jan 30, 2008 10:13:00 PM.

I made a little video to demonstrate the new features of the upcoming next version of the Rhythmbox UPnP plugin.

It shows Rhythmbox:

  • acting as an UPnP MediaServer, serving its files to the UPnP player Media Streamer on the Nokia N800
  • being itself a client of a Coherence UPnP MediaServer
  • and in the end acting as an UPnP MediaRenderer, controlled by the ControlPoint on the N800

Original better-resolution avi here

Nokia N95 8GB gets DLNA certification

written by Frank, on Jan 21, 2008 4:03:00 PM.

A few days ago Nokia announced that the N95 8GB got - as the first mobile phone ever - a DLNA certification.

Now they have added a video demonstrating its use within a home network.

Nothing new actually in regards to the UPnP functionality - the phone acts as a MediaServer and a ControlPoint - but the video shows more than any 1000 marketing words what media sharing interoperability does mean.

Original better-resolution mpeg here