Skip to content

连接与系统路由 ​

Perfowl 当前以 USB 主链连接 iOS 真机,同时可发现 usbmuxd 已知的 Network/Wi-Fi 拓扑;不同 iOS 版本走不同的系统通道,路由会被显式记录进采集事件。

系统路由矩阵 ​

iOS 版本通道预期路由Perfowl 状态
iOS 15.xD1 LegacyLockdown / usbmux路由合同 E2;本页无真机 E4
iOS 16.xD1 LegacyLockdown / usbmux✅ 真机实测(iOS 16.6.1:发现、Lockdown、Developer image、DVT 只读链全部通过)
iOS 17.0 – 17.3D2 Early 17受控 privileged tunneld(RemoteXPC)代码路由已实现,真机回包待验证(B-VAL 门禁)
iOS 17.4–17.xD3 ModernmacOS native / no-root 优先Host 选择 route 与 provider 实际 route 同时入事件;真机待验收
iOS 18.xD3 ModernmacOS native / no-root 优先已有 iOS 18.2 E4 路由证据
iOS 26.x / 27.xD3 Modernusbmux 请求,native remoted 优先,userspace/tunneld 回退2/2 平台路由与 Collector --native 参数已通过 E2 Fixture;真机通道、schema 与值待 E4

路由判定不靠猜:Host 选择的 route(如 --connection-route)与设备侧 provider 实际使用的 route 会一起写入采集事件,供事后审计。

Host 要求 ​

项当前状态
操作系统macOS;Intel已有历史验证。Apple Silicon已有源码E2及本次只读通道E3,完整冻结产品、GUI与指标验收仍待
Xcode / xctrace可选。缺失 Xcode 时基础采集完全可用;xctrace 仅用于按需深度诊断增强
Developer Mode目标设备需开启,并完成配对信任(Trust)

连接方式边界 ​

  • USB:当前正式主链。Perfowl 只对 usbmux list --usb 返回的物理路由显示 USB,usbmuxd 事件驱动刷新,不把 Network 变化冒充 USB 插拔。
  • Wi-Fi:可通过 usbmux list --network --simple 发现拓扑,随后在后台以 4 秒有界 lockdown info --udid DEVICE 并行验证。可达时补全真实名称/型号/版本并允许进入 App/DVT 准备;不可达时标记“当前离线”,不冒充在线设备。成功身份只记在本机 Application Support,不进入 Session、文档或提交;Network 查询与身份水化均不阻塞 USB 发现。
  • 模拟器:不用于任何指标结论。

发现、可达与就绪是三个状态 ​

状态含义界面行为
已发现usbmuxd 存在 USB 或 Network 拓扑记录允许在选择器中展示,不渲染为绿色 Ready
可达Lockdown 身份查询在有界时间内成功允许继续读取 User App 与准备系统服务
已就绪App 目录和所选路由的 DVT 服务完成顶部状态点才显示绿色,且可开始测试

无缓存且离线的 Network 记录统一归入“历史 Wi-Fi 设备”;有缓存但离线的记录可显示已记住名称并提供重试。只有本轮验证为 reachable 的 Network 行才响应选择并进入设备准备。

后台拓扑刷新不再把已就绪设备降级为“正在准备”;只有 App 列表正在读取或连接服务正在准备时,工作台才显示阻塞遮罩。

常见限制 ​

  • 首次连接需在设备上完成信任确认;Developer image 需已挂载(Perfowl 只读使用,不修改设备);
  • 采集链不修改、不注入、不重签目标 App;用户开始测试时可通过系统 ProcessControl 启动所选 App,Startup 使用唯一一次受控冷启动,见无侵入边界。

版本历史 ​

