解决7系列主板usb引起的睡眠唤醒问题,包含usb3.0内建及3.0转2.0方法。
各位有睡眠自动唤醒的而且日志里面有
Wake reason: EHC1
Wake reason: EHC2
Wake reason: XHC
这种情况的往下看。
之前有个解决办法,将所有EHC和XHC删除,但是会造成唤醒后usb意外推出以及usb识别为扩展的问题。以下办法会解决这个问题。
通常主板dsdt中会有Device (EHC1)及Device (EHC2)和Device (XHC),其中前两个为usb2.0,后一个为usb3.0.。
首先,关于usb2.0内建
只需要在Device (EHC1)及Device (EHC2)下的
- Method (_PRW, 0, NotSerialized)
- {
- Return (GPRW (0x0D, 0x03))
- }
复制代码 后加入
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x13)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x26, 0x1C, 0x00, 0x00
- },
- "built-in",
- Buffer (One)
- {
- 0x00
- },
- "AAPL,clock-id",
- Buffer (One)
- {
- 0x01
- },
- "device_type",
- Buffer (0x05)
- {
- "EHCI"
- },
- "AAPL,current-available",
- 0x0834,
- "AAPL,current-extra",
- 0x0898,
- "AAPL,current-extra-in-sleep",
- 0x0640,
- "AAPL,device-internal",
- 0x02,
- "AAPL,max-port-current-in-sleep",
- 0x0834,
- Buffer (One)
- {
- 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码 其中device id 部分自行更换为自己usb的id。7系列估计都这个id。
7系列的原生usb3.0部分同样在Device (XHC)下的
- Method (_PRW, 0, NotSerialized)
- {
- Return (GPRW (0x0D, 0x03))
- }
复制代码 后面加入
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x13)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x31, 0x1E, 0x00, 0x00
- },
- "built-in",
- Buffer (One)
- {
- 0x00
- },
- "AAPL,clock-id",
- Buffer (One)
- {
- 0x01
- },
- "device_type",
- Buffer (0x05)
- {
- "XHC"
- },
- "AAPL,current-available",
- 0x0834,
- "AAPL,current-extra",
- 0x0898,
- "AAPL,current-extra-in-sleep",
- 0x0640,
- "AAPL,device-internal",
- Zero,
- "AAPL,max-port-current-in-sleep",
- 0x0834,
- Buffer (One)
- {
- 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码 这里面的device id为原生usb3.0的id。
大家都有发现原生usb3.0只认键盘鼠标和3.0的设备。
要认2.0的设备只能把usbxhci的kext删除。其实dsdt也能直接把usb3.0降级为2.0。
方法就是把上面提到过的Device (XHC)下新加入代码里的device id改为usb 2.0的id即可。是不是很简单呢?
最后:诚征无线网卡睡眠唤醒后不能联网的解决方案。
表现错误如下:
- kernel[0]: ARPT cannot assert wake from D3cold
复制代码
|