Thinkpad X1 Carbon 第6世代+Ubuntu18.04 でトラックポイントが動作しない問題の解決策

公開日:2018/07/07 更新日:2018/07/07
Thinkpad X1 Carbon 第6世代+Ubuntu18.04 でトラックポイントが動作しない問題の解決策のサムネイル

はじめに

Thinkpad X1 Carbon第6世代でUbuntuを常用しはじめて最初に困ったのがトラックポイント使えない問題です。発売からそれなりに時間が経過したこともあり、解決策がWeb上で色々と公開されており実際に試したところ無事に解決できたのでメモします。

環境と前提

NFCが付いていると問題としては厄介なようですが、以降の手順でNFC付きの場合でも無事に解決できました。

本体 Thinkpad X1 Carbon 2018年モデル (第6世代) NFC付き
OS Ubuntu18.04 Kernel 4.17

発生していた症状

以下のような症状が発生していました。

  • トラックポイントが動作しない。タッチパッドやクリックボタンは動作
  • スリープ前は問題なく動作していたものの、スリープから復帰後にトラックポイントが動作しない

トラックポイントを動作させる

/etc/default/grubの中のGRUB_CMDLINE_LINUX_DEFAULTpsmouse.synaptics_intertouch=1を追記するだけで解決できます。これだけで再起動後から無事にトラックポイントが動作するようになります。なお、以下ではacpi.ec_no_wakeup=1も追記していますが、これはThinkpad X1 Carbon + Ubuntu18.04 でスリープを正常に動作させるようにするために追記した部分になります。(詳しくはこちら

(変更前) 
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 

(変更後) 
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash psmouse.synaptics_intertouch=1 acpi.ec_no_wakeup=1"

スリープ後にトラックポイントを動作させる

#2018年7月12日 追記修正 スリープ復帰後にトラックポイントがたまに動作しないことがあります。この問題は、以下の2つのコマンドをターミナルから実行することで解決できます。

echo -n "none" | sudo tee /sys/bus/serio/devices/serio1/drvctl
echo -n "reconnect" | sudo tee /sys/bus/serio/devices/serio1/drvctl

これらを毎回ターミナル手動で実行するのは手間なので、ログイン時に自動実行するために、/lib/systemd/system-sleep/に以下の内容を追記したスクリプトファイルを設置します。なお、このファイルの作成と設置にはroot権限が必要です。ここでは、以下のスクリプトファイル名をreconnect-trackpointとしました。

/lib/systemd/system-sleep/reconnect-trackpoint
#!/bin/sh
if [ "$1" = "post" ]; then
  echo -n "none" > /sys/bus/serio/devices/serio1/drvctl
  sleep 1
  echo -n "reconnect" > /sys/bus/serio/devices/serio1/drvctl
fi

あとはreconnect-trackpointに実行権限を与えておきます。

$ sudo chmod +x /lib/systemd/system-sleep/reconnect-trackpoint

以上でスリープから復帰後に毎回トラックポイントが接続されるようになり、動作するようになります。

まとめ

Ubuntuを使い始めると色々と問題に遭遇することが多いですが、それを解決する度に少しづつLinuxについての理解が深まる気がしています。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。