# Zeppelin Air: reconstructing USB firmware recovery

> Zeppelin Air Recovery reconstructs the Bowers & Wilkins speaker's USB recovery procedure from its updater library and live DFU exchanges. A Python tool implements vendor commands, flashes the MCU and coprocessor in two phases, and polls the coprocessor until it is ready; protocol notes document the message sequence and flash layout.

- Type: Case study
- Targets: Firmware · Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-11-06
- Added to the catalog: 2026-11-08
- Original resource: <https://github.com/sanderpost/zeppelin-air-recovery>
- Primary source: <https://github.com/sanderpost/zeppelin-air-recovery/blob/9a69aa298d606e467a32066b66e1eaa9315aaf64/README.md>
- Catalog page: <https://awesomerea.org/resources/zeppelin-air-recovery-case/>
- Record JSON: <https://awesomerea.org/resources/zeppelin-air-recovery-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/zeppelin-air-recovery-case/index.md)

## Requirements & limits

- **Prerequisites:** Requires a Zeppelin Air, Python 3.9 or later, pyusb, libusb and a USB cable.
- **Prerequisites:** Requires the user's official B&W recovery utility for its firmware images.
- **Limits:** A mains power cycle is required between recovery phases; the author reports that audio output remains unverified.
- **License:** MIT license.

## Primary sources

1. <https://github.com/sanderpost/zeppelin-air-recovery/blob/9a69aa298d606e467a32066b66e1eaa9315aaf64/README.md>
2. <https://github.com/sanderpost/zeppelin-air-recovery/blob/9a69aa298d606e467a32066b66e1eaa9315aaf64/docs/PROTOCOL.md>

## More in Firmware and hardware

- [EmuWorks: emulating NumWorks N0110 calculator hardware](https://awesomerea.org/resources/emuworks-case/index.md) · Case study
- [CH899: reconstructing the clock's MM32–ESP exchange](https://awesomerea.org/resources/chouchin-ch899-firmware-case/index.md) · Case study
- [telink-usb-ota: reconstructing Telink USB-HID firmware updates](https://awesomerea.org/resources/telink-usb-ota-case/index.md) · Case study
- [K2 OpenKlipper: reconstructing the Creality K2 control stack](https://awesomerea.org/resources/k2-openklipper-case/index.md) · Case study
- [ThinkCentre Fan Control: recovering fan telemetry and modes from the M70t Gen 6](https://awesomerea.org/resources/thinkcentre-fan-control-case/index.md) · Case study
- [strix-890m-macos: investigating Radeon 890M display bring-up](https://awesomerea.org/resources/strix-890m-macos-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
