Home | Downloads | Compatibility list | libnatpmp | MiniSSDPd | xchat upnp patch | Search | Forum
English | Français
Last modified on September 27th 2011.
If you experience problems with this web site, you have alternatives :
Mirror 1 : free.fr | Mirror 2 : tuxfamily.org
The UPnP protocol is supported by most home adsl/cable routers and Microsoft Windows 2K/XP. The aim of the MiniUPnP project is to bring a free software solution to support the "Internet Gateway Device" part of the protocol. The MediaServer/MediaRenderer UPnP protocol (DLNA) is also becoming very popular but here we are talking here about IGD. MiniDLNA is a UPnP Media Server using some UPnP code from MiniUPnPd.
The Linux SDK for UPnP devices (libupnp)
seems too heavy for me. I want the simplest library possible,
with the smallest footprint and no dependencies
to other libraries such as XML parsers or
HTTP implementations. All the code is pure ANSI C.
Compiled on a x86 PC, the miniupnp client library have
less than 20KB code size. For instance, the upnpc sample program
is around 25KB.
The miniUPnP daemon is much smaller than any other IGD daemon
and is ideal for using on low memory device for this reason.
It also uses only ONE process and no additional thread, does not
use any system() or exec() call,
and therefore keeps system resources usage
very low.
The project is divided in two main parts :
MiniUPnPd was first developped
on OpenBSD 3.0+ with pf.
You can see some of the work I have done to
integrate with pf on this page.
As pf is also available under FreeBSD,
guys at the pfSense project
have ported miniupnpd to this system. Now it must be possible
to compile and run on every platform where pf is available.
The daemon is now also available for linux 2.4.x and 2.6.x using
netfilter. It is possible to make it
run on router devices running OpenWRT.
Thanks to Darren Reed,
we are currently working on an
IP Filter (ipf) implementation.
Darren also added support for Solaris/OpenSolaris.
The ipfw port is available for MacOS X.
For some reasons, it may be not the good solution for you to use
the code from the MiniUPnP project directly.
As the code is small and simple to understand, it is a good base
to take inspiration for your own UPnP implementation.
The KTorrent
UPnP plugin in C++ is a good example.
If you are wondering which home router is working with the MiniUPnP client, you can find the answer here. In fact, you are more likely to help me fill the list by sending me an email :)
The usage of the MiniUPnP client library is useful
whenever an application needs to listen for incoming connections.
Examples : P2P applications, FTP clients for active mode,
IRC (for DCC) or IM applications, network games, any server.
The typical usage of UPnP IGD capabilities of a router is a file tranfert using MSN messenger. The MSN Messenger software uses the UPnP API of Windows XP to open port for incoming connection. To mimic the MS software, it is a good idea to use UPnP as well.
I have made a patch for XChat to show how the miniupnp client library can be used by an application.
Transmission, a free software BitTorrent client is using miniupnpc and libnatpmp.
UPnP and NAT-PMP are used to improve internet connectivity for devices behind a NAT router. Any peer to peer network application such as games, IM, etc. can benefit from a NAT router supporting UPnP and/or NAT-PMP. By following this link (http://www.microsoft.com/windows/using/tools/igd/default.mspx) Microsoft Users can test their internet connectivity.
The latest generation Microsoft XBOX 360 and Sony Playstation 3 game machines use UPnP commands to enable the online play with the XBOX Live service and the Playstation Network. It has been reported that MiniUPnPd is correctly working with the two consoles. There is more details about this on the forum.
It is now available here.
You can download the source code on the download page or retreive the sources on github.
If you get any issue or would like some feature to be implemented, go in the Forum.
I'm waiting for your comments and patches ! Thank you in advance for your feedback.
The best gift you can make is to submit a patch !