blogimg/blog_87.jpg

Olen tutustunut viime kuukausina UPnP:n ihmeelliseen maailmaan. Perusajatus on hieno: jokainen kodin laite voi sen avulla löytää toisensa ja ohjata toisiaan, kunhan ne vain kytketään IP-verkkoon (kuten Ethernet tai WLAN). Käytäntö ei ole aivan yhtä kukkainen, sillä harva UPnP-laite tuntuu todellisuudessa toimivan yhteen saati edes löytävänsä toisiaan.

Hauska esimerkki on D-Link DSM-320 MediaLounge, joka on televisioon kytkettävä mediasoitin. Sen pitäisi löytää kodin UPnP-mediapalvelimet ja esittää niiden tarjoilemaa audio-, video- ja stillikuvasisältöä television ruudulla. WLAN-moodissa laite ei toimi ollenkaan, sillä se sekoaa jo ennen mediaserverien löytymistä. Ilmeisesti testaus on jäänyt hieman puolitiehen, sillä WLAN-tuki toimii kuulemma vain D-Linkin oman tukiaseman kanssa.

Ethernetillä DSM-320 löytää useitakin UPnP-palvelimia, mutta esimerkiksi Linuxin GMediaServer saa sen tukehtumaan ja buuttaamaan itsensä jatkuvassa luupissa. Toinen vastaava palvelin, Linux-uShare, toimii joten kuten, mutta jostain syystä musiikin kuuntelu ja videoiden katselu jämähtää aina noin 3 minuutin jälkeen ja DSM-320 palaa alkutilaansa alkaen etsiä mediapalvelinta uudelleen.

Ilmeisesti Windows Media Connect on ainoa DSM-320:n kunnolla tukema UPnP-palvelin, mikä on ironista, sillä WMC:ssä on puolestaan omat ihmeelliset puutteensa. Se ei pysty esimerkiksi jakamaan verkkolevyllä sijaitsevia tiedostoja lainkaan, joten Linuxissa olevat mp3:t jäävät kuuntelematta.

UPnP-sovelluskehitys on oma tieteen lajinsa. Intel on julkaissut osittain avoimen koodin UPnP-kirjaston, jolla voi kehitellä sovelluksia C:llä tai C#:lla .NETissä. Kirjastosta tuntuu kuitenkin puuttuvan kaikenlainen järjellinen dokumentaatio, eikä siihen löydy juuri mitään viittauksia edes Googlella.

Intelin alkuperäistä käsialaa on myös open sourcena julkaistu libupnp eli Linux SDK for UPnP Devices. Sitä en ole vielä ehtinyt kokeilemaan.

UPnP on sinänsä vanha keksintö, ja nämäkin kirjastot ovat pääosin jääneet vuoteen 2003 päivityksissään. Tässä valossa ymmärtää, miksi DLNA:n kaltainen instanssi on haluttu perustaa interoperabilityä parantamaan, sillä UPnP ei nykymuodossaan riitä yhteensopivuuden takaajaksi. Toisaalta Microsoft puskee jo UPnP:n seuraavaa sukupolvea Vistan myötä, joka ilmeisesti tulee perustumaan SOAPiin ja Web Serviceihin. Avainsanoja ovat ainakin PnP-X ja DPWS.