A UPnP Home, Step 2

May 22nd, 2010 § 5 comments

Part 1.  Ordering a hardware UPnP-AV Renderer

The Vera I ordered in “A UPnP Home” was to act as a bridge between UPnP and appliances around the house.  This still left my AV needs somewhat unfulfilled as most UPnP capable devices are UPnP consumers, but do not offer themselves up as fully fledged renderers (AVTransports).  For example, the PS3 can find my Rygel mediaserver and play content from it but I cannot control the PS3 with Zhaan.  Only the PS3 can control the PS3 (lame).

I’ve been looking for a real UPnP mediarenderer for a while now, and finally pulled the trigger on one the other day.  The most common device in this market is the “Popcorn Hour 100”.  There is another version, called the eGreat EG-M34a which is what I purchased   Its the same hardware just in a different package.  It calls itself a “Network Media Tank”, which seemed a bit odd but sure, I’ll go wit hit.  It promised to be controllable remotely via UPnP and also boasts support for every format known to man.

Part 2.  Testing out the Network Media Tank

I plugged in the NMT with an HDMI cable to my TV, plugged in the ethernet and power, switched to HDMI input and…. nada.  I pulled open my handy dandy GUPnP universal control point and low and behold the NMT shows up on the network.   I told it to start playing some music and whoosh, my TV came to life.  (I have to wonder how other people get started with this thing, those without their own control points).  Once the thing turned on it did eventually show me a UI on the TV for browsing my media shares.

So thats the good news, I can start playing music via UPnP.  The eGreat NMT does the most basic thing we need from a renderer, cool.  But how does it fare in responding to the rest of the UPnP spec?  Answer: really, really poorly.  Here are a list of problems I have found so far which inhibit this NMT from being a “good” UPnP renderer

  • The “Pause” action is mysteriously missing from the UPnP device description and the NMT does not respond when a Pause is sent.  Pausing via the remote works fine.  I guess I could hack around this by noting the current time when the user hits pause, send a Stop(), then when the user hits Resume I could hit Play and then Seek.  That is really lame though.
  • The GetPositionInfo() command always returns a CurrentURIMetaData with Title, Artist and Album being “Unknown”.
  • GetPositionInfo()  always returns a song length of 00:00 making it impossible to draw a progress bar.
  • There is no RenderingContorl service so no UPnP volume control.

The good news is these are all very easy issues to fix in software.  My hunch is this whole thing is Linux based, so I am hoping the source code will turn up someplace and I’ll be able to hack in these features and load up some custom firmware.

Part 3.  Testing the Vera / Home appliance automation

The vera was an interesting case.  You can tell this is a startup — plain white box with no branding, the box itself is all white and the Vera logo is clearly a sticker somebody put on by hand.  I’m not one to nitpick based on aethestics though, so I plugged it in and booted it up.  My experience:

  • The instructions say to try and go to which didn’t work
  • I found, via UPnP multicast, that the device was (I could’ve also asked my router’s dhcp table to find it).
  • Going to the device via the browser (at 1.111) worked perfectly.  I got nice totally unhelpful video tutorials.
  • Most of the online documentation for Z-Wave device additions is old and outdated.  I guessed at how to add a new z-wave device (by holding the z-wave button on the vera and on the new device) and got lucky and the appliance showed up.
  • GUPnP control point noticed a new device under the Vera device, with a SetTarget() function.
  • SetTarget() was able to successfully enable and disable my lights!

From here I will probably build some kind of Maemo application which will either just change Scenes in the vera (the vera is capable of storing appliance configuration in prepackaged scenes which can be switched between) or I might even just build a UI around SetTarget()).  Either way — Vera works perfectly (after some rough edges).

Conclusion So Far:

The jury is still out on finding a good, cheap UPnP-AV Media Renderer.  The eGreat is OK, but has some serious UPnP software deficiencies.  The Vera looks like it will solve all of my UPnP/Appliance needs though.  Overall I am happy for now, and am excited to hack together some Maemo apps to work with the Vera and to try and find software workarounds via Zhaan to make my eGreat more usable.

p.s. I had a pretty terrible sinus headache when writing this article, so I apologize if my prose is less exciting and more grammatically terrible than usual.