Release 0.4.0

Today I released version 0.4.0 of HSMM-Pi. It’s mostly a bug-fix release that addresses a couple of critical issues.

The most significant issue is #23, which is the result of a command in the HSMM-Pi installation script that ugprades all existing packages on the base Raspbian image.  At some point, this upgrade step began to include updates that break HSMM-Pi (namely WiFi adapter support and OLSRD).  I removed the upgrade command, so only new packages that are required for HSMM-Pi are installed.  An added benefit is that the installation will be faster.  I tested HSMM-Pi with Raspbian 2013-09-10 (http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2013-09-16/) and verified that it worked as expected.

Another issue (#33) is compatibility with Broadband Hamnet v.1.1.2.  The BBHN distribution has begun to use the OLSRD secure plugin with a key that doesn’t pass validation when entered into the HSMM-Pi web interface.  I relaxed the validation rules so that the BBHN key can be used, and verified that the HSMM-Pi nodes all showed up on the BBHN node (and vice-versa).  The default BBHN secure key is gBpRdG7Crp5by9xw

The Google Plus group for the project has been very active, so I strongly recommend sending any questions there.  Any issues should be filed on the Github project.

Thanks again for all of your interest & support!

Mesh Connectivity LED

There’s a recently added issue on the Github project requesting the ability to display mesh connection status on an LED or other visual indicator.  I’ve been wanting to add such a feature for a while now, and today I had some time to knock it out.  I wrote a PHP script that retrieves the OLSRD neighbors list, checks them using ping, and then updates the color on a BlinkM module to indicate the number of active neighboring nodes.   Because the script is not directly related to HSMM-Pi, I placed it in a separate Github repository of its own: olsrd-blinkm

Here are a few photos showing the Blinkm in a green state (e.g. 2 or more active neighbors):

20131018-164948.jpg

20131018-164956.jpg

HSMM-Pi v0.3.0 Available

Today I created the v0.3.0 release tag of the HSMM-Pi project.  The upgrade steps from v0.2.0 are pretty straightforward:

  1. cd ~pi/hsmm-pi
  2. git pull
  3. git checkout v0.3.0
  4. sh install.sh

Here are a few of the changes in the release:

  • Advertise mesh services when the wired adapter is in WAN & LAN mode (previously only in LAN mode).
  • Use raw sockets to retrieve OLSRD mesh statistics instead of using CURL (the OLSRD plugin does not produce HTTP 1.0/1.1 responses, so CURL is not the right tool for the job).
  • Added a WiFi scanning action (Issue 8) to show nearby wireless networks.
  • Derive the default WiFi IP address from the wireless adapter MAC address in a fresh installation similar to the behavior in Broadband-Hamnet.
  • Better support for installation on the Ubuntu 12.04 on the Beaglebone.

Please file any defects or features requests in the Issues section of the Github project.  Thanks!

Feature Requests

I’ve received a lot of great requests for features and feedback from folks posting comments to this blog – thank you so much!  There’s also an Issues area of the project on Github where you can post feature requests or defects.  Please create an issue whenever you find a problem with the project or have an idea for how it can be improved.  There are so many great ways that we can make HSMM-Pi ever better!

Demo at the East Bay Mini Maker Faire

I will be hosting an HSMM-Pi booth at the East Bay Mini Maker Faire in Oakland, California on October 20, 2013.  The event is associated with Make magazine, and will be a smaller regional version of the grandaddy Maker Faire held in San Mateo, California each year.  I plan on producing a field demo video that can played on loop on a display in the booth.  I’ll also have some HSMM-Pi nodes and large 15 dbi omnidirectional antennas present for visual effect.  This is a great opportunity to introduce HSMM mesh networking to a lot of people who might still think of HAM radio as being just CW & phone.

Are there any aspects of HSMM mesh networking that you think would be helpful to share with the general public (not necessarily just HAMs)?

Enabling the Hardware Random Number Generator

UPDATE (9/16/2014): I encourage people to read Bruce Schneier’s post regarding surreptitious tampering of computer chips, which includes hardware random number generators.  It’s nearly impossible to know that a hardware RNG hasn’t been tampered with at the time of manufacture to facilitate a backdoor.  Therefore, it might be worth sticking with a software RNG, as is the default behavior in Raspbian.

The Broadcom System on a Chip (SoC) in the Raspberry Pi features a hardware random number generator that can be used as a high-quality source of random numbers.  This might be worth enabling if you’re using OLSRD in a secure mode.  The secure mode causes the node to exchange cryptographic messages with other nodes in the mesh network.  Strong cryptography benefits greatly from the use of a high quality random number generator.  Also, the system load should decrease since the task of producing random numbers is offloaded to a dedicated hardware device.

Here’s a link to a quick how-to with the steps for enabling the hardware random number generator on the Raspberry Pi:

http://vk5tu.livejournal.com/43059.html

Follow-up on USB Wifi Adapters

UPDATE (2013/09/02): I found that the wireless adapters were no longer able to run in Ad-Hoc mode due to recent changes to support the Beaglebone Black device.  The installation steps on the Github project page have been updated to specify a commit tag (v0.2.0) when checking out the HSMM-Pi project to ensure you’re getting a stable copy of the code.

My initial recommendation for USB WiFi adapters was an inexpensive model that could be found on Amazon for about $7.  They worked fairly well initially, but in the last week I’ve been unable to get the 3 that I own to work at all.  I am no longer recommending them for use with Raspberry Pi models because of their instability.

I purchased the USB WiFi adapter sold by Adafruit which is advertised as being compatible with the Raspberry Pi.  These adapters work flawlessly, and use a different chipset from the model I recommended earlier.  The Adafruit adapter costs about $11 and does not accommodate an external antenna; but these negatives are offset by the adapter being stable.

My apologies to anyone who has had problems with the Amazon no-name adapter.  And it would be great to hear from anyone who has had problems but managed to get the adapters to be stable.

Support for Beaglebone Black running Ubuntu 13.04

I’ve been very pleased with the performance and support for the HSMM-Pi project on the Raspberry Pi platform, but have been curious to know how well it would work on other platforms. I received my Beaglebone Black (BBB) board in the mail on Friday and didn’t waste any time installing Ubuntu on it. The BBB is a small single-board computer similar to the Raspberry Pi. One of the compelling features of the BBB is that it has 2GB of onboard flash memory in addition to the memory card slot. I can see this bringing the cost and complexity down in an installation with several BBB nodes. You can install and run the OS from the onboard flash memory which is much faster than the SD memory card. It’s also easy to reflash the OS onto a BBB node; just pop in a memory card with the OS, hold down the Boot button while applying power, and the BBB gets re-flashed. It’s also got a 1GHZ ARM processor that is noticeably faster in comparison to the Raspberry Pi. And being priced at $45, it will be a strong competitor with the $35 version B Raspberry Pi. Lastly, the ARM processor features an open-source design that is preferable to the closed design of the Broadcom processor used on the Raspberry Pi.

I installed the Ubuntu 13.04 flash image dated 2013-08-24. The installation was pretty straightforward: write the image to an SD card, insert the card into the unpowered BBB, hold down the boot button on the BBB, apply power, then wait till the 4 surface-mounted LEDS are lit.

Once Ubuntu was installed, I SSH’d into the BBB and began installing HSMM-Pi. This was the first time I’ve tried the installation of HSMM-Pi on a clean Ubuntu system other than the Rasbian distribution meant for the Raspberry Pi. I encountered a few surprises:

  • The chkconfig utility to enable/disable system services is not available on Ubuntu 13.04. The sys4-rc-conf program should be used instead.
  • The make utility for processing Makefiles is not installed by default. That was a shocker.
  • There was one spot in the install script where the ‘pi’ user account was referenced, but that account is obviously not present in a non-Raspbian distribution.
  • The Beaglebone uses the ARM CPU architecture which supports position-independent code (PIC). The OLSRD codebase generated some compilation errors related to the use of PIC. I resolved this by changing the OLSRD build steps in the HSMM-Pi install script to pass the -fPIC flag to gcc while compiling.
  • Must include an explicit ‘auto eth0’ statement in the network interface configuration file to ensure that the Ethernet adapter starts automatically on boot.
  • The resolv.conf file is actually a symbolic link to a file in the /run ditectory. The link had to be replaced with a regular file that could be managed by HSMM-Pi.

I have corrected all of these issues in the ‘install.sh’ script that is checked into the HSMM-Pi Github repository. This means that HSMM-Pi is available for use with:

  • Raspberry Pi nodes running Rasbian (based on Ubuntu 12.04)
  • Beaglebone Black nodes running Ubuntu 13.04

This is great news for HSMM, as well as the HSMM-Pi project. More device platforms and versions of the Ubuntu OS should give people more options for building HSMM mesh nodes with versions of Linux that will be supported well into the future.