Lenovo ThinkPad P1

提供: ArchWiki
2019年4月16日 (火) 22:12時点におけるHiromi-mi (トーク | 投稿記録)による版 (英語版と同期, 「内蔵スクリーン」の訳に迷う)
ナビゲーションに移動 検索に移動

Lenovo ThinkPad P1 は2018年に発売されたノートパソコンで、最大で Intel Core i7-8850H または Xeon E-2176M 6コアプロセッサ、64 GB DDR4 メモリ、NVIDIA Quadro P2000 グラフィックを搭載します。

インストール

BIOS v1.18以前では "Dicrete Graphics" で使わない

https://www.reddit.com/r/thinkpad/comments/a2g0k4/warning_do_not_change_from_hybrid_graphics_to/

P1 が使用不可になり Lenovo にマザーボードの交換を依頼する羽目になるかもしれません。BIOS v1.15 にてこの症状が確認されています。

よって、BIOS v1.18 以降を利用することになるでしょう。2018年12月24日にリリースされた v1.17 でこの問題は大半が修正されたものの、Hybrid Graphics オプションを変更するのに関連して時折文鎮化の問題が発生するため削除されました。

ファームウェアのアップデート

インストールする前に、Windows 10 を起動してプリインストールされている Lenovo Vantage ソフトウェアを使って必要なファームウェアアップデートをインストールすることを推奨します、特に こちら が重要です。

ハイブリッドグラフィックでインストール

ハイブリッドグラフィックが BIOS で有効になっている場合、現在のところライブ CD は正しく起動しません。詳しくは NVIDIA Optimus を見てください。選択肢はふたつあります:

  • BIOS の設定を "Discrete only" に変更してハイブリッドグラフィックを無効化する。
  • ライブ CD を起動する前に e を押してカーネルパラメータに modprobe.blacklist=nouveau を追加する。

二番目の方法を使う場合、/boot/loader/entries/arch.confmodprobe.blacklist=nouveau と記述すると良いでしょう。

HiDPI ディスプレイ

ThinkPad P1 は構成によって HiDPI ディスプレイが搭載されています。インストール時にコンソールフォントが読めない場合は setfont latarcyrheb-sun32 を実行してください。

インストール後もフォントの設定を永続的に使用するには、以下の内容で /etc/vconsole.conf を作成:

/etc/vconsole.conf
FONT=latarcyrheb-sun32

詳しくは HiDPI を参照。

グラフィック

ThinkPad P1 でグラフィックを設定する場合の問題がふたつ存在します: BIOS に "integrated graphics only" オプションが存在しないこと、そして外部ディスプレイ端末 (HDMI など) が NVIDIA のチップに接続されていることです。あなたがしたいことによって、以下の設定方法から選ぶ必要があります:

ディスクリートのみ

P1 は内蔵グラフィックと外部グラフィックが両方あるハイブリッドデバイスであり、外部出力およびラップトップのディスプレイを適切に動作させるため、NVIDIA のドライバで Optimus を使うよう設定しなければなりません。NVIDIA の記事に従って NVIDIA Optimus を設定してください。

ノート: この場合、NVIDIA のグラフィックカードが常にオンとなるため、バッテリーの持ちが著しく短くなります。

NVIDIA ドライバーで X を起動した後黒画面になる

Optimus を利用してさえも、自動生成された xorg.conf を使ってドライバーがラップトップスクリーンを検知するのに失敗することがあります。そして X 起動後に黒画面になるかもしれません。更なる詳細は NVIDIA Optimus を参照してください。

外部ディスプレイを接続して動作することが確認できる場合は、xrandr -q で HDMI と DisplayPort のみが実際には検知されているか調べて下さい。nvidia-settings は外部映像出力接続のみが表示されるはずです。

ドライバーに内蔵ラップトップスクリーンについて指示するには、xorg.conf ファイルを変更して ConnectedMonitor" OptionSection "Device" に加えます。

Xorg#設定 を参考に、以下の内容を xorg.conf Section "Device" として設定してください:

  Section "Device"
      Identifier      "nvidia"
      Driver         "nvidia"
      VendorName     "NVIDIA Corporation"
      BusId          "1:0:0"
      Option         "AllowEmptyInitialConfiguration"
      Option	      "ConnectedMonitor" "eDP"
      Option	      "CustomEDID" "eDP:/sys/class/drm/card0-eDP-1/edid"
      Option	      "IgnoreEDID" "false"
      Option	      "UseEDID" "true" 
  EndSection

X を再起動したのち、内蔵スクリーンの出力 <codeeDP-1-1> が検知され適切に使えるはずです。

