MiniUPnP Project

Home | Downloads | Compatibility list | libnatpmp | MiniSSDPd | xchat upnp patch | Forum

Last modified on February 6th 2013.

Update History

September 2005: a beta version of the client library is available here.
October the 6th: a much cleaner form of the client library is available here.
October the 7th: I found a workaround for a bug of my old LinkSys router and improved the sample program. From now you can check if there are new files into this directory.
May the 24th 2006: I finally got the time and motivation to make miniupnpd work on my OpenBSD box. I will release it once I clean up the code a bit.
June 11th: João Paulo Barraca sent me a patch to add three new UPnP methods to miniupnpc.
June 21st: Craig Kadziolka sent several patches for using miniupnpc under MS Windows. Find the result here.
June 30th: Thanks to Craig Kadziolka, the miniupnpc library is now working well under MS Windows. Well I hope so :)
July 1st: I compiled the miniupnp client sample under windows with MinGW. You'll find it on the download page. João Paulo Barraca sent his modified sources of the client. I have put them directly on the download page, I thought it forked too much from the initial code. See his web page here.
July 6th: I modified the miniUPnP client in order to be able to send command to both WANCommonInterFaceConfig and WANIPConnection services. As usual, find the update on the download page.
July 13th: I finally took the time to put the daemon on the download page. If you are using OpenBSD, go and get it, I need your feedback. A linux version will be release... when I get the time ! If you want to help me in this task, send me an email.
July 31st: The client was changed to fix some compatibilities problems. The daemon is now correctly responding to SSDP request with the right ST: line.
September 9th: The miniUPnP client has been released for around one year now and there is still plenty of work to do. Thanks to Seth Mos from pfSense pass rules are now added. I have just added proper support for redirection descriptions in the daemon. New versions of both the client and the daemon are available on the download page.
September 18th: Thanks to Rick Richard, miniupnpd is now sending SSDP notify and byebye messages. Check also the new -u and -o options. Thanks to all contributors ! There is various bugfixes and updates so check the download page.
September 29th: I studied the UPnP forum documentations to improve the XML descriptions.
October 20th: The client has been improved for compatibility. URL fixing is fixed (!) and now the discover process searches fist for "InternetGatewayDevice" and if none is found for root devices. As some devices do not respond to request specific to "InternetGatewayDevice" it was needed. Thanks to Louis Croisez, Wayne Dawe and Raymond Richmond for their feedback and patches.
October 23rd: Changed the Makefile of miniupnpc, added install target. I've been working to make a patch to xchat allowing NAT traversal for DCC using the miniupnpc library. Contact me for more informations. Thanks to Ryan Wagoner I also fixed the XML descriptions that was causing winXP to send unrecognised SUBSCRIBE commands.
October 26th: The patch for xchat is available on this page.
October 27th: Thanks to Michael van Tellingen, miniupnpd is now writing its own pid to /var/run/ (-P command line option can be used to change the file).
October 28th: For the daemon : Ryan Wagoner fixed a nasty typo that prevented WinXP from showing the status and implemented uptime. I worked on a memory leak. As usual, find the updated version on the download page.
October 29th: a small fix in the daemon (thanks to valgrind) and a new option to enable log in pf.
November 6th: miniupnpd is now able to report system uptime, total bytes/packets sent/received and bitrates.
November 11th: I'm actively working on the linux/netfilter version of the daemon. In the meantime, I have fixed some bugs. The daemon is now working on bigendian machines such as SPARC64
November 12th: The linux/netfilter version is allmost finished now. Rules are added but not deleted. Go on the download page and have a look. I need your feedback to finish the work !
November 17th: The linux/netfilter code now has nearly the same functionnality as the BSD/pf code now. As my gateway at home is running OpenBSD, I cannot myself test the linux code in real usage situation, so I'm very interested by your feedback.
November 23rd: I compiled and tested the daemon on a Linksys WRT54G router device running the OpenWRT linux distribution. You can get a precompiled binary on the download page. If you can help me to build a complete ipkg package, please contact me. I also worked on some space optimisation in the daemon and several bug fixes. A new option is available to the upnpc sample client thanks to Alexander Hubmann.
November 29th: miniupnpdxxxx.tar.gz archives now include all required files to compile, no more need to have miniupnpcxxx.tar.gz as well. An ipkg package has been made from the openwrt version of miniupnpd. This package is available from the X-Wrt project.
November 30th: I added the support for presentationURL into miniupnpd.
December 7th: 1.0-RC1 release of both the daemon and the client. Many changes in the build process and configuration of the daemon.
January 12th 2007: The work has continued on the miniupnp daemon since the RC1 release. Thanks to Ryan Wagoner, code style has been cleaned up and log messages have been modified. Ryan also added the handling of the /etc/miniupnpd.conf config file. I fixed a nasty bug in the linux/netfilter implementation. Be sure to download the latest version on the download page.
January 17th 2007: 1.0-RC2 release of the daemon. Contains some cleanup.
January 27th 2007: both the client and the daemon released today with a lot of features. External IP address is now updated at run time, the XML description is improved to please WinXP buggy UPnP support, QueryStateVariable was improved too and I added some security checking in the AddPortMapping method. You can now prevent some ports to be redirected or specify which host have the right to receive a redirection.
January 31st 2007: 1.0-RC3 release of both the daemon and the client library. The client should now work better and faster with most UPnP IGDs, even bugged ones. Thanks to the work of Ryan, the robusteness of the client to wrongly formed UPnP SOAP requests has been greatly improved. I also cleaned up stuff in the configuration file parsing and added a target in the makefile to generate a proper UUID for the daemon.
March 17th 2007: 1.0-RC4 release. miniupnpd code cleanup, fix in the linux/netfilter implementation when "internal" and "external" ports are not the same, changed the pf rule "rdr" to "rdr pass".
April 12th 2007: small miniupnpd release to add setsockopt(s, SOL_SOCKET, SO_BROADCAST ...) for broadcasting socket.
April 15th 2007: I opened a Forum for user to talk.
May 10th 2007: I found and fixed a bug in the netfilter implementation of the daemon that prevented DeletePortMapping from working correctly. Download the version 1.0-RC5 to get it fixed !
June 12th 2007: 1.0-RC6 Release of both client and daemon with improvements and bugfixes. A Python module is now available for using miniupnpc functionalities from python code. Redirection descriptions are now stored in the linux/netfilter flavour of the daemon.
July 20th 2007: 1.0-RC7 release of the daemon for linux 2.6.22 compatibility.
August 29th 2007: after my monthlong vacation, 1.0-RC8 release of both daemon (trick to please XBox 360, improved and the client (fixing python module for python older than Python 2.4).
September 23rd 2007: In order to reduce discovery time in UPnP enabled applications, MiniSSDPd was developped for use in conjunction with MiniUPnPc. MiniSSDPd receive and process SSDP announces broadcasted on the network by UPnP devices so when an application starts, it does not need to do the whole discovery process. Some minor changes were also made to MiniUPnPd and MiniUPnPc.
September 27th 2007: 1.0-RC9 release : Makefiles have been improved to support different installation directories. MiniUPnPc now compiles to both libminiupnpc shared and static library. MiniUPnPd support for multiple LANs has been greatly improved. MiniUPnPd is now able to clean it's ruleset periodically by removing unused rules.
October 12th 2007: 1.0-RC10 release : Darren Reed added SunOS/Solaris support and an ipf implementation to MiniUPnPd. To allow this, the code was reorganized for better support for different OS or firewalls. MiniUPnPd now correctly checks its commandline. MiniUPnPc : a memory bug was fixed and a function in order to use a known in advance UPnP IGD was introduced. The Makefile has been improved. man pages were added to all subprojects.
October 25th 2007: 1.0-RC11 release introducing experimental NAT-PMP support in MiniUPnPd. MiniUPnPc is now able to use a specific network interface instead of the default.
November 3rd 2007: I'm currently improving the NAT-PMP to get something usefull. If you want to test it, download today snapshot of MiniUPnPd sources, don't forget to enable the #define ENABLE_NATPMP directive in config.h file, compile and enjoy :)
December 3rd 2007: You can now test NAT-PMP support in MiniUPnPd by using libnatpmp.
December 14th 2007: 1.0-RC12 release. MiniUPnPd has now a fully functional NAT-PMP support. It stills need to be enabled by editing config.h. pf code doesn't generate filter rules by default anymore. This behaviour can be changed by editing config.h. Small bugs where fixed in MiniUPnPc and code is now compiled with -fPIC option. In an attempt to improve compatibility, SOAP requests are now sent using HTTP/1.0 instead of HTTP/1.1.
December 20th 2007: At the request of a user having made so much efforts to build and run MiniuUPnPd on its ADSL router, I added a cache mechanism to linux getifstats() function in order to avoid parsing /proc/net/dev too often. It is available in miniupnpd-20071220.tar.gz. Don't forget to edit config.h in order to enable it. Here is the topic on the forum.
January 3rd 2008: 1.0-RC13. On the daemon side : It is now possible to set a queue with the pf filter rule. It is usefull if you use ALTQ for your traffic. NAT-PMP was bug fixed and it is now possible to enable/disable NAT-PMP support at runtime. On the client side : adding upnperror.c/.h to provide strupnperror() in order to translate UPnP error codes to a human readable string.
January 27th 2008 : Release of miniupnpd-1.0 ! At least ! This version add a "secure" mode, fixes a bug in the config file parser and some other minor bugs.
February 21st 2008 : Release of miniupnpc-1.0. I hope this version fixes most compatibility problems people were facing. On the daemon side, work is going on to improve compatibility. Testing miniupnpd-20080221.tar.gz or newer sources is advised.
April 25th 2008 : Release of miniupnpd-1.1. Major changes with 1.0 are : UPnP Eventing implementation, code cleanup, improved compatibility, tag support for PF rules. To check for new releases, you can use this RSS feed :
July 4th 2008 : Robbie Hanson made the work to have libnatpmp and miniupnpc compiling and working properly under Win32 using Mingw32. libnatpmp should also work under Solaris now and compile with compilers other than GCC. I should release miniupnpc-1.1 soon.
July 14th 2008 : Sorry, the miniupnpc-1.1 does not install properly all .h. I was also informed that it doesn't compile without changes on Mac OS X. I'll try to fix all that. By the way, if pure C don't suit you, you should have a look at TCMPortmapper (Cocoa) or DotNetMApper (.det). That guy is doing a great work with miniUPnPc : read his blog ! Somebody also written a ruby gem wrapping MiniUPnPc. So whatever is your environement, Cocoa, .net, Python, Ruby, you can use the MiniUPnPc library.
October 6th 2008 : After a quiet summer, the MiniUPnP project is alive again ! I'm preparing the release of new versions. In the meantime, you can download and use miniupnpc-20081002.tar.gz which has the "sameport patch" integrated, minissdpd-20081006.tar.gz which is now usefull for UPnP devices too : see the MiniSSDPd page for more informations, miniupnpd-20081006.tar.gz which detect more correctly ipf or pf, uses MiniSSDPd for managing SSDP searches, which netfilters chain can be configured, etc.
January 29th 2009 : Some cleanup in Makefiles, and small fixes to MiniUPNPd. If you need to have both MiniUPnPd and Mediatomb running on the same machine, you should follow instructions given here in the forum.
December 4th 2009 : Sorry, I've not been updating this changelog/history page this year. Just one word to tell version 1.4 is out. And thanks to Michael Trebilcock MiniUPnPc now compiles under Amiga OS using the official AmigaOS4.1 SDK or GeekGadgets (for AmigaOS 3).
April 2010 : I'm currently working on the OpenBSD 4.7 support by MiniUPnPd. Also check the compatibility improvements in MiniUPnPc.
January 2011 : Happy new year and enjoy miniupnpd-1.5 and miniupnpc-1.5. MiniUPnPd was bugfixed and is now compatible with OpenBSD >= 4.7. It includes preliminary support for the version 2 of the UPnP Internet Gateway specification. MiniUPnPc-1.5 has a new HTTP code fully compatible with HTTP/1.1 and supporting chunked transfer encoding. Many other improvements were made.
July 2011 : release of MiniUPnPc-1.6 and MiniUPnPd-1.6. A lot of work on IPv6 support and IGDv2. Support of lease duration, etc.
May 2012 : release of MiniUPnPc-1.7 and MiniUPnPd-1.7. More work on IPv6 and IGDv2. MiniUPnPd now implements WANIPv6FirewallControl.
February 2013 : release of MiniUPnPc-1.8 and MiniUPnPd-1.8. Improvements to UPnP standards compliance, especially when MiniUPnPd is compiled with the UPNP_STRICT config option. For better security, HTTP peer and SSDP source IP are checked to belong to a LAN. It should help to avoid SSDP and SOAP services to be exposed to the internet.

Thomas Bernard
Use the forum or contact me by email: miniupnp _AT_ free _DOT_ fr

Valid XHTML 1.0 Transitional Valid CSS!