Repository navigation
Conversation
Jgckm
force-pushed
the
fix/dailing-t3-auth
branch
from
November 14, 2026 05:17
6040b12 to
400cefb
Compare
Author
|
最终验证状态(Xiaomi 15 Pro / OS4.0.0.19.XOBCNXM / Android 17,debug 构建
未覆盖:签名维护包复核(需由维护流程重出构建)、长期稳定性、其他固件。 |
Jgckm
marked this pull request as draft
November 14, 2026 05:29
The headset answers the opening `00` + random packet with its own `01` packet and expects "pass" before it sends the `00` challenge that is hashed. The maintained state machine required `00` first, rejected the greeting and dropped the session into its retry backoff, so battery, noise modes and game mode never appeared. Accept the greeting stage, hash only the later challenge, and reset to the greeting stage on reconnect. Vendor-app HCI capture (firmware 1.6.0, 2026-11-14) matches the new order frame by frame; device validation on DaiLing T3 publishes private battery, three noise modes and the game-mode feature. Update docs/dailing-t3-protocol.md and the adapter tests accordingly.
Jgckm
force-pushed
the
fix/dailing-t3-auth
branch
from
November 14, 2026 05:54
400cefb to
df9ebc8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
戴灵 T3 的认证顺序与维护版的假设相反:设备收到开场
00+ 16 字节随机数后,先回自己的01包;直到模块发出
02 70 61 73 73,它才下发参与哈希的00挑战。维护版要求第一阶段必须是00,因此在第二步就触发HandshakeRejected,三次重试后进入 60s 退避,私有电量、三态和游戏模式都不再发布。
本 PR 按厂商 App 的 HCI 抓包,把状态机改成
GREETING(01) → CHALLENGE(00) → CONFIRM(02),并让
reset()回到问候阶段,否则每次重连都会复现同样的拒绝。Scope and impact
integration:DailingT3ProtocolSession的认证阶段机;DailingT3AdapterTest的顺序与分片用例。docs/dailing-t3-protocol.md:认证表按抓包更正,并注明第 2 步不是拒绝。CHANGELOG.md:在「戴灵 T3(维护验证)」下记录本次认证顺序修正。不改通用会话、卡片扩展、传输层、控制 App 目录或其他型号。
This change follows the project scope; detailed configuration remains in vendor control apps
Evidence
以下是厂商 App
com.dailing.audio驱动同一台 T3(固件 1.6.0,2026-11-14)时的 HCI 抓包,RFCOMM DLCI 2:
维护版修复前,同一台设备上的实机边界:
Validation
testDebugUnitTest:system-module:lintRelease:system-module:assembleReleasescope.list, tests anddocs/control-apps.mdare synchronized实机范围:Xiaomi 15 Pro / OS4.0.0.19.XOBCNXM / Android 17,debug 构建
30302(未签名)。01 … / 00 … / 02 70 61 73 73后紧接设备信息帧,handshake=true。C0 08 … FF 0A 0D 01 60 00 …,回读C0 07 … 20,状态为ANC;在原生卡片切通透,写入FF 0A 0D 02 40 00 …(与厂商抓包逐字节一致),状态为TRANSPARENCY。C0 C0 … 02 05 02,回读C0 C1 … 20,enabled=true;关闭后写入
02 05 01,enabled=false。DaiLing T3 80% | 降噪;卡片扩展复用原生三态布局,保留标题与「更多设置」。
registered com.dailing.audio之后,状态退化为handshake=false,只剩标准电量;
unregistered … (process death)之后,会话重新建立并恢复私有特性。opened headset settings bridge=stable-controller,跳转目标为 HyperEars。流程状态
codex/pr129-dailing-maintenance;Maintain DaiLing T3 core RCSP integration #131 保持 Draft,Add DaiLing T3 (JieLi RCSP) adapter with card extension #129 保持开放。待签名维护包复核通过后,再依次合入 Maintain DaiLing T3 core RCSP integration #131 并关闭 Add DaiLing T3 (JieLi RCSP) adapter with card extension #129。
.github/workflows/ci.yml的pull_request只监听main,本 PR 不会触发 CI;上面三项 Gradle校验由本地同一组命令执行。
Risks and rollback
GREETING阶段被拒绝,表现与当前维护版一致,即休眠而非崩溃。
60 00参数,而厂商 App 使用7F FF 40 00 7F FF 7F FF;设备接受并正确回读,但听感差异建议在签名包复核时确认。