连接配套 App
配套客户端由 Flutter 开发。网页里的外观模型不是真机屏幕镜像, 也不会因为打开网页就自动连接手表。
1. 在手表上打开蓝牙
Section titled “1. 在手表上打开蓝牙”先回到 STM32 的正常手表界面,不要停在 BW16 独占应用或烧录界面。
- 快捷操作:单独长按左上键约 1 秒,然后松开。 这是蓝牙开关:关闭时开启,开启时关闭。不要同时按左下键或右侧键,组合按键会取消这个快捷操作。
- 菜单操作:进入“系统设置 → 设置”,找到“蓝牙”,按确认切换 ON/OFF。 这一项立即发起切换,不需要再点页面底部“应用”。
开启时可能短暂显示 BLE STARTING;等待设置页蓝牙状态变成 ADVERTISING(正在广播),再在 App 连接。CONNECTED 表示已有连接,OFF 表示未开启。
再次长按左上键会关闭蓝牙,App 连接也会断开。若显示 BLE BUSY,先等待当前切换完成,不要连续重复按。
当前 App 个别提示仍写着“同时按上下键”或“BLE LINK”,属于旧文案;当前正常菜单不提供独立 BLE LINK 页面,以本页的单键操作为准。
2. 设置连接验证码
Section titled “2. 设置连接验证码”这里的“密码”是 6 位数字设备验证码,不是 Wi-Fi 密码,也不是 Windows/手机系统的蓝牙配对 PIN。
- 购买成品的用户: 使用随设备提供的验证码;没有拿到时联系维护者,不要尝试示例码。目前没有公开统一默认码。
- 自己编译的用户: 使用你烧入 BW16 固件时,在
firmware/rtl8720dn/NanoUI/ble_auth.local.h中配置的CRABIT_BLE_AUTH_CODE。STM32 固件不负责定义这个码。
在 App 中打开“设备”页,点击连接按钮下方的 “设置设备验证码”,输入完整 6 位数字,点击“保存”。

App 实际控件,模拟未连接状态。先点“设置设备验证码”,再点“连接手表”。

输入框刻意留空,不展示真实验证码。填写随设备提供的码;不是照抄图片中的示例密码。 如果直接点“连接手表”,尚未保存验证码时也会先弹出“输入设备验证码”对话框。 验证码保存在此 App 的本地设置中,后续手动重连会自动发送,不需要每次重新输入。 不要在公开截图、交流群或日志中暴露验证码。
3. 连接并确认可用
Section titled “3. 连接并确认可用”- 确认电脑/手机的系统蓝牙已开启,手表已按上面的步骤开始广播。
- 在 App“设备”页点击“连接手表”。App 会扫描并连接
Crabit-Watch,无需先在系统蓝牙设置中完成绑定。 - 等待设备码验证完成。展开“连接检查”,分别查看“BLE 连接”“设备码验证”“传输验证”。
- 如果传输验证尚未完成,点击“验证传输”;只有显示“通信已验证”,才开始读取状态或修改设置。

App 实际控件,模拟验证完成状态,用于识别成功界面,不代表本次连接了实体手表。
需要断开时,点 App 的“断开连接”。仅断开 App 不等于关闭手表蓝牙;不再使用时,可在手表长按左上键关闭。
4. 修改密码:先区分改哪一端
Section titled “4. 修改密码:先区分改哪一端”纠正 App 保存的验证码
Section titled “纠正 App 保存的验证码”在“设备”页先点“断开连接”,等操作结束,再点 “更改已保存验证码” → 输入正确的 6 位数字 → 保存 → 连接手表。 连接中按钮可能暂时不可点,先结束当前操作即可。
这个按钮只改 App 本地记录,不会修改手表的密码。 随便在 App 换一个码,设备端仍会按原来的码验证,结果就是验证失败。
更换手表真正使用的验证码(自行编译)
Section titled “更换手表真正使用的验证码(自行编译)”目前没有从 App 或手表菜单远程修改设备验证码的功能。设备码在 BW16 编译时确定:
- 打开自己的源码目录
firmware/rtl8720dn/NanoUI/。 - 如果没有
ble_auth.local.h,复制同目录的ble_auth.local.example.h,将副本命名为ble_auth.local.h。 - 在本地文件中,把
CRABIT_BLE_AUTH_CODE的字符串值改为自己选择的 6 位数字,保留引号和宏名称。不要修改或提交示例文件来存个人验证码。 - 按固件更新与恢复的配套烧录流程重新编译、烧录 BW16。只改 App 或只烧 STM32 都不会更改设备码;不熟悉烧录的成品用户先联系维护者。
- 在 App 按上一节更改本地保存的验证码,使两端一致,再重新连接。
ble_auth.local.h 是本地私有配置,不应提交 Git,也不要把其中内容放进问题截图。忘记设备码时,App 不能从手表读取它;自行编译者可在自己的本地配置中确认,成品用户联系维护者。
连不上时先检查
Section titled “连不上时先检查”| 现象 | 先检查 |
|---|---|
| 找不到设备/连接超时 | 系统蓝牙开启、手表显示广播中、没有停在 BW16 独占应用;先断开其他电脑或手机的连接 |
| BLE 已连接但验证码不通过 | App 保存的 6 位码是否与当前烧录的 BW16 固件一致;改本地码后断开重连 |
| 验证码通过但读不到数据 | 在“连接检查”运行“验证传输”,保留错误提示;不能把 BLE 连上当成 STM32 链路已通过 |
| 打开网页模型却没有连接 | 网页只运行本地 UI 模拟器;实际设备连接需要配套 Flutter App |
“BLE 已连接”“验证码通过”“设备业务收到响应”是不同状态。 应用验证码不是操作系统蓝牙绑定,也不是 BLE 链路加密承诺;它不证明已建立 操作系统 bond 或链路加密。
App 的用途
Section titled “App 的用途”- 读取设备状态、调整固件支持的设置。
- 编辑、组合和保存本地 USB 键盘脚本。
- 查看经设备上报的无线记录与诊断结果。
- 用设备 IMU 数据控制本地模型的相对倾斜显示。
倾斜预览不是完整绝对姿态测量。设置发送成功也不代表设备已保存, 需要看匹配的业务结果。本地数据不是云端备份,卸载或清除数据可能丢失。
USB 示例只在自有电脑或授权环境运行,先用文本编辑器验证无破坏的输入, 不要运行来源不明的脚本。商品不附数据线。
本地展示版尚未配置公开下载链接,不提供虚假的下载按钮。 Windows 当前是已做构建与测试的路径;其他平台不能因为源码目录存在 就视为均已验收。拿到设备时请使用与其固件对应的客户端版本。
连接完成后继续阅读使用 App。连接异常先关闭本次连接并记录错误,不反复烧录来处理普通连接问题。 需要更新时继续阅读固件与恢复。