Gentoo Linux on ThinkPad X1 Carbon 5th

今年も会社のマシンを買い換えてもらいました(ありがとうございます)。X1 Carbon の2017年モデルです。前のモデルと比較すると

という感じです。順当に進化していますね。

Gentoo のインストールは前年とほぼ同じ手順でいけました。違いは libinput の unmask が必要なくなったことぐらいでしょうか。LTE モデムは CONFIG_USB_NET_CDC_MBIM ですんなり使えました。

一点ハマったのがポインティングデバイスの挙動がものすごく不安定なこと。X1 Carbon (5th) - Error: Touchpad lost sync at byte 1 : archlinux と同じ症状で、まともに使えたものではありません。

結論を先に書いておくと、TrackPoint とタッチパッドを両方ちゃんと動かすことはできませんでした。UEFI の設定で TrackPoint を disable にするとタッチパッドだけは問題なく動作するようになるので、これで凌いでいます。幸いこのモデルのタッチパッドは改善されていて MacBook と比べてもそう見劣りするものでもないし、ジェスチャも便利だからひとまずこれでいいかなあという感じです。

以下調べたこと:

追記

その後、ポインティングデバイスをちゃんと動作させることができました。

  1. git-sources-4.12_rc4 を入れる
  2. 以下のパッチを当てる

    diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
    index 16c3046..0dff49e 100644
    --- a/drivers/input/mouse/synaptics.c
    +++ b/drivers/input/mouse/synaptics.c
    @@ -173,6 +173,7 @@ static const char * const smbus_pnp_ids[] = {
            "LEN0046", /* X250 */
            "LEN004a", /* W541 */
            "LEN200f", /* T450s */
    +       "LEN0073", /* X1 Carbon 5 (Elantech) */
            NULL
     };
    
    diff --git a/drivers/input/rmi4/rmi_smbus.c b/drivers/input/rmi4/rmi_smbus.c
    index 225025a..2939a2f 100644
    --- a/drivers/input/rmi4/rmi_smbus.c
    +++ b/drivers/input/rmi4/rmi_smbus.c
    @@ -322,7 +322,7 @@ static int rmi_smb_probe(struct i2c_client *client,
            rmi_dbg(RMI_DEBUG_XPORT, &client->dev, "Smbus version is %d",
                    smbus_version);
    
    -       if (smbus_version != 2) {
    +       if (smbus_version != 2 && smbus_version != 3) {
                    dev_err(&client->dev, "Unrecognized SMB version %d\n",
                                    smbus_version);
                    return -ENODEV;
    
  3. CONFIG_HID_RMI, CONFIG_RMI4_SMB を有効にする

こんな感じになります。TrackPoint が Logitech Wheel Mouse として認識されちゃってますが、動作に異常はなさそうです。

$ dmesg | grep -E 'psmouse|rmi4'
[    2.074298] psmouse serio1: synaptics: queried max coordinates: x [..5678], y [..4758]
[    2.108620] psmouse serio1: synaptics: queried min coordinates: x [1266..], y [1094..]
[    2.108628] psmouse serio1: synaptics: Trying to set up SMBus access
[    2.121537] rmi4_smbus 0-002c: registering SMbus-connected sensor
[    2.183858] rmi4_f01 rmi4-00.fn01: found RMI device, manufacturer: Synaptics, product: TM3288-003, fw id: 2538625
[    2.260783] input: Synaptics TM3288-003 as /devices/rmi4-00/input/input8
[    3.650267] input: PS/2 Logitech Wheel Mouse as /devices/rmi4-00/rmi4-00.fn03/serio2/input/input17
$ xinput
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Synaptics TM3288-003                      id=11   [slave  pointer  (2)]
⎜   ↳ PS/2 Logitech Wheel Mouse                 id=12   [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)]
    ↳ AT Translated Set 2 keyboard                id=9    [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                      id=10   [slave  keyboard (3)]