Files
lora_meshtastic_project/.workbuddy/memory/2026-03-30.md
T
2026-03-30 20:01:45 +08:00

2.5 KiB
Raw Blame History

2026-03-30 日志

编译环境搭建(esp32c3_moonshine_travelers

  • Python 3.14.0 已预装(C:\Python314
  • 安装 PlatformIO 6.1.19pip install platformio
  • PlatformIO Scripts 路径:C:\Users\wuwen\AppData\Roaming\Python\Python314\Scripts
  • 已写入用户 PATH 永久生效(无需每次手动加)
  • 平台工具链 espressif32@6.11.0framework-arduinoespressif32toolchain-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 = trueHamConfig 曾通过 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 1owner.role 不随 config.device.role 同步

  • 位置AdminModule.cpp handleSetConfig() device_tag 分支
  • 原因:改 role 时只更新 config.device.roleowner.role(广播字段)从不更新
  • 修复:在 installRoleDefaults() 调用后加 owner.role = config.device.role;

Bug 2:从 CLIENT_HIDDEN 切回 CLIENT 后广播间隔不恢复

  • 位置NodeDB.cpp installRoleDefaults()
  • 原因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 才会生成密钥对