Lenovo ThinkPad X1 Carbon (Gen 6)

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

ヒント: ThinkPad の資料は https://www.thinkwiki.org/wiki/ThinkWiki にまとまっています。
デバイス 動作 モジュール
Intel Graphics Yes i915, (intel_agp)
ワイヤレスネットワーク Yes iwlmvm
付属ドングルによる有線接続 Yes ?
モバイルブロードバンド Fibocom L850-GL Yes¹ xmm7360-pci
モバイルブロードバンド Sierra EM7455 Yes cdc_mbim, cdc_wcm, cdc_ncm
オーディオ Yes snd_hda_intel
タッチパッド Yes psmouse, rmi_smbus, i2c_i801
トラックポイント Yes psmouse, rmi_smbus, i2c_i801
カメラ Yes uvcvideo
指紋リーダー No² ?
電源管理 Yes³ ?
Bluetooth Yes⁴ btusb
NFC No⁶ ?
microSD カードリーダー Yes scsi_mod
キーボードバックライト Yes thinkpad_acpi
ファンクション/マルチメディアキー Yes ?
Thunderbolt 3 eGPU Yes⁵ nvidia
  1. 開発途上の xmm7360-pci カーネルモジュールを用います。このスレッドを参照してください。
  2. The Validity90 projectによりリバースエンジニアリングが行なわれていますが、スキャンが動作しません。(06cb:009a)
  3. S3 モードでのサスペンドには BIOS の設定変更が必要です。
  4. 信頼性向上についてこのブログ記事を参照。
  5. 内蔵ディスプレイのアクセラレーションには対応されていないようです。
  6. I2C バスを通じ接続されており、libnfc project で議論が行なわれています。

モデルの説明

2018年前期に発売された ultrabook である第6世代の Lenovo ThinkPad X1 Carbon です。複数のモデル (20KH*20KG*) が存在し、14インチディスプレイ・第8世代 Intel Core プロセッサ・内蔵 Intel UHD 620 グラフィックを搭載しています。

dmidecode パッケージをインストールして実行することであなたの使っているノートパソコンのバージョンを確認できます:

# dmidecode -t system | grep Version

Version: ThinkPad X1 Carbon 6th

モバイルブロードバンド

この機種には Fibocom L850-GL LTE モデムが搭載されていますが、Linux 環境ではサポートされず公式サポート提供予定はないようです。

トラブルシューティング

内蔵スピーカーの音量が小さい

内蔵スピーカーの音量が、100パーセントに設定しても20パーセント程度しか出ない場合、/etc/modprobe.d/alsa-base.conf を編集し、次のパラメータを snd_hda_intel モジュールに加えてみてください:

options snd-hda-intel model=nofixup
ノート: この設定を行うとマイクミュートボタンとミュート状態の LED が機能しません。

サスペンド (S3) がデフォルトで使用できない

第6世代の X1 Carbon は S0i3 (別名 Windows モダンスタンバイ) をサポートしていますが、S3 スリープステートはサポートしていません。S3 のサポートを追加するために ACPI DSDT テーブルにパッチを適用する方法は https://delta-xi.net/#056 を見てください。

関連する問題について詳しくは https://bbs.archlinux.org/viewtopic.php?id=234913 を参照してください。

S0i3 スリープのサポート

s0i3 スリープのサポートを有効にするには以下のカーネルパラメータを追加してください (Lenovo フォーラム を参照):

acpi.ec_no_wakeup=1
ノート: 上記の設定を行うとノートパソコンのフタを開けたときにスリープから復帰しなくなります。

また、BIOS から設定するか以下のコマンドを実行して Realtek のメモリーカードリーダー (常に 2-3 W を消費) を無効にする必要があります:

# echo "2-3" | tee /sys/bus/usb/drivers/usb/unbind

BIOS の設定

Config -> Thunderbolt BIOS Assist Mode - Set to "Enabled" と設定してください。無効にした場合、Linux では s2idle で CPU が立ち上がってしまい電力消費量が跳ね上がります。

電源管理・スロットリングの問題

電源管理のレジスタの設定が間違っているために Windows 環境よりも消費電力が大きくなることがあり、温度上昇によるスロットリングが 80°C が発生します (Windows の場合は 97°C になります、T480s throttling bug を参照)。

公式の Lenovo フォーラム にこのバグについての情報が投稿されています。

Lenovo によって問題が解決されるまで、手動で制限をセットする必要があります。

自動設定

サーマルスロットリングの設定を修正するため throttled が開発されています。それを使いこの問題を修正する自動化パッケージが作成されています。

ノート: throttled がインストールされている場合、次のパッケージとは衝突します。

lenovo-throttling-fix-gitAUR[リンク切れ: パッケージが存在しません]インストールして、lenovo_fix.service起動有効化してください。

手動設定

まず msr-tools をインストールしてください。

以下の内容で /usr/local/bin/cpu-throttling.sh ファイルを作成してください (実行可能属性を付与してください):

#!/bin/bash

/bin/modprobe msr
wrmsr -a 0x1a2 0x3000000 # which sets the offset to 3 C, so the new trip point is 97 C 

それから以下の内容で /etc/systemd/system/cpu-throttling.service ファイルを作成:

[Unit]
Description=set cpu heating limit to 97°c

[Service]
ExecStart=/usr/local/bin/cpu-throttling.sh
RemainAfterExit=no

[Install]
WantedBy=timers.target

また、/etc/systemd/system/cpu-throttling.timer というタイマーも作成:

[Unit]
Description=set cpu heating limit to 97°c every minute

[Timer]
OnActiveSec=60
OnUnitActiveSec=60
Unit=cpu-throttling.service

[Install]
WantedBy=timers.target

作成したらタイマーを有効化してください:

# systemctl enable cpu-throttling.timer

再起動して以下のコマンドで反映されているかチェック:

# rdmsr -f 29:24 -d 0x1a2
3

トラックポイントとタッチパッドの問題

20KG モデルの場合、タッチパッド (Synaptics 製) とトラックポイント (Elantech 製) を両方一緒に動作させることができません。タッチパッドを使うには BIOS でトラックポイントを無効化する必要があります。この問題の原因は古い PS/2 ドライバーによるトラックポイントのロードがタッチパッドのロードと干渉することにあります。Synaptics は RMI(4) という新しいロード手法を導入しており、問題が一部解決されています。詳しくは こちらのスレッド を参照。

対応策としては psmouse カーネルモジュールのオプションに synaptics_intertouch=1 を追加してください。例えばブートローダーのコマンドラインで以下のように設定します:

 [...] root=/dev/sda1 rw psmouse.synaptics_intertouch=1 [...]

あるいは /etc/modprobe.d/psmouse.conf を編集:

options psmouse synaptics_intertouch=1
ノート: TLP のデフォルトの省電力設定を使用する場合、タッチパッドのタップクリック機能がときどき動作しなくなったり、サスペンドするとトラックポイントが動かなくなり再初期化が必要になることがあります。

動作しないタッチパッドを再接続:

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

参照