GUPnP is an elegant, 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. It provides the same set of features as libupnp, but shields the developer from most of UPnP's internals.


The GUPnP framework consists of the following libraries:

  • GSSDP implements resource discovery and announcement over SSDP.
  • GUPnP 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-AV is a collection of helpers for building AV (audio/video) applications using GUPnP.
  • GUPnP-DLNA is a small utility library that aims to ease the DLNA-related tasks such as media profile guessing, transcoding to a given profile, etc.

Official bindings currently exist for the Vala language only. Unofficial bindings also exist for PHP (provided by Alexey Romanenko). Bindings to other languages are provided through gobject-introspection metadata.

Also available is a collection of developer tools utilising GUPnP and GTK+.



Download source tarballs of releases from here.


No matter how perfect a software is, there are always bugs in it. If you find any, file it here.

Mailing List and IRC

Mailing-list: mailing list IRC: #gupnp channel on

User counter

If you use GUPnP, we would appreciate it if you could bump-up our user counter by simply clicking on "I USE THIS" button at our openhub page.


Development takes place GNOME git repository that can be viewed here:

To clone the latest development version run the following command:

git clone git://

Where PACKAGE_NAME is gssdp, gupnp, gupnp-av, gupnp-tools, gupnp-vala or gupnp-dlna depending on which components you need.

To submit patches please use Bugzilla. There is git-bz to simplify this task.


GUPnP follows the same coding style as Rygel except:

  • All the rules that can't apply to C language (e.g the rule about use of 'this' operator and error declaration).
  • We follow 8-space indentation.
  • Single line if/for/while/etc blocks must not be enclosed in '{}'.
  • Don't hand-optimize null checks, leave that to compiler. Instead of 'if (some_variable)' you write 'if (some_variable != null)'


Projects/GUPnP (last edited 2015-09-28 22:55:41 by AndersJonsson)