30分钟搞定Flipper Zero固件编译:FBT构建工具完整指南
【免费下载链接】awesome-flipperzero🐬 A collection of awesome resources for the Flipper Zero device.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-flipperzero
30分钟后,Flipper Zero 屏幕上跑着的,就是你自己用 FBT 编译出来的固件。本教程以 awesome-flipperzero 资源项目为线索带你走完全程:FBT 是 Flipper Zero 官方提供的构建系统,编译固件、烧录到设备、开发插件这三件事都能交给它。读完你会有一套可用的编译环境、一份能直接查的命令表,和一张覆盖常见问题的排错对照表。
第一次编译的 5 条命令
先说环境要求:Ubuntu 20.04 或更高版本。依赖的核心是 ARM 交叉编译器,也就是能把代码编译成 Flipper 芯片指令的工具链,缺了它 FBT 无法启动。
先克隆资源项目并进入目录:
git clone https://gitcode.com/GitHub_Trending/aw/awesome-flipperzero cd awesome-flipperzero再一次性装齐依赖,包含 CMake 和整套交叉编译工具链,首次执行可能需要几分钟:
sudo apt update && sudo apt install -y git build-essential cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib社区固件选哪款?项目里的 Firmwares.md 按功能维度横向对比了各固件。起步建议 Unleashed:开发最活跃,社区插件也最多。执行 FBT 开始编译:
./fbt -C unleashed-firmware firmware首次编译耗时较长,产物生成在 build 输出目录里,拿到 zip 包就可以准备刷入了。
FBT 命令速查表:查完就能用
所有 FBT 调用都遵循同一个语法:./fbt [选项] [目标],选项在前、目标放最后。上面的-C unleashed-firmware表示"先进入该源码目录,再执行后面的目标"。
四个常用编译目标怎么看
| 目标 | 作用 |
|---|---|
| firmware | 编译完整固件 |
| flash | 编译并烧录到已连接的设备 |
| debug | 生成带调试信息的版本 |
| dist | 打包发布用的固件压缩包 |
三个参数要记住
-C <目录>:指定要构建的固件源码目录,换固件就换这里OPTFLAGS:向编译器透传额外参数。比如想压缩固件体积,构建时追加OPTFLAGS=-Os:
./fbt -C unleashed-firmware firmware OPTFLAGS=-Os- 最后一个位置参数是目标,不写时默认行为取决于仓库配置,建议始终显式写明
定制实战:从改区域配置到编译社区固件
怎么改 default_config.h
f7 芯片的默认构建配置位于firmware/targets/f7/configs目录,最常改的是default_config.h。下面两个宏覆盖了最常见的两个定制需求:
#define DEFAULT_REGION "WW" // 改为 WW 解除 Sub-GHz 频率限制 #define ENABLE_ROLLING_CODES 1 // 启用滚动码支持第一次编译请保持默认配置;每改一处配置就在设备上验证一次。如果配置改了不生效,九成是漏了重新编译,改完必须再跑一遍完整构建。
编译 RogueMaster 固件完整走一遍
RogueMaster 基于 Unleashed 开发,加了大量自定义动画和实验性功能,想要"更有花样"的设备可以选它。命令和上面一样,只换目录名:
./fbt -C rogue-master firmware构建完成后,build/f7-firmware-D/目录下会生成flipper-zero-firmware-D.zip。刷入方法:把 zip 解压到 SD 卡根目录,插回设备开机,升级会自动完成。
排错对照表:现象、原因、解决
编译和刷机问题大多逃不出下面三种:
| 现象 | 原因 | 解决 |
|---|---|---|
编译报arm-none-eabi-gcc: command not found | 缺少 ARM 交叉编译器 | 执行sudo apt install -y gcc-arm-none-eabi补装工具链 |
| 刷机后卡在开机 logo | 自定义配置里启用了不兼容功能 | 用默认配置重新编译;逐项对照 FAQ.md 的配置说明排查 |
| 产物体积过大 | 编译时未做体积优化 | 追加OPTFLAGS=-Os重新构建,参考上文参数说明 |
如果三种都不匹配,先看日志里第一条报错出现的文件路径,FBT 会指出具体失败的位置,再带着文件名去社区提问会高效得多。
下一步:编译跑通之后去哪
编译链路打通后,可以按兴趣挑一条线继续:
- 想写自己的插件:sub_analysis/examples/ 里的 Sub-GHz 协议分析示例代码,是最好的入门起点
- 想玩 WiFi 模块等进阶功能:读 docs/Marauder_Guide.md
- 使用上卡住:FAQ.md 覆盖了绝大多数常见问题,没答案的再去项目社区讨论
今天就动手:自己往default_config.h里加一个宏,重新编译一次,看看它是否生效。这才是定制的起点。
【免费下载链接】awesome-flipperzero🐬 A collection of awesome resources for the Flipper Zero device.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-flipperzero
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考