ラップトップスクリーンが検知されたものの xrandr では利用可能な解像度が適切に検知されていない場合は、HorizSync および Vertrefresh オプションを Section "Monitor" から削除して、X を再起動して下さい。

Bumblebee によるハイブリッドグラフィック

Bumblebee を見てください。Bumblebee の設定後に Xorg が起動しない場合、Xorg -configure を実行してから設定を /etc/X11/xorg.conf にコピーして Xorg の設定を生成してみてください。

Bumblebee は通常時は NVIDIA のカードを無効化するため、HDMI などのディスプレイ出力は xrandr -q で認識されません。Bumblebee のマルチモニター設定 のページを見てください。

bbswitch によるハイブリッドグラフィック

この方法では内蔵グラフィックとディスクリートグラフィックを手動で切り替えます。切り替えるときは全ての Xorg インスタンスを再起動する必要があります。マシンの再起動は必要ありません。

適切な NVIDIA グラフィックドライバーと bbswitch をインストールしてください。Xorg -configure を実行して設定を /etc/X11/xorg.conf.intel にコピーします。/etc/X11/xorg.conf.nvidia を作成してもいいですが、必須ではありません。

以下の Bash 関数でディスクリートグラフィックを切り替えられます:

discrete() {
    killall Xorg
    modprobe nvidia_drm
    modprobe nvidia_modeset
    modprobe nvidia
    tee /proc/acpi/bbswitch <<<ON
    cp /etc/X11/xorg.conf.nvidia /etc/X11/xorg.conf
}

上記の関数の実行後、xrandr -q は出力端子として HDMI-0 を認識します。xrandr --auto で外部モニターにディスプレイが映ります。DPI が異なるディスプレイを拡張したい場合、以下のコマンドを必要に応じて修正して実行してください:

$ xrandr --output HDMI-0 --scale 2x2 --right-of eDP-1-1

逆に、内蔵グラフィックに切り替えたい場合:

integrated() {
    killall Xorg
    rmmod nvidia_drm
    rmmod nvidia_modeset
    rmmod nvidia
    tee /proc/acpi/bbswitch <<<OFF
    cp /etc/X11/xorg.conf.intel /etc/X11/xorg.conf
}

切り替えた後は X セッションを手動で起動する必要があります。

TLP を使っている場合、TLP がシステムの起動・シャットダウンを妨害しないようにするため、以下の行をアンコメントして NVIDIA のカードを分離する必要があります:

/etc/default/tlp
RUNTIME_PM_DRIVER_BLACKLIST="amdgpu nouveau nvidia radeon"

nvidia-xrun には NVIDIA のグラフィックカードで別の X セッションを実行する方法が記載されています。

トラブルシューティング

xbacklight で画面の明るさを変えられない

light-gitAUR をインストールしてください。

起動時・シャットダウン時にシステムがフリーズする

ハイブリッドグラフィックを使っている場合、TLP の設定で NVIDIA ドライバーがブラックリストに含まれているかどうか確認してください:

/etc/default/tlp
RUNTIME_PM_DRIVER_BLACKLIST="amdgpu nouveau nvidia radeon"

また、シャットダウンする前に以下のコマンドを実行して NVIDIA のカードをオンにしてください:

# modprobe nvidia

systemd サービスをインストールして、NVIDIA のカードを自動でオンにすることもできます:

/etc/systemd/system/nvidia-enable-power-off.service
[Unit]
Description=Enable NVIDIA card at shutdown
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/bin/sh -c "awk '{print $2}' /proc/acpi/bbswitch > /tmp/gpu_state && echo ON > /proc/acpi/bbswitch"
#ExecStart=/usr/bin/modprobe nvidia

[Install]
WantedBy=shutdown.target
WantedBy=reboot.target
WantedBy=hibernate.target
WantedBy=suspend-then-hibernate.target
WantedBy=sleep.target
WantedBy=suspend.target

さらに、元々オフであったカードを、サスペンドやハイバネーションからの復帰時にオフにし直すには:

/etc/systemd/system/nvidia-disable-resume.service
[Unit]
Description=Disable NVIDIA card at system resume
DefaultDependencies=no
After=sleep.target
After=suspend.target
After=suspend-then-hibernate.target
After=hibernate.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'cat /tmp/gpu_state > /proc/acpi/bbswitch || echo OFF > /proc/acpi/bbswitch'
#ExecStart=/usr/bin/rmmod nvidia

[Install]
#WantedBy=shutdown.target
#WantedBy=reboot.target
WantedBy=sleep.target
WantedBy=suspend.target
WantedBy=suspend-then-hibernate.target
WantedBy=hibernate.target