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, 逆向工具