ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Momentum Firmware 自定义固件全指南:安装、Momentum Settings、Asset Packs 与 Bad-KB 实战

Momentum Firmware 自定义固件全指南:安装、Momentum Settings、Asset Packs 与 Bad-KB 实战 Momentum Firmware 自定义固件全指南安装、Momentum Settings、Asset Packs 与 Bad-KB 实战【免费下载链接】Momentum-Firmware Feature-rich, stable and customizable Flipper Firmware项目地址: https://gitcode.com/GitHub_Trending/mo/Momentum-FirmwareMomentum Firmware 是一款基于 Flipper Zero 官方固件OFW二次开发的高可定制固件本文围绕仓库根目录 ReadMe.md 展开系统讲解它的设计理念、四大安装方式、内置 Momentum Settings 配置体系、Asset Packs 主题系统、Bad KeyboardBad-KB应用以及自编译固件的方法并穿插仓库源码如 lib/momentum/settings.c、scripts/asset_packer.py作为实现依据帮助读者快速上手并在设备上完整复现整套定制流程。一、项目定位与设计理念Modus OperandiMomentum Firmware 的定位可以从 ReadMe.md 的“Modus Operandi”章节概括为三个关键词功能丰富Feature-rich、稳定Stable、可定制CustomizableFeature-rich只要第三方功能与应用具备实际用途且能正确运行就将其纳入固件同时自行实现大量新功能。仓库结构也印证了这一点applications/下同时包含main/、services/、system/、settings/等大量模块例如applications/system/findmy/FindMy、applications/system/hid_app/HID/BLE Spam 相关等。Stable在充分理解底层机制的前提下主动保证所有改动与新增功能在向后兼容和相互兼容上的一致性。Customizable几乎界面上看到的一切都能调整——从主菜单增删应用、更换动画、替换图标、修改设备名称、变换主菜单样式到前所未有的按键绑定且全部在设备端完成、无需复杂配置。项目还明确说明本固件是 Xtreme Firmware 的直接延续由原班也是唯一开发者维护并持续同步 Unleashed 与 OFW 的最新成果。二、Momentum Settings固件的统一配置中心Momentum Settings 是为本固件量身打造的高效易用应用几乎可以配置设备的一切行为分类如下见 ReadMe.mdInterface界面桌面动画、主菜单、锁屏行为、文件浏览器等Protocols协议SubGhz 设置、自定义频率的增删、将 SubGhz 频段扩展至 281–361、378–481、749–962 MHz以及外部模块所用 GPIO 引脚的配置Misc其他设备名称、XP 等级、屏幕选项、RGB 背光等。2.1 源码视角配置项的存储与读写从源码看所有配置集中存放在一个全局结构体MomentumSettings中定义见 lib/momentum/settings.htypedef struct { char asset_pack[ASSET_PACKS_NAME_LEN]; // 当前启用的 Asset Pack 名 uint32_t anim_speed; // 动画速度百分比 int32_t cycle_anims; // 动画轮换周期 bool unlock_anims; MenuStyle menu_style; // 主菜单样式 bool lock_on_boot; // 开机锁定 bool bad_pins_format; // 错误 PIN 重置 bool allow_locked_rpc_usb; bool allow_locked_rpc_ble; // ... 锁屏、状态栏、电池图标、文件浏览器等大量字段 SpiHandle spi_cc1101_handle; // CC1101 SPI 句柄 SpiHandle spi_nrf24_handle; // NRF24 SPI 句柄 FuriHalSerialId uart_esp_channel; // ESP 模块 UART 通道 FuriHalSerialId uart_nmea_channel; // NMEA UART 通道 FuriHalVersionColor spoof_color; // 设备颜色伪装 ScreenFrameColor rpc_color_fg; ScreenFrameColor rpc_color_bg; } MomentumSettings;配置通过 lib/momentum/settings.c 中一张“条目表”驱动读写每个条目声明类型字符串/整数/无符号整数/布尔、键名与取值范围momentum_settings_load()从INT_PATH(.momentum_settings.txt)读取并做CLAMP钳制momentum_settings_save()则将所有条目写回该文件。例如anim_speed的合法区间是 25–300即 25%–300%butthurt_timer区间为 0–172800 秒menu_style是 0 到MenuStyleCount-1的枚举。默认值也在同文件给出anim_speed100、menu_styleMenuStyleDsi、battery_iconBatteryIconBarPercent等。2.2 场景级实现配置应用本体位于 applications/main/momentum_app/采用场景Scene架构每个场景文件对应一个设置界面例如momentum_app_scene_interface_graphics_pack.c图形/Asset Pack 选择、momentum_app_scene_protocols_freqs_add.c自定义频率添加、momentum_app_scene_misc_spoof_name.c名称伪装等。应用的 application.fam 声明其fap_categoryassets、order90属于菜单外部应用并带InsomniaSafe标志。三、Asset Packs动画 / 图标 / 字体主题系统Asset Packs 是 Momentum 独有的改进版动画/资源系统用户只需按几个按钮就能创建并在多个“资源包”之间循环切换轻松加载自定义动画、图标和字体——一个从未如此简单的“主题系统”。完整教程见 documentation/file_formats/AssetPacks.md。3.1 安装 Asset Packs确保固件版本在 v40 及以上Asset Packs 自 v40 引入。打开 qFlipper进入SD Card下的asset_packs目录若不存在可重装固件或手动创建。将解压后的包文件夹整体上传到SD/asset_packs正确时你会看到SD/asset_packs/PackName/Anims和/或SD/asset_packs/PackName/Icons。在主界面按Arrow UP呼出菜单进入Momentum Settings选择目标 Asset Pack退出应用后设备自动重启并应用新主题。也可以直接在官网或社区Discord下载他人制作好的包或通过官网直接安装。3.2 目录结构规范一个 Asset Pack 由 Anims动画与 Icons图标两部分组成结构如下摘自 documentation/file_formats/AssetPacks.mdSD/ |-asset_packs/ |-PackName/ |-Icons/ |... |-Anims/ |-ExampleAnim/ |-frame_0.bm |-frame_1.bm |... |-meta.txt |-AlsoExample/ |-frame_0.bm |-frame_1.bm |... |-meta.txt |... |-manifest.txtAnims沿用 Flipper 标准动画格式每帧是frame_x.bmFlipper 专用原始像素格式非 PNG每个动画配一个meta.txt宽高、帧率、时长等同级再放一个manifest.txt控制每个动画何时展示、展示概率如等级、心情/butthurt 约束与随机权重。与官方动画系统的两点关键差异动画存放位置从SD/dolphin改为SD/asset_packs/PackName/AnimsMomentum 的等级上限提升到 30 级因此manifest.txt中的等级字段要按 30 级体系编写。3.3 图标格式.bmx 与动画图标图标部分有两类特殊处理详见 documentation/file_formats/AssetPacks.md 与源码 lib/momentum/asset_packs.c静态图标.bmx.bm格式不含宽高信息动画靠meta.txt补充静态图标则使用专用格式.bmx结构为[ int32 width ] [ int32 height ] [ 标准 .bm 像素数据 ]。源码中对应的结构体为StaticIconBmxHeader见 lib/momentum/asset_packs.c加载时从SD/asset_packs/PackName/Icons/.../xxx.bmx读取。动画图标像动画一样以.bm帧序列存放但作为图标使用旁边放一个无扩展名的meta文件内容为[ int32 width ] [ int32 height ] [ int32 frame_rate ] [ int32 frame_count ]对应源码中的AnimatedIconMetaFile结构lib/momentum/asset_packs.c。图标目录结构与固件内置图标源目录保持一致对应仓库 assets/icons/需要注意并非所有图标都支持替换“Not all icons are supported”但本系统支持全部内部资源all internal assets文件名中的像素数字如passport_happy_46x49仅作命名与尺寸提示不强制校验部分子目录图标如SubGhz/Scanning_123x52会被其他无关应用使用官方固件中按等级区分的图标被简化如Passport/passport_happy1_46x49→Passport/passport_happy_46x49、Animations/Levelup1_128x64→Animations/Levelup_128x64即去掉等级序号。3.4 运行时加载机制源码佐证设备启动时asset_packs_init()lib/momentum/asset_packs.c读取全局设置中当前启用的asset_pack名拼接路径SD/asset_packs/PackName宏ASSET_PACKS_PATH定义在 lib/momentum/asset_packs.h确认目录存在后遍历全部ICON_PATHS多帧图标走load_icon_animated()单帧图标走load_icon_static()若存在Fonts目录还会为FontPrimary、FontSecondary、FontKeyboard、FontBigNumbers、FontBatteryPercent等字体槽加载.u8f字体文件。之后asset_packs_swap_icon()会按指针匹配把请求的原始图标替换为包内图标asset_packs_free()负责释放资源。也就是说Asset Pack 不仅支持动画与图标还支持字体替换。3.5 自己制作 Asset Pack独立打包推荐制作过程中所有.bm/.bmx转换均由打包器处理你只需要准备.png图片和文本配置文件仅首次安装 Python推荐 3.10执行pip3 install Pillow heatshrink2。新建一个源码包总目录如Desktop/AssetPacks在其下再建一个以包名命名的子目录包名须小于 32 个字符与 lib/momentum/settings.h 中ASSET_PACKS_NAME_LEN32对应包目录内创建Anims和/或Icons目录。按上述结构填充内容注意图片一律使用.png动画需附带manifest.txt与meta.txt动画图标需附带frame_rate文件静态图标无需额外配置。整体与官方固件素材规则一致只是换了个文件夹。将仓库 scripts/asset_packer.py 复制到源码包总目录下与各包同级。运行python asset_packer.py或双击按提示按 Enter 确认即可在当前目录生成编译后的asset_packs目录。把编译产物上传到 Flipper 的SD/asset_packs回到 Momentum Settings 选中即可生效。打包器逻辑可对照 scripts/asset_packer.pyconvert_bm()把 PNG 转为 1-bit、反色、XBM 编码再用 heatshrink2window_sz28、lookahead_sz24压缩并加 2 字节长度头若压缩后仍更大则回退为原始数据convert_bmx()在头部写入II小端两个 int32宽高pack_anim()负责动画帧与meta.txt的转换pack_icon_animated()将动画图标帧序列整理为frame_00.bm、frame_01.bm并生成二进制metapack_icon_static()生成.bmxpack_font()把 u8g2 字体的.c源码编译为.u8f二进制字体。3.6 随固件一起构建可选与独立打包的差别仅在于把源码包总目录换成assets/dolphin/custom然后直接运行./fbt flash_usb_full或./fbt updater_packagefbt 会打包固件并自动完成 Asset Pack 的编译与安装。四、Bad KeyboardBad-KB更强大的 USB/蓝牙键盘攻击工具BadUSB 应用功能有限Bad-KB源码在 applications/main/bad_usb/application.fam中appidbad_kb则允许定制 USB 与蓝牙攻击的全部参数蓝牙模式可把设备的显示名称与 MAC 地址伪装成任意内容——比如伪装成便携音箱或无线键盘从而无需线缆即可接近目标USB 模式额外支持伪装制造商名manufacturer、产品名product以及厂商 ID/产品 IDVID/PID。五、功能清单List of Changes非穷举ReadMe.md 列出了面向最终用户最值得关注的新增、更新与移除项摘录如下完整列表建议阅读 CHANGELOG 与 Release 说明新增AddedMomentum App固件行为统一配置、Asset Packs主题定制、更多 UI 定制与重设计、Bad-Keyboard 应用、BLE Spam 应用、FindMy Flipper 应用实现位于 applications/system/findmy/、NFC Maker 应用、Wardriver 应用、SD 卡全盘文件搜索、更多 NFC 解析器与协议、NFC Type 4 协议与 NTAG4xx 支持、SubdrivingSub-GHz 保存 GPS 坐标、轻松伪装名称/MAC/序列号、直接在 Flipper 上配置 Video Game Module 颜色、增强 RGB 背光模式全自定义与彩虹模式、设备端文件管理剪切/复制/粘贴/显示/新建目录等、记忆红外 GPIO 设置并支持 IR Blaster、高级安全措施开机锁定、PIN 错误重置等、磁盘镜像管理挂载并查看镜像内容、通过 Mass Storage 打开、扩展 JavaScript API支持 UsbDisk/Mass Storage、文件操作。更新Updated增强 WiFi 支持、带光标移动与符号的扩展键盘、支持排序与更多文件类型的文件浏览器、最高 30 级的优化等级系统、桌面按键绑定系统完整按键与按压/长按重映射、支持即时重命名与磁盘镜像虚拟挂载的存储后端、扩展 Sub-GHz 应用重复检测与忽略、自动保存、历史改进、显示源文件路径的改进错误提示。移除Removed无用的 Dummy 模式、损坏或多余的应用程序。六、安装固件四种方式任选ReadMe 推荐优先使用Web Updater四种方式如下Web UpdaterChrome确保 qFlipper 已关闭 → 打开 Web Updater → 点击Connect并从列表选择设备 → 在下拉框选择更新Channel→ 点击Install等待完成。Flipper Lab/Appchrome/mobile桌面端需关闭 qFlipper移动端需安装并配对 Flipper Mobile App → 打开最新 Release 页面 → 点击☁️ Flipper Lab/App (chrome/mobile)链接 → 桌面端随后ConnectInstall移动端在 App 中确认并等待更新。qFlipper 包.tgz从最新 Release 下载.tgz→ 确保 WebUpdater 与 lab.flipper.net 已关闭 → 打开 qFlipper 连接设备 → 点击Install from file→ 选择.tgz等待完成。压缩包.zip下载.zip并解压得到固件文件夹 → 用 qFlipper 将文件夹放入SD/update→ 在设备上按Arrow Down进入文件菜单找到更新目录 → 选中固件文件夹中的Update文件运行即可。七、自行编译与刷写Build it yourself仓库根目录 ReadMe.md 提供了完整的构建流程基于 fbt 工具链fbt 说明见 documentation/fbt.md# 下载仓库需递归克隆子模块 git clone --recursive --jobs 8 https://github.com/Next-Flip/Momentum-Firmware.git cd Momentum-Firmware/ # 通过 USB 直接刷写需已连接 Flipper且 qFlipper 关闭 ./fbt flash_usb_full # 编译 TGZ 更新包 ./fbt updater_package # 构建并启动单个应用 ./fbt launch APPSRCyour_appid注意git clone必须使用--recursive以拉取子模块FreeRTOS、mbedtls、u8g2、mjs 等均位于 lib/ 下flash_usb_full走 USB DFU 流程因此要求关闭 qFlipper 以避免占用 USB 设备updater_package产物对应上文 qFlipper.tgz安装方式。八、小结Momentum Firmware 以“功能丰富、稳定、可定制”为纲围绕 Momentum Settings 统一配置、Asset Packs 主题系统、Bad-KB 输入攻击工具等自研特性构建了完整的用户体验闭环日常使用可直接走 Web Updater 或 qFlipper 安装进阶玩家可用scripts/asset_packer.py制作个人主题包开发者则可基于 fbt 工具链从源码编译刷写。仓库内的 lib/momentum/配置与资源加载核心、applications/main/momentum_app/设置应用与 documentation/配套文档为进一步深入研究和二次开发提供了清晰的入口。【免费下载链接】Momentum-Firmware Feature-rich, stable and customizable Flipper Firmware项目地址: https://gitcode.com/GitHub_Trending/mo/Momentum-Firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表