.. _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.