6

This tablet runs Windows 10 by default, but I installed Lubuntu 18.04. I' m trying to use this question as a guide but my case is different.

An ELAN device is for a touchpad and every command don ' t return anything indeed. The command sudo dmesg | grep i2c returns:

[    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

I discovered that the Mediacom drivers are the same as those for TrekStor, a company that also works with Mediacom, and found this wonderful project on github. Mediacom WinpadW700 corresponds at SurfTab wintron 7.0 (ST70416-6).

The project is about tablets and Ubuntu and states:

This repository contains firmware images for the Silead touchscreen controllers in various tablet (and other) devices [. . .]

The firmware files were extracted from Android and Windows device drivers, as published by device manufacturers. They are intended for people who prefer to replace the shipped operating system with a generic Linux distribution such as Debian or Ubuntu.

I think that I should use the silead_ts.fw file (that is the firmware for gslx680-acpi obtained from the firmware.fw that is the firmware extracted from the original drivers).

So the silead_ts.fw firmware is especially designed for my problem. How can I use it? This section from https://github.com/onitake/gsl-firmware#silead_ts should explain how do it:
i must edit the drivers/platform/x86/silead_dmi.c file in the source code. Then recompiling the kernel (with that file), and somewhere add the firmware which i referred in the modified file.

How can i recompile the kernel? I' m trying this guide.

I used apt-get source linux-headers-4.15.0-33-generic and got the linux-4.15 folder of 800 MB. That has the path drivers/platform/x86/silead_dmi.c in which i already made the drivers/platform/x86/silead_dmi.c file. Following the guide i used apt-get source linux-image-$(uname -r) and got the linux-signed-4.15.0 folder of 118 kB.

Now using fakeroot debian/rules editconfigs I get an error:

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

How can I fix this error and recompile the kernel?

Scorpion
  • 384
  • 3
  • 15

1 Answers1

1

The silead_ts.fw is for this deprecated project https://github.com/onitake/gslx680-acpi.
You should use at least the https://github.com/onitake/gsl-firmware/blob/master/firmware/trekstor/surftab7new/firmware.fw, fimrware only extracted and not modified for the old project.

But you must use this https://github.com/onitake/gsl-firmware/blob/master/firmware/linux/silead/gsl1686-surftab-wintron70-st70416-6.fw ,put the file in /lib/firmware/silead(create the folder silead). Also made a copy with the name mssl1680.fw (backup firmware).

Now follow this guide for recompile the kernel https://debian-handbook.info/browse/squeeze/sect.kernel-compilation.html.
Use apt-cache search ^linux-source to find the source for the kernel (as the guide explains).

In the silead_dmi.c file add:

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"),
    { }
};

And most important in the DMI_MATCH add:

 {
        /* 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"),
        },
    },
Scorpion
  • 384
  • 3
  • 15