Flipper Zero 研究
刷机步骤
分区对照表
分区 | 文件名 | 地址 | 备注 |
---|---|---|---|
otp | otp.bin | 0x1FFF7000 | |
bootloader | bootloader.bin | 0x08000000 | |
firmware | firmware.bin | 0x08008000 | |
core2radio | stm32wb5x_BLE_Stack_light_fw.bin | 0x080D7000 | |
core2fus | stm32wb5x_FUS_fw_for_fus_0_5_3.bin | 0x080EC000 | "condition": "==0.5.3", |
core2fus | stm32wb5x_FUS_fw.bin | 0x080EC000 | "condition": ">0.5.3", |
一、OTP刷写
选其一即可,刷写会自动生成。
刷写命令
python3 ./otp.py flash_all \
--version 12 \
--firmware 7 \
--body 9 \
--connect 6 \
--display unknown \
--color black \
--region world \
--name Kalicyh
生成命令
python3 ./otp.py generate \
--version 12 \
--firmware 7 \
--body 9 \
--connect 6 \
--display unknown \
--color black \
--region world \
--name kalicyh \
kalicyh_otp
参数
--version: 版本号(在PCB主板上)
--firmware: 固件版本号(必须提供)
--body: 机壳版本号(必须提供)
--connect: 连接版本号(必须提供)
--display: 显示类型(必须提供,需从 OTP_DISPLAYS 字典中选择)
--color: 颜色(必须提供,需从 OTP_COLORS 字典中选择)
--region: 区域(必须提供,需从 OTP_REGIONS 字典中选择)
--name: 名称(必须提供,长度不超过 8 个字符,仅支持 a-zA-Z0-9)
OTP_COLORS = {
"unknown": 0x00,
"black": 0x01,
"white": 0x02,
"transparent": 0x03,
}
OTP_REGIONS = {
"unknown": 0x00,
"eu_ru": 0x01,
"us_ca_au": 0x02,
"jp": 0x03,
"world": 0x04,
}
OTP_DISPLAYS = {
"unknown": 0x00,
"erc": 0x01,
"mgg": 0x02,
}
关于地区
可能会影响到可使用的无线电频率
关于屏幕
/* MGG v0+(ST7567)
* EV = 32
* RR = V0 / ((1 - (63 - EV) / 162) * 2.1)
* RR = 10 / ((1 - (63 - 32) / 162) * 2.1) ~= 5.88 is 6 (0b110)
* Bias = 1/9 (false)
*/
/* ERC v1(ST7565) and v2(ST7567)
* EV = 33
* RR = V0 / ((1 - (63 - EV) / 162) * 2.1)
* RR = 9.3 / ((1 - (63 - 32) / 162) * 2.1) ~= 5.47 is 5.5 (0b101)
* Bias = 1/9 (false)
*/
v0是最旧的版本使用ST7567
v1是节约成本使用的ST7565
v3是芯片停产使用的ST7567
所以最新屏幕是:erc
二、Core2刷写
生成
./fbt fw_dist
./fbt copro_dist
./fbt updater_package
注意!!! 先core2再core1
python ./scripts/flash.py core2radio 0x080CE000 /stm32wb5x_BLE_Stack_full_fw.bin
python ./scripts/ob.py set
python ./scripts/flash.py core2fus 0x080EC000 --statement=AGREE_TO_LOOSE_FLIPPER_FEATURES_THAT_USES_CRYPTO_ENCLAVE stm32wb5x_FUS_fw_for_fus_0_5_3.bin
python ./scripts/flash.py core2fus 0x080EC000 --statement=AGREE_TO_LOOSE_FLIPPER_FEATURES_THAT_USES_CRYPTO_ENCLAVE stm32wb5x_FUS_fw.bin
scripts/ob.py set
三、Core1刷写
应该可以由官方刷机工具代替
python ./scripts/flash.py wipe --port 3001
python ./scripts/ob.py set
bootloader
firmware
Flash脚本
打开终端或命令行,使用以下格式来运行脚本并执行不同的命令:
python3 otp.py <子命令> <参数>
例如:
-
擦除 MCU 闪存(wipe):
python3 otp.py wipe --port swd --serial <ST-Link Serial Number>
-
刷写 Core 1 引导程序:
python3 otp.py core1bootloader --port swd --serial <ST-Link Serial Number> bootloader.bin
-
刷写 Core 1 固件:
python3 otp.py core1firmware --port swd --serial <ST-Link Serial Number> firmware.bin
-
同时刷写 Core 1 引导程序和固件:
python3 otp.py core1 --port swd --serial <ST-Link Serial Number> bootloader.bin firmware.bin
-
刷写 Core 2 FUS:
python3 otp.py core2fus --port swd --serial <ST-Link Serial Number> --statement AGREE_TO_LOSE_FLIPPER_FEATURES_THAT_USE_CRYPTO_ENCLAVE 0x08000000 fus.bin
-
刷写 Core 2 无线电栈:
python3 otp.py core2radio --port swd --serial <ST-Link Serial Number> radio.bin --addr 0x08000000
命令解释
--port
:指定连接端口,通常是swd
或usb1
。--serial
:指定 ST-Link 的序列号,用于正确连接设备。<bootloader.bin>
:引导程序二进制文件路径。<firmware.bin>
:固件二进制文件路径。<fus.bin>
:固件更新服务二进制文件路径。<radio.bin>
:无线电栈二进制文件路径。--addr
:无线电栈的起始地址。
通过运行这些命令,您可以执行不同的固件刷写任务。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果