Q: The AI Deck Chip Nobody Understands: Crazyflie GAP8 Explained

Updated 3 min read

Quick Answer

GAP8 is the nine-core RISC-V processor on Bitcraze’s Crazyflie AI-deck. It runs camera and machine-learning workloads on the aircraft while an ESP32 handles Wi-Fi. The deck is a serious embedded-development platform, not a plug-and-play autonomy upgrade: expect Linux, Docker, firmware flashing and, potentially, JTAG recovery before the first neural-network experiment.

Why GAP8 Is Not Just Another Flight Controller

The Crazyflie AI-deck leaves flight stabilisation to the Crazyflie and gives vision work its own processor. GAP8 has one fabric-controller core for peripherals and eight cluster cores that share work across image or inference data. That arrangement suits parallel machine-learning jobs far better than treating nine cores as nine independent general-purpose processors.

Crazyflie AI-deck showing GAP8 processor, ESP32 Wi-Fi module and deck connector pins
The 4.4g AI-deck adds onboard vision computing without replacing the Crazyflie flight controller.

The board pairs GAP8 with a 320×320 Himax HM01B0 greyscale camera, 512 Mbit HyperFlash, 64 Mbit HyperRAM and an ESP32-based NINA-W102 Wi-Fi module. It measures 30×52×8mm, weighs 4.4g and accepts 3–5V at VCOM, up to 300mA. Those are useful constraints: this is tiny edge-AI hardware with a tight memory and power budget, not a Raspberry Pi shrunk onto a deck.

What You Actually Need Before the First Image Stream

We would start with the Crazyflie 2.1+ Drone Hacker Development Platform Kit, the AI-deck and a Crazyradio 2.0. Bitcraze’s current setup path calls for Ubuntu 20.04 or later, the latest Crazyflie client and Docker. Mount only the AI-deck while updating firmware; stacking other decks during this stage introduces an avoidable variable.

The first sensible project is Wi-Fi image streaming, not autonomous navigation. Update the Crazyflie, ESP32 and GAP8 firmware, flash Bitcraze’s image-streamer example over Crazyradio, join the deck’s access point, then view the feed with OpenCV. Once that chain works, move to classification or your own CPX messages between GAP8, ESP32, the Crazyflie STM32 and the host computer.

The Setup Trap Most Product Pages Miss

Some decks can carry an old GAP8 bootloader. If over-the-air flashing stalls at 4% or 99%, Bitcraze says the bootloader must be restored with a JTAG programmer such as the Olimex ARM-USB-TINY-H Bundle. That recovery requires native Linux or a virtual machine, not WSL. We would budget for the debugger from day one rather than discover the requirement halfway through a lab session.

There is also a current software snag: Bitcraze warns that the GreenWaves site outage prevents new users from fetching and compiling the GAP SDK AutoTiler. Existing installations can continue, while DORY is the documented alternative for neural-network deployment. This is why we place the AI-deck in our Maker collection, not among ready-to-fly camera drones.

What We Would Build First

Our order is image stream, simple classification, then closed-loop behaviour. Pairing vision with a Flow deck or range sensors becomes useful only after the camera pipeline is reliable. For the positioning side, our optical-flow sensor guide explains what flow can and cannot measure indoors. If your goal is learning microcontroller basics rather than airborne AI, start with our XIAO nRF52840 introduction; the AI-deck assumes considerably more embedded experience.

FAQ

Q: Can GAP8 fly a Crazyflie by itself?

A: No. The Crazyflie flight controller still handles stabilisation. GAP8 processes camera or AI workloads and can exchange commands and data with the aircraft through Bitcraze’s CPX communication path.

Q: Is the Crazyflie AI-deck plug and play?

A: No. Basic Wi-Fi streaming uses provided examples, but setup still involves firmware updates, Linux tools and Docker. Bootloader recovery may also require a JTAG programmer.

Q: Should I buy the colour camera module first?

A: Not for a first project. The included 320×320 greyscale camera reduces data and is supported by the standard examples. Add colour only when the application genuinely needs it.