Multi-band wireless communication in Renode with Zolertia Firefly

Published: October 28th, 2020

The increasing availability of small, machine learning-capable devices is adding fuel to the growth of IoT, enabling ML tasks to be distributed from the cloud closer to where the data is produced. However, the development of complex edge-to-cloud ML systems which may involve many small, wirelessly-connected nodes, requires a new approach to designing and configuring complex systems of devices that enables testing at scale in a repeated and deterministic manner.

Our open source simulation framework, Renode, provides a new, more collaborative and software-driven methodology helping developers address challenges related to developing multi-node systems. Apart from providing a flexible, plug-and-play simulation environment for building single real-world ML-capable devices, it can also simulate wireless connections between system components, including devices that feature multiple radio interfaces, such as the Zolertia Firefly.

Wireless communication in Renode

Zolertia Firefly

Providing a solid base for systems that combine short- and long-range networking, the popular dual band radio board, Zolertia Firefly features two radios that can be used to bridge networks operating at the frequencies of 2.4 GHz (CC2538, with an integrated MCU) and 868 MHz (Sub-GHz - CC1200). The integrated Arm Cortex-M3 MCU sports 512KB flash and 32KB RAM, while the relevant resources such as operating systems (Contiki and RIOT), firmware libraries and drivers are available as open source.

Zolertia FireFly

For some time now, the board can be simulated in Renode with an off-the-shelf demo, and it can be used as a showcase for our framework’s capability to provide a seamless virtual environment for developing and easy testing of complex, multi-protocol systems featuring wireless (or wired) connections.

Simulating wireless (and wired) communication in Renode

Renode can simulate various network-oriented communication protocols, such as TCP/IP, RPL/UDP, Thread, 6LoWPAN, OPC-UA, Time-Sensitive Networking. Thus, it allows the user to easily connect nodes in a virtual wireless network and to create multiple virtual wireless media. With Renode you can also simulate a distance-based loss and other custom signal loss functions between devices that communicate within the network as well as control the position of the emulated nodes and the properties of the wireless medium itself. What is more, our simulator allows you to connect a virtual (wired) network with a host network in the "real world" via the TAP interface and send communication packets between them.

To enable inspection of the network traffic between the emulated nodes and/or the host network, Renode has been integrated with Wireshark - an open source network packet analyzer, providing a convenient way to check if your implementation of the protocol is correct. Also, Continuous Integration-driven and scalable automatic testing of protocols is possible thanks to Renode’s integration with the Robot Framework for an even more effective debugging flow.

As an easy and quick starting point, we have prepared some tutorials that will help you set up wireless communication in Renode and begin your development.

Supercharge your IoT and TinyML development with Renode

Antmicro’s open source simulator provides a wide range of plug-and-play building blocks that can be used to create virtual, test-driven environments for designing multi-node IoT systems and developing edge AI software on them. It can simulate your system on many levels, including peripherals and sensors such as thermometers, humidity sensors, accelerometers, microphones etc. Renode’s integration with the Robot Framework, Jenkins and GitHub Actions enables a powerful Continuous Integration-based testing flows that we have been using to help customers develop better-tested products faster. If you design complex IoT systems and want to boost your development and testing methodology with Renode, get in touch with us at contact@antmicro.com.

Go back