GUPnP

GUPnP is an object-oriented open source framework for creating UPnP devices and control points, written in C using GObject and libsoup. The GUPnP API is intended to be easy to use, efficient and flexible.

The GUPnP framework consists of the following components/packages:

  • GSSDP: The low-level library implementing resource discovery and announcement on the network through SSDP protocol.

  • GUPnP: The core library that implements the UPnP specification: resource announcement and discovery, description, control, event notification, and presentation (GUPnP includes basic web server functionality through libsoup). GUPnP does not include helpers for construction or control of specific standardized resources (e.g. MediaServer); this is left for higher level libraries utilizing the GUPnP framework.

  • GUPnP A/V: A small utility library that aims to ease the handling and implementation of UPnP A/V profiles.

  • GUPnP DLNA: A small utility library that aims to ease the DLNA-related tasks such as media profile guessing, transcoding to a given profile, etc.

  • GUPnP IGD: A library to handle UPnP Internet Gateway Device port mappings.

  • GUPnP Vala: Vala bindings for GUPnP libraries.

  • GUPnP Tools: Free replacements of Intel UPnP tools, that use GUPnP. They provides the following client and server side tools which enable one to easily test and debug one's UPnP devices and control points:

    • Universal Control Point: a tool that enables one to discover UPnP devices and services, retrieve information about them, subscribe to events and invoke actions.

    • Network Light: a virtual light bulb that allows control points to switch it on and off, change its dimming level and query its current status. It also provides a simple UI to control all the network lights available on the network.

    • AV Control Point: a simple media player UI that enables one to discover and play multimedia contents available on a network. It is strictly a control point and therefore does not have any playback capabilities of it's own and relies on external UPnP MediaRenderer devices for actual playback.

    • Upload: a simple commandline utility that uploads files to known MediaServers. Use Universal Control Point for discovering the MediaServers.

The GUPnP framework was born out of frustration with libupnp and its mess of threads. GUPnP is entirely single-threaded (though asynchronous), integrates with the GLib main loop, and provides the same set of features as libupnp while hiding most of the UPnP internals through an elegant object-oriented design.

GUPnP is free software. All libraries are released under the GNU LGPL, while GUPnP Tools are licensed under GNU GPL.

You should use GUPnP whenever you need your code to communicate with any UPnP or DLNA devices. Examples of such devices includes Sony Playstation 3 and Bravia model TVs, Samsung TVs and phones, Microsoft XBox and all modern router etc. The list of such devices is huge and its increasing.

Apart from dealing with existing UPnP devices, GUPnP can very effectively be used to easily create custom home network solutions where devices/services are able to discover and interact with each other without any configuration from user.

For comprehensive information on GUPnP, please visit the project home page.