Welcome back to this special edition of 2-Bullet Tuesday, where we’ll share useful tips and awesome stuff sent in by Omega2 users all around the world. Check out creative projects and tutorials that will supercharge your IoT development! We’ve got some awesome news for you this week, and to celebrate we’re having a sale on the Onion Online Store! Get 15% off all Docks, Expansions, & Kits until next Tuesday!
Favorite Project
Our favorite project this week is an Omega2-controlled Solar Pool Heater made by Dan O’Brien. Dan’s backyard pool only gets a few hours of sun per day resulting in pretty chilly water, so he took matters into his own hands and built a solar-based heating solution.
He used his Omega2+, Expansion Dock, and the Relay Expansion to control a pump that pulls water from the pool into a heating coil. The water is then held in the coil to be heated by the sun, and then pumped back into the pool. It’s all controlled by a bash script, with the length of time the pump is active being fine-tuned by Dan.
Nice project Dan, with summer around the corner, we’re pleased to see the Omega being used for such a noble cause 🙂
Omega Tip
Instead of a tip, we have some very exciting news: a brand new release of the Omega’s OS is available today! There’s a lot of goodies in this release, but we’re most excited about the WiFi Warp Core, Onion’s very own enhanced WiFi driver for the Omega2 platform.
We’ll walk you through the some of the coolest new features and show you how to update our Omega to this latest release. Let’s dive in!
Automatic Network Switching
All modern phones, tablets, laptops automatically connect to known WiFi networks as soon as they come into range without any intervention by the user. With the WiFi Warp Core, we bring this same seamless experience to IoT computers.
The Omega holds a list of configured or saved networks, and the Warp Core takes care of the rest; connecting to known networks when they come into range (based on priority) and automatically reconnecting if there’s a network interruption.
Overall, this feature frees the user from manually managing the WiFi connectivity of the device and provides a more stable and resilient WiFi connection.
The list of configured networks can be updated and new networks can be added using the command line, using the browser-based Setup Wizard, or using the browser-based Onion Console.
Automatic Network Encryption Detection
Continuing with our theme of WiFi connectivity with less user intervention, the WiFi Warp Core also takes care of detecting the specifics of a network’s security configuration. When adding a new network to the list of configured networks, all three tools (command line wifisetup
tool, Setup Wizard, and Onion Console) use the Warp Core to automatically detect the network security (WPA2, WPA, WEP, or open), all the user has to do is enter the correct password.
During the connection process, the Warp Core will detect the specifics of the network security (like the encryption ciphers: AES vs TKIP vs mixed) without any additional input from the user. As long as the password is correct, the connection will be established.
It should also be noted that this feature brings support for WPA2 TKIP encrypted networks to the Omega2 platform.
Support for Hidden SSIDs
That’s right, we have more WiFi features to tell you about! The Warp Core allows the Omega2 to connect to hidden WiFi networks (networks that do not broadcast their SSID).
To connect to a hidden network, you’ll need to know the network’s SSID (name), BSSID (the router’s MAC address), and password (of course) ahead of time. Let’s say the network is named myHiddenNetwork
, the BSSID is 12:34:46:78:9a:bc
, and the password is something creative like networkKey123
, the following command should be run on the Omega’s command line:
wifisetup add -ssid 'myHiddenNetwork' -bssid '12:34:46:78:9a:bc' -encr psk2 -password 'networkKey123'
This will add the network to the list of configured networks and the Warp Core will take care of the rest!
General Improvements
Take a look around in the new firmware, you’ll see that there have been quite a few improvements. We’ll list a few and let you discover the rest:
- The Setup Wizard and Console have been updated for compatibility with the WiFi Warp Core and should be more flexible with network names and passwords that have spaces and non-alphanumeric characters
- Note that the Warp Core is not compatible with WiFi networks that have unicode characters in the network name
- The Setup Wizard is now more stable and communicative with the user throughout the process
- The
onion
ubus calls have been updated for compatibility with the updatedwifisetup
tool - Can now successfully install kernel modules using
opkg
SPI Improvement
We’ve also spent some time working to alleviate the low transfer and data corruption issues on SPI transfers that some users have experienced. We’ve surmised that these issues are due to a hardware limitation of a component used in the Omega and were brought to light by how the SPI kernel driver uses the hardware. Based on this, we’ve identified a kernel driver workaround that, while it cannot fix the limitation, significantly improves the performance of SPI transfers.
We’ve confirmed full-duplex transmissions do not function properly. However, with the help of a kernel driver patch based on the work of an Onion Community user, the speed of half-duplex transmissions can be greatly improved. With this patch, it is now possible to transmit up to 4096 bytes before the Chip Select de-asserts. This is a huge improvement over the previous limitation of 16 bytes and opens the door to using a variety of SPI peripherals. We’ve observed that some SPI devices still show data corruption but others do not. We’ll continue to look into this down the road, but for now, we’re pleased with the improvements we’ve seen:
After passing through a gauntlet of validation on our end, the kernel driver update has been included in the new OS release, so you’ll be free to experiment with the SPI performance gains on your own device! We’ve also added the Python spidev
module to our package repo. With spidev
, you’ll be able to write userspace Python programs that that interface with SPI devices.
To install the module, run the following:
opkg update
opkg install python3-spidev
See the GitHub repo for module usage instructions and an example script.
EDIT Sep 22, 2023: Updated installation command to install Python3 spidev module, as Python2 is now legacy
Installing the New Release on Your Omega
At this point, you probably want to try all this out for yourself, and we can’t blame you! To install this latest and greatest release on your Omega2, run the following command:
oupgrade --latest
To successfully run the
oupgrade
command, you must connect to the Omega’s command line with SSH or via Serial. The command will not work from the Terminal app on the Console.
Make sure to note that this is the latest
release, and not the stable
release. As such, proceed with care which brings us to the next section.
Reporting Issues
If you find any odd behavior, are having issues, or want to give us some feedback on the new release, please post on our Community Forum. We value all of your responses, good and bad, at the end of the day, we want to make an amazing product and can only do so with your help.
Happy hacking!