diff --git a/docs/matter-pairing-troubleshoot.md b/docs/matter-pairing-troubleshoot.md index b854448..8b57ad4 100644 --- a/docs/matter-pairing-troubleshoot.md +++ b/docs/matter-pairing-troubleshoot.md @@ -45,9 +45,13 @@ | HA matter-server 曾宣告两代前的旧 GUA | ✅ 已修复(重启 `core_matter_server`;宣告恢复当前前缀) | | ISP PD /60 随重拨轮换 → Matter IPv6 缓存反复失效 | ⚠️ 环境性根因;对策 = 重拨后重启 matter-server + 重启 M3 | | EdgeOS 上静态 ULA 不可行 | ✅ 已尝试并回滚(switch0 不支持静态 `ipv6 address`;显式 router-advert 会替换 PD-slaac RA) | -| 两盏 ESP32-C2 Matter 灯泡(VP `0x4891/0x4100`,OUI `34:98:7a`) | 工作盏 `34:98:7a:25:a1:f0`;故障盏 `34:98:7a:27:7f:08`(hostname `matter`,动态 .145) | -| 故障盏已在 Aqara fabric `4DF2B1455D19402D`,宣告 `CM=0` 且缺 GUA | ⚠️ 找回需**恢复出厂**(清 fabric + 重拿 IPv6),再扫它自己的二维码 | -| DHCP 保留 `matter`(.45 → MAC `…10:bc`)与实际灯泡 MAC(`…7f:08`)不符 | ⚠️ 保留从未租出,待修(见 hosts/gw.md) | +| 在用的两盏 ESP32-C2 Matter 灯泡(VP `0x4891/0x4100`;2026-08-23 复核) | 工作盏 MAC 已变为 `fc:e8:c0:25:a1:f0`(`.146`,hostname `espressif`;原 `34:98:7a:25:a1:f0` 全网消失,疑固件更新后换 MAC——末 3 字节相同);新盏 `34:98:7a:27:10:bc`(`.148`,hostname `matter`)。两盏各宣告 **3 个 fabric** 运营实例:Aqara `4DF2B1455D19402D`、`2F6E56020E1996E7`、HA `DCE86145C137AF0E`(见 §8) | +| 故障盏 `34:98:7a:27:7f:08`(曾 .145,Aqara fabric,`CM=0` 缺 GUA) | 2026-08-23 复核:无租约、ARP incomplete、AP 无日志 = **已离网**(退役/退换) | +| **失败模式 C(2026-08-23 实测,两盏同时)**:mDNS 活、5540 死 | 灯泡 ping 通(v4/v6)、DHCP 正常续租、mDNS 应答并宣告 `_matter._tcp`(SRV :5540、TXT `T=1`、当前前缀 GUA),但 **TCP 5540 在 IPv4 与 IPv6(fe80+GUA)均 RST 拒绝** → 配对方无法建立 CASE,App 显示离线;hass matter-server 侧无任何 established :5540 会话(详见 §8) | +| ISP PD 前缀再次轮换(2026-08-23 → `240e:3bd:238:4812::/64`;08-22 为 `235:1fb2`) | hass 与 `.148` 均持当前前缀 GUA;hass 残留 `.146` 旧前缀 GUA 的 **FAILED** 邻居项(旧地址缓存仍被某端尝试) | +| DHCP 保留 `matter`(.45 → MAC `…10:bc`) | ⚠️ 保留仍未生效:新灯泡(`…10:bc`)实际拿到动态 `.148` 而非保留的 `.45`(待修,见 hosts/gw.md) | +| **新灯泡(2026-08-22 添加成功)**:MAC `34:98:7a:27:10:bc`(=DHCP 保留目标 MAC),hostname `matter`,IP `.148`,VP `4891/4100`,D=`3377` | ✅ 已入 **Aqara fabric `4DF2B1455D19402D`**;**经 BLE 配网**(Aqara Home App)——线上**无 TCP 5540** 属正常(BLE 会话对 AP/hass 抓包不可见) | +| ESP32-C2 灯泡 firmware 挂死模式(2026-08-22 实测) | 入网后宣告 `_matterc`(CM=1、D=3377)约 **3 秒后网络栈完全静默**:STA 收发计数冻结、不掉线不重启、配对方(手机/M3 `_L3377` 查询)无应答 → 加不上。**对策=断电 10 秒重启**重新进配网模式(实例名更换:`3F4E2C66F2DA85CD`→`E5BA8E28E4DE23A0`),随即 App 添加即成功 | | 遗留 SSID(element/vwire/vport) | ✅ 已清理 | ## 4. 抓包方法(BusyBox 兼容) @@ -97,6 +101,7 @@ ssh zhiqiangf@192.168.55.5 "tcpdump -ni br0 -s 0 -vvv -tt 'udp port 5353 or tcp | 发现(配对方侧) | M3/手机查询 `_L3266._sub._matterc._udp` | 查询有、无应答 = 码/discriminator 不匹配或设备不在线 | | 配对握手 | 到设备 IP **TCP 5540 SYN/SYN-ACK** 双向 | **SYN 无 ACK**=设备不可达/防火墙;**完全无 5540**=发现阶段没完成 | | 配完后 | 设备宣告 `_matter._tcp` + `_I._sub` | 出现 = 已入网成功 | +| BLE 配网(手机 App 直连设备 BLE,如 Aqara Home) | 线上**无 TCP 5540**(BLE 会话对 AP/hass 抓包不可见);设备入网后仍先 mDNS 宣告 `_matterc` | 成功判据=最终宣告 `_matter._tcp` + `_I._sub`;无 5540 **不代表**失败 | ## 5. 排障决策树(按顺序) @@ -114,3 +119,97 @@ ssh zhiqiangf@192.168.55.5 "tcpdump -ni br0 -s 0 -vvv -tt 'udp port 5353 or tcp - [hosts/hass.windy.lan.md](../hosts/hass.windy.lan.md) — matter-server 重拨运维规范 - [docs/unifi-network.md](unifi-network.md) — UniFi 网络/IPv6/SSID 记录 - [hosts/gw.md](../hosts/gw.md) — DHCP 保留 `matter` MAC 错位(待修) + +## 7. 2026-08-22 实测记录:添加新 ESP32-C2 Matter 灯泡(成功 + 失败路径全记录) + +> 场景:手机 App(Aqara Home)添加一盏**新的** ESP32-C2 Matter 灯泡 +> `34:98:7a:27:10:bc`(hostname `matter`,最终 IP `.148`)。中途换了灯泡并断电重启, +> 共经历 **2 种失败模式** 和 **1 条成功路径**,全部抓包实证。 +> +> 抓包点:UAP-AC-Lite `192.168.55.5` `br0`(轮转 `udp 5353 or tcp 5540 or tcp 5552` +> + 定向全量 `ether host 34:98:7a:27:10:bc`)+ hostapd/stahtd 日志 + gw DHCP/ARP 交叉验证。 +> 本地用 tshark 4.7.2 分析。 + +### 时间线(CST,2026-08-22) + +| 时间 | 事件 | 判据 / 说明 | +|---|---|---| +| 10:50:28 | 启动轮转抓包 | — | +| 10:51:12–19 | 手机 `.143`(OnePlus,连 wifi0ap0=`ubnt-windy-2`)重新关联;查询 `_matter._tcp` | 运营查询(浏览已配设备),**不是**配网(配网应查 `_matterc._udp`) | +| ~10:56 | 用户报「配置 wifi 后挂起,不能加入 wifi」 | 首次失败 | +| 11:00:15 | M3 `.248` 查询 `_L3266._sub._matterc` | 无应答(是另一台设备的 discriminator,无关) | +| 11:01:24–42 | **失败模式 A**:故障盏 `…7f:08` 尝试关联 `wifi0ap1`(`ubnt-haas`):发 1 次 open-auth 帧(algorithm 0)→ AP 回 `status_code=0` → **客户端不再发 assoc 请求** → 18s 后 `auth_failures=1` + disassociated | auth 阶段卡死(client 侧);非密码错——密码错会先 assoc 再 4-way 失败 | +| 11:04:01–05 | **新灯泡 `…10:bc` 关联 `wifi0ap1` 成功**,WPA2 4-way 完成,DHCP 拿 `.148`(tracker `soft failure`: ip_delta 3.76s,avg_rssi -68);随即宣告 `_matterc`:实例 `3F4E2C66F2DA85CD`,TXT `VP=4891+4100 D=3377 CM=1`,SRV :5540,**有 GUA** | 发现阶段判据全过 | +| 11:04:05 之后 | **失败模式 B**:灯泡网络栈完全静默——STA 收发计数冻结(rx=89/tx=5 持续 12s+ 不变)、**不掉线不重启** | firmware 挂死 | +| 11:04:59–11:07:27 | 手机查 `_matterc` ×4、`.60` 解析实例、M3 查 `_L3377._sub._matterc` ×5(discriminator 3377 正是新盏)——**全部无应答**;TCP 5540/5552 全程 0 | 配对方找不到设备 → App 报「加不上」 | +| 11:09:35–48 | **断电 10 秒重启**:灯泡重新关联 `wifi0ap1` ×2 | 对策生效 | +| 11:10:26 | DHCP 重新拿 `.148`;STA 计数恢复持续增长(活跃) | — | +| 11:10–11:15 | 重新宣告 `_matterc`(**新实例 `E5BA8E28E4DE23A0`**——入配对模式实例名更换,符合规范);App 走 **BLE 配网** | 线上无 TCP 5540(BLE 对 AP 不可见,属正常) | +| 11:15:23 | 灯泡宣告 **`_matter._tcp`**:`4DF2B1455D19402D-02EF2FF12DFAF10E`(Aqara fabric)+ SRV :5540 + GUA + A | ✅ **添加成功**(已入 Aqara fabric `4DF2B1455D19402D`) | + +### 结论与经验 + +1. **同族灯泡(VP 4891/4100,OUI 34:98:7a)存在两种不同失败模式**: + - 故障盏 `…7f:08`:auth 阶段卡死(auth 帧后不发 assoc);此前(08-21 21:27)成功关联后伴随 + `ip_failures=1`(拿不到 IP)+ 缺 GUA —— 属更深层故障,需恢复出厂,本次未处理,仍离线。 + - 新盏 `…10:bc`:入网 + 宣告 `_matterc`(CM=1)成功后约 3 秒固件挂死(全静默)。 + **断电 10 秒重启即恢复**,是最简单有效的对策。 +2. **AP 抓包看不到 BLE 配网**:Aqara Home App 对 WiFi Matter 设备走 BLE 配网时,线上只有 + mDNS/DHCP,**无 TCP 5540 不代表失败**;成功判据 = 设备最终宣告 `_matter._tcp` + `_I._sub`。 +3. **发现判据回顾**:`_matterc` + TXT(`CM=1`、`D=`、`VP=`)+ SRV :5540 + AAAA(GUA) + A 全齐才算 + 设备真的在配对模式;配对方按 `_L._sub._matterc` 精确匹配 discriminator(本例 D=3377)。 +4. 新盏 RSSI -68、DHCP 3.76s,射频偏弱,可能加剧 firmware 不稳定(待观察)。 +5. DHCP 保留 `matter`(.45→`…10:bc`)**仍未生效**:新盏实际拿动态 `.148`(待修,见 hosts/gw.md)。 +6. 识别「配对方在找但设备不答」的快速方法:抓包里配对方持续查 `_matterc`/`_L` 而目标 MAC + 零应答 + STA 收发计数冻结 = 设备侧挂死;此时**先断电重启设备**,不要怀疑网络/AP。 + +### 后续:新盏 11:24 起离线循环(同一盏 `…10:bc`,2026-08-22) + +配网成功后约 10 分钟(11:15–11:24 可控制),灯泡进入**持续性故障循环**: + +| 时间 | 事件 | 模式 | +|---|---|---| +| 11:24:57 | `EVENT_STA_LEAVE`(真掉线) | 掉线 | +| 11:25:12 | 重连 `auth_failures=2` | **auth 卡死**(同故障盏 `…7f:08` 11:01 的模式) | +| 11:25:23–25 | 重连成功,WPA2 完成,重新拿 `.148` | — | +| 11:25:38 | `soft failure`,ip_delta 2.65s,**avg_rssi -73**(-68→-73 持续变差) | 射频偏弱 | +| 11:25 之后 | STA 计数冻结(rx=119/tx=64 不动);M3 持续查询其运营实例 `4DF2B1455D19402D-02EF2FF12DFAF10E._matter._tcp` **无应答** → App 显示「离线」 | 静默挂死 | + +**结论**:三盏 ESP32-C2 灯泡中两盏(`…7f:08`、`…10:bc`)故障,表现覆盖 auth 卡死 / 静默挂死 / +随机掉线三种形态;工作盏 `…25:a1:f0` 正常。网络侧(AP、M3、DHCP、mDNS)均验证正常。 +**疑似根因(按可能性)**:① ESP32-C2 Matter 灯泡 firmware 缺陷(同批次)② 射频偏弱 +(RSSI -73,天线/距离/遮挡)加剧不稳定 ③ 供电不稳(brownout 造成 Wi-Fi 栈崩溃重启)。 +**待办**:移近 AP 或改善供电后观察;App 内查固件更新;仍复发则考虑退换。 + +## 8. 2026-08-23 状态核查:两盏「半在线」——mDNS 宣告正常但 TCP 5540 无监听(失败模式 C) + +> 全程**只读**核查(gw DHCP/ARP、AP hostapd 日志、hass matter-server 状态 + mDNS 抓包、 +> 对灯泡 v4/v6 的 TCP 5540 探测,09:0x CST)。结论:**网络侧全部健康;两盏灯泡网络栈活着、 +> mDNS 运营宣告正常,但 Matter 会话端点(TCP 5540)无监听**——配对方无法建立 CASE, +> App 内应显示离线/不可达。 + +| 对象 | 状态(2026-08-23) | +|---|---| +| 新盏 `34:98:7a:27:10:bc`(`.148`,hostname `matter`) | DHCP 04:40 续租;gw ARP 完整;ping 通(93–122ms,ESP32 省电时延);08-22 16:40 起稳定关联 `wifi0ap1`,关联时 `avg_rssi -70`。mDNS 宣告 3 实例:`4DF2B1455D19402D-02EF079EEB480D07`(**新 node ID——08-22 之后被重新配网过**)、`2F6E56020E1996E7-137147AF27BE4EB6`、`DCE86145C137AF0E-0000000000000011`(HA fabric);host 记录 A `.148` + fe80 + **当前前缀** GUA `240e:3bd:238:4812:*`。支持单播 legacy mDNS 查询(`dig -p 5353 @.148 _matter._tcp.local PTR` 可用) | +| 工作盏(MAC 已变)`fc:e8:c0:25:a1:f0`(`.146`,hostname `espressif`) | DHCP 07:17 续租;ping 通 v4/v6(v6 fe80 38–61ms)。mDNS 宣告 3 实例:`4DF2B1455D19402D-02EF4CA3F856B615`、`2F6E56020E1996E7-EE8F2E4F1A77BF05`、`DCE86145C137AF0E-000000000000000B`。原 MAC `34:98:7a:25:a1:f0` 全网消失(无租约/ARP/AP 日志)而新 MAC 末 3 字节相同 → 疑固件更新后改 MAC。**拒绝单播 5353**(ICMP port unreachable),只应答组播查询——同族固件行为差异。hass 残留其旧前缀 GUA `240e:3bd:235:1fb2:fee8:c0ff:fe25:a1f0` 的 **FAILED** 邻居项 | +| 故障盏 `34:98:7a:27:7f:08`(曾 `.145`) | 无租约、ARP incomplete、AP 日志零事件 = 已离网 | +| **TCP 5540 探测(两盏)** | IPv4(LAN66 与 hass 本段)、IPv6(fe80%end0 + 当前 GUA)全部 **RST(Connection refused)** —— SRV 宣告 :5540 且 TXT `T=1`,但实际无监听 | +| hass matter-server | `started`,v9.0.4,无更新;宣告自身运营实例 `DCE86145C137AF0E-…1B669`(v4+v6,当前 GUA);**无任何 established :5540 会话**;core/add-on 日志无 matter 错误 | +| 其他 Matter 控制器 | Aqara M3 `.248` 在线(有线 0.8ms),宣告含自身 fabric 节点 `4DF2B1455D19402D-11E158E46D24A000`;SmartThings `.48` 在线并周期查询 `_matter._tcp.local`;手机(当前前缀 GUA)也在浏览。LAN55 共见 **5 个 fabric**:`4DF2B1455D19402D`(M3)、`DCE86145C137AF0E`(HA)、`2F6E56020E1996E7`、`03BCFAEDD6153944`、`6A6FF80C2DB84DEE` | + +**判定**:失败模式 C = TCP/IP 栈与 mDNS 守护进程活着(主动 RST、DHCP 续租、ping 通), +但 Matter 应用层监听不存在。与模式 A(auth 卡死)、模式 B(全静默挂死)同族不同形态; +**两盏同时处于同一状态**更指向共同诱因(固件缺陷,或 PD 轮换等共同事件后未恢复)。 +**对策(推荐,未执行)**:逐盏断电 10 秒重启(模式 B 的已验证对策),重启后复测 +TCP 5540 恢复监听即可确认。 + +**核查方法备忘**(只读,可复用): + +- gw:`show dhcp leases` / `show arp`(经 `/opt/vyatta/bin/vyatta-op-cmd-wrapper`)。 +- AP:`grep -i /var/log/messages`(hostapd 关联事件 + stahtd RSSI/soft failure)。 +- hass:`sudo -n -i ha apps info core_matter_server`;`ip -6 neigh show dev end0` + (看灯泡 fe80/旧新前缀 GUA 与 FAILED 项);被动抓包 + `sudo -n -i timeout 65 tcpdump -ni end0 -s 0 -tt 'udp port 5353'`——配对方周期查询 + 会自然引出灯泡宣告,无需主动发包。 +- 5540 探测:hass 上 python3 对 v4 / fe80%end0 / GUA 各 connect 一次;RST=无监听, + 超时=不可达(两者含义不同)。 diff --git a/hosts/gw.md b/hosts/gw.md index 1c67da5..8bc4679 100644 --- a/hosts/gw.md +++ b/hosts/gw.md @@ -147,11 +147,13 @@ check: the IPv6 routing table shows connected `/64`s on `eth0` (LAN66) and `switch0` (LAN55) plus `::/0` via `pppoe0`; both UniFi APs obtained SLAAC addresses from the router's RAs. No configuration changes were made. -**DHCP 保留 `matter` MAC 错位(2026-08-21 发现,待修,W1N-207):** 静态映射 -`matter` → .45 / MAC `34:98:7a:27:10:bc`,但实际 Matter 灯泡的 MAC 是 -`34:98:7a:27:7f:08`(动态租约 .145,hostname `matter`)。保留 .45 从未被租出。 -修正需在 `service dhcp-server shared-network-name LAN2 ... static-mapping matter` -里把 MAC 改为 `34:98:7a:27:7f:08`(或删除该保留),**未执行**。 +**DHCP 保留 `matter` 失效(2026-08-21 发现,2026-08-23 复核仍未生效,W1N-207):** +静态映射 `matter` → .45 / MAC `34:98:7a:27:10:bc`,但该灯泡一直以**动态租约**拿 +`.148`(hostname `matter`;2026-08-23 09:02 时租约当日 04:40 已续租)。保留 .45 从未 +被租出。2026-08-23 复核补充:另一盏工作灯泡的 MAC 已变为 `fc:e8:c0:25:a1:f0` +(动态 `.146`,hostname `espressif`),原「把 MAC 改为 `34:98:7a:27:7f:08`」的修正 +建议已过时(该灯泡已离网)。处置:删除该保留,或按现用 MAC(`.148` 的 +`34:98:7a:27:10:bc` / `.146` 的 `fc:e8:c0:25:a1:f0`)重建,**未执行**。 **SE5420 部署 + switch0 单上联(2026-08-22 只读核实):** `switch0` 成员口 `eth1` link up、`eth2`/`eth3` down(单上联);SE5420 管理面 `192.168.66.253` diff --git a/hosts/hass.windy.lan.md b/hosts/hass.windy.lan.md index 3354ac2..5a08461 100644 --- a/hosts/hass.windy.lan.md +++ b/hosts/hass.windy.lan.md @@ -370,6 +370,14 @@ fails. > while ping6 and `curl -6 --noproxy` work) — not the Matter root cause; re-check > on the next health snapshot. +Verified 2026-08-23 (read-only, W1N-207): add-on `started`, version `9.0.4`, no +update pending; current GUA `240e:3bd:238:4812:*` (PD rotated again since 08-22) +advertised correctly over v4+v6. Both ESP32-C2 bulbs now announce `_matter._tcp` +(multi-fabric, including this host's fabric `DCE86145C137AF0E`) — but they +**refuse TCP 5540 on IPv4 and IPv6**, so matter-server holds **zero established +:5540 sessions** (device-side failure mode C; no errors logged — see +[docs/matter-pairing-troubleshoot.md §8](../docs/matter-pairing-troubleshoot.md)). + ## Related docs - [runbooks/home-assistant-maintenance.md](../runbooks/home-assistant-maintenance.md) — `ha` CLI maintenance runbook + [script](../runbooks/scripts/ha-maintenance.sh); custom-component zip install is §7