.. _crazyradio:
.. toctree::
Crazyradio
##########
.. toctree::
:maxdepth: 100
A `Crazyradio 2.0 `_ must be used in order to use the full potential of this library.
.. warning::
USB permissions need to be set up in order to use the Crazyradio.
Follow `this guide `_ to do so.
Because the performance of the original crazyradio firmware fails to accomplish a high data rate when multiple Crazyflies are connected, we provide a modified firmware.
The firmware is only compatible with the Crazyradio 2.0.
Flashing the modified firmware
-----------------------------
The modified firmware can be found `here `_.
Plug in your Crazyradio2.0 with the button pressed, this will put the Crazyradio into bootloader mode.
The Crazyradio will then show up as a mass storage device named `Crazyradio`.
You can then drag and drop the `crazyradio2.uf2` file onto the Crazyradio, which will automatically flash the modified firmware.
.. note::
The modified firmware is not compatible with any other crazyflie library, such as `Crazyswarm 2 `_, `Crazyswarm `_ or the crazyflie-lib-python used by the `crazyflie client `_.
You can however build this library in `legacy radio` mode, which will use the official radio-usb protocol and is compatible with the Crazyradio PA and the Crazyradio 2.0.
Compile custom firmware
------------------------
The modified firmware can be found at `here `_.
Instructions on building and flashing can be found `here `_.
Be sure to have the `Bitcraze Toolbelt `_ installed, as it is required to build the firmware.
Modifications
-------------
The modifications are described in this `issue `_.
The main improvements was to not change id and channel with `sendVendorSetup()` but insted use the `bulkTransfer()` usb communication to set the id and channel, as this does not waste time on the usb communication.
This improves the communication rate from ~300Hz to ~1000Hz when multiple Crazyflies are connected.
Legacy Compilation
...................
Execute the following command after you build the library.
This will recompile the crazyradio in a way that the official radio-usb protocol is used, which is compatible with the Crazyradio PA and the Crazyradio 2.0.
.. code-block:: bash
colcon build --packages-select crazyradio --cmake-args -DLEGACY_RADIO=ON
If the library is compiled in `legacy radio` mode it is possible to use either crazyradio 2.0 or Crazyradio PA.
You can then follow the `Getting started with the Crazyradio 2.0 `_ guide.
Upload the latest CRPA emulation firmware (tested with `V1.2 `_)
If you are using a `Crazyradio PA `_ specific firmware, only the `Crazyswarm `_ or
`Crazyswarm 2 `_ prebuilt folder needs to be used. This special firmware has the necessary broadcasting features implemented.