测试了大概3次(BT都正常,除了今天不能开),3天连着崩溃, 都是刚刚装完 Kext 后才发生的, 就是当长时间睡眠(sleep)的话就提示出错自动重启了.... 今天的话 BT 直接开不了了.. 显示是关闭的而且按开也没反应.
Mac 自带的 Problem Report:
panic(cpu 0 caller 0xffffff80208a31fc): Wake transition timed out after 180 seconds while calling power state change callbacks. Suspected bundle: com.apple.iokit.IOUSBHostFamily. Thread 0x3a9bb.
Failure code:: 0x00000004 00000027
Backtracing specified thread
Backtrace (CPU 0), Frame : Return Address
0xffffff9237adb900 : 0xffffff8020263848
0xffffff92370a3960 : 0xffffff8020161334
0xffffff92370a39d0 : 0xffffff802015fb1f
0xffffff92370a3a20 : 0xffffff8020150a63
0xffffff92370a3a60 : 0xffffff802084039f
0xffffff92370a3aa0 : 0xffffff80208414a3
0xffffff92370a3ae0 : 0xffffff7fa0bc3f10
0xffffff92370a3c50 : 0xffffff7fa1736b24
0xffffff92370a3cc0 : 0xffffff7fa1858ea2
0xffffff92370a3d10 : 0xffffff7fa186114d
0xffffff92370a3d60 : 0xffffff7fa0bc2d0b
0xffffff92370a3dc0 : 0xffffff8020842d78
0xffffff92370a3e20 : 0xffffff7fa0bc2a2c
0xffffff92370a3e30 : 0xffffff8020827d34
0xffffff92370a3ea0 : 0xffffff8020827b3a
0xffffff92370a3ec0 : 0xffffff80201811d5
0xffffff92370a3f40 : 0xffffff8020180d01
0xffffff92370a3fa0 : 0xffffff80200e613e
Kernel Extensions in backtrace:
com.apple.iokit.IOUSBHostFamily(1.2)[70761A70-11A9-3F83-B2F7-0FCEC749EE99]@0xffffff7fa0baf000->0xffffff7fa0ca6fff
dependency: com.apple.driver.AppleBusPowerController(1.0)[B4001F35-E1A9-385A-9B45-1AF7ECD5E51E]@0xffffff7fa0b95000
dependency: com.apple.driver.usb.AppleUSBCommon(1.0)[3DE1C066-5E08-3F07-BC5C-5273A7A38363]@0xffffff7fa0b9d000
dependency: com.apple.driver.AppleUSBHostMergeProperties(1.2)[D890F1D7-ADE3-3D96-8A24-9A91E5D0F202]@0xffffff7fa0bab000
com.apple.driver.usb.AppleUSBXHCI(1.2)[9CE96A1A-12FC-3D0B-9F48-14B8D8AB6A75]@0xffffff7fa1722000->0xffffff7fa1779fff
dependency: com.apple.iokit.IOACPIFamily(1.4)[9BA2613C-A129-3EDD-8DC1-2CFF6B62B832]@0xffffff7fa0b62000
dependency: com.apple.iokit.IOUSBHostFamily(1.2)[70761A70-11A9-3F83-B2F7-0FCEC749EE99]@0xffffff7fa0baf000
dependency: com.apple.driver.usb.AppleUSBCommon(1.0)[3DE1C066-5E08-3F07-BC5C-5273A7A38363]@0xffffff7fa0b9d000
com.apple.driver.usb.AppleUSBXHCIPCI(1.2)[85BA754E-AEB3-3F93-9252-684F340EE404]@0xffffff7fa1851000->0xffffff7fa1883fff
dependency: com.apple.iokit.IOACPIFamily(1.4)[9BA2613C-A129-3EDD-8DC1-2CFF6B62B832]@0xffffff7fa0b62000
dependency: com.apple.iokit.IOPCIFamily(2.9)[E6E855AD-A5B2-3518-A997-1384B4360708]@0xffffff7fa0b25000
dependency: com.apple.iokit.IOUSBHostFamily(1.2)[70761A70-11A9-3F83-B2F7-0FCEC749EE99]@0xffffff7fa0baf000
dependency: com.apple.driver.usb.AppleUSBCommon(1.0)[3DE1C066-5E08-3F07-BC5C-5273A7A38363]@0xffffff7fa0b9d000
dependency: com.apple.driver.usb.AppleUSBXHCI(1.2)[9CE96A1A-12FC-3D0B-9F48-14B8D8AB6A75]@0xffffff7fa1722000
BSD process name corresponding to current thread: kernel_task
Boot args: darkwake=0 gfxrst=1
Mac OS version:
19A602
Kernel version:
Darwin Kernel Version 19.0.0: Wed Sep 25 20:18:50 PDT 2019; root:xnu-6153.11.26~2/RELEASE_X86_64
Kernel UUID: 70EDD61F-86EE-3E1B-873F-98D909B78160
Kernel slide: 0x000000001fe00000
Kernel text base: 0xffffff8020000000
__HIB text base: 0xffffff801ff00000
System model name: MacBookPro14,1 (Mac-B4831CEBD52A0C4C)
System shutdown begun: NO
Panic diags file available: YES (0x0)
System uptime in nanoseconds: 19609254790744
log show --last 1d | grep IntelIn
2020-01-08 12:50:24.903176+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: recv event=0x000e, length=4
2020-01-08 12:50:24.903911+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: recv event=0x000e, length=4
2020-01-08 12:50:24.904601+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: recv event=0x000e, length=4
2020-01-08 12:50:24.905199+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: recv event=0x000e, length=4
2020-01-08 12:50:24.905356+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: recv event=0x000e, length=4
2020-01-08 12:50:24.905360+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: boot_param=0x40800
2020-01-08 12:50:24.905545+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: recv event=0x000e, length=4
2020-01-08 12:50:24.905553+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: send firmware done
2020-01-08 12:50:24.905554+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: interrupt continue
2020-01-08 12:50:24.905556+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: HCI_OP_INTEL_RESET
2020-01-08 12:50:24.905558+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: opCode=0xfc01, paramLen=8
2020-01-08 12:50:24.905560+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: check=00
2020-01-08 12:50:24.905776+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: Intel reset succeed
2020-01-08 12:50:25.907170+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: interrupt wait
2020-01-08 12:50:25.908320+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: recv event=0x00ff, length=5
2020-01-08 12:50:25.908325+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: 设备固件上传完成
2020-01-08 12:50:25.908328+0100 0x153 Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: can not proceed response
2020-01-08 12:50:25.908336+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: interrupt continue
2020-01-08 12:50:25.908338+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: HCI_OP_INTEL_EVENT_MASK
2020-01-08 12:50:25.908341+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: opCode=0xfc52, paramLen=8
2020-01-08 12:50:25.908343+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: check=87
2020-01-08 12:50:25.908840+0100 0xaca Default 0x0 0 0 kernel: (IntelBluetoothFirmware) IntelFirmware: opCode=0xc03, paramLen=0
system_profiler SPUSBDataType
的 log 这里有点异常,原本都有显示需要多少mAh的.... 看过去是系统不识别了..
Bluetooth HCI:
Product ID: 0x0a2b
Vendor ID: 0x8087 (Intel Corporation)
Version: 0.10
Location ID: 0x14400000
system_profiler SPBluetoothDataType
的log
Apple Bluetooth Software Version: 7.0.0f8
Hardware, Features, and Settings:
Name: MengChen MBP
Address: XXXXXXXXXXXX
Bluetooth Low Energy Supported: Yes
Handoff Supported: Yes
Instant Hot Spot Supported: Yes
Manufacturer: Intel
Transport: USB
Firmware Version: 8.256 (8.256)
Bluetooth Power: Off
Discoverable: Off
Connectable: Yes
Auto Seek Pointing: On
Remote wake: On
Vendor ID: 0x8087
Product ID: 0x0A2B
Bluetooth Core Spec: 4.2 (0x8)
HCI Revision: 0x100
LMP Version: 4.2 (0x8)
LMP Subversion: 0x100
Device Type (Major): Computer
Device Type (Complete): Mac Portable
Composite Class Of Device: 0x38010C
Device Class (Major): 0x01
Device Class (Minor): 0x03
Service Class: 0x1C0
Auto Seek Keyboard: On
个人觉得是不能reset到bootloader到问题...
void btintel_reset_to_bootloader(struct hci_dev *hdev)
{
struct intel_reset params;
struct sk_buff *skb;
/* Send Intel Reset command. This will result in
* re-enumeration of BT controller.
*
* Intel Reset parameter description:
* reset_type : 0x00 (Soft reset),
* 0x01 (Hard reset)
* patch_enable : 0x00 (Do not enable),
* 0x01 (Enable)
* ddc_reload : 0x00 (Do not reload),
* 0x01 (Reload)
* boot_option: 0x00 (Current image),
* 0x01 (Specified boot address)
* boot_param: Boot address
*
*/
params.reset_type = 0x01;
params.patch_enable = 0x01;
params.ddc_reload = 0x01;
params.boot_option = 0x00;
params.boot_param = cpu_to_le32(0x00000000);
skb = __hci_cmd_sync(hdev, 0xfc01, sizeof(params),
¶ms, HCI_INIT_TIMEOUT);
if (IS_ERR(skb)) {
bt_dev_err(hdev, "FW download error recovery failed (%ld)",
PTR_ERR(skb));
return;
}
bt_dev_info(hdev, "Intel reset sent to retry FW download");
kfree_skb(skb);
/* Current Intel BT controllers(ThP/JfP) hold the USB reset
* lines for 2ms when it receives Intel Reset in bootloader mode.
* Whereas, the upcoming Intel BT controllers will hold USB reset
* for 150ms. To keep the delay generic, 150ms is chosen here.
*/
msleep(150);
}
这是目前最新的 Linux-next 里面新加的 https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/bluetooth/btintel.c?h=next-20191121
附件是完整的(log show --last 1d | grep IntelIn
)log
errorLOG.zip