offyotto/a2442-ug400-ace2-research
GitHub: offyotto/a2442-ug400-ace2-research
该项目记录并分析了一台 MacBook Pro A2442 上 UG400 ACE2 控制器卡在 BOOT 状态导致充电完全失效的硬件故障,涵盖 I2C 诊断数据、固件来源追溯、usbcfwflasher 刷新失败分析及脱敏数据集。
Stars: 0 | Forks: 0
# A2442 UG400 卡在 BOOT
本仓库记录了一台 2021 款 14 英寸 MacBook Pro 的充电故障:
- 型号:A2442,MacBookPro18,3
- 逻辑板:820-02098-A
- 控制器:UG400,CD3217B12BCE,ACE2
- 线路:RID2,I2C 地址 `0x3b`,配置 `J314P2P`
UG400 在 I2C 上保持存活,但停止加载其 APP 固件。随后整台 Mac 拒绝接入外部电源,包括 MagSafe。
## 简述
损坏的 RID2:
```
mode BOOT
version 2.0.0.0
register 0x03 = BOOT
register 0x0f = 0x00002000
ADCr 0xe00002e6
```
正常的 RID2:
```
mode APP
version 2.170.0.28
config J314P2P
ADCr returns data
```
其他三个 ACE2 控制器保持在 APP 状态。只有 RID2 改变了状态。
在维修期间物理断开电池后,同一个 RID2 芯片随后回到了 APP 状态。它首先恢复到了固件版本 `2.138.0.23`。大约两小时后,Apple 的更新程序将其升级到了 `2.170.0.28`。
电池并非发生故障的部件。旧电池包有 41 到 48 次循环,电芯平衡正常,没有永久故障标志,并且只要 RID2 进入 APP 状态,就能以 2.9 到 3.6 A 的电流充电。断开电池提供了正常关机所无法实现的整个主板彻底断电。
## 固件文件
Apple 的私有刷新程序要求:
```
/usr/standalone/firmware/USB-C_HPM,34-P2_P-AP.bin
```
该文件在正在运行的 macOS 安装中并不存在。它是在 Apple 官方的 macOS 26.5 恢复 IPSW 中找到的:
```
UniversalMac_26.5_25F71_Restore.ipsw
094-55986-095.dmg.deflate
Image4 payload type: IM4P rdsk
APFS payload offset: 27 bytes
/usr/standalone/firmware/USB-C_HPM,34-P2_P-AP.bin
```
文件标识:
```
size 514240 bytes
sha256 2beba5d54a897656954f21814f5c01da0c760fb455e0a0ebf10b7a7e07f0a4af
target 002.170.00.28
board J314P2P
```
此处不包含该固件。请从 Apple 下载并从 Apple 的恢复镜像中提取。请勿使用 P01 或 P5 镜像替代 P2。
## `usbcfwflasher`
macOS 包含 `/usr/bin/usbcfwflasher`。该命令行二进制文件只是一个轻量级前端。大部分更新逻辑位于 `/usr/lib/libUSBCfwflasher.dylib` 或 dyld 共享缓存中。
该工具识别出了 RID2,识别出了 P2 镜像,解码了目标版本,并进入了安全刷新路径。在任何 payload 块被确认完成之前,记录的四次尝试均失败了:
| 日期 | 最后完成的阶段 | 首个错误 | 已完成的块 |
| --- | --- | --- | ---: |
| 2026-05-18 | update check | `SFWi`, 状态 `0x01` | 0 |
| 2026-06-04 | block schedule | `SFWd` 块 0, 响应 `0x08` | 0 |
| 2026-06-04 | block schedule | `SFWd` 块 0, 响应 `0x08` | 0 |
| 2026-06-24 | update check | `SFWi`, 状态 `0x01` | 0 |
`Block Count at Failure: 0` 证明了刷新程序没有报告任何已完成的 payload 块。这并不能证明设置、擦除或被拒绝的块 0 事务没有产生任何持久性更改。
## 充电误报
当电池和充电器层显示以下信息时,控制器层仍然可以发布接入或 PD 信息:
```
ExternalConnected No
ExternalChargeCapable No
SystemVoltageIn 0
SystemPowerIn 0
IsCharging No
NotChargingReason 128
```
缓存或协商的 PDO 并不能证明 Mac 接受了外部电源。这就是本次事件中 WhatCable 报告充电误报的根本原因。
## 延伸阅读
- [完整调查结果](docs/findings.md)
- [固件来源与 P2 布局](docs/firmware.md)
- [充电故障与恢复](docs/charging.md)
- [经过脱敏处理的 107 次抓取时间线](data/rid2-timeline.csv)
- [数据集字段与隐私规则](data/README.md)
- [经过脱敏处理的刷新尝试表](data/flash-attempts.csv)
- [只读 P2 扫描器](tools/probe_p2_image.py)
## 安全与许可
这是一份取证记录,而非刷新指南。活动的 HPM 重置、VOUT、DFU 和刷新路径可能会导致停止充电或损坏控制器状态。
此处不包含任何 Apple 固件、刷新程序二进制文件、dylib、原理图、boardview、设备序列号、控制器 UID 或原始个人日志。本仓库包含原始笔记、小型分析工具以及在 MIT 许可证下的脱敏衍生数据。
标签:ACE2控制器, USB-C, 固件分析, 底层硬件, 硬件调试, 硬件运维, 苹果MacBook, 逆向工具