tobiasbrummer/lux-lat-long-log

GitHub: tobiasbrummer/lux-lat-long-log

基于 ESP32 的免 App 蓝牙 GPS 地理标记固件,通过逆向 BLE 协议直接向相机推送坐标并写入 EXIF。

Stars: 2 | Forks: 1

# s5-bt — 为相机提供免 App 的 BLE GPS 地理标记 一个通过 Bluetooth LE 向相机发送 GPS 位置的 ESP32 设备 — **无需** 厂商手机 App**。其中包含了逆向工程得出的协议以及针对 **Panasonic LUMIX S5** 经过硬件验证的可用实现。 该固件**与具体相机无关**:特定于型号的逻辑位于一个小型接口之后,因此添加另一款相机只需添加一个文件(见下文)。 ## 动机 官方的 LUMIX Sync App 在相机关闭后几乎无法重新连接(由于 Android 扫描限制 / Doze 模式 / 应用被杀),而且在徒步旅行时让相机一直保持运行是不现实的。一个专用的、永不休眠的 BLE central 正好填补了这个重连空缺:它会持续扫描,并在相机再次广播的瞬间与其建立连接。 ## 状态 - ✅ **LUMIX S5 BLE 注入 — 已完成并在硬件上验证。** 协议解码自 Android HCI snoop,无需 App 进行重放,无需配对/绑定。GPS 推送已实现端到端确认(合成坐标成功写入照片的 EXIF 中),自动重连已在关机和休眠状态下验证通过。 - 🔜 **GPS 数据源。** 目前位置是一个固定的测试坐标 (48.0/9.0)。计划通过 UART 使用专用的 GNSS 模块(例如 u-blox MAX-M10S / NEO-F10N)配合 TinyGPS++ 为 `firmware/src/main.cpp` 中的 `currentFix()` 提供数据。 ## 硬件 - 任意 ESP32(基于 LilyGo T-PCIE、ESP32-WROVER-B 开发)。ESP32-S3 开发板也可用。 - 连接在备用 UART 上的 GNSS 模块(计划中) — 见状态。 ## 架构 BLE 核心 (`firmware/src/main.cpp`) 完全与相机无关。它负责扫描、连接、重连和推送位置 — 并且不包含任何特定于相机的逻辑。 所有协议细节都位于一个接口之后: ``` firmware/src/ camera.h interface CameraLink + struct GpsFix (camera-agnostic) main.cpp BLE central + reconnect loop + GPS source panasonic_s5.* LUMIX S5 implementation of CameraLink (UUIDs, handshake, packet) ``` `CameraLink` 有三个方法:`matches()`(这是否是我们的相机在广播?),`initSession()`(连接后的握手)和 `pushLocation()`(写入坐标修复)。 **添加一款相机 = 在新文件中实现 `CameraLink`。** 捕获你相机的协议(见 [`docs/CAPTURE.md`](docs/CAPTURE.md)),然后让 AI agent 或你自己进行解码 — [`CLAUDE.md`](CLAUDE.md) 是为此准备的现成任务简报。 ## 构建 [PlatformIO](https://platformio.org/)。可以通过 `-e` 选择环境: ``` cd firmware pio run -e t-pcie -t upload # the BLE GPS pusher (this project) ``` 其他环境(`gnss-*`、`flash-bridge`)是 GNSS 调试时的实验性内容,BLE 部分不需要用到。 ## 仓库内容 - `PROTOCOL.md` — 解码的协议笔记(GATT UUID、GPS packet、连接行为、待解决的问题)。 - `parse_hci.py` — btsnoop HCI 解析器(HCI LE / SMP / ATT,包括 handle 到 UUID 的映射以及 GPS 写入)。用法:`python3 parse_hci.py `。 - `gps_packet.py` — 16 字节 GPS packet 的参考编码器/解码器。 - `docs/CAPTURE.md` — 如何捕获你自己相机的 BLE 协议。 - `CLAUDE.md` — 用于指导 AI agent 解码捕获数据并添加相机的任务简报。 ## 许可证 MIT — 见 [`LICENSE`](LICENSE)。进行逆向工程仅为了实现互操作性;未受 Panasonic 附属或认可。使用风险自负。
标签:ESP32, GPS定位, 云资产清单, 嵌入式固件, 物联网, 硬件黑客, 蓝牙低功耗, 逆向工具, 逆向工程