zoukankan      html  css  js  c++  java
  • 联想legion R7000笔记本linux使用体验

    联想legion R7000笔记本linux使用体验

    这款笔记本使用linux最主要的问题在触控板

    1. 默认情况下可能会加载hid_generic和hid_multitouch两个驱动, 这两个驱动加载后触摸板无法使用,键盘可以正常使用

    2. 可以在/etc/modprobe.d/blacklist.conf文件里面加上blacklist hid_multitouch这行,这样触摸板和键盘可以使用, 触摸板会被识别为类似鼠标的情况, 无法使用双指滑动

    3. 默认的键盘使用的驱动是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
    
    1. 触摸板的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
    
    1. 重新编译内核, 禁用hid-generic和hid-multitouch驱动,测试键盘和触摸板可以使用, 不过触摸板单击不太灵敏

    禁用独立显卡
    我个人非常讨厌nvidia的显卡的,笔记本就不该有nvidia的显卡,至少1660性能以下的独立显卡不应该存在
    禁用显卡的方法:

    1. 可以重新编辑DSDT, 方法类似黑苹果,然后编译内核指定加载重新编译过的DSDT。 这种方式是比较好的,顺便还可以修正一些DSDT的问题, 不过比较麻烦,我采用第二种方式了
    2. 用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

  • 相关阅读:
    java 的三种代理模式 (二)——子函数切面
    王者荣耀为什么不使用微服务架构,服务的极简主义,为什么交易网关使用redis做持久
    tcp_syncookies 半连接
    tcp_tw_recycle tcp_tw_reuse与timewait【yetdone】
    动态代理,没有被代理对象
    一次jstack解决update停顿
    动态代理反向
    注解的继承
    51单片机状态机键盘检测
    28335scififo中断接收与发送
  • 原文地址:https://www.cnblogs.com/mikeguan/p/13126497.html
Copyright © 2011-2022 走看看