Here we outline the steps involved in integrating Anyfi.net software in your product. By following these steps you should be able to put together a proof of concept integration on most platforms in just a few days. If you prefer to learn by example check out the reference integration for CarrierWrt, in the form of a pull request on GitHub.
Anyfi.net software can be integrated in many different types of networking equipment. Choose the type most appropriate for your product.
Before you integrate Anyfi.net software you typically want to create a feature branch or similar in your firmware build system.
For the reference integration we simply created a fork of the CarrierWrt repository on GitHub.
The first thing you need to do is add a step to your firmware build process that downloads and installs Anyfi.net software. Anyfi.net software comes pre-built for a number of hardware platforms and software environments and can be downloaded from a URL composed from the GNU target name.
In the reference integration the software is downloaded by the OpenWrt build system according to the instructions in the anyfi package Makefile.
Anyfi.net software consists of two user space daemons; the radio daemon anyfid and the tunnel termination daemon myfid. They must be started and stopped at the right time. The anyfi.sh file from the reference integration provides an excellent example of how to do this in an OpenWrt environment.
The Anyfi.net radio daemon anyfid needs a low level interface to the Wi-Fi driver. Linux 3.12+ (or compat-wireless 2013-11-05+) provides this interface out of the box. Anyfi Networks can provide improved Wi-Fi drivers for chipsets from Broadcom, Qualcomm Atheros, Ralink and Realtek. Contact email@example.com for more information.
For a complete example of how to integrate the software in an OpenWrt environment please see commit 17d2028: Integration of Anyfi.net software from the reference integration.
The web configuration interface of a residential gateway Wi-Fi should be extended to let the end-subscriber enable and disable the functionality, without exposing them to all the configuration details. In the reference integration we add a single checkbox providing the end-subscriber with an easy way to opt-out of the service.
It should also be possible for the Internet service provider to configure the functionality using a remote management protocol such as TR-069. We recommend that all relevant configuration parameters, both on the radio and on the service side be exposed.
Note that the web interface does not use the term 'Anyfi.net' to describe the functionality. Operators will typically want to use Anyfi.net enabled residential gateways with their own Controller and are free to brand the feature as they like. For this reason it's especially important that the integration provides a means for the operator to configure the 'controller' property.
Anyfi.net software includes a file called TESTING that contains some simple manual integration tests that you can run through to make sure everything works correctly. It shouldn't take more than an hour or two.
When integration tests are all green you can merge the integration back to mainline.
For the CarrierWrt reference integration we simply created a GitHub pull request containing integrations for all product types and merged the changes in commit e3e3a4e7.
Tests need to be rerun when you have updated the Wi-Fi driver, made more extensive changes to the the Wi-Fi subsystem or when you update the Anyfi.net software itself. These should all be relatively rare events.