Cette tablette fonctionne sous Windows 10 par défaut, mais j'ai installé Lubuntu 18.04. J'essaie d'utiliser this question comme guide, mais mon cas est différent.
Un périphérique ELAN
est destiné à un pavé tactile et chaque commande ne renvoie rien. La commande Sudo dmesg | grep i2c
renvoie:
[ 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
J'ai découvert que les pilotes Mediacom sont les mêmes que ceux de TrekStor, une société qui travaille également avec Mediacom, et ont trouvé this merveilleux projet sur github. Mediacom WinpadW700 correspond à SurfTab Wintron 7.0 (ST70416-6).
Le projet concerne les tablettes et Ubuntu et stipule:
Ce référentiel contient des images de microprogramme pour les contrôleurs d’écrans tactiles Silead dans divers appareils tablettes (et autres) [. . .]
Les fichiers du micrologiciel ont été extraits de Android et de pilotes de périphérique Windows, tels que publiés par les fabricants de périphériques. Ils sont destinés aux personnes qui préfèrent remplacer le système d'exploitation fourni par une distribution générique de Linux telle que Debian ou Ubuntu.
Je pense que je devrais utiliser le fichier silead_ts.fw
(c’est le firmware pour gslx680-acpi
obtenu à partir du firmware.fw
qui correspond au firmware extrait des pilotes d’origine).
Donc, le firmware silead_ts.fw
est spécialement conçu pour mon problème. Comment puis-je l'utiliser? Cette section de https://github.com/onitake/gsl-firmware#silead_ts devrait expliquer comment procéder:
Je dois éditer le fichier drivers/platform/x86/silead_dmi.c
dans le code source. Recompilez ensuite le noyau (avec ce fichier), et ajoutez quelque part le firmware auquel je me suis référé dans le fichier modifié.
Comment puis-je recompiler le noyau? J'essaie this guide.
J'ai utilisé apt-get source linux-headers-4.15.0-33-generic
et j'ai obtenu le dossier linux-4.15
de 800 Mo. Cela a le chemin drivers/platform/x86/silead_dmi.c
dans lequel j'ai déjà créé le fichier drivers/platform/x86/silead_dmi.c
. En suivant le guide, j’ai utilisé apt-get source linux-image-$(uname -r)
et obtenu le dossier linux-signed-4.15.0
de 118 ko.
Maintenant, en utilisant fakeroot debian/rules editconfigs
je reçois une erreur:
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
Comment puis-je corriger cette erreur et recompiler le noyau?
Le silead_ts.fw
concerne ce projet déconseillé https://github.com/onitake/gslx680-acpi .
Vous devez utiliser au moins https://github.com/onitake/gsl-firmware/blob/master/firmware/trekstor/surftab7new/firmware.fw , fimrware uniquement extrait et non modifié pour l'ancien projet.
Mais vous devez utiliser ceci https://github.com/onitake/gsl-firmware/blob/master/firmware/linux/silead/gsl1686-surftab-wintron70-st70416-6.fw , mettez le fichier dans /lib/firmware/silead
(créer le dossier silead
name__). Faites également une copie avec le nom mssl1680.fw
(firmware de sauvegarde).
Suivez maintenant ce guide pour recompiler le noyau https://debian-handbook.info/browse/squeeze/sect.kernel-compilation.html .
Utilisez apt-cache search ^linux-source
pour trouver la source du noyau (comme l'explique le guide).
Dans le fichier silead_dmi.c
, ajoutez:
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"),
{ }
};
Et le plus important dans l’ajout 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"),
},
},