版本日期变更
v92026-10-18完整ARM内部冻结候选与开发签名核验(E2);静态OpenSSL、symlink闭包检查及安装门分层。
v82026-10-18区分iOS开发签名与Mac Developer ID;字段目录按实际类型留证;ARM源码及只读通道不升级为指标E4。
v72026-10-18全新验收与历史迁移分别准入;固定依赖解析需检查完整TLS日志,版本存在、wheel架构匹配、安装与运行资格分别核对。
v62026-10-18新Apple Silicon主机的源码编译与工具资格分层;Swift6.1兼容修复仅E2,不代表Intel冻结工具、签名包或设备通道恢复。
v52026-10-17显式native在精确USB缺项异常下直接核真实RSD 身份/版本;物理USB、枚举与服务可用分层,软件及只读资格不等于正常UI指标验收。
v42026-09-08显式加入 iOS 26/27 modern route E2 candidate,修正自动启动与无侵入边界的表述
v32026-09-07USB 先返回,Network 后台有界水化;增加本机身份缓存、reachable/offline 语义与历史记录分组
v22026-09-07明确 USB 主链与 Wi-Fi 拓扑发现/按需可达性验证;冻结发现、可达、就绪三态及有界失败语义
v12026-09-04首次发布;整理自 F0 连接冒烟、Batch A 路由分层与 B 批次路由审计

来源批次:P4 Wi-Fi 身份与停止/时间轴结果 · P4 设备发现与准备状态机修复 · F0 连接冒烟 · Batch A · B 批次

物理已直连,但USB枚举仍缺项 · 2026-10-17(E2/E3) ​

表现与判断:本批硬件USB序列正规化后精确匹配目标,CoreDevice列wired,usbmux却只有Network;USB专用Lockdown入口报DeviceNotFoundError。设备是否插线、某份枚举是否当前包含USB、实际DVT是否可用必须分开核对,不能仅凭一个列表让用户重复插线,也不靠CoreDevice缓存宣称可采集。枚举缺项的系统根因尚未确认。

已验证机制与避免方式:对Owner明确选择的native路线,且只在USB缺项这一特定异常下,用同一精确目标一次打开系统原生RSD并核实际设备身份与iOS≥17;错误/缺身份或坏版本关断,配对/权限/取消等其他错误仍原样失败,不跨路由、不自动重试、不建常驻隧道。没有改变USB拓扑标签,不能把Network行冒充物理USB事件;iOS16正常USB路径保持。源码控制15项、核心54/启动390/实时60通过,实际新入口只读双查询可通。

限制:这是特定现场的有界服务资格,不是所有系统/设备可用或正常产品UI全流程通过。参考与产品仍共享系统服务、缓存新鲜度未知;ProviderLease的关闭返回不独立证明所有底层关闭完整。匹配包/正常UI正式五轮未完成前不登记指标通过。开发记录 · 快照。

换机时分开核源码、架构与设备资格 · 2026-10-18(E1 / E2 / E3) ​

表现与定位:旧Intel主机能构建的源码,在Apple Silicon的Xcode16.4 / Swift6.1.2上首次完整构建报两个Optional Bool switch穷尽性错误和一个图表表达式类型检查错误。拆分表达式后进一步定位到CGFloat/Double运算符歧义。这是本次编译器组合的实际诊断,不能据此认定手机指标数值错误,也未证明所有旧版Swift都有同样问题。

已验证处理:显式匹配Optional三态、拆分有类型的图表数据与绘制表达式、显式转换坐标比例后,完整ARM GUI/Core release源码编译通过;Lab当前9源也在真实iPhoneOS18.5 SDK完成unsigned链接。原始缺值分段、极值采样与轴计算没有变更。复现时保留失败日志、编译器/SDK和源码SHA;先验证源码,不通过放宽指标门解决编译失败。

恢复限制与避免方式:ARM源码编译通过,不意味着旧Intel冻结包可用。当前冻结脚本及libdeflate归档仍有x86_64限制,必须核Python、native模块、动态库和GUI实际选择的工具目录;Rosetta下解释器能启动只是其中一项。只读CoreDevice列表可见也不证明物理USB、Lockdown、DTX 或配方通道就绪;应分别绑定同一设备核对。新候选签名/安装、实际run容量、新主机工具资格和新诊断齐备后才准入正式采集。历史迁移缺失单列审计缺口,不要求完整旧归档先迁齐;需要归位的手机原件可直接导出到新机并逐件核SHA后保留归位,不能省略保全或伪填容量收据。旧attempt的四成功轮与第五失败保持,不拼接补轮。

