Earlier this year, the team of Electric Imp joined Twilio IoT. From their decade of experience building IoT solutions, we learned that customers love the convenience of a platform approach – whether it’s managed security, the reliability of over-the-air (OTA) firmware updates, or the powerful device lifecycle management features. Some customers, however, expressed the desire to maintain their ability to write native code on the device.
We knew that there had to be a way to re-imagine the IoT developer experience, while leveraging the vast expertise of the Electric Imp team and the existing sophistication of their platform. So we set out to create the IoT platform we’re launching today: Twilio Microvisor.
Microvisor is a different approach to IoT development, and the existing Electric Imp platform will remain a highly relevant solution for many. Before diving into the specifics and the key differences between the two, let me explain our thought process.
Creating an IoT device application is hard
We know that building a new IoT product is no easy task. Whether you’re coming to grips with new hardware or software, struggling to understand the latest in cryptography or security, battling with wireless connectivity, or noodling over the trickiness of fail-safe upgrades – there are many necessary and complicated bits of the product that very few end customers ever get to see. This means that your development team needs to be much bigger than if it were just working on the cool product features that your marketing team have listed out in the requirements doc.
This is particularly true on the device side – very little of the code that you need actually relates to the unique value of the product that you are trying to build. As an embedded development team, you are instead responsible for writing tons of code for things that actually lie below the waterline. These IoT features are essential and definitely necessary, but actually non-differentiated in terms of your product – they are what’s needed to connect your device, and keep it connected, but not what makes your solution your solution.
When it comes to starting an IoT device project, your development team faces a dilemma. You don’t want to reinvent your development style or flow or the tools you are using, instead you want to reuse the code from previous products that you’ve made. But you also need to deliver a robust, stable, secure connected device as efficiently and quickly as possible.
There are many ways of starting IoT product development, but it essentially boils down to a choice of either building your product on top of an integrated IoT platform, or developing and maintaining the majority of those non-differentiated components yourself (“DIY”).
Build on a traditional integrated IoT platform
With an approach based on a tightly integrated platform, you tend to get a simpler development experience. It’s often quicker and easier to get started. The platform often takes care of several of those necessary pieces – be it OTA firmware upgrades, network connectivity, and in some cases security concerns.
However, this approach is not without its limitations. You need to learn the unique specifics of the platform, whether they are a new operating system, a new programming language, or the way the platform abstracts the hardware for you. The platform may not do everything you need and you are then waiting for the platform provider to add features just for you.
You are somewhat locked in, and probably need to bend your views to align with those of the platform provider. The design decisions the platform has made may not be entirely aligned with your own development objectives and in some cases, you can find yourself constrained by the platform in the future.
In this way, an integrated platform-based approach – while allowing you to get started easily – could come up short. It can be not granular enough in approach, and might not enable you and your product to be as expressive as you might want to be.
Build everything yourself
On the other hand, if you take on the responsibility for developing all of the system components yourself, the problem is now really granular, and you get to be super expressive. You get to choose everything from the hardware platform, the connectivity stack, the operating system, the programming language, etc. Hey, you can even write your own network protocol stack if you want to…
However, the challenge with the DIY approach is that you and your team now need to be an expert in everything. Do you have the time to do all of the research and learn about all of those below-the-waterline pieces as well as deliver the product features yourselves?
The likely case here is that something gives – be it security, quality, or product release date – in order to get the product up and running. And as mentioned before: none of this work differentiates you in your probably highly competitive market – in fact, it will slow you down.
Build the Twilio Microvisor way
Twilio Microvisor is a brand-new, managed IoT device builder platform comprising both device and cloud components.
It includes the best of the two above-mentioned approaches in an entirely new way. It attempts to find the balance of the expressiveness and openness that you need and to give you, the developer, the freedom to build what you want – without being tied to a proprietary platform’s way of doing things. At the same time, it provides those necessary system components to build upon (the below-the-waterline pieces), guaranteeing security and performance, and thereby shortening the development time.
We make use of the Arm® TrustZone® technology to separate the system component pieces out. TrustZone has been available for a while for high-end processors, but was only recently released for embedded microprocessors.
Some examples of components we separate out on Microvisor are secure boot, OTA firmware upgrades, and secure communications. Thanks to this architecture, you will retain the freedom to make all those design choices for the main application components that matter: the operating system, the programming language, the developer environment and tools.
This is an entirely new approach for developing embedded IoT devices. Microvisor marries the convenience of the integrated platform approach with the freedom of the DIY approach.
The big IoT challenges that Twilio Microvisor solves
A lifetime of security updates
Microvisor is always there and running on the device – Twilio takes care of updating the microvisor itself (the hypervisor living on the device), and the security patches and updates needed to securely connect a device to the public Internet.
You can rest assured that long after the device has shipped, the latest security needs will continue to be met through a lifetime of software updates. And there’s more: all of this is included in the one-time per-device fee, which essentially means that you can calculate the cost of a lifetime of device security easily at the outset of your IoT project.
Reusing existing code and your choice of embedded OS
Because the microvisor is separated from the main firmware / application code running on your microcontroller, you get full control of the processor and the hardware interfaces – just as you would on a non-connected microcontroller.
This means that you can choose any operating system that you want to use, just as you would normally do. Any code and thus device functionality that you already have is immediately applicable because the usage is just the same as it has always been. Microvisor will not force you to rewrite your code – instead, you can access the IoT networking functionality through simple API calls, exposed via language bindings. For the private beta, we are looking to provide bindings for C, C++, and Rust, and additional ones can be added by you.
You can interactively and securely debug your code from anywhere in the world, using the tools and debuggers you already know.
This is unique and new in the embedded world. Imagine a customer reporting an issue happening on a device on the other side of the world, and you can’t reproduce their issue on your desk. In the past, this either meant sending a replacement, or connecting locally to find the root cause. Now you can connect to – and debug – the device in the field that’s experiencing those problems.
You need to know that the code that you have pushed to the device in the field is as you intended it to be and has not been tampered with along the way. Secure boot ensures that the device firmware and application is signed and trusted so it always runs just as you expect.
Over the air firmware updates
The fail-safe over the air upgrader ensures that you can never brick a device with a bad deploy – even if you make a mistake and deploy code that crashes immediately at power on.
The microvisor is always running alongside your code, which means that you can simply push new code and be confident that the device will recover.
Whilst your application can make its own connections directly to cloud services if you want, we also allow you to route your data over our secure managed tunnel, minimizing the amount of work needed to build secure, long-lasting IoT applications. This makes the most of the limited resources and power that you have available at the edge or in the device itself.
To summarize, all of the above-mentioned features bring the agility of the cloud to the edge and to IoT development itself. This is the developer freedom that speeds up your “time to value”.
Pricing and roadmap
Want to get started with Microvisor?
We are starting with a closed, private beta.
You can register for the private beta if you are at the beginning of an IoT project and would like to explore this new architecture with us. At this early stage, Microvisor already includes support for secure boot, over-the-air firmware updates, secure communications, and cellular connectivity.
We are planning for a public beta in early 2021. As we progress through 2021, we will be adding support for more hardware options, cloud middleware, as well as expanding connectivity further (Wi-Fi and Ethernet).
How much will it be?
True to Twilio’s pricing philosophy of being easy, transparent and accessible, we will be announcing a simple “one fee for 10 years of service." Detailed pricing will be shared when the public beta release of Microvisor is available.
Where can I learn more about Twilio Microvisor?
To learn more about Microvisor, have a look at this additional content:
- Watch IoT GM Evan Cummack’s product launch keynote from the 2020 SIGNAL conference
- Watch lead IoT architect Hugo Fiennes dive deeper into the Microvisor architecture
- Watch a short Microvisor hands-on demo
- Sign up for our launch webinar on November 5, where we will dive deeper into the differences between Microvisor and Electric Imp
- Register for the private beta
It’s time to build!
Jonathan Williams is a Product Manager for IoT and Wireless at Twilio, Having worked in both the semiconductor industry as well as in cloud video communications, he has a focus on building developer friendly platforms that solve real world problems. When not working on bringing IoT products to market, he can be found tinkering with his 1970’s rally car. Jonathan can be reached at jowilliams [at] twilio.com