2.5 KiB
2.5 KiB
2026-03-30 日志
编译环境搭建(esp32c3_moonshine_travelers)
- Python 3.14.0 已预装(C:\Python314)
- 安装 PlatformIO 6.1.19:
pip install platformio - PlatformIO Scripts 路径:
C:\Users\wuwen\AppData\Roaming\Python\Python314\Scripts - 已写入用户 PATH 永久生效(无需每次手动加)
- 平台工具链
espressif32@6.11.0、framework-arduinoespressif32、toolchain-riscv32-esp已存在(之前工程留下) - 固件目录:
code/firmware-2.7.15.567b8ea,编译命令:pio run -e esp32c3_moonshine_travelers
遇到问题:Windows MAX_PATH 限制
- SparkFun ICM-20948 库解压时路径超过 260 字符 →
PackageException - 根因:
examples/Arduino/Example10_DMP_FastMultipleSensors/路径过长 - 修复方案:需要管理员权限执行以下命令启用 Windows 长路径支持:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 - 后续:用户反映编译成功(Windows 长路径问题已自行解决)
调试:节点不发公钥/节点名字对端看不到
- 根本原因:设备 Flash 中残留
owner.is_licensed = true(HamConfig 曾通过 App 下发并持久化) - 公钥不发:
NodeInfoModule::allocReply()中is_licensed==true时主动清零公钥字段(Ham 法规要求) - 名字对端不可见:
handleReceivedProtobuf()检查p.is_licensed != owner.is_licensed时直接丢包 - 解决:擦除 Flash NVS 分区(
pio run -t erase)后重烧,或通过 App 关闭 Licensed 开关
修复:切换 role 后 NodeInfo/公钥仍不广播(CLIENT_HIDDEN 遗留问题)
Bug 1:owner.role 不随 config.device.role 同步
- 位置:
AdminModule.cpphandleSetConfig()device_tag 分支 - 原因:改 role 时只更新
config.device.role,owner.role(广播字段)从不更新 - 修复:在
installRoleDefaults()调用后加owner.role = config.device.role;
Bug 2:从 CLIENT_HIDDEN 切回 CLIENT 后广播间隔不恢复
- 位置:
NodeDB.cppinstallRoleDefaults() - 原因:CLIENT_HIDDEN 把
node_info_broadcast_secs设为INT32_MAX,切回 CLIENT 时没有对应的重置分支 - 修复:新增
CLIENT/CLIENT_MUTE分支,恢复default_node_info_broadcast_secs等默认值
额外确认
- 公钥不生成的前置条件:
config.lora.region == UNSET时 NodeDB::init() 跳过 PKI keygen;需先通过 App 设置 region 才会生成密钥对