Configuring Wireless on Headless Devices

There is nothing cool about a robot that needs wires plugged in. Actually it used to torture me to madness because these robots are packed pretty full of wires and it’s not easy to get at the USB and HDMI ports. So, this makes running ubuntu in an embedded device a real pain when first setting up. Many robots are running linux on low cost itx boards these days and they all suffer from the same security hassle with initial network configuration. You just unboxed your robot and want to drive it, but how to take control? VNC access or SSH Terminal? Need to get it on the LAN first! To do away with this headache we wrote a very simple wrapper for the linux network manager. We hope other developers will use this project to create other products than can run totally headless.

access point manager for ubuntu
Similar to the gopro and the raspberrypi, our device will default to being it’s own access point when needed (initial use or network failures). Simply use your phone to scan for routers, choose yours and supply the password. Now here is a graphical user interface written by me (pictured left). devoid of flair and almost depressing. colin retouched it to include a few capital letters but I’ll change that back when he’s not looking. ubuntu has an applet (mn-applet) and command line tool for setting up wireless connections but this functionality needed to be exposed via a web browser. it’s actually surprising that isn’t built into ubuntu already. This is the most basic java servlet that you’ll ever see, but there is a lot going on behind the scenes. with this server running you can now delete and create connections on your robot. the server will go back into access point mode if the network fails to respond to a ping.

We included instructions on how to have the stripped down jetty web-server start on boot with root access, but it is really just a few lines of script:

This project is maintained on bitbucket