We are thrilled to announce that we just released a new firmware version for Crazyradio 2.0. This version implements a new USB protocol, called inline mode, that makes it much better at handling swarms of CrazyflieTM. The following measurement, made by Wolfgang Hönig, shows the improvement in latency scaling when using Crazyradio 2.0 v5.1 with the latest Crazyswarm:

Visit to the Multi-Robot Systems LAB in TU Berlin
This work started with a visit to Wolfgang’s lab in TU Berlin. Wolfgang is the original developer and maintainer of Crazyswarm 2, and has seen first-hand the problems Crazyradio 2.0 had with flying swarms. After a week of work together we made enough progress that we almost had Crazyradio 2.0 working with Crazyswarm.
The “almost” part was because Crazyradio 2.0 exhibits a bug when sending high frequency of broadcast packets mixed with uni-cast packets. This is primarily visible in Crazyswarm when flying at least 8 Crazyflies in a MoCAP system. The inline-mode implemented in 5.1 actually side-steps this bug.
What is inline mode
Crazyradio has quite a long legacy, the USB protocol dates from the original Crazyradio which was implemented to control Crazyflie 1. At this time, the main use-case was to fly a single Crazyflie. So, the protocol was optimized for connecting a single link. Setting link properties like radio channel and radio address uses USB-setup transaction, which are useful side-channel commands provided by the USB protocol. These setup transaction are not optimized to be fast though, they are designed to send occasional device commands, which was well suited for the original use of Crazyradio.
Flying with a swarm came later, and while the USB protocol was not optimized for this, it worked well enough. When controlling multiple Crazyflie, Crazyradio will communicate with each Crazyflie one after another. This requires setting up radio between each packet, which means at least as much Setup transaction as regular USB-Bulk transaction used for the packets. Things are worst with a MoCAP system, since the position of all the drones needs to be sent at a fast rate to all the drones, which is much more efficiently done using broadcast packet. This requires one mode setup transaction to activate/disable broadcast mode.
This is the main improvement of the inline mode. All radio parameters that matter when communicating to multiple Crazyflies are now sent as a header to the radio data packet itself, using the performant Bulk transactions used for data. This makes the communication to a swarm more performant and, more importantly, it scales much better.
Before one could expect ~1200 packet per seconds to a single Crazyflie and ~600 with 2 and more. Setting parameters used a lot of time limiting the performance. The new inline mode offers the same performance for one and many Crazyflie: the 1200 packets per seconds are shared equally between all connected Crazyflie. This should double the number of Crazyflie one can fly per Crazyradio.
How to use it
As of writing this blog post, the inline mode is only implemented in the latest commit of Crazyswarm 2. Implementation in the Crazyflie Python lib and the Rust lib are planned and should land before 2026. The mode will be enabled by default if Crazyradio 2.0 is updated to Firmware 5.1 or later. So if you want to benefit from the performance boost, update your Crazyradio by fetching the new firmware.
Future of Crazyradio 2.0
There is still a lot more to be done. Of course we will not have another 2x gain, but we have not reached the limit of what the Crazyradio 2.0 can achieve yet. Early tests with the “fast ramp-up” mode of the radio shows that we should be able to improve latency by another 10% quite easily.
We are, however, still limited by the current USB protocol philosophy that synchronize USB and radio communication. Decoupling both is already prepared in the inline protocol but might require more drastic re-engineering of the USB protocol.






















