mytbk / firmware_notes

some notes about firmware(BIOS,UEFI,coreboot,routers,embedded system,etc.)
Creative Commons Zero v1.0 Universal
99 stars 25 forks source link

ThinkPad X230 在移除或跳过 LenovoWmaPolicyDxe 后可能造成板载蓝牙功能不正常 #4

Closed updateing closed 7 years ago

updateing commented 7 years ago

十分感谢大神的贡献!

我的电脑是 ThinkPad X230 23068CC,原机带蓝牙小板,于是换了单网卡无蓝牙版本的 BCM94352HMB,使用 r2 -w -c 'wa ret' policy.efi 进行破解。网卡是可以用了,但

  1. 对于 macOS、配置了 acpi_osi=! acpi_osi=Linux 的 Linux 和 Windows 7 及更早的 Windows,只要经过睡眠唤醒流程,蓝牙就会失效,重启才可恢复。唤醒后在 dmesg 中可以见到 USB disconnected,这使得蓝牙鼠标和键盘难以使用。
  2. 对于默认配置的 Linux 和 Windows 8 及更新的 Windows,蓝牙就完全消失了,USB 设备列表里没有蓝牙设备。

尝试直接删除 LenovoWmaPolicyDxe,结果一样。

后恢复此模块,修改其中一个网卡的 VID、PID和SUBSYS,即可解决上述问题。

我还没有追查问题的能力,不清楚哪里出了问题……不过这一点可以写在文档中,供后来者参考。再次感谢!

补:DSDT 中针对不同 _OSI 查询的结果会设置一个叫做 WIN8 的变量,在 USB 控制器部分(以及很多其它代码)中对此有特殊处理,但也看不懂在干嘛……

mytbk commented 7 years ago

已经添加到文档中。 因为一直用coreboot,所以没注意过这个问题。LenovoWmaPolicyDxe这个模块除了做白名单的检测之外还做了一些其他的事情,所以正确的方式应该是逆向这个模块找出要修改的位置。

updateing commented 7 years ago

Thanks!