SuperAPI AI 工具集

macbook-desktop-mode

通用与其它

查看项目

更新于 10-16 01:49

技能介绍

用途:把 MacBook 当作长期插电的桌面工作站,解决两类问题——睡眠/唤醒后 USB 设备(尤其是 USB 1.1 音频设备)从总线上消失,以及持续插电导致的电池循环损耗。

主要能力:一是电源配置,把充电上限设为 80%(Apple Silicon 到限后进入 AC 旁路),并用 sudo pmset -c sleep 0 只在交流电下关闭系统睡眠,保留显示器睡眠与电池模式设置,从而消除 DarkWake 循环与电池微循环。二是硬件层,用外接供电 USB 集线器建立 USB 会话边界,配合 uhubctl(brew install uhubctl)实现软件控制端口重置,如 uhubctl -a cycle -d 2;兼容芯片组有 VIA VL805/VL812/VL817、Realtek RTS5411、Genesys Logic GL850G/GL3510。三是软件层,Swift 守护进程(AudioDeviceMonitorRunner.swift)作为 launchd KeepAlive agent 运行,含状态机(PRESENT→DISAPPEARED→RECOVERING→DEAD)、IOKit 电源回调唤醒检测、60 秒心跳、uhubctl 端口重置恢复级联与 Telegram 通知。编译命令为 swiftc -O -framework CoreAudio -framework IOKit -o 输出路径 AudioDeviceMonitorRunner.swift,之后用 codesign -s - -f -i 标识 签名,并以 launchctl load 加载 plist。

适用场景:USB 麦克风或音频设备在睡眠/唤醒后消失、插电 Mac 出现不必要的电池循环、把 MacBook 作为常驻桌面机、为常驻交流电配置 pmset、用 uhubctl 控制供电集线器端口。

限制与注意:USB 1.1 全速设备无链路电源管理与选择性挂起协商,且常无序列号,最易掉线;Chrome 等应用的 WebRTC/WebAudio 会持有 USB 句柄。反模式包括改 powernap=0、关闭优化充电、杀 Chrome、轮询 system_profiler、用 NSWorkspace 唤醒通知等,资料给出了对应正确做法。设备已从 IO registry 掉出后无法用 IOKit 重置,需 uhubctl 物理断电。守护进程的具体源码、日志路径、通知凭据路径及部分参数未在资料中提供。