聯想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