联想legion R7000笔记本linux使用体验
这款笔记本使用linux最主要的问题在触控板
-
默认情况下可能会加载hid_generic和hid_multitouch两个驱动, 这两个驱动加载后触摸板无法使用,键盘可以正常使用
-
可以在/etc/modprobe.d/blacklist.conf文件里面加上blacklist hid_multitouch这行,这样触摸板和键盘可以使用, 触摸板会被识别为类似鼠标的情况, 无法使用双指滑动
-
默认的键盘使用的驱动是hid_generic, 看dmesg信息显示键盘是ITE的,我这把键盘修改为使用hid_ite驱动
在drivers/hid/hid-ite.c文件中添加一行, 让键盘使用hid-ite驱动
static const struct hid_device_id ite_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_ITE, USB_DEVICE_ID_ITE8595) },
/* 添加下面一行 */
{ HID_USB_DEVICE(USB_VENDOR_ID_ITE, USB_DEVICE_ID_ITE_LENOVO_LEGION_R7000) },
{ HID_USB_DEVICE(USB_VENDOR_ID_258A, USB_DEVICE_ID_258A_6A88) },
上面引用了一个常量,在drivers/hid/hid-ids.h文件里面定义
#define USB_VENDOR_ID_ITE 0x048d
#define USB_DEVICE_ID_ITE_LENOVO_YOGA 0x8386
#define USB_DEVICE_ID_ITE_LENOVO_YOGA2 0x8350
/* 我的键盘vid,pid是0x048d, 0xc100 添加下面一行 */
#define USB_DEVICE_ID_ITE_LENOVO_LEGION_R7000 0xc100
#define I2C_DEVICE_ID_ITE_LENOVO_LEGION_Y720 0x837a
#define USB_DEVICE_ID_ITE_LENOVO_YOGA900 0x8396
#define USB_DEVICE_ID_ITE8595 0x8595
- 触摸板的vendorID是0x06CB, 这个看着像是synaptics的, 搜了下似乎hid-rmi驱动比较像,就用这个测试下吧
在drivers/hid/hid-rmi.c文件中添加一行, 让触摸板使用hid-rmi驱动
static const struct hid_device_id rmi_id[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER, USB_DEVICE_ID_RAZER_BLADE_14),
.driver_data = RMI_DEVICE_HAS_PHYS_BUTTONS },
{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_COVER) },
{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_REZEL) },
/* 添加了下面一行,让触摸板使用hid-rmi驱动 */
{ HID_I2C_DEVICE(I2C_VENDOR_ID_SYNAPTICS, I2C_PRODUCT_ID_SYNAPTICS_SYNA7f28) },
{ HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5),
上面引用了一个常量,在drivers/hid/hid-ids.h文件里面定义
#define I2C_VENDOR_ID_SYNAPTICS 0x06cb
#define I2C_PRODUCT_ID_SYNAPTICS_SYNA2393 0x7a13
/* 我的触摸板vid,pid是0x06cb, 0x7f28, 添加下面一行 */
#define I2C_PRODUCT_ID_SYNAPTICS_SYNA7f28 0x7f28
- 重新编译内核, 禁用hid-generic和hid-multitouch驱动,测试键盘和触摸板可以使用, 不过触摸板单击不太灵敏
禁用独立显卡
我个人非常讨厌nvidia的显卡的,笔记本就不该有nvidia的显卡,至少1660性能以下的独立显卡不应该存在
禁用显卡的方法:
- 可以重新编辑DSDT, 方法类似黑苹果,然后编译内核指定加载重新编译过的DSDT。 这种方式是比较好的,顺便还可以修正一些DSDT的问题, 不过比较麻烦,我采用第二种方式了
- 用acpi_call来在开机后禁用独显
方法参考:https://wiki.archlinux.org/index.php/Hybrid_graphics
程序下载地址:https://github.com/mkottman/acpi_call
这里需要注意,在5.6内核有些变动, 原程序很久没有更新了,编译会报错, 可以参考这个pr修改:https://github.com/mkottman/acpi_call/pull/88
如果是自己重新编译内核的, 可以参考一些内核配置选项
CPU参考:https://wiki.gentoo.org/wiki/Ryzen
iwlwifi无线网卡参考:https://wiki.gentoo.org/wiki/Iwlwifi
amdgpu参考:https://wiki.gentoo.org/wiki/AMDGPU
声卡参考:https://wiki.gentoo.org/wiki/ALSA