本节是新主机软件兼容与只读恢复知识,未新增指标E4,也未宣布Apple Silicon整包原生可用。方案、失败与实际结果。

固定依赖报“找不到版本”时先核TLS与架构 · 2026-10-18(E1 / E3) ​

表现与机制:pip的末尾可以同时出现No matching distribution found,而真正的早期错误是CERTIFICATE_VERIFY_FAILED、导致索引被跳过。本次默认Python3.12的CA路径无有效证书文件,首次原始stdout已记录证书错误;只看stderr中的最后一行会误判成固定版本不存在。

判断与避免:保留完整stdout/stderr和执行环境;先使用本机现有系统CA对官方固定版本元数据做验证,再分别核版本、Python条件、wheel架构/最低OS与摘要。CA配置只传给该命令,不禁用TLS、不以换版本掩盖索引连接失败。官方元数据能读取只证明网络和文件声明,仍需实际解析、安装、加载与运行核对。

适用范围与限制:本次系统CA验证成功,pymobiledevice3 11.3.1的wheel/sdist摘要与已提交锁相同;102个固定版本均有官方元数据,但cryptography 50.0.1没有匹配本机Intel目标的macOS wheel,hexdump 3.3仅有sdist。缺wheel仍需评估固定版本源码构建或先文档化架构方案,不能解释成整个库不存在,也不能直接修改锁。此结果不证明新采集环境、签名包或手机通道可用。恢复开发记录 · 固定上游发布文件 · 固定冻结器发布文件。

签名类别与服务返回类型分别核对 · 2026-10-18(E2 / E3) ​

签名表现与判断:Mac的Developer ID Application身份未检出,不足以判断iOS自有Lab无法签名。本次用户指出CodeSign4QC存有profile后,实际找到可匹配的开发资料。判断时逐项核有效期、Team、应用覆盖、设备覆盖、证书和entitlements,再对新构建副本实际签名、严格验证、提取leaf及独立解包核SHA;只看到证书名称或profile文件不足以证明私钥可用。同Team/应用兼容也不证明旧安装leaf相同。

适用边界与避免方式:本次新Lab签名和解包核同通过E2,未安装,未证明Mac包满足Developer ID交付要求。证书/profile/设备身份只放私有证据,不导出私钥或密码,不通过通用重签/注入流程处理目标App。自有测试Lab的开发签名不改变无侵入产品边界。

服务类型表现与处理:固定SDK的sysmon字段目录在本机实际返回set,初版资格脚本因list断言而失败。先保存实际响应及类型,再检查内容与字段覆盖;将检查器类型假设错误与服务连接故障分开,不能只凭一次断言失败判定DTX或指标失败。该只读链已核物理USB、现有配对、RSD同目标及DTX字段目录(E3),没有验证字段实际采样、刷新或配方执行。未知schema仍应停止并保留unknown,不能为通过检查放宽数值门。

本次恢复方法与限制见开发记录及增量快照。

ARM冻结包的链接、缓存和安装边界 · 2026-10-18(E2) ​

表现与机制:旧Intel冻结脚本对本机ARM及固定依赖的静态OpenSSL布局不适用。依赖版本相同不代表native布局相同;静态cryptography/sslpsk不能要求存在另一组host动态库。缓存若包含脚本调用路径,也会因相对/绝对路径差异而重复冻结。

验证与避免方式:固定同一版本列表,分架构固定native输入,核真实Mach-O及OpenSSL依赖;仅动态布局携带相应库,并保留私有pair隔离。缓存键核源/native/metadata字节和ABI,不以目录存在即命中;按内容构造稳定键,缓存返回仍执行真实probe。新机实际三runtime缓存执行文件SHA/mtime保持,不能用此推断设备采集性能。

