Skip to content

About

Android BLE bridge for XDS AD350 power meters and Magene C606 Pro cycling computers

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Power Bridge · 功率桥接

用 Android 手机,把喜德盛 AD350 功率计的数据桥接给迈金 C606 Pro。

AD350 私有 BLE → Android 手机 → Cycling Power BLE → 码表

这个项目起于一个实际问题:车上已经有功率计,但自己的码表连接不上。现在用一台 vivo X200s 做中转,已经实测在 C606 Pro 上显示真实功率与踏频。它仍是实验项目,兼容范围以下表为准。

下载和使用

在 Releases 下载 power-bridge-v0.11.apk。无需购买额外转发硬件,也不需要给手机 root。

  1. 打开手机蓝牙,转动曲柄唤醒功率计;关闭其他占用功率计连接的 App 或码表。
  2. 安装并打开“功率桥接”,点击“开始桥接”,允许附近设备权限。
  3. 首次从列表中选择功率计,优先选择标记为“喜德盛私有服务”的设备。
  4. 等 App 显示真实功率、踏频。在码表添加蓝牙功率计,选择 P715 49688。
  5. 下滑可查看电量、信号、参考左右功率/比例、参考曲柄角度和设备信息。
  6. 使用后点击 App 或常驻通知的“停止”。

如果码表缓存了旧版本能力、踏频不显示,可以删除旧传感器后重新添加。Android 11 及以下扫描还需定位权限与系统定位开关;Android 12+ 使用附近设备权限。熄屏使用建议在手机电池管理中允许后台运行。

P715 49688 是为兼容这台码表采用的固定广播样本名称,不是新增了一台真实 P715。运行时会临时更改手机蓝牙名称,正常停止时请求恢复;异常退出后可以重新开始并停止以恢复。不要同时运行多个使用同一广播样本的桥接器。

实测范围

组件 已验证配置
输入 喜德盛 AD350 配套功率计,XDS-A001 系列
手机 vivo X200s / Android 16
码表 Magene C606 Pro,固件 v1.916
应用 v0.11;功率/踏频链路在 v0.10 已打通

一次约7分钟抓包收到415个输入测量包、299个输出通知。记录到功率0–7W、踏频0–93rpm,输出功率均匹配当时最新输入;这是短时低负载测试,不是功率精度标定。v0.11 实读到传感器电量、信号、固件和硬件信息,新增读取后仍可接收数据并恢复码表订阅。

**未完成验证:**其他手机/码表、长时间熄屏、正式骑行记录、带负载功率精度、电量随放电变化的准确性。请勿据此认定所有 AD350 批次都使用相同协议。

能看到哪些数据

数据 App 转发给码表
总功率 实时 是
踏频 实时 是,以实际 rpm 换算标准曲柄事件
电量 约60秒读取一次 暂未提供
蓝牙信号 RSSI 约30秒读取一次 否
左/右功率、左右比例 参考值 否
曲柄角度 参考值,零点未标定 否
型号、固件、硬件、制造商 设备有可读字段时显示 否

左右字段在已抓到的415个样本中均满足“左+右=总功率”,但这不能证明硬件是独立双边测量。总功率低于10W时不计算比例,避免低功率取整产生误导。缺失、无效或过期数据显示“—”,不伪造电量或50/50平衡。

没有校准、温度、扭矩效率、踩踏平顺度、ANT+ 输出或 iOS 桥接功能。

如何工作

  • 手机同时充当 BLE Central(连接功率计)和 BLE Peripheral(供码表连接)。
  • 输入:私有服务 1828,测量 2A63,启动特征 2A55。订阅通知后发送参考项目的启动字节 02 16 AA 10。
  • 输出:标准 CPS 服务 1818、测量 2A63,配合实测有效的 P715 广播名称/厂商数据。兼容 C606 写入的 CCCD 03 00,仍以 Notify 发送。
  • 每秒转发一次;真实数据超过3秒未更新则暂停通知,避免持续转发旧数值。码表可能保留最后读数,直到其自身超时。
  • 前台 connectedDevice 服务和运行期间的 partial wake lock;停止时释放。运行中断线会分段搜索并重连已选择的传感器;不在系统杀进程后自动启动。

协议说明与限制见 docs/PROTOCOL.md。

构建

原生 Java,无第三方运行时依赖;Android 8.0+,compile/target SDK34。

Android Studio

打开仓库根目录,安装 SDK34,设置 JDK17+ 并同步 Gradle。项目带 Gradle8.7 wrapper、AGP8.3.0;首次同步需要联网。本项目已验证的是下方本机SDK构建路径,尚未把 Android Studio Run/Gradle 构建列为已验证。

本机 SDK 构建(已在 macOS 验证)

需要 Python3、JDK17+、Android SDK34、Build Tools36.1.0:

export JAVA_HOME="/path/to/jdk"
export ANDROID_HOME="/path/to/android-sdk"
python3 test-local.py
python3 build-local.py

macOS 未设置环境变量时,会尝试 Android Studio 自带 JDK 和 ~/Library/Android/sdk。构建输出为 build-local/power-bridge-probe.apk。

脚本在本地生成调试签名密钥,不会上传。Release APK 使用开发阶段的实验签名;自行编译或换签名后,可能需要先卸载已装版本。请保管自己的签名密钥,不要提交到仓库。

测试和反馈

python3 test-local.py 运行六组纯Java检查:私有解码、数据失效/踏频积分、启动等待窗口、电量/元数据校验、CCCD兼容和广播包预算。可选的 GitHub Actions 配置示例见 docs/protocol-tests.workflow-example.yml;这些检查不替代实车验证。

反馈请注明手机/Android版本、码表型号/固件、功率计型号、复现步骤。日志可从折叠的“连接诊断”复制;分享前删除设备地址、序列号和其他私人信息。不要上传完整手机 bugreport 或 HCI 抓包。

隐私

App 无联网权限、账号、云端和统计SDK。所选传感器地址、临时蓝牙名称恢复信息仅保存在手机本地;部分测量包与连接事件进入本地诊断日志。新增设备信息读取为只读,不操作未知私有特征。详见 docs/PRIVACY.md。

来源与许可

  • 喜德盛私有字段与启动序列参考 DuoDuoJuZi/xds_forwarding,本项目独立实现 Android 桥接,未打包其固件或源文件。
  • P715 广播观察来自 GROWTAC P715 文档 的真实设备截图;不宣称获得厂商授权或实现完整设备仿真。
  • 自有源码采用 MIT。Gradle Wrapper 等第三方材料保留各自许可,见 THIRD_PARTY_NOTICES.md。

本项目与喜德盛、迈金、vivo 均无隶属或官方合作关系;产品名称和商标属于各自权利人。

About

Android BLE bridge for XDS AD350 power meters and Magene C606 Pro cycling computers

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages