Amid all the fun and exercise of snow shoveling following the heavy snowstorm Nemo, I was able to finish and check in a new firmware update for OpenSprinkler. This new firmware, numbered 1.8.3, is a relatively minor update. You don’t have to update if you don’t need the new features explained below. There are two main changes:
The second change is a new Device ID option which assigns the last byte of the controller’s MAC address. This new option allows you to run multiple controllers on the same network by giving each controller a different MAC address. Note that OpenSprinkler uses a software MAC, and is programmed with exactly the same MAC on every unit. I know, this sounds lame, but it’s just because I haven’t spent any time to figure out how to flash a random MAC address. Since most users won’t have more than one controller on the same network, it is not a serious issue. With the Device ID, you can easily customize the MAC address, albeit only the last byte. So again, if you find this feature useful, go ahead and upgrade to 1.8.3.
There are a couple of other minor changes. For example, the network status icon has been removed, instead, the LCD now displays no status icon if the network is on, and a question mark if the network is lost. Also, the Run-Once Program data is not stored in EEPROM any more; instead, you have to type in the water duration each time you start the Run-Once program. I know, this sounds a bit inconvenient, but I had to do it to make space for the new features. If you want to upgrade to 1.8.3, please follow the Firmware Update Instructions.
A slight annoyance I found recently is that I couldn’t compile the OpenSprinkler source code any more on my upgraded OS — Linux Mint 14. It turns out that Mint 14, based on Ubuntu 12.10, installs avr-gcc 4.7.2 by default, which apparently broke some of the Ethernet library code. This is quite annoying. My temporary workaround is to install Linux Mint 13 (based on Ubuntu 12.04 and installs avr-gcc 4.5.3 by default) on a VirtualBox in the host system, and then I can compile the code again in the virtual OS. I haven’t found an easy way to downgrade avr-gcc 4.7.2 to 4.5.3, so I will just stick to this option for now. Apparently next time I should really transition to use Arduino 1.x, which comes with its own avr-gcc compiler so I don’t have to worry about the OS installed avr-gcc breaking old code.
OK, that’s all. Back to snow shoveling tomorrow!