Reviewing the Omega2 IoT node

Onion Omega2 - a $5 Linux computer for IoT
Onion Omega2 – a $5 Linux computer for IoT

On November 23rd I was contacted by the Head of Marketing & BD of Onion, producers of the Omega IoT nodes. He asked whether I “would be interested in writing a blog about our product, the Omega2, the world’s first IoT Computer and a $5 Linux development board with built-in WiFi.

About a week before Christmas I received a packet including an Omega2 Plus ($9) and an expansion dock ($15) for review. Thanks Onion! They came without strings attached. Hence, I’m free to write here whatever I want.

The Onion Omega2

The (public) Onion Omega story started on on March 31st, 2015 with the launch of a very successful Kickstarter campaign. Clearly targeted for the IoT market the Omega was a lot more than just another IoT node hardware with built-in WiFi. The hardware is a lot more powerful that an ESP8266 for example. Its 400MHz CPU and 64MB memory mean a different league.

From the start it ran a “full” Linux environment based on OpenWRT and BusyBox. Hence, you are not constrained to whatever programming language the hardware/firmware producers deemed most appropriate. Assuming you find your way around the Linux commands for the command line the Omega gives you an environment you’ll feel at home right away.

The Onion Omega can be programmed with high-level programming languages such as Python, Javascript (Node.JS), PHP, Ruby and many others. This means you can start hacking away at your ideas without needing to review your C pointer syntax or worrying about setting up cross-compilation environments.

From day 1 Onion allowed you to seamlessly integrate any Omega into the Onion Cloud. It allows the Omega to be accessed anywhere in the world quickly and securely. You can tinker with your Omegas right from the browser which is pretty important once the devices are deployed in the wild. I guess you can see why the Omega campaign was so successful. The whole package is a pretty compelling offer.

The Omega2 is the successor of the Omega – I’m sure you figured that, sorry. Its Kickstarter campaign in summer 2016 was even more successful than the one for the original Omega; it was funded 45x!

Difference between Omega and Omega2

The improvements are best explained with a table I stole from the Omega2 Indigogo campaign site. Being used to $2-$5 ESP8266 modules I think it’s fantastic Onion was able to lower the Omega2 price to $5 which is very competitive.

Compare Onion Omega to Omega2
Omega → Omega2: 50% more CPU for a quarter of the original price, well done!

Getting started with the Omega2

When I started with the Omega2 after Christmas I didn’t have the Omega2 documentation to work with because that was only published on December 30th. The “Documentation” link on lead to the original Omega wiki. Onion “fixed” it in the meantime.

The first thing I noticed is that it takes about 1min to fully boot and then initialize WiFi. Yes, that is 60(!) seconds. More bare-bone modules like the ESP8266 are up in a matter of milliseconds and connected to the WiFi 1-2s later. It really does feel like I’m booting a Linux server 🙂

When the Omega2 first boots it starts a WiFi access point to which you can connect from e.g. your laptop. You would then run the setup wizard in the browser. Since I didn’t know the Omega2’s WiFi password (the original Omega WiFi didn’t have one) I couldn’t connect to it and had to run the setup wizard from the command line.

I wasted a bit of time to figure out what the Omega2’s MAC address is. Finding the MAC address was necessary because my regular WiFi access point only allows whitelisted devices. So, I connected to the Omega2 over serial and ran ifconfg -a. In theory that lists all interfaces. On the Omeag2 I saw all except the one it would use to connected to your WiFi. The name of that interface is apcli0 and it only shows up once you’re actually connected.

What to do with the Omega2

You might remember the times when an ordinary PC had less juice than an Omega2. Seriously, with more than half a gig Hz CPU and 128MB RAM there’s an abundance of possibilities. Let’s not forget this thing is running an embedded but “full” Linux system!


As hinted in the intro you can put the Omega2 into a dock (several are available). That’ll give you the foundation to enhance the Omega2s capabilities with expansions. They work either like stackable shields or as regular USB adapters. Here’s a cute animated GIF from their crowd funding campaign.

Docks and extensions for the Omega2

Onion sells stackable expansions for relays, PWM (servo), ethernet, OLED, and a proto board. Through USB you can add GPS, audio, and Bluetooth. And there are 3rd party expansions for cellular and ControlEverything.

A big downside of the Omega2 is that their pin spacing/pitch is 2.00 mm rather than 2.54 mm (0.10 inch). This means that it won’t fit onto a regular breadboard w/o tinkering. So, if you order an Omega2 you’re likely going to (need to) order one of the Onion docks as well.


An important benefit of running Linux is that the Omega2 can be programmed with whatever language you want.

Again, this is Linux. While Onion provides custom-made C and Python libraries/modules for I²C, SPI and their expansions you can use pretty much anything that runs on OpenWRT (Node.js, PHP, Ruby, etc.).

The old Onion wiki has a section dedicated to how to implement sample projects. Like to read temperature and humidity from a DHT22 sensor with PHP rather than with C? Sure, no problem.


One aspect that isn’t prominently mentioned anywhere on the Onion marketing pages or in the manual is how you feed the Omega2.

The module of course has a GND and VCC pin (3.3V) and the docks have MicroUSB jacks. The power dock even has a Li-Po connector. Only that will you give true autonomy as it allows you to easily connect a battery pack to your Omega2. The excellent documentation shows you how to power the device without a dock but it does so using a DC barrel jack and a DC power adapter. So, again you’re cord-bound.

Yet, what it doesn’t say anywhere is how much current it typically draws. I found a support ticket that claims it’s around 200mA. This possibly explains why Onion assumes you to be feeding the Omega through a cable rather than from a battery pack – unless it’s huge.

Comparison with ESP8266

It is difficult for me to compare the Omega2 to an ESP8266. A bit like comparing apples to oranges I feel. The Omega2 is a complete IoT module while the ESP8266 is just a low-cost WiFi chip with a full TCP/IP stack and an MCU. If at all you need to compare it with one of the many ESP8266 modules or devkits.

However, despite that a few aspects stick out nonetheless:

  • CPU clock speed
    The Omega2 runs at 580MHz while an ESP8266 operates at 80MHz by default (can be overclocked to 160MHz).
  • Memory
    Omega2 has 64MB or 128MB, the ESP8266 has 64 KB instruction RAM and 96 KB data RAM. An external SPI flash chip can hold at most 16MB.
  • OS/firmware
    Omegas runs OpenWRT/BusyBox, a full embedded Linux. For the ESP8266 there are two official SDKs from its producer: a callback-based NON-OS SDK and a FreeRTOS-based RTOS SDK. There are a number of firmwares based on either of the two, NodeMCU (of which yours truly is a maintainer), Arduino and MicroPython to name the most popular ones. Hence, you won’t run a real OS on the ESP8266.


IoT means different things for different people. I tend to think of IoT nodes as resource-constrained and usually autonomous modules which transmit data wirelessly. Hence, an IoT node doesn’t necessarily have to communicate over WiFi, it might just as well use GPRS, BLE, or LoRa.

The Omega2 is a powerful flavor or an IoT node – an extremely powerful one. It’s hardly what I would call “resource constrained”. Thus, I’m not sure it even qualifies as an IoT node. If you only attach a few sensors to it and send readings to some host every few minutes or hours you’d be wasting a lot of resources. The Omega2 is built for more. Turning it into a WiFi router would be a more appropriate use case.

Leave a Reply

Your email address will not be published. Required fields are marked *