GPD WIN Max 2 に Ubuntu 22.10 を入れた

表題の通り、GPD WIN Max 2 に Ubuntu 22.10 を入れたのでその時のメモ。といっても Pocket / Pocket 2 の頃と比べ、かなりそのままで使えるようになっていたので、細かなところのリンクが主。


まず、なんとこの機種は GPD Win Max – ArchWiki なるページが Archwiki にあり、いつものように Arch を使っていなくとも恩恵に授かることができる。とはいっても全てが載っているわけではないので気づいた点メモ。

全体

まず、手元にある端末では、到着時点の BIOS 1.04 およびその後更新された BIOS 1.05 において、 Secure Boot の Platform Key が、 DO NOT TRUST – AMI Test PK なるものが登録されている。そのためおそらく、 Windows の BitLocker や Linux でも相当するソフトウェアを用いて TPM ベースのディスク暗号化等を設定した場合、設計通りの強度にならない可能性がある。今回は Ubuntu のインストーラーが提供する、都度暗号化パスワードを入力する方式にしたため関係はなくそのままにした。

GPD WIN Max 2 BIOS Secure Boot PK
DO NOT TRUST - AMI Test PK

Linux でのデバイス認識

LTE やタッチパネルも含め、指紋センサー以外のほとんどのデバイスは見えている。タッチパネルは Krita で試したところ、 Surface Pen の筆圧も認識するようだ。

ゲームパッドはバイブレーターも含め、games – How to enable a vibration in a PC gamepad in Xubuntu 18.10 – Ask Ubuntu 記載の通り evtest でデバイス情報の取得ができるほか、 fftest /dev/input/event5 コマンドで 4 や 5 を入力することでバイブレーターも確認できたほか、 Steam で Euro Truck Simulator 2 をインストールしても概ね認識している様子があった。加速度センサーは DKMS もしくは DSDT の修正が必要な旨が ArchWiki で報告されているが試していない。

指紋センサーは前述の GPD Win Max – ArchWiki の他、Twitter でもドライバがないという報告がある。また、この機種は Manjaro のイメージが GPD OS と銘打って提供されているが、 reddit でも We are greeting ManjaroLinux offically launched on WIN MAX 2 : gpdwin では Manjaro では指紋センサーは使えていないようなコメントがある。

スリープ/レジューム時のフリーズ

Linux で、スリープしてレジュームするとフリーズすることがあるようだ。先ほどの We are greeting ManjaroLinux offically launched on WIN MAX 2 : gpdwin でも Ubuntu 22.04 を入れたというユーザーから “It has also been occasionally freezing, requiring a hard reboot. Still haven’t figured out what this issue is, for now I’m seeing if updating the kernel to 6.0 will resolve this issue.” という報告はあるようだ。(追記:スリープに関する問題は末尾の追記参照)

手元ではしばらく使った結果、どうやら二種類のフリーズがあるように見えた。

このようなログが残るパターンと、それより手前、 Entering sleep state ‘suspend’… でログが途絶えて PM: suspend entry (deep) のログは残らないパターンがあるようだ。なお、 ^@ みたいなのは less が表示する \0 のようで、おそらく他の失敗に付随してデータの書き込みがこけているのだと考えられる。

そのうち Entering sleep state ‘suspend’… で途絶える方は、確証はないが、おそらく /etc/systemd/sleep.conf の設定で mem standby freeze の三種類のスリープのうち mem のみにすると起こらなくなったような気がする。standby のみにするとそもそもメニューから Suspend が消えたのでおそらくこれはまた別の話として、 freeze のみ残すとスリープした際に都度何か悪いことが再現的に起こるようになったような気がする。https://www.kernel.org/doc/Documentation/power/states.txtを見る限り freeze は s2idle 相当のようなので、 s2idle の機能を必要としていなければおそらく不要だと考えられる。

もう一種類は結局よくわからなかったが、いつの間にか起こらなくなっていた。もしかしたら BIOS の更新や、 SD カードは個人的には焦って忘れそうな workaround を適用するほどではないことに気づいて Indiegogo での WIN Max 2 の Update #38 で案内されていた workaround を一旦解除したことが関係しているかもしれないが、詳細はわからない。

別に GPD WIN Max 2 に関係ないこと

Ubuntu というかおそらく NetworkManager + systemd は、複数のネットワーク接続がある際、 DNS は律儀に一度ネットワークごとにキャッシュサーバーを整理したうえで、各ネットワークの DNS キャッシュサーバーに聞いて回るようになっているようだ。個人的にはそのような挙動が求められるような場所では NetworkManager は使わないのではないかと思うが、一旦は仕様として受け入れるしかない。それにあたり、 ArchWiki ではNetworkManager ページの ラップトップで WLAN をオフに切り替える の項に有線無線を動的に切り替える項があり、これを参考に WiFi と WWAN の動的切り替えを書いてみたが、どうやらこれはスリープ復帰後に切れていた場合はフックされないようで、これだけでは持ち出した時に自宅 WiFi が見えなくなっても WWAN が復旧しなかった。さらに、 /usr/lib/systemd/system-sleep 以下のスクリプトで post で切り替えようとしたところでも、このタイミングでは nmcli radio wwan on を呼び出しても効いていないように見える。このあたりは悩ましいところ。

また、このタイミングで Plasma を調べ始め、案外良さそうなデスクトップ環境かもしれないと思い始めた。MATE を使っていたが、やはり最近では fractional DPI が影響する。

Win・Linux 共通の話

