This repository is part of Flipper One MCU Firmware sub-project and contains issue tracking and firmware sources for the Flipper One MCU — the low-power co-processor that controls the LCD, buttons, and battery.
-
Low-Power MCU (Raspberry Pi RP2350)
Buttons, LCD display, touchpad, and LEDs are physically connected to the MCU. It also manages battery and power control.
To render graphics on the LCD from Linux, the main CPU transfers display data to the MCU over SPI.
When the device is powered off, the MCU controls power-bank mode and system power states.
The MCU also participates in booting the main CPU. -
High-Performance Linux CPU (Rockchip RK3576)
This processor runs Linux, and all high-level peripherals are connected to it: USB, HDMI, M.2, Wi-Fi, Ethernet, and audio.
The MCU and CPU are interconnected via several interfaces: SPI, I²C, and UART. Additional GPIO lines are used for BOOT_0, BOOT_1, and IRQ signals.
Builds run automatically on every push to the dev branch, on tag pushes, and on pull requests. PR builds are linked from a bot comment on the pull request.
flipperzero.one
-
Check the public task tracker: MCU Firmware Project
-
Read the documentation: docs.flipper.net/one/tech-specs
⚠️ Co-processor architecture documentation is coming soon (TODO).
Install VSCode with the Raspberry Pi Pico extension. The extension automatically downloads the ARM toolchain, CMake, Ninja, and Pico SDK. Open the project folder and use the extension's compile button.
Manual build (Linux / macOS)
Prerequisites: ARM GCC toolchain (tested with 14.2.1), CMake 3.13+, Pico SDK 2.2.0.
On macOS, the ARM toolchain can be installed via Homebrew:
brew install --cask gcc-arm-embeddedgit clone --recursive https://github.com/flipperdevices/flipperone-mcu-firmware.git
cd flipperone-mcu-firmware
git clone -b 2.2.0 https://github.com/raspberrypi/pico-sdk.git ../pico-sdk
cd ../pico-sdk && git submodule update --init && cd ../flipperone-mcu-firmware
mkdir -p build && cd build
PICO_SDK_PATH=../../pico-sdk cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --parallelThe output firmware file will be at build/flipperone-mcu-firmware.uf2.
The firmware uses the UF2 format for the RP2350 microcontroller.
The procedure for entering firmware update mode on the real device differs from a bare board. Follow the official guide: docs.flipper.net/one/mcu-firmware/firmware-update.
- Enter bootloader mode: hold the BOOTSEL button on the RP2350 while connecting USB
- A USB mass storage device will appear on your computer
- Copy the
.uf2firmware file to the mass storage device - The device will automatically reboot with the new firmware
Alternatively, you can flash the firmware with picotool (it is downloaded automatically during the CMake configuration step):
picotool load -x build/flipperone-mcu-firmware.uf2