HP folio G1でubuntu 16.04を使う

約1年前に中古でFolio G1を購入してUbuntu 16.04をインストールした。
そのままだといろいろ不具合があって四苦八苦。

・起動直後はそれなにに動くが、一旦サスペンドするとキーボードが反応しなくなる。
この不具合は、BIOSのPower Management OptionsでConnected Standby Supportedのチェックをはずすと治った。(どういうメカニズムかはよく理解していないが。。)

・画面の明るさを変更するキーが全く効かず、スキャンコードもおかしい。
こちらは、最新のアップデートを全部適用したらキーが効くようになった。

タッチパッドの不具合。
ハードウエアドライバが複数競合していてわけがわからない状態で、設定をいじくり回していろいろ試した。もう詳しく覚えていないが、以下のような不具合があった。
 ・キータイプ時にタッチパッドが反応してポインタが飛ぶ。
 ・サスペンド前と後でドライバが入れ替わり、挙動が変わる。
 ・サスペンド後にタッチパッドが反応しなくなる。
 ・左クリックしたままドラッグ動作でテキスト選択すると、ポインタがとんでもないところに飛ぶ。などなど。

関係するドライバはpsmouse、i2c_desinware_core、i2c_designware_platform、i2c_hidといろいろある模様。何もしないとi2c_designware_platformが使われているようで、この場合、手のひら検知ができないが、ドラッグでポインタが飛ぶことはないので、しばらくこの状態で使っていたが、キータイプでポインタが飛んでストレスがたまる。

最近もういちどいろいろ試し、以下の設定でいい感じになった(ように思う)。

/etc/default/grubを編集してカーネルパラメータmodprobe.blacklist=i2c_hidを追加。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=i2c_hid"
update-grubの実行を忘れずに。

/etc/modprobe.d/blacklist.confにblacklist i2c_hidを追記しても効果がなかったので上記の設定。

この状態でxinputを実行すると次のように表示された。

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS GlidePoint id=13 [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)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ HP HD Camera: HP HD Camera id=9 [slave keyboard (3)]
↳ Intel HID events id=11 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
↳ HP Wireless hotkeys id=14 [slave keyboard (3)]
↳ HP WMI hotkeys id=15 [slave keyboard (3)]

設定前は、

⎜ ↳ ALP000F:00 044E:120C id=10 [slave pointer (2)]

というのがあった。

次にlibinputをインストール

sudo apt install xserver-xorg-input-libinput

 あとは、/etc/X11/xorg.conf.d/にlibinputの設定を書き、2本指の垂直・水平のスクロールなどができるようになった。手のひら検知はできているのか不明(できていない気がする)。

sudo libinput-debug-eventsでポインタの認識状態を確認できる。

event5 POINTER_MOTION +3.29s 0.30/ 0.79
event5 POINTER_MOTION +3.32s 0.30/ 0.00
libinput error: kernel bug: Touch jump detected and discarded.
See https://wayland.freedesktop.org/libinput/doc/1.6.3/touchpad_jumping_cursor.html for details
event5 POINTER_BUTTON +3.63s BTN_LEFT (272) released, seat count: 0

ドラッグ動作のバグが回避されているのがわかる。

2本指で横スクロールした時の出力

event5 POINTER_AXIS +2.56s vert 0.00 horiz 0.91* (finger)
event5 POINTER_AXIS +2.57s vert 0.00 horiz 0.15* (finger)
event5 POINTER_AXIS +2.58s vert 0.00 horiz 0.15* (finger)
event5 POINTER_AXIS +2.63s vert 0.00 horiz 2.73* (finger)
event5 POINTER_AXIS +2.64s vert 0.00 horiz 0.61* (finger)

horizの値がちゃんと出ている。

ということで、タッチパッドがすこしマシに使えるようになった。

手のひら検知は要確認。以前はデバイス

⎜ ↳ AlpsPS/2 ALPS DualPoint TouchPad id=10 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint Stick id=13 [slave pointer (2)]

と認識されていたこともあるので今の状態ではダメかも。