web-dev-qa-db-ja.com

Mediacom WinPad W700のタッチスクリーンを有効にします

このタブレットはデフォルトでWindows 10を実行しますが、Lubuntu 18.04をインストールしました。 this 質問をガイドとして使用しようとしていますが、私の場合は異なります。

ELANデバイスはタッチパッド用であり、すべてのコマンドは実際には何も返しません。コマンド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ドライバーは、Mediacomと連携しているTrekStorのドライバーと同じであることを発見し、githubで this すばらしいプロジェクトを見つけました。 Mediacom WinpadW700は、SurfTab wintron 7.0(ST70416-6)に対応しています。

このプロジェクトはタブレットとUbuntuに関するものであり、次のように述べています。

このリポジトリには、さまざまなタブレット(およびその他の)デバイスのSileadタッチスクリーンコントローラーのファームウェアイメージが含まれています[。 。 。]

ファームウェアファイルは、デバイスメーカーによって公開されているAndroidおよびWindowsデバイスドライバーから抽出されました。これらは、出荷されたオペレーティングシステムをDebianやUbuntuなどの一般的なLinuxディストリビューションに置き換えることを好む人々を対象としています。

silead_ts.fwファイル(元のドライバーから抽出されたファームウェアであるgslx680-acpiから取得したfirmware.fwのファームウェア)を使用する必要があると思います。

したがって、silead_ts.fwファームウェアは、特に私の問題に合わせて設計されています。どうすれば使用できますか? https://github.com/onitake/gsl-firmware#silead_ts のこのセクションでは、その方法を説明する必要があります。
iは、ソースコードのdrivers/platform/x86/silead_dmi.cファイルを編集する必要があります。次に、そのファイルを使用してカーネルを再コンパイルし、変更されたファイルで参照したファームウェアをどこかに追加します。

カーネルを再コンパイルするにはどうすればよいですか? this ガイドを試しています。

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

このエラーを修正してカーネルを再コンパイルするにはどうすればよいですか?

6
Scorpion

silead_ts.fwは、この非推奨プロジェクトのためのものです https://github.com/onitake/gslx680-acpi
少なくとも https://github.com/onitake/gsl-firmware/blob/master/firmware/trekstor/surftab7new/firmware.fw を使用する必要があります。古いプロジェクト用に変更されていません。

ただし、これを使用する必要があります https://github.com/onitake/gsl-firmware/blob/master/firmware/linux/silead/gsl1686-surftab-wintron70-st70416-6.fw 、put the /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"),
        },
    },
1
Scorpion