/autoconfig

Ubiquity autoconfig server w/ captive portal

autoconfig

This was Burning Man's 2016 autoconfiguration tool, which configured participant radio's to use the Burning Man WiFi network.

It's written in Python using Flask and a MySQL backend.

It is designed to work as follows:

  • Participant resets radio to default configuration.
  • Participant Radio Connects to BM WiFi.
  • Jailer Service (jailer.py) connects to Participant Radio, changes default IP from 192.168.1.20 to 192.168.1.1xx. Jailer.py is run as a regular process seperate from Flask App.
  • Participant loads any web page, Captive Portal web page is displayed asking participant for information.
  • The information is used to lock the Participant radio to a specific BM sector radio as well as well as provide contact information to the BM IT team to help diagnose network problems.
  • Participant submits information, a configuration is created for the specific radio model, and that configuration is pushed onto the radio.
  • Radio resets automatically, and should not be able to connect to BM WiFi. Connection is provided via Ethernet using DHCP for connected computers.
  • Participants are encouraged to share the connection per the WiFi guidelines. ( 2.4 Ghz Only, low power, open network w/ camp name in SSID)

Run for local dev with:

export FLASK_APP=./server/app.py
flask run

Use a wsgi container for production. See contrib/autoconfig.wsgi for an apache2 example

From a default-ish Debian 8 install:

apt-get install -y unzip python-flask python-yaml python-dumbnet python-paramiko python-MySQLdb mysql-server libdumbnet1

Note that Debian renamed libdnet to libdumbnet. Install as appropriate to your distribution

mysql -u root -proot -e "create database playawifi"
mysql -u root -proot playawifi < schema.sql

Example get device strings:

deviceName=PowerBeam M5 300,deviceId=24:A4:3C:F2:51:25,firmwareVersion=XW.ar934x.v6.0-beta10.29223.160601.1516,platform=PowerBeam M5,deviceIp=192.168.1.20
deviceName=NanoBridge M5,deviceId=00:27:22:50:03:24,firmwareVersion=XM.ar7240.v5.6.8.29413.160715.1613,platform=NanoBridge M5,deviceIp=192.168.1.20
deviceName=NanoBeam 5AC 19,deviceId=80:2A:A8:24:D1:51,firmwareVersion=XC.qca955x.v8.0-beta15-cs.31340.160729.1158,platform=NanoBeam 5AC 19,deviceIp=192.168.1.20

Example firmwares:

PowerBeam M5 300 = XW.v6.0.30097.161219.1705.bin
NanoBridge M5    = XM.v6.0.30097.161219.1716.bin
NanoBeam 5AC 19  = XC.v8.0.1.32631.170202.1626.bin