symlink诊断:PyInstaller的包内依赖可能通过symlink别名位于根目录,真实文件则在包子目录。扫描器应保留链接并按实际模块及load/rpath上下文核闭包,不将别名路径的误解析认作缺库;禁止靠host搜索路径掩盖真正缺项。本批首个检查器失败保留,修正后318个ARM Mach-O包内闭包及签名后真实命令通过。官方symlink说明。

证据边界:完整ARM App及DMG已用现有Apple Development私钥签名、严格验证和独立只读挂载全树核同(E2),89个冻结Core模块与当前源码核同;未安装或启动GUI。开发签名不等同Mac Developer ID交付,Gatekeeper实测未通过;标准安装签名类别需按Owner决定处理。新GUI、参考/开销、配方、诊断、实际容量和完整五轮仍待;没有新增指标验收。方案与失败/结果 · 快照。

Python入口与参考配置的恢复检查 · 2026-10-18(E2 / E3) ​

Python入口表现:对venv的Python可执行入口使用Path.resolve()可能跟随符号链接到基础解释器;该基础解释器缺少venv依赖,即使此前在venv里测试通过,子进程仍会导入失败。本次失败发生在SDK导入前、手机调用0。调用时保留venv入口的绝对路径,记录实际解释器与依赖版本,不能因为包已经安装就假定任何同名Python都有它。

配置检查表现:自有Lab的CPU有效配置仅在中断参考开启时写入interruptReferenceEnabled及API字段,OFF时这些字段缺席;明确关闭值仍须在plan及完整请求中核同,全部原生reference须为null。应依据当前源码和原件条件字段做检查;不得把检查器的缺字段错误判成手机执行失败,也不能把任意未知缺项默认成关闭。该结论仅适用本次固定Lab schema;其他版本重新核源码。

通道边界:当前机新一次Apple CoreDevice只读详情返回成功且目标身份核同,不能替代payload-URL配方、同生命回执、产品Session及完整指标诊断。DTX参数配方与Apple命令通道分层记录。上述方法与失败原件来源:新机attempt方案及增量。

修订日期内容与来源
恢复检查补充12026-10-18venv符号链接入口、参考条件字段、Apple只读与配方分层;同上恢复devlog。

安装超时与实际落地分开核对 · 2026-10-21(E2 / E3) ​

表现:自有测试台候选先后两次安装等待超时,第二次有完整阶段证据:IPA上传/回读SHA通过、命令发送返回,但90秒内没有completion/progress;当时查询仍旧版本。保存全部失败与暂存后,核同封口/无待执行请求,只正常退出已封口自有生命一次;后续两次查询实际新版本、暂存为空,期间没有第三次安装命令。

判断与避免:主机等待超时不能等同系统未执行。把上传、包SHA、发送意图/发送返回、completion及新鲜实际版本查询分别记录;任何发送后异常仍为unknown,保留包与证据,先核版本、身份、旧数据和执行器终态。不能立即重发,不能只凭progress、目录为空或connected状态宣布安装成功。单次正常退出后落地是本机观察顺序,尚未证明进程占用为根因,也不能区分两个未知事务中哪一个完成;正常退出前须确认同生命及全部负载封口,不反复追逐新生命。该案例仅适用于自有App开发测试安装,不授权操作第三方App。

通道与日志边界:本机native RSD安装代理只读lookup成功,而Apple CoreDevice lockState在连接阶段失败;paired/wired/connected不等于所有Apple命令通道可用,更不能据失败推断锁屏。日志导出请求16MiB软限仍增长,主机32MiB硬限停止后仅有不完整archive;log show拒绝解析,未获得根因证据,不把部分归档当完整日志或继续无界下载。

版本历史增量:installation-phase-reconciliation/1,2026-10-21;E2九项transport及28项既有升级控制、E3版本/暂存/封口观察,指标正式状态不变。方案、实际结果及限制。

Perfowl · Performance Observer