启用Mediacom WinPad W700的触摸屏

这款平板电脑默认运行Windows 10,但我安装了Lubuntu 18.04。 我试图用这个问题作为指导,但我的情况有所不同。

ELAN设备用于触摸板,每个命令都不会返回任何内容。 命令sudo dmesg | grep i2c sudo dmesg | grep i2c返回:

 [ 3.211266] i2c /dev entries driver [ 3.328881] i2c_designware 80860F41:04: I2C bus managed by PUNIT [ 37.847473] axp20x-i2c i2c-INT33F4:00: AXP20x variant AXP288 found [ 37.872164] silead_ts i2c-MSSL1680:00: i2c-MSSL1680:00 supply vddio not found, using dummy regulator [ 37.872202] silead_ts i2c-MSSL1680:00: i2c-MSSL1680:00 supply avdd not found, using dummy regulator [ 37.872740] silead_ts i2c-MSSL1680:00: Silead chip ID: 0xB4820000 [ 37.928036] axp20x-i2c i2c-INT33F4:00: AXP20X driver loaded [ 38.024519] silead_ts i2c-MSSL1680:00: Direct firmware load for silead/mssl1680.fw failed with error -2 [ 38.024529] silead_ts i2c-MSSL1680:00: Firmware request error -2 [ 38.027163] silead_ts: probe of i2c-MSSL1680:00 failed with error -2 [ 39.030645] input: axp20x-pek as /devices/platform/80860F41:04/i2c-4/i2c-INT33F4:00/axp221-pek/input/input6 

我发现Mediacom的驱动程序与TrekStor的驱动程序相同,TrekStor也是与Mediacom合作的公司,并且在github上发现了这个精彩的项目。 Mediacom WinpadW700对应于SurfTab wintron 7.0(ST70416-6)。

该项目是关于平板电脑和Ubuntu并指出:

此存储库包含各种平板电脑(和其他)设备中Silead触摸屏控制器的固件映像[。 。 ]

固件文件是从Android和Windows设备驱动程序中提取的,由设备制造商发布。 它们适用于那些喜欢用通用的Linux发行版(如Debian或Ubuntu)替换出货的操作系统的用户。

我认为我应该使用silead_ts.fw文件(这是从firmware.fw获得的gslx680-acpifirmware.fw ,它是从原始驱动程序中提取的固件)。

所以silead_ts.fw固件专门针对我的问题而设计。 我怎么用呢? 来自https://github.com/onitake/gsl-firmware#silead_ts的这一部分应该解释它是如何做到的:
我必须编辑源代码中的drivers/platform/x86/silead_dmi.c文件。 然后重新编译内核(使用该文件),并在某处添加我在修改后的文件中引用的固件。

我该如何重新编译内核? 我正在尝试这个指南。

我使用apt-get source linux-headers-4.15.0-33-generic并获得了800 MB的linux-4.15文件夹。 那里有路径drivers/platform/x86/silead_dmi.c ,其中我已经创建了drivers/platform/x86/silead_dmi.c文件。 按照指南我使用apt-get source linux-image-$(uname -r)并获得了118 kB的linux-signed-4.15.0文件夹。

现在使用fakeroot debian/rules editconfigs我收到一个错误:

 dh editconfigs dh: Unknown sequence editconfigs (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep) debian/rules:35: recipe for target 'editconfigs' failed make: *** [editconfigs] Error 2 

如何修复此错误并重新编译内核?

silead_ts.fw适用于此已弃用的项目https://github.com/onitake/gslx680-acpi 。
您应该至少使用https://github.com/onitake/gsl-firmware/blob/master/firmware/trekstor/surftab7new/firmware.fw ,仅为旧项目提取并且未修改的fimrware。

但是你必须使用这个https://github.com/onitake/gsl-firmware/blob/master/firmware/linux/silead/gsl1686-surftab-wintron70-st70416-6.fw ,把文件放在/lib/firmware/silead (创建文件夹silead )。 还制作了名为mssl1680.fw (备份固件)的副本。

现在按照本指南重新编译内核https://debian-handbook.info/browse/squeeze/sect.kernel-compilation.html 。
使用apt-cache search ^linux-source查找内核的源代码(如指南所述)。

silead_dmi.c文件中添加:

 static const struct property_entry mediacom_w700_props[] = { PROPERTY_ENTRY_U32("touchscreen-size-x", 884), PROPERTY_ENTRY_U32("touchscreen-size-y", 632), PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-surftab-wintron70-st70416-6.fw"), PROPERTY_ENTRY_U32("silead,max-fingers", 10), PROPERTY_ENTRY_BOOL("silead,home-button"), { } }; 

最重要的是在DMI_MATCH中添加:

  { /* Mediacom WinPad 7.0 W700 */ .driver_data = (void *)&surftab_wintron70_st70416_6_data, .matches = { DMI_MATCH(DMI_SYS_VENDOR, "MEDIACOM"), DMI_MATCH(DMI_PRODUCT_NAME, "WinPad 7 W10 - WPW700"), }, },