HDMI の挙動について未確認事項がある。Panasonic TH-40DX600 (テレビ)と YAMAHA SRT-1500 (スピーカー)が ARC 接続されている状態で GPD WIN Max 2 内蔵の HDMI 端子をテレビ側に繋ぐと、音は鳴るもののなぜかテレビとスピーカーの間の音量調整連携等が作動しなくなった。また、 SRT-1500 側の HDMI IN に繋いでみたところでは音が鳴っていないように見える(←追記:これはあとから試して再現しなかったので毎回は起こらないか、他の何かかもしれない)。ただの相性問題かもしれず、それ以上は今のところ確認していない。USB type-C の USB4 端子からアダプタを介して接続した場合は正常に接続されるように見える。(余談だが SRT-1500 はテレビの下に敷くタイプのスピーカーで、サウンドバーと比べても場所を取らず、ある程度容積が取れるので別途サブウーファーを設置しなくとも重低音もある程度は出ており、特にテレビラック想定の場合に床置きするサブウーファーがないのは集合住宅にやさしくもあったのだが、意外と不人気だったのか後継機は販売されていないようだ。これは残念。)

背面キーの挙動、およびゲームパッド・マウス切り替えをマウスにした場合のゲームパッドの挙動は、 GPD により提供されておる Windows 向けのユーティリティである WinControls により設定ができる。このソフトウェアで入力をリマップしているのではなくデバイス側に設定を焼きこむようで、 WinControl で設定すれば Linux でも反映されるようだ。なお、 WinControls で MS_UP/MS_DN と表示されているのは、 WIN 3 向けの説明書の关于 WIN 3 背键自定义工具“WinControls”的设置教程-深圳市中软赢科技术有限公司を見る限り(昔ながらのマウスでいう)ホイールによるスクロールのことのようだ。当該の場面で二本指スクロールすることで設定もできた。設定できなそうな領域では、右ジョイスティックはマウス、 L1/L2/R1/R2 はそれぞれ左クリック/中ボタン/右クリック/何もなし?のように見えた(R2 は気づいていないだけで何か効果があるかもしれないが、 xev でも反応なし)。

キーボードバックライトの明るさはどうやら誰も覚えていないようで、スリープからレジュームするだけでも元に戻っており、常にオフで運用するには都度設定する必要がある。BIOS アップデートの案内をしている GPD WIN Max 2 の Indiegogo でも Update #45 でも(当該アップデートに関係ないにも関わらず)このことにコメントしている人がいるが、 GPD HK から “Sorry it can’t make back light off by default.” とのコメントがあり、おそらくハードウェアの仕様上どうにもならないのだと考えられる。

その他

この機種は電源ボタンが外側に置かれている。デスクトップ運用でふたを開けずに使うことを意図したものだが、個人的には鞄の中で勝手に起動する方が懸念だった。ただ、実物を見る限り凹んではいないが出っ張ってもおらず、一応ある程度ちゃんと押さないと電源ボタンとしては作動しないので、多少持ち運んでみたい程度では問題なさそうな印象だった。ただし、電源ボタンと指紋センサーを兼ねており、特に指紋センサーは大き目なだけあってきちんと認識してくれる印象があるだけに、手前という位置に指紋センサーがあるのはあまり良い場所とは言えないのが残念ではある。

ファンを止めるボタンがあるが、すべてのファンが止まっているかというとそんなことはない気がする(少なくとも一番うるさいファンはちゃんと止まる)。

画面用にガラスのマットフィルムが同梱されてきた。非光沢で割と見た目は快適で、分厚さのためか触り心地も良い。ただ、どうやら途中で設計が変更されたようで、 PDA 工房等は 2.5D 版として別のフィルムを提供している。手元に届いたものは両端が両方とも微妙に浮くので、 2.5D で設計しなおしていない可能性はある。また、ガラスフィルム故に固いので、貼るのはやや苦労した。

付属の AC アダプタは US 風だが端子に穴なし、 PSE マークなしの中国国内向け仕様だった。Indiegogo 出資で届いたものなので、日本の代理店を通した場合は違うかもしれない。
GPD WIN Max 2 付属 AC アダプタ

L2/R2 ボタンが出っ張っており、小物入れとして販売されていたもので寸法としてはちょうど良いと考えたものでは収納時の収まりは良かったが、出し入れの際にボタンが引っかかった。10.1インチ用として販売されているものはワンサイズ大き目に見えたが、これくらいで快適に使えるようだ。なので、不織布ケースは少し余裕のあるものを買った方が良さそう。

現時点での結論

スリープ/レジュームによるフリーズは様子見中であり、指紋認証は使えていない。HDMI の挙動は気になっている。それ以外、全体的に Ubuntu 22.10 で快適に使えている。(追記:スリープに関する問題は末尾の追記参照)

追記

スリープから勝手にレジュームする問題は、Linux S3 Suspend-to-RAM fix for GPD Win Max 2 32GB : gpdwin の記事の記載内容に従い、 /lib/systemd/system-sleep/ 以下に XHC[0-4] のそれぞれについて、 /proc/acpi/wakeup を読んで enabled になっていたら /proc/acpi/wakeup に対してデバイス名を書き込むことで USB resume を無効にするスクリプトを記載した。再現条件がわかっていないのですぐには確実なことは言えないが、おそらくこれで直っていそうな気がする。(2023/03/11)

Secure Boot をオンにすると、 GRUB や VeraCrypt の表示が微妙に変わる(オンで解像度が下がる、 GRUB は罫線が化ける)現象を観測。Secure Boot によって読み込みがうまくいかなくなるバイナリがある可能性あり。(2023/03/11)