Mi-Fi Monitor is an invaluable utility for owners of Novatel Mi-Fi Hotspot devices, developed in-house as our first commercial application.

Mi-Fi Monitor iOS

Technical details

The core of Mi-Fi Monitor is a single API library that handles communicating with the Mi-Fi devices. They all have a documented API that returns a simple string of key/value pairs.

However, the API endpoint is simply not present at all in some firmware versions, and some wireless carriers have chosen to alter it so that their version of the API returns non-standard replies that violate the API documentation. Mi-Fi Monitor was updated repeatedly to handle specific device quirks, and in some cases we obtained firmware for users Mi-Fi devices so they could update them and use Mi-Fi Monitor.

Aside from API interactions, Mi-Fi Monitor for iOS is a basic UITableView with some custom cells, and a separate page with a live graph, rendered by the CorePlot library.

Mi-Fi Monitor iOS

Challenges

The API endpoint that Mi-Fi Monitor communicates with on Mi-Fi devices is simply not present at all in some firmware versions, and some wireless carriers have chosen to alter it so that their version of the API returns non-standard replies that violate the API documentation. This required us to obtain API response samples from multiple devices, running multiple firmware versions to get an idea of which ones would pose a problem for users. As a result of all that testing, Mi-Fi Monitor was updated repeatedly to handle specific device quirks, and in some cases we obtained firmware for users Mi-Fi devices so they could update and then use Mi-Fi Monitor.

Final notes

Mi-Fi Monitor for iOS has been so successful with users that it almost immediately caught the attention of several executives from Novatel Wireless, manufacturer of the Mi-Fi devices. Some of them were and probably still are actively using Mi-Fi Monitor as a companion for their own products. At one point a partnership was being discussed to release the app under their own brand.

You can read more about it on the product page.