ThinkPad X220 Full HDディスプレイ化
X220/X230 FHD mod kit (rev.6)を使って、ThinkPad X220のディスプレイをFull HDディスプレイに換装する。
ディスプレイの分解までは、LenovoのThinkPad X220 ハードウェア保守マニュアルに則って分解する。
X220 FHD mod kitの実装手順については、FHD mod kit overview and installation guideを参照する。
購入した商品
商品 | 価格 |
---|---|
X220/X230 FHD mod kit (rev.6) | $49.99 |
LG LP125WF2-SPB3 IPS Full HD | $68.00 |
Full HDディスプレイ換装
届いたFull HDディスプレイ。
マザーボードのカバーを切り取る。
X220 Core i7のマザーボードの場合はR318の抵抗を取り除く。
これがX220 FHD mod kit。
X220のマザーボードとFHD mod kitをジャンパでつなげる。同時にFHD mod kitの上部7箇所をマザーボードと半田づけする。
電源用の配線をする。
元々のディスプレイを取り外し、Full HDディスプレイを繋げる。
電源を入れると、Full HDディスプレイに起動画面が表示される。
Linux側からFull HDで見えていることがわかる。
ここで、ThinkPadロゴの起動画面やBIOS画面が暗い・映らないときには、FHD mod kitとマザーボードの半田づけ不良の可能性があるのでやり直してみるといい。
他にもFull HDディスプレイをディスプレイカバーに収めるために、ディスプレイパネルを切ったり、ディスプレイカバーを切ったりする。
ディスプレイが収まった。
Linuxの設定
Fakeディスプレイをミラーリング設定にする
X220/X230 FHD mod kitのページに以下の記述がある。
X220/X230 FHD mod kit (rev.6)
Q: Does the brightness control work?
A: Brightness control does work in dual display mode: FHD display + fake display for brightness control (appears as "Dummy Display"). Otherwise brightness is fixed at 100%. Linux users can apply this kernel patch. BIOS (or coreboot) patch is required to overcome this limitation (I'm working on it sorry, I don't have time for that).
FHD mod kitを使ってFull HDディスプレイを接続すると、確かにLVDS-1とDP-3の2つのディスプレイがLinuxから見える。
$ xrandr Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192 LVDS-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 480mm x 270mm 1920x1080 60.03*+ 59.93 1680x1050 59.88 1400x1050 59.98 ... 320x240 60.05 360x202 59.51 59.13 320x180 59.84 59.32 VGA-1 disconnected (normal left inverted right x axis y axis) HDMI-1 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis) HDMI-3 disconnected (normal left inverted right x axis y axis) DP-2 disconnected (normal left inverted right x axis y axis) DP-3 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 276mm x 156mm 1920x1080 60.03*+
LVDS-1がプライマリディスプレイ扱いになっているが、実際のFull HDディスプレイに表示されるのはDP-3の方となる。(つまり、LVDS-1がFakeディスプレイとなる)
また、Full HDのディスプレイの輝度コントロールは以下のように行えるが、これはFakeディスプレイのLVDS-1がアクティブになっていないと制御できない。
$ sudo tee /sys/class/backlight/intel_backlight/brightness <<< 50
よって、ディスプレイ映像を出力するためにはDP-3が必要、輝度コントロールするためにはLVDS-1が必要となり、どちらもアクティブにしておかなくてはならない。
(LVDS-1の出力を無効にすると、Full HDディスプレイは常に最大輝度で表示されるようだ)
FakeディスプレイのLVDS-1で拡張されていると、存在しないディスプレイにマウスが移動してしまって混乱のもとになるので、.xinitrcの中で以下のコマンドを実行してX起動時にミラーリング設定を行う。
xrandr --output DP-3 --auto --primary --output LVDS-1 --auto --same-as DP-3
これでFakeディスプレイがミラーリングされ、ディスプレイが1つにまとまるようになる。
フタを閉じたときにサスペンドさせる
もともとsystemd-logindの HandleLidSwitch=suspend
の設定で、ThinkPadのフタを閉めたときにサスペンドするように設定していた。
電源管理 - ArchWiki
/etc/systemd/logind.conf
HandleLidSwitch=suspend
しかし、Full HDディスプレイ化してから、フタを閉じてもサスペンドしなくなっていた。
これは、FullHDディスプレイにするとディスプレイがLVDS-1とDP-3の2つが見えている状態になっており、HandleLidSwitchが実行されなくなっているためだ。
電源管理 - ArchWiki
外付けモニターが接続されている場合、フタが閉じられても HandleLidSwitch オプションはアクションを実行しません。
そこで、systemd-logindのHandleLidSwitchからサスペンドするのは諦めて、acpiイベントから直接サスペンドするように設定する。
acpi_listen
すると、フタを閉じたときには、 button/lid LID close
のイベントが呼ばれているのがわかる。
acpiにフタ閉じ検出イベントとそのハンドラを追加するために、以下2つのファイルを作成する。
/etc/acpi/events/lid_close
event=button/lid LID close action=/etc/acpi/handlers/sleep
/etc/acpi/handlers/sleep
#!/bin/env sh systemctl suspend
ハンドラに実行権限をつけて、acpidを再起動する。
$ sudo chmod a+x /etc/acpi/handlers/sleep $ sudo systemctl restart acpid
これでフタを閉じたらサスペンドされるようになった。
参考記事
- X220 X230 FHD化 組み込み | 電脳処方的絵巻 ←半田づけの前処理などはこちらを参考に。