Monday, April 27, 2009

GUPnP 0.12.7 released

GUPnP 0.12.7 released.

Changes in this release:

- Chain up dispose and finalize in GUPnPDeviceInfo
- Use a dedicated SoupSession for event handling
- Fix device icon fallback logic
- Fix user agent string
- Sanity check UDN while parsing

Download source tarball from:

Contributors to this release:

Sven Neumann
Ross Burton
Zeeshan Ali

GUPnP on windows

I have been asked several times in the past if gupnp is portable enough. I always told them that I don't know for sure but the only problem i see is the low-level networking bits. Nobody really showed interest in actually trying it out on windows but then came Jens Georg. He managed to make gupnp stack and network-light working on windows within a weekend, despite the fact that some of his hours were wasted due to firewalls being enabled after a reboot and him forgetting about it. He has a small video of network-light running nicely on win32 on his blog.

Friday, April 17, 2009

My first Javascript app

Last night I tried to make a small app/script in javascript (gjs) and it actually worked. :) Here is the code:

const GLib =;
const GUPnP =;
const Mainloop = imports.mainloop;

// This doesn't start any threads
GLib.thread_init (null);

let context = new GUPnP.Context ({ main_context: null,
host_ip: null,
port: 0

let cp = new GUPnP.ControlPoint ({ client: context,
target: "ssdp:all"

function onDeviceProxyAvailable (cp, proxy) {
log (proxy.get_friendly_name ());

// Tell us when there is a new device available
cp.connect ("device-proxy-available", onDeviceProxyAvailable);

// Search and listen for UPnP resources on the network
cp.set_active (true); ("0");

Sunday, April 12, 2009

GUPnP AV 0.4 and GUPnP Vala 0.5.4 released

GUPnP AV 0.4 released.

New in this release:

- Watch for empty DIDL-Lite nodes.
- Escape the URIs before putting them into DIDL-Lite XML.
- The '.' must be omitted from duration if fraction part is not included.
- Be more lenient when parsing DIDL-Lite XML fragments.
- Don't require the DLNA profile string.
- Try to guess the DLNA Profile if not provided and put "*" in the whole 4th
field of protocolInfo if our guess work fails.
- Make sure 4th field of protocolInfo is completely in compliance with DLNA
guidelines. This only implies one change in the API: enum dlna_play_speed is
replaced by play_speeds, a GList of allowed play speeds as strings.
- Use '1' and '0' to express boolean properties in DIDL-Lite XML.
- Other minor fixes.

All contributors to this release:

Henrique Ferreiro GarcĂ­a
Peter Christensen
Sven Neumann
Zeeshan Ali (Khattak)

Download from here:

GUPnP Vala 0.5.4 released.

A new minor release mainly to update the gupnp-av bindings.

Download from here: