The crazyflie system is primarily designed to be used as a quadcopter but can be modified to be usable as a blimp. This requires both a change in the propellor configuration (hardware) as well as a change in the firmware.
The process of modifying the firmware is described in the following tutorial: https://www.bitcraze.io/documentation/tutorials/getting-started-with-development/
This process also requires a virtual machine developed by Bitcraze that facilitates crazyflie development. The install process is described in this tutorial: https://www.bitcraze.io/documentation/tutorials/getting-started-with-crazyflie-2-x/#inst-comp
The firmware must then be modified so that the crazyflie is capable of controlling the blimp. The only file that needs to be modified is power_distribution_stock.c, which distributes power to the motors based on the control signals regulating roll, pitch, yaw, and thrust. The file can be found in the project at crazyflie-firmware/src/modules/src/power_distribution_stock.c.
The crazyflie defines roll, pitch, yaw, and thrust using the following diagram:
Therefore, we can modify the propellor configuration such that motors 1 and 4 (those at the front of the crazyflie) face vertically and motors 2 and 3 (those at the back of the crazyflie) face horizontally (forward) with respect to the blimp. The firmware at power_distribution_stock.c must then be modified accordingly:
The original code in the function can be seen commented out, with the new code following it and labeled as "Up" and "Forward." With these modifications, the crazyflie can be manually flown as a blimp and will still actively control its pitch, yaw, and thrust (roll is not controllable with this setup). A test blimp flying a lap around a room can be seen in the video below.
Lastly, it is worth noting that the motors on the crazyflie can only rotate in one direction (decided by hardware not software). This means that for a blimp, it cannot reverse directions without turning around (and cannot turn in place). This also means that the altitude of the blimp is difficult to exactly control; for a positively buoyant blimp, the vertical motors must point downward so that their thrust can pull the blimp down, whereas for a negatively buoyant blimp the vertical motors must point up so that their thrust can push the blimp up.