Metalworks for UPnP devices at Tokamak4

As Kevin, KDE’s Solid master, already reported, the Tokamak 4 opened the possibility of the fusion of more particles into Solid (yet without turning it into Plasma, too πŸ˜‰ ).

I had been working for two days mainly on porting the service and status framework of Khalkhi to the KDE 4 Platform including a proper Plasma widget, which will take some time to be completed, but I miss it very much now that my workspace is based on Plasma where the Kicker applet does not work. Three years ago I even started such a port already, but intermixed it with my personal ideas about a contact/person API to the Akonadi system. Now this port is of no use, so I have to redo the porting. Huh. Four years old code which I could not even remember/follow why I did its design like I did. Fun, not.

Just, the opportunity of having Kevin sitting directly on the other side of the table here at Tokamak 4 and him, other than planned, already having added the support for multiple backends to Solid the day after the meeting, also my wish to do something different yesterday, resulted in a first working prototype for a UPnP backend for Solid, at the same time providing a proof-of-concept work for the multiple backend solution.

I simply relied on my UPnP work started at the second Coherence/KDE sprint last october. Coherence is a Python-based server which… does a lot of UPnP related stuff, e.g. caching all information about the UPnP devices present on the local network and making this information accessible via D-Bus. Kind of like what Avahi does for DNS-SD/Zeroconf, with regard to this.
While the Coherence-driven backend for the network:/ kio-slave did not make it for KDE SC 4.4, I recently pushed the code into trunk, so it doesn’t bitrot and gets a final brush for 4.5, now that there is a released version of Coherence available which has the needed D-Bus interface as developed during that Coherence/KDE sprint. There is only a run-time dependency, and it is optional. It will fail silently if no Coherence server with a compatible version or one at all can be started/reached.
Currently the private wrapper lib named KUPnP is simply duplicated between kdebase/runtime and now kdelibs/solid, need to find out a solution. And like KDNSSD does not expose what backend it uses, KUPnP is not bound to Coherence, so it could be adapted if there are proper solutions, without any problems.

KUPnP, both as backend for Solid and the network:/ kio-slave, needs Coherence v0.6.5 at least (including the D-Bus service file, some packages miss this, e.g. the default one for OpenSUSE 11.2, instead use the Coherence package “python-coherence” from obs://build.opensuse.org/GNOME, from software.opensuse.org).

See here a screenshot of solidhardwarebrowser listing the UPnP devices found in the local network next to the ones provided from the HAL backend for the built-in hardware. The Coherence upnp-inspector at least shows the same πŸ˜‰

Spoiler: Currently there is not anything you can do with the Solid devices from
the KUPnP backend, besides getting them listed in solidhardwarebrowser. But
it’s a start and might inspire other people to join efforts, hint… hint…

E.g. think about if you want to tackle a GSoC project for Amarok to work on a kio-slave to access the content of UPnP MediaServers.

Advertisements

3 thoughts on “Metalworks for UPnP devices at Tokamak4

  1. sure the Solid is working just fine already, the thing that stings with it is the fact you still need to install the obsolete HAL (instead of DeviceKit-* that the rest of the systems will use (xorg-server-1.8+ anyway)) to get all the device recognition.

    I know it’s already been worked on but I can’t find anything mentioning the time schedule when I can get rid of it, KDE:Solid is the last bit that still depends on it…

    sure you loose device polling with udisks, but on the other hand the amounts of I/O goes down as well, so the batteries celebrate all advances on that front. πŸ™‚

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s