Skip to content

[Device]: 大佬申请适配贝壳王子SWARMOO MO3 PRO,谢谢谢谢谢 #97

Open

Description

@ZaneZhang111

Exact retail Bluetooth name

SWARMOO MO3 PRO

Physical form

TWS earbuds

Test environment

redmi k90 pro max
hyperos4.0.4.0
安卓17(api37)
lsp2.2.1(7936)
milink 18.2.0.12.2608172246
hyperears 3.1.0

Protocol evidence

Image

Vendor controller app, if applicable

com.example.tigerlistening,轻链智能

Verified behavior

电量能看,能提供的日志尽力了,如果还需要其他日志,我再学着来给

HyperEars-logs-20261027-194808.txt

Submission checks

  • Complete personal Bluetooth addresses have been replaced or redacted.
  • No proprietary APK, decompiled archive, credential or copyrighted product asset is attached.

Activity

  1. silverpoetry commented on Oct 30, 2026

    @silverpoetry
    Owner

    感谢补充截图和日志,已经看过了。目前这款耳机走的是标准蓝牙适配,显示的 100% 来自 Android 整机电量;要增加独立左右耳/盒电量和降噪控制,还需要确认它实际使用的私有协议。

    可以先用你提到的官方控制 App「轻链智能」(com.example.tigerlistening)测试和研究,重点整理这些信息:

    1. 耳机固件、App 版本,以及 App 实际提供哪些电量和模式控制。
    2. 在官方 App 中依次完成连接、查看电量、关闭/降噪/通透切换,记录每次操作的时间与耳机实际变化。
    3. 如果能采集 Android 的 Bluetooth HCI 日志,保留这组操作对应的服务、写入和回包;只看 HyperEars 的导出日志,还看不到官方 App 的私有协议交互。已有协议研究或开源实现也欢迎提供链接。

    不熟悉抓包的话,可以先补版本和功能截图,再逐步整理。分享资料前请脱敏完整蓝牙地址和其他个人信息。有了可核对的协议证据,我们再判断能否复用现有实现,或建立这个型号的独立适配。

    另外,3.1.1 已修复共用连接提示中的 MiLink 启动依赖及整机电量 TWS 提示限制,可以先升级复核提示表现;这款耳机的私有控制继续在本 Issue 跟踪。谢谢配合!

  2. ZaneZhang111 commented on Oct 31, 2026

    @ZaneZhang111
    ContributorAuthor

    感谢补充截图和日志,已经看过了。目前这款耳机走的是标准蓝牙适配,显示的 100% 来自 Android 整机电量;要增加独立左右耳/盒电量和降噪控制,还需要确认它实际使用的私有协议。

    可以先用你提到的官方控制 App「轻链智能」(com.example.tigerlistening)测试和研究,重点整理这些信息:

    1. 耳机固件、App 版本,以及 App 实际提供哪些电量和模式控制。
    2. 在官方 App 中依次完成连接、查看电量、关闭/降噪/通透切换,记录每次操作的时间与耳机实际变化。
    3. 如果能采集 Android 的 Bluetooth HCI 日志,保留这组操作对应的服务、写入和回包;只看 HyperEars 的导出日志,还看不到官方 App 的私有协议交互。已有协议研究或开源实现也欢迎提供链接。

    不熟悉抓包的话,可以先补版本和功能截图,再逐步整理。分享资料前请脱敏完整蓝牙地址和其他个人信息。有了可核对的协议证据,我们再判断能否复用现有实现,或建立这个型号的独立适配。

    另外,3.1.1 已修复共用连接提示中的 MiLink 启动依赖及整机电量 TWS 提示限制,可以先升级复核提示表现;这款耳机的私有控制继续在本 Issue 跟踪。谢谢配合!

    谢谢大佬回复,我虽然不怎么会抓包,但是用ai还可以,看看这里面有没有您需要的东西

    ANC_private_protocol_analysis.md
    btsnoop_hci_20261030_224855_sanitized.log

  3. ZaneZhang111 commented on Oct 31, 2026

    @ZaneZhang111
    ContributorAuthor

    感谢补充截图和日志,已经看过了。目前这款耳机走的是标准蓝牙适配,显示的 100% 来自 Android 整机电量;要增加独立左右耳/盒电量和降噪控制,还需要确认它实际使用的私有协议。

    可以先用你提到的官方控制 App「轻链智能」(com.example.tigerlistening)测试和研究,重点整理这些信息:

    1. 耳机固件、App 版本,以及 App 实际提供哪些电量和模式控制。
    2. 在官方 App 中依次完成连接、查看电量、关闭/降噪/通透切换,记录每次操作的时间与耳机实际变化。
    3. 如果能采集 Android 的 Bluetooth HCI 日志,保留这组操作对应的服务、写入和回包;只看 HyperEars 的导出日志,还看不到官方 App 的私有协议交互。已有协议研究或开源实现也欢迎提供链接。

    不熟悉抓包的话,可以先补版本和功能截图,再逐步整理。分享资料前请脱敏完整蓝牙地址和其他个人信息。有了可核对的协议证据,我们再判断能否复用现有实现,或建立这个型号的独立适配。

    另外,3.1.1 已修复共用连接提示中的 MiLink 启动依赖及整机电量 TWS 提示限制,可以先升级复核提示表现;这款耳机的私有控制继续在本 Issue 跟踪。谢谢配合!

    、

    Image

    让ai写了个软件测试,实测里面的所有功能都能实现

  4. silverpoetry commented on Oct 31, 2026

    @silverpoetry
    Owner

    谢谢补充协议分析、脱敏 HCI 和测试结果,资料已经能继续推进了。我重新解析了抓包,能对上主模式 00/01/02、子模式 01/02 的设置与状态通知,以及双耳电量回报。

    接入前还需补清两个具体信息,提供你测试成功的程序源码或相关常量片段即可:

    1. 电量通道和模式通道各自的 service UUID、characteristic UUID、notify 特征与写入类型。当前抓包没有 GATT 服务发现过程,只有 0x0003 / 0x0006 句柄;句柄会随设备属性表变化,不能直接写死在适配器里。
    2. 测试程序的写入回调是否成功,以及使用 WRITE_TYPE_DEFAULT 还是 WRITE_TYPE_NO_RESPONSE。抓包里这两路共出现 8 条 ATT Invalid Handle 错误,随后又有状态通知,需要核对为何命令生效而 ATT 返回错误,避免模块按错误结束通道。

    盒电量字段在现有样本中恒为 00,目前还不能区分未知与真正 0%。首版会保持这项未知。我们会优先整理系统电量与核心噪声模式,详细设置继续交给轻链智能。

    不需要重新从头整理全部资料;先补上述测试程序实际使用的信息即可。感谢继续协助。

  5. ZaneZhang111 commented on Nov 1, 2026

    @ZaneZhang111
    ContributorAuthor

    谢谢补充协议分析、脱敏 HCI 和测试结果,资料已经能继续推进了。我重新解析了抓包,能对上主模式 00/01/02、子模式 01/02 的设置与状态通知,以及双耳电量回报。

    接入前还需补清两个具体信息,提供你测试成功的程序源码或相关常量片段即可:

    1. 电量通道和模式通道各自的 **service UUID、characteristic UUID、notify 特征与写入类型**。当前抓包没有 GATT 服务发现过程,只有 `0x0003 / 0x0006` 句柄;句柄会随设备属性表变化,不能直接写死在适配器里。
    
    2. 测试程序的写入回调是否成功,以及使用 `WRITE_TYPE_DEFAULT` 还是 `WRITE_TYPE_NO_RESPONSE`。抓包里这两路共出现 8 条 ATT `Invalid Handle` 错误,随后又有状态通知,需要核对为何命令生效而 ATT 返回错误,避免模块按错误结束通道。
    

    盒电量字段在现有样本中恒为 00,目前还不能区分未知与真正 0%。首版会保持这项未知。我们会优先整理系统电量与核心噪声模式,详细设置继续交给轻链智能。

    不需要重新从头整理全部资料;先补上述测试程序实际使用的信息即可。感谢继续协助。

    btsnoop_hci_20261101_094355_sanitized.log
    reply_transport_details.md
    这是新的文件,您过目。

  6. silverpoetry commented on Nov 8, 2026

    @silverpoetry
    Owner

    @ZaneZhang111 谢谢补充两条特征、MTU 和写回包的实测资料。我核对了新的官方 App 抓包,已据此做好独立维护版 #126,并保留你的协议贡献署名。

    本版支持左右耳与已知充电盒电量,以及降噪、关闭、通透、抗风噪。标准降噪对应设备自适应档,卡片复用现有原生三态与抗风噪开关;详细设置继续通过轻链智能处理。

    传输只访问你确认的 FFF0 下 FFA1 和 2A19,不扫描其他特征。完整状态要求 MTU ≥26;该设备的 ATT 状态 1 记录后继续等待有效回报,其他错误照常处理。模式以设备回读为准,避免错误回调后界面提前显示成功;盒电量 0 仍按未知处理。

    下载最终官方签名包 be6152e4(登录 GitHub,下载 ZIP 后解压 APK),构建记录。协议回归、编译与签名校验已通过。

    请用这份包确认自动识别、电量(含盒)、四态互切与实际效果、卡片重开、重连,以及轻链智能跳转和退避恢复。开启 HyperEars「调试 → 详细日志」,在 LSPosed 关闭「禁用详细日志」、开启「输出日志到守护进程」,重新加载作用域并完成一次连接与切换后导出日志即可。日志会保留 MTU、逻辑通道、原始应答状态和协议回报。

    目前尚未把独立测试程序的结果记为 HyperEars 实测;#126 保持 Draft,本 Issue 保持开放,等最终维护包确认后再合入。

  7. ZaneZhang111 commented on Nov 8, 2026

    @ZaneZhang111
    ContributorAuthor

    @ZaneZhang111 谢谢补充两条特征、MTU 和写回包的实测资料。我核对了新的官方 App 抓包,已据此做好独立维护版 #126,并保留你的协议贡献署名。

    本版支持左右耳与已知充电盒电量,以及降噪、关闭、通透、抗风噪。标准降噪对应设备自适应档,卡片复用现有原生三态与抗风噪开关;详细设置继续通过轻链智能处理。

    传输只访问你确认的 FFF0 下 FFA1 和 2A19,不扫描其他特征。完整状态要求 MTU ≥26;该设备的 ATT 状态 1 记录后继续等待有效回报,其他错误照常处理。模式以设备回读为准,避免错误回调后界面提前显示成功;盒电量 0 仍按未知处理。

    下载最终官方签名包 be6152e4(登录 GitHub,下载 ZIP 后解压 APK),构建记录。协议回归、编译与签名校验已通过。

    请用这份包确认自动识别、电量(含盒)、四态互切与实际效果、卡片重开、重连,以及轻链智能跳转和退避恢复。开启 HyperEars「调试 → 详细日志」,在 LSPosed 关闭「禁用详细日志」、开启「输出日志到守护进程」,重新加载作用域并完成一次连接与切换后导出日志即可。日志会保留 MTU、逻辑通道、原始应答状态和协议回报。

    目前尚未把独立测试程序的结果记为 HyperEars 实测;#126 保持 Draft,本 Issue 保持开放,等最终维护包确认后再合入。

    完美,所有功能均已实现,设备融合中心与hyperears内都能显示正确电量与控制所有模式,太强了👍🏻👍🏻
    HyperEars-logs-20261108-202400.txt

  8. ZaneZhang111 commented on Nov 9, 2026

    @ZaneZhang111
    ContributorAuthor

    其实还有一点不足,我不知道能不能实现,当我连接单个耳机的时候,无法控制降噪等模式调节(融合中心不会显示模式选择,只能显示电量与音量)

  9. silverpoetry commented on Nov 13, 2026

    @silverpoetry
    Owner

    @ZaneZhang111 谢谢验证!最终包 be6152e4 的日志已核对,双耳电量、充电盒电量、四态切换与重连都已有对应回报。这部分已按验证范围合入 3.3.0,保留了你的协议贡献署名。

    你后面提到的单耳问题继续在这里跟踪。需要先区分单耳连接时没有返回模式状态,还是固件本身限制了控制,暂时不会强行开放按钮。

    方便时请补充:只连接左耳还是右耳、此时轻链智能能否切换降噪/通透,以及一次“仅连接这一耳 → 打开卡片 → 在 HyperEars 刷新”的详细日志。双耳流程已经验证,不用再完整重复。开启模块详细日志,在 LSPosed 关闭“禁用详细日志”、开启“输出日志到守护进程”,完成后从调试页导出即可;切到轻链智能做对照后,请手动停止它再测试模块,避免通道仍被占用。

    正式版:GitHub 3.3.0,直接下载 APK。覆盖安装后请重启设备,或分别执行模块内的“重启蓝牙”和“重启 MiLink”,再重新连接耳机。

  10. ZaneZhang111 commented on Nov 13, 2026

    @ZaneZhang111
    ContributorAuthor

    @ZaneZhang111 谢谢验证!最终包 be6152e4 的日志已核对,双耳电量、充电盒电量、四态切换与重连都已有对应回报。这部分已按验证范围合入 3.3.0,保留了你的协议贡献署名。

    你后面提到的单耳问题继续在这里跟踪。需要先区分单耳连接时没有返回模式状态,还是固件本身限制了控制,暂时不会强行开放按钮。

    方便时请补充:只连接左耳还是右耳、此时轻链智能能否切换降噪/通透,以及一次“仅连接这一耳 → 打开卡片 → 在 HyperEars 刷新”的详细日志。双耳流程已经验证,不用再完整重复。开启模块详细日志,在 LSPosed 关闭“禁用详细日志”、开启“输出日志到守护进程”,完成后从调试页导出即可;切到轻链智能做对照后,请手动停止它再测试模块,避免通道仍被占用。

    正式版:GitHub 3.3.0,直接下载 APK。覆盖安装后请重启设备,或分别执行模块内的“重启蓝牙”和“重启 MiLink”,再重新连接耳机。

    HyperEars-logs-20261113-230311.txt
    谢谢大佬回复,在控制软件(官方app)内,如果只连接右耳或左耳,是可以单独控制单侧耳机的降噪控制等档位的。
    上传的日志是我一开始只连接右耳的,如果单独连接右耳后,在融合设备中心是不会显示可以控制的按钮(见图片)。
    Screenshot_2026-11-13-23-02-00-181_com milink service

      但是如果连接了双耳机或者单耳机使用官方app控制后,控制按钮就会显示出来。
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    device-supportHeadset model and protocol support

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions