If you're using UPnP mode in PeakHour to talk to your router and you know or suspect the reporting is inaccurate, we recommend going through the steps below to test your router by installing third-party UPnP client called MiniUPnP.

MiniUPnP is a free, light-weight UPnP client. You can use MiniUPnP to poll your router's UPnP stack and get a report of what information is it sending back.

Note regarding Apple Silicon (M1) powered Macs

Note that Homebrew is not yet fully supported on Apple Silicon (M1) powered Macs. If you attempt these instructions on an Apple Silicon-powered Mac, you may run into unforeseen issues.


To install MiniUPnP on your Mac, follow these steps:

  1. Open Terminal (type 'Terminal' into Spotlight)
  2. Ensure the Xcode command-line tools are installed:

    xcode-select --install
  3. Install HomeBrew:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    brew doctor

    (Note: if you prefer to use a different package manager (such as MacPorts), skip this step.)

  4. Install miniupnpc:

    brew install miniupnpc

Once upnpc is installed, run the following command to query your router:

upnpc -s

If your router is responding to UPnP requests correctly, you should see output similar to this:

upnpc : miniupnpc library test client. (c) 2005-2013 Thomas Bernard
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://192.168.1.254:49000/igddesc.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1
desc: http://192.168.1.1:2189/rootDesc.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1
Found valid IGD : http://192.168.1.254:49000/upnp/control/WANIPConn1
Local LAN ip address : 192.168.1.18
Connection Type : IP_Routed
Status : Connected, uptime=689041s, LastConnectionError : ERROR_NONE
 Time started : Sat Dec 7 16:38:43 2013
MaxBitRateDown : 12842000 bps (12.8 Mbps) MaxBitRateUp 1031000 bps (1.0 Mbps)
ExternalIPAddress = 202.200.200.201
Bytes: Sent: 891855735 Recv: 2321636851
Packets: Sent: 3929125 Recv: 4125142

Here are some tips to interpretting the output:

  • Most important is the Bytes line. This is what PeakHour needs in order to calculate the information it displays (graphs, current upload/download speeds and usage).
  • Run the command a few times over a few seconds and observe any changes to the Sent: and Recv: Bytes numbers.
  • If the Bytes line is 0 or stuck around 4,294,967,295, then it's likely that your router has a bug with UPnP or it isn't properly implementing the specification.
  • (Advanced) If the Bytes values appear to be incrementing but you suspect they're not correct, do the following:
    • Note the values then run again a few seconds later and note the new values.
    • Subtract the first from the second and divide by the number of seconds you waited. This will give you the average bytes/sec.
    • (Optional) Use a site like speedtest.net to generate a known amount of throughput.