Asus GL503VDを持っていますが、タッチパッドはLinuxでは機能しません。
私はArch、Debian、Ubuntu 16/17/18、Sabayon、Pop_OS、Fedoraなど、さまざまなディストリビューションを試しました。それらのどれも動作するタッチパッドを持っていなかったので、私はUbuntu 18.04を選択して直接デバッグすることにしました。
まず、このノートブックはかなり新しいので、acpi = force GRUBパラメータなしでは起動しません。次に、i2c-hidモジュールのロードが許可されている場合は、黒い画面で起動します(したがってi2c-hidをブラックリストに追加する必要があります)。 i2c-hidが私のタッチパッド処理を担当するドライバであると確信しているので、これは調べてみる価値がある問題です。問題は、モジュールのロードが許可されているときにctrl + alt + f *の組み合わせを使用して端末にアクセスできないことです。ちょうど黒で、何もありません。
私のWindowsパーティションを見ると、タッチパッドがELAN1200(elantechではない)であることがわかります。成功せずにhid-elanモジュールをロードしようとしました。必死にシナプティクスモジュールも試してみましたが、何の成果もありませんでした。私はさまざまなx.org.conf.d設定を試しましたが、これは私のラップトップがGnome DEにアクセスするのを防ぐだけです。 libinputを試してみましたが、成功しませんでした。
i8042.nomux=1、i8042.noloop、i8042.nopnp、i8042.kdbreset=1、i8042.reset を試しましたが、どちらも機能しませんでした。 (私の知る限り、私のタッチパッド/キーボードコンボはおそらくi8042チップによって管理されているでしょう。xinput出力から見ると、ITE8910がコンボを管理しているようです)
xinput出力は、タッチパッドがおそらくタッチパッド/キーボードコンボの一部である可能性があることを示しています。タッチパッドとキーボードは1つのデバイスだと思います:ITE8910
x入力と出力:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ MOSART Semi. USB Device id=12 [slave pointer (2)]
⎜ ↳ ITE Tech. Inc. ITE Device(8910) id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Asus Wireless Radio Control id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Video Bus id=9 [slave keyboard (3)]
↳ Power Button id=10 [slave keyboard (3)]
↳ Sleep Button id=11 [slave keyboard (3)]
↳ USB2.0 HD UVC WebCam: USB2.0 HD id=13 [slave keyboard (3)]
↳ Asus WMI hotkeys id=15 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=16 [slave keyboard (3)]
↳ ITE Tech. Inc. ITE Device(8910) id=17 [slave keyboard (3)]
dmesgの出力は、デバイスがUSB経由で接続されていることを知らせます。
[ 2.408602] usb 1-8: new full-speed USB device number 5 using xhci_hcd
[ 2.562105] usb 1-8: New USB device found, idVendor=0b05, idProduct=1869
[ 2.562106] usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.562107] usb 1-8: Product: ITE Device(8910)
[ 2.562108] usb 1-8: Manufacturer: ITE Tech. Inc.
lsusbの場合、ベンダーIDと製品IDを含む正しいデバイスが表示されます。
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0b05:1869 ASUSTek Computer, Inc.
Bus 001 Device 004: ID 13d3:5666 IMC Networks
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 062a:410c Creative Labs
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
注:Creative Labsデバイスは外部マウスです。
lsusb -vd 0b05:1869 キーボード関連の説明だけが表示されます。
Bus 001 Device 005: ID 0b05:1869 ASUSTek Computer, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0b05 ASUSTek Computer, Inc.
idProduct 0x1869
bcdDevice 0.03
iManufacturer 1 ITE Tech. Inc.
iProduct 2 ITE Device(8910)
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 34
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 263
Report Descriptor: (length is 263)
Item(Global): Usage Page, data= [ 0x89 0xff ] 65417
(null)
Item(Local ): Usage, data= [ 0x10 ] 16
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0xa5 ] 165
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x10 ] 16
Item(Main ): Feature, data= [ 0x00 ] 0
Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x89 0xff ] 65417
(null)
Item(Local ): Usage, data= [ 0x0f 0xff ] 65295
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x05 ] 5
Item(Local ): Usage Minimum, data= [ 0x00 ] 0
(null)
Item(Local ): Usage Maximum, data= [ 0xff ] 255
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff ] 255
Item(Global): Report Count, data= [ 0x08 ] 8
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x06 ] 6
Data Variable Relative No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x06 ] 6
Keyboard
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x08 ] 8
Item(Global): Usage Page, data= [ 0x07 ] 7
Keyboard
Item(Local ): Usage Minimum, data= [ 0xe0 ] 224
Control Left
Item(Local ): Usage Maximum, data= [ 0xe7 ] 231
GUI Right
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Main ): Input, data= [ 0x03 ] 3
Constant Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Count, data= [ 0x05 ] 5
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Global): Usage Page, data= [ 0x08 ] 8
LEDs
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
NumLock
Item(Local ): Usage Maximum, data= [ 0x05 ] 5
Kana
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x03 ] 3
Item(Main ): Output, data= [ 0x03 ] 3
Constant Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x07 ] 7
Keyboard
Item(Local ): Usage Minimum, data= [ 0x00 ] 0
No Event
Item(Local ): Usage Maximum, data= [ 0xff 0x00 ] 255
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Count, data= [ 0x06 ] 6
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Main ): Input, data= [ 0x00 ] 0
Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x07 ] 7
Keyboard
Item(Local ): Usage Minimum, data= [ 0x00 ] 0
No Event
Item(Local ): Usage Maximum, data= [ 0xdf ] 223
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0xe0 ] 224
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x31 0xff ] 65329
(null)
Item(Local ): Usage, data= [ 0x76 ] 118
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x5a ] 90
Item(Local ): Usage Minimum, data= [ 0x00 ] 0
(null)
Item(Local ): Usage Maximum, data= [ 0xff 0x00 ] 255
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x00 ] 0
Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage Minimum, data= [ 0x00 ] 0
(null)
Item(Local ): Usage Maximum, data= [ 0xff 0x00 ] 255
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x10 ] 16
Item(Main ): Feature, data= [ 0x00 ] 0
Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x31 0xff ] 65329
(null)
Item(Local ): Usage, data= [ 0x79 ] 121
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x5d ] 93
Item(Local ): Usage Minimum, data= [ 0x00 ] 0
(null)
Item(Local ): Usage Maximum, data= [ 0xff 0x00 ] 255
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x05 ] 5
Item(Main ): Input, data= [ 0x00 ] 0
Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage Minimum, data= [ 0x00 ] 0
(null)
Item(Local ): Usage Maximum, data= [ 0xff 0x00 ] 255
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x10 ] 16
Item(Main ): Feature, data= [ 0x00 ] 0
Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x0c ] 12
Consumer
Item(Local ): Usage, data= [ 0x01 ] 1
Consumer Control
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x02 ] 2
Item(Local ): Usage Minimum, data= [ 0x00 ] 0
Unassigned
Item(Local ): Usage Maximum, data= [ 0x3c 0x02 ] 572
AC Format
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x3c 0x02 ] 572
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x00 ] 0
Data Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x80 ] 128
System Control
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x04 ] 4
Item(Local ): Usage Minimum, data= [ 0x81 ] 129
System Power Down
Item(Local ): Usage Maximum, data= [ 0x83 ] 131
System Wake Up
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x08 ] 8
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 4
Device Status: 0x0001
Self Powered
これは、タッチパッドの側面が利用できないことを示します。私はそれを見ることができません。
私の質問はこんな感じです。なぜタッチパッドが見えないのですか?これを見つけてドライバーリバースエンジニアリングを開始するにはどうすればよいですか?
ベストアンサー1
タッチパッドがI2Cを介して接続されているという情報に基づく部分的な回答:
それ以外の場合でも、i2c_hid
I2Cバスを見ることができ、バスのデバイスと通信できる必要があります。このソフトウェアパッケージには、lm-sensors
I2C関連プログラム、i2c-tools
インストール、読み取り、およびi2cdetect
マニュアルページがあります。i2cdump
i2cget
i2cset
i2c-dev
たとえば、I2Cモジュールがカーネルに組み込まれていない場合は、modprobeが必要になることがあります。その後、エントリ/sys/bus/i2c/devices/
とそのデバイスノードを下に表示する必要があります/dev/i2c*
。今、あなたが持っているI2Cデバイス(ファンコントロール、温度センサー、BIOS EEPROMなど、さまざまです)とタッチパッドが何であるかを知る必要があります。 Windowsドライバの情報が役に立ちます。
次のステップは、ソースコードを読み取って、標準化されたi2c_hid
プロトコルがあることを確認し、文書をGoogleで検索し、バイトの送受信を試みることです。また、i2c_hid
コンピュータが起動しない理由もご覧ください。これを行うには、Cコードを読み書きできる必要があります。
i8042は従来のPS / 2コントローラであり、I2Cとはまったく関係ありません。タッチパッドがI2Cを介して接続されていない場合そしてこのコントローラを使用すると、i8042コアを操作することはまったく役に立ちません。
編集する
私はそれをグーグルしました。 I2CのHIDはここ(明らかにマイクロソフトのものです)。 I2Cを介してHIDが正しく機能するようになったら、次の内容も読む必要があります。HID仕様。特にHID記述子を見てください。 HIDデバイスは、レポート(タッチパッドデータ)が標準より少ないときにしばしば異常を経験します。