Open44

ThinkPad X13 Gen3 (AMD) での Win11 + Manjaro Linux デュアルブート環境構築日記

ゆみやゆみや

備忘録として、この機種を選ぶにあたって自分が辿った思考を文章にしておく。

ここ2年半ほど、中古未使用品として手に入れた HP Specre x360 13-ae019tu というラップトップをメインマシンとして使ってきた。性能そのものに大きな不満はない。しかしコロナ禍の中、自宅で電源接続して常時起動していたせいでバッテリーの劣化が進んでいたらしい。今年に入って外出の機会が増えてきたことに伴い、バッテリー保ちの悪さに不便を覚える機会が増えてきた。バッテリーを自分で交換して使い続けてもいいのだが、機能面で以下のような不都合に悩まされてもいたため、この際メインマシンを買い換えてしまうことにした。

  • 外部入出力ポートが少ない。Thunderbolt3 が2つ・USB 3.1 Gen1 (Type-A) が1つ・ヘッドホン端子が1つあるきり。自室ではキーボード・モニター・USB-DAC・電源コードを常に繋げているので、Type-C 端子2つ・Type-A 端子2つ・HDMI端子は絶対に欲しい。RJ45はほとんど使わないので不要。
  • 4Kの本体モニターを持て余している。確かに精細かつ綺麗ではあるのだが、自分は視力が低いのでフォントをやや大きめに設定していて、HiDPi 環境のメリットを生かせていない。しかもバッテリーは食うし、Linuxデスクトップでの HiDPi 設定が色々とややこしいし、使い勝手もあまり良いとは言えない。2.2Kくらいの解像度ならバランスがいいのかもしれない。
  • 13.3型ワイド画面は作業スペースとして微妙に狭い。可搬性との兼ね合いも考えると、理想は14型。13型であれば比率は必ず 16:10 であることが必要。
  • RAM 16GBは微妙に少ない。Google Chrome のタブを常に3桁単位で開く習慣のある人間にとっては、メモリはいくらあっても足りないものなのだ。また、ゲーム情報学で用いられる手法は総じて空間計算量がデカい傾向があり、この点でも16GBという容量は中途半端気味である。
  • 性能に大きな不満はないとはいえ、複数のアプリケーションを同時に開いて開発していると、動作・反応が少々もたつくことがある。セキュキャン期間中、この現象に少し悩まされた。
ゆみやゆみや

一方で、HP Spectre にも良いところ・便利なところがあった。

  • 比較的軽いこと(公称1.29kg)。自宅・屋外両用のメインマシンとして使っていたので、持ち運びが楽であることはとても便利だった。
  • 画面がタッチパネルであること。いくらタッチパッドをジェスチャー操作できようと、いくらキーボードに乳首が生えていようと、いくらキーボードショートカットで迅速に操作できようと、どう頑張ったところでラップトップにおける GUI での操作のしやすさには限界がある。しかし、画面を直接タッチして操作すればこの限界がかなり緩和される。ただし、お絵描きやPDF書き込みのようなことはしないのでペンは不要。
  • 画面が精細かつ綺麗で、色域も広いこと。確かに4Kの解像度に関しては持て余し気味だったが、HiDPi 画面は確かに美しかった。色域の広さは見やすさに直結するので重要なポイントになる。時たま動画や画像などのコンテンツをいじくる機会もあるので、画面がハイクオリティであるに越したことはない。せめて最低限でも sRGB 100% 程度の色域は欲しい。
  • 画面がIPS液晶であること。近年は有機ELを搭載したラップトップが増えているが、これは焼き付きの問題があるので避けたい。

新しいメインマシンを選ぶにあたっては、これらの便利なところを全部兼ね備えていることが重要な条件だった。

ゆみやゆみや

その上で、用途の点から新しいラップトップに求める条件を考える。

  • 大前提として、Linuxがネイティブで動作すること。
  • 自宅・出先兼用のメインマシンとして使用するため、携帯性やバッテリー保ちに優れていること。
  • デスクトップマシンを別に導入しなくても、ラップトップ単体または eGPU との併用でだいたいの作業を済ませられるような性能があること。これはゼミ研究で DL を含むヘビーな処理をする予定があるためなのと、某 3DCG ゲームをプレイしたいため。

GPUについては、最初は「ゲームがある程度できるやつ1台ありゃいいだろ、機械学習用にはクラウドでGPUサーバ借りればいいかな」と思っていた。
しかしこの辺の記事を見て「手元にGPUが欲しい」という方向に方針が変わり、色々考えて eGPU (外付けグラボ) というロマン構成を前提に機種選定することにした。
https://keng000.hatenablog.com/entry/2018/06/17/220215
https://shuyo.hatenablog.com/entry/2022/04/11/deeplearning

GPU が必要なら dGPU 積んでるゲーミングノート買えよというツッコミが聞こえてきそうだが、ゲーミングノートは dGPU の消費電力のせいでバッテリー保ちが極端に悪くなりがちだし、重量も発熱量も増大しがち。しかし dGPU が必要になるような処理を常にぶっ続けで走らせるわけではないので、dGPU のメリットに対してデメリットが割に合わない。これを考えると「dGPU を積んでおらず、CPU の性能が良く、筐体の熱設計がしっかりしている」というマシンを選び、強い GPU が必要になったときだけ外付けするのが無難だと判断した。

電気代との兼ね合いも考えて、個人向け GPU 1基じゃどうしようもないような重い計算だけはクラウド GPU でやるつもり。

ゆみやゆみや

これらの条件に対して、ThinkPad X13 Gen3 (AMD) はかなり都合がよかった。

  • 質量が軽い。HP Spectre よりも少し厚く少し重いが、許容範囲内。
  • ThinkPad である。つまり、Linuxの動作に関する情報を集めやすい。
  • Ryzen 7 PRO 6850U を積める。この CPU は性能が結構高い上に、iGPU が非常に優秀でエントリー向けのグラボ並の性能が出るらしい。Intel の Alder Lake はモバイル向けモデルだと消費電力の大きさと発熱が深刻らしく、その点では Ryzen 6000 シリーズの方がバランスが取れているとも聞く。
    https://ascii.jp/elem/000/004/094/4094376/6/
  • RAM 32GB を積める。
  • IPSで割と色域の広い(NTSC 72%)画面を積んでいる。タッチパネルに変えることもできる。
  • 消費電力が小さく、バッテリーが公称で16時間持つ。まあ公称というのはだいたいアテにならない数字なわけだが、ざっくり半分が実際の数字だとしても8時間はある。まあこれだけ長けりゃ何とかなるだろ。
  • ポートがそれなりに充実している。USB4 があるのがうれしい。Ryzen 6000 シリーズのモバイル向けモデルは USB4 に対応していて基本的には eGPU が出来る上に、MS の意向で Windows11 を元から搭載しているモデルの USB4 ポートは Thunderbolt 3 並の性能が出るとかいう話も聞く。eGPU はマシンと各種機材の相性の影響が大きいのだが、まあたぶん X13 でも eGPU は出来るだろ。
    https://www.pcworld.com/article/703578/usb4-support-amd-ryzen-6000-laptop.html

機種選定の際は、価格.com の検索画面からすべての製品を一覧表示し、そこから「絶対に外せない条件」を順々に課していって絞り込むという手法を使った。
https://kakaku.com/pc/note-pc/itemlist.aspx

Lenovo は製品の詳細仕様を「Product Specifications Reference」という自社サイト上に公開しており、
画面の色域・最大輝度(単位:nit)・各種構成ごとのバッテリー駆動時間など、重要ながら巷のレビュー記事には載っていない情報もここから見つけ出すことができる。
ThinkPad の購入を考えている方は、購入前にこれをチェックしてみることをオススメする。
https://psref.lenovo.com/Product/ThinkPad/ThinkPad_X13_Gen_3_AMD

ゆみやゆみや

届いたので早速設定をやっていく。
https://twitter.com/stepney141/status/1568126521566728193

Windows と Manjaro のデュアルブート設定については、Manjaro 公式のこの文章がある程度参考になる。
https://forum.manjaro.org/t/root-tip-how-to-dual-boot-manjaro-and-windows/1164/

Ryzen を搭載した ThinkPad で ArchLinux を動かした報告はなぜかあまり見当たらないが、この記事がそこそこ参考になった。
https://blog.hinaloe.net/2019/12/31/thinkpad-x395/

ゆみやゆみや

何はともあれ、まずは Manjaro の Live USB を作成する。

Manjaro 公式サイトから iso ファイルを落とす。
https://manjaro.org/download/

前のマシンではコミュニティによる i3wm 版を使っていたが、今回は Xfce + i3wm という構成に乗り換えてみることにしたので、公式の "XFCE DESKTOP" 版の Minimal 構成を落とす。

Windows で Live USB を作るなら、Rufus が定番かつ動作が安定していてオススメ。実際の工程は Rufus の表示を見ながら焼く先と焼く内容を指定するだけなので、操作方法は省略。
https://rufus.ie/ja/

ゆみやゆみや

再起動をかけ、F12キーを連打してUEFI画面を開き以下のように設定を変更する。

  • "Security" から "Secure Boot" をオフ
  • "Security" から "Allow Microsoft 3rd party UEFI CA" をオン

※参考:
https://www.phoronix.com/review/rembrandt-linux-boot

セキュアブートに対応している ArchLinux であれば "Allow Microsoft 3rd party UEFI CA" をオンにするだけで良いらしい。
Manjaro Linux はセキュアブートでの動作に対応しておらず、する予定もないとのことなので、"Secure Boot" のオフが必須となる。
https://forum.manjaro.org/t/is-there-a-plan-to-support-secure-boot-in-manjaro-by-default/106082

ゆみやゆみや

UEFI の設定変更を保存して Win11 を通常起動すると、「BitLocker Recovery」という青い画面が出現する(自分の場合は英語だったが、日本語で表示される場合もあるらしい)。
これは先ほど UEFI でセキュアブートを切ったことによるものらしい。

この画面を抜けるには、MicrosoftアカウントのWebサイトから「BitLocker回復キー」というページを開き、そこに書かれている長大な数字の列を入力する必要がある。
これを入力すると Win11 にログインできる。
https://account.microsoft.com/devices/recoverykey

Win11 を起動するたびにこんなことをしなくてはならないのは面倒くさいこと極まりないので、Win11 側で設定を変更して「デバイスの暗号化」を無効にする。
https://it-sora.net/archives/14420

ArchWiki を見ると Windows 11 では、セキュアブートを無効化すると Windows Hello や WSM (Windows Subsystem for Android)、Windows Update が動作しなくなります。 という記述がある。英語版にも同じ内容の記載があった。
https://wiki.archlinux.jp/index.php/Windows_と_Arch_のデュアルブート#UEFI_.E3.82.BB.E3.82.AD.E3.83.A5.E3.82.A2.E3.83.96.E3.83.BC.E3.83.88
https://wiki.archlinux.org/title/Dual_boot_with_Windows#UEFI_Secure_Boot

しかし、こんな現象は全然起こっていないという話もあり、どうなっているのかよくわからない。
https://twitter.com/yude_jp/status/1543510328163463169

ゆみやゆみや

Live USB を挿した後、UEFI画面から起動順序をいじくって USB ブートを行う。すると Ubuntu そっくりのグラフィカルインストーラが立ち上がるので、後はそれに従ってマウスをポチポチ操作していれば Manjaro のインストールは完了。
https://twitter.com/stepney141/status/1568155572452872192

注意点:

  • Manjaro を入れるパーティションを間違えないよう注意すること。Win11 を使う機会が少ない人なら大したダメージはないだろうが、Win11 環境を絶対に壊すわけにはいかないような人は、うっかり上書きしないように要注意。
  • インストーラを起動する際は「Boot with open source drivers」を選ぶのが無難。理由は以下の記事に詳しい。

https://www.mimir.yokohama/useful/0023-installing-manjaro.html

ゆみやゆみや

インストールを終えてManjaroの初期設定を始める。
システムが Wifi カードを認識してくれなかったので、 USB Ethernet アダプタで有線LANに接続して設定を行う。

まずはパッケージマネージャの参照するミラーを高速なアクセス先に変更し、パッケージのアップデートをやっておく。完了後はもちろん再起動をかける。

$ sudo pacman-mirrors --fasttrack
$ sudo pacman -Syyu
ゆみやゆみや

ホームディレクトリを ls してみると、~/Downloads などの各種ディレクトリの名前が「ダウンロード」といった具合に日本語になっている。
これでは不便なので、ディレクトリ名を英語に戻す。

$ sudo pacman -S xdg-user-dirs-gtk
$ LC_ALL=C xdg-user-dirs-gtk-update

※参考:
https://qiita.com/apu4se/items/7e36586e0ba1bfe5dd48

ゆみやゆみや

いつまでも USB Ethernet でしかインターネットに接続できないのは困るので、Wifi が動かない問題の解決策を考える。
とりあえず lspci -k の出力結果を見てみると、Wifi カード自体はシステムに認識されているらしい。
そこでドライバを導入すべく

$ sudo pacman -S linux-firmware

とした後に再起動をかけてみたが、相変わらず Wifi には接続できなかった。

この手の不具合はカーネルを最新版にすることで解決することも多い。
Manjaro Linux のいいところの1つは、デバイスドライバの導入やカーネルの切り替えがごく簡単に行える仕組みが備わっている点である。
ターミナルから

$ manjaro-settings-manager

と打つと、GUI の設定画面が起動する。
この画面から「カーネル」を選ぶと、現在 Manjaro 公式で提供されているカーネルの一覧がグラフィカルに表示される。この画面から現在動いているカーネルを確認したり、カーネルのインストール・アンインストールを行ったりできる。

見ると、現在動いているカーネルは Linux 5.15.60-1 であった。LTS だ。
現在 Manjaro 公式が提供している中で最も新しい Linux 5.19.1-3 を選択してインストールする。
しばらく経って「完了」という文字が表示されたら、システムを再起動する。

再起動して 5.19 のカーネルに切り替えると、目論見通り Wifi が認識されるようになった。
その他トラックパッドもタッチパネル画面も乳首も、すべて問題なく動いている。
「Ryzen 搭載ラップトップに Linux を入れるとサスペンドが効かなくなる」という話もよく聞くが、自分の環境では今のところそのようなことは起こっていない。

ゆみやゆみや

次は日本語化である。

最初に

sudo pacman -S fcitx-mozc otf-ipafont adobe-source-han-sans-jp-fonts adobe-source-han-serif-jp-fonts

を実行し、fcitx-mozc と各種日本語フォントを導入する。

完了後、~/.xprofile に次の内容を追記する。

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

この辺は ArchWiki の記述をそのまま参考にすれば問題ない、はず。
https://wiki.archlinux.jp/index.php/Fcitx#.E3.82.A4.E3.83.B3.E3.83.97.E3.83.83.E3.83.88.E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.AE.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0.E3.81.AE.E8.A8.AD.E5.AE.9A

ゆみやゆみや

ここまでやればとりあえず Manjaro Linux を使い始めることができる。

ゆみやゆみや

バッテリー消費の節約のため、tlp を導入して有効化する。
https://wiki.archlinux.jp/index.php/TLP
https://linrunner.de/tlp/

$ yay -S tlp tlp-rdw
$ sudo systemctl enable tlp.service
$ sudo tlp start

バッテリーを100%まで満充電するとバッテリーの寿命が縮むらしいので、充電の上限を設定する。
具体的にどの程度の容量で充電を止めるかには色々と流儀があるようだが、自分はとりあえず「75%を切ったら充電開始」「80%に到達したら充電ストップ」というように設定してみた。
https://solist.work/blog/posts/thinkpad/
http://kikulab.blogspot.com/2021/04/powersave-on-linux.html
https://mumeiyamibito.0am.jp/linux_mint/高度な電源管理
https://metallocrystal.pug-chimera.ts.net/linux_mint/高度な電源管理
https://www.xmisao.com/2014/01/21/thinkpad-battery-setting-by-tlp-on-linux.html

ゆみやゆみや

外部モニターやキーボードなどを接続してみると、今までの HP Spectre とポートの位置がだいぶ異なっているために配線の仕方を変えなくてはならなくなり、机の上が各種ケーブルでゴシャゴシャになってしまった。
早いところ USB ハブかドッキングステーションか何かを導入して机の上をスッキリさせたい。

ゆみやゆみや

Win と Linux のデュアルブート環境では、表示される時刻が実際のタイムゾーンの時刻とズレる現象が発生する。
これは不便なので直す。

解決方法としては「Win側をUTCにする」「Linux側を現地時間にする」の2通りあるが、ここでは後者を採用した。
http://baker-street.jugem.jp/?eid=687
https://gin135.hatenadiary.org/entry/20140304/1393943319

$ timedatectl status | grep local
          RTC in local TZ: no
$ sudo timedatectl set-local-rtc 1 --adjust-system-clock
$ timedatectl status | grep local
          RTC in local TZ: yes
Warning: The system is configured to read the RTC time in the local time zone.
         'timedatectl set-local-rtc 0'.

本当はWin側をUTCに合わせるべきなんだけど、Linuxの初期設定がまだ全部終わってないのにWinに切り替えるのは億劫だしWinもそれなりの頻度で使うし、大した弊害はないだろうと判断。

ゆみやゆみや

Linux側の時刻設定が勝手にUTCに切り替わってしまう事象が何度か発生したため、やはりWin側をUTCにすることにした。

ゆみやゆみや

そういや HP Spectre のストレージにのみ入れてるデータをこちらに移す必要があるなぁ。マルチメディアデータが多いし、ケーブル直結してディレクトリごと転送できないかしら。
あとは GitHub の鍵周りの設定が必要か。

ゆみやゆみや

外部モニターを繋げた状態で ThinkPad の画面をタッチ操作したい場合は、「タッチ入力デバイスとしての ThinkPad のモニター」と「映像出力先としての ThinkPad のモニター」を Linux 上で対応させてやる必要がある。
これは ArchWiki の記述をそのままなぞればできる。
https://wiki.archlinux.jp/index.php/タッチスクリーン#.E3.83.9E.E3.83.AB.E3.83.81.E3.83.87.E3.82.A3.E3.82.B9.E3.83.97.E3.83.AC.E3.82.A4.E3.81.A7.E3.82.BF.E3.83.83.E3.83.81.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.BC.E3.83.B3.E3.82.92.E4.BD.BF.E3.81.86

[stepney141@manjaro-thinkpad-x13-g3 ~]$ xrandr
Screen 0: minimum 320 x 200, current 3840 x 1200, maximum 16384 x 16384
eDP connected primary 1920x1200+1920+0 (normal left inverted right x axis y axis) 286mm x 179mm
   1920x1200     60.00*+
   1920x1080     60.00  
   1600x1200     60.00  
   1680x1050     60.00  
   1280x1024     60.00  
   1440x900      60.00  
   1280x800      60.00  
   1280x720      60.00  
   1024x768      60.00  
   800x600       60.00  
   640x480       60.00  
HDMI-A-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
   1920x1200     59.95*+
   1920x1080     60.00    50.00    59.94    30.00    25.00    24.00    29.97    23.98  
   1600x1200     60.00  
   1680x1050     59.95  
   1280x1024     75.02    60.02  
   1440x900      59.95  
   1280x800      59.95  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)
DisplayPort-2 disconnected (normal left inverted right x axis y axis)
DisplayPort-3 disconnected (normal left inverted right x axis y axis)
DisplayPort-4 disconnected (normal left inverted right x axis y axis)
DisplayPort-5 disconnected (normal left inverted right x axis y axis)
[stepney141@manjaro-thinkpad-x13-g3 ~]$ xinput --list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ ARCHISS Q91JP Mouse                     	id=11	[slave  pointer  (2)]
⎜   ↳ ARCHISS Q91JP Consumer Control          	id=13	[slave  pointer  (2)]
⎜   ↳ USB Stick Pointer                       	id=15	[slave  pointer  (2)]
⎜   ↳ ELAN901C:00 04F3:2FE6                   	id=17	[slave  pointer  (2)]
⎜   ↳ ELAN0678:00 04F3:3195 Mouse             	id=18	[slave  pointer  (2)]
⎜   ↳ ELAN0678:00 04F3:3195 Touchpad          	id=19	[slave  pointer  (2)]
⎜   ↳ TPPS/2 Elan TrackPoint                  	id=21	[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)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
    ↳ ARCHISS Q91JP                           	id=10	[slave  keyboard (3)]
    ↳ ARCHISS Q91JP System Control            	id=12	[slave  keyboard (3)]
    ↳ ARCHISS Q91JP                           	id=14	[slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C         	id=16	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=20	[slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                  	id=22	[slave  keyboard (3)]
    ↳ ARCHISS Q91JP Consumer Control          	id=23	[slave  keyboard (3)]
[stepney141@manjaro-thinkpad-x13-g3 ~]$ xinput --map-to-output 17 eDP

xrandr でシステムが認識している映像出力先の一覧を見る。eDP というのが映像出力先としての ThinkPad の内蔵モニターで、HDMI-A-0 というのが HDMI 端子で接続されている外部モニターのこと。
xinput --list で入力デバイスを一覧表示し、どれがタッチ画面なのか探す。自分の環境では ELAN901C:00 04F3:2FE6 がそれだった。
xinput --map-to-output により、入力デバイスと映像出力先を対応させればOK。

しかしこれだと再起動のたびに設定がリセットされてしまうので、デバイスの名称で指定するようにコマンドを書き換えて ~/.xinitrc に追記しておく。

xinput --map-to-output $(xinput list --id-only "ELAN901C:00 04F3:2FE6") eDP
ゆみやゆみや

今はゲームを起動するために Win11 を頻繁に起動しているが、ゆくゆくは Manjaro 上で Wine なり何なりを動かして、Linux 環境だけで日常生活を完結させられるようにしたい。
Wine が定番だが、ゲーム用途では近年だと Steam だか Valve だかが Wine をベースに作ったという Proton というやつがよいと聞く。
https://wiki.archlinux.jp/index.php/Steam#Proton_Steam-Play

ゆみやゆみや

npm が入った状態で yay -Syu によるシステムアップデートを試みたところ、次のようなエラーが出てインストールに失敗してしまった。

凡例:
(OK):ダウンロード完了しました
(157/157) キーリングのキーを確認                                                        [###################################################] 100%
(157/157) パッケージの整合性をチェック                                                  [###################################################] 100%
(157/157) パッケージファイルのロード                                                    [###################################################] 100%
(157/157) ファイルの衝突をチェック                                                      [###################################################] 100%
エラー: 処理を完了できませんでした (衝突しているファイル)
npm: /usr/lib/node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled/LICENSE がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled/index.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled/package.json がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin/LICENSE がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin/lib/index.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin/package.json がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/diff/dist/diff.min.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-bundled/lib/index.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin/LICENSE がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin/lib/index.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin/package.json がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin/LICENSE がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin/lib/index.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin/package.json がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin/LICENSE がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin/lib/index.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin/package.json がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin/LICENSE がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin/lib/index.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin/package.json がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/unique-filename/lib/index.js がファイルシステムに存在しています
npm: /usr/lib/node_modules/npm/node_modules/unique-slug/lib/index.js がファイルシステムに存在しています
エラーが発生したため、パッケージは更新されませんでした。
 -> リポジトリのパッケージのインストール時にエラー

以下の方法で解決した。
そもそも pacman で npm を落とすのはトラブルの原因になりがちらしい。

$ pacman --overwrite "*" -S npm 

https://bbs.archlinux.org/viewtopic.php?id=272138
https://github.com/nodesource/distributions/issues/636

ゆみやゆみや

この環境で数日間運用してみているが、「使用中にマシンが唐突にフリーズし、マウスカーソルの移動を除く任意の操作を受け付けなくなる」という事象が頻発している。
解決策は電源ボタン長押しによる強制終了のみ。
発生タイミングについては、現在までに起動直後に起こったことはなく、起動して 30 分〜 1 時間以上経ってからの発生のみ確認している。

特定の操作をトリガーとして発生するわけでもないようで、前触れなく唐突にフリーズする。画面がブラックアウトするということはなく、HDMI による外部出力も含めた全ての画面が動作停止直前までと同じ状態のまま点灯し続ける。
rsync + ssh によるダウンロード処理を走らせたままフリーズした際には、ダウンロードが終了するであろう時間を見計らってから強制終了・再起動したところ、ファイル破損もなく処理が正常に完了していた。
つまり、フリーズ中も rsync のプロセスは動作し続けていたし、Wifi 接続も途切れることがなかったということになる。問題が起こっているのはどうやら画面出力周りのようだ。

調べてみると「Ryzen + Linux 環境で唐突にマシンがフリーズした」という報告がかなり多く見られるので、もしかするとこれに類する問題かもしれない。
一方で、同様に多く報告されている「サスペンド・ハイバネーションが効かない or 実行して再ログインするとマシンがフリーズする」という現象は全く見られない。

パッチカーネル linux-amd を入れてしばらく様子を見ることにする。
https://aur.archlinux.org/packages/linux-amd

なお、AUR から入れたパッチカーネルは、Manjaro の強みの一つであるグラフィカルなカーネル管理ツールからは見えないという欠点がある。
Forum によると「自分でカーネルビルドしろ」との由。
https://forum.manjaro.org/t/manjaro-kernel-amd-kernel/96201/1

ゆみやゆみや

結局 linux-amd を入れても特に変化がなく、UEFIとカーネルの更新で症状が治まったような気がしている。

ゆみやゆみや

Xfce のウィンドウマネージャを i3wm に変更する手術をする。
Xfce はデスクトップ環境であり、xfwm という自前のウィンドウマネージャを同梱している。デフォルトでは xfwm がウィンドウマネージャとして実行されるのだが、それを i3wm に差し替えてしまおうということだ。
https://wiki.archlinux.jp/index.php/I3

まず、何はともあれ i3wm を導入する。ここでは自分の好みで i3-gaps を使う。

$ yay -S i3-gaps i3status

xfce と i3wm を同居させる方法についてはどうもデファクトスタンダード的な手法がないようだが、自分は以下のサイトの通りのことをやったら成功した。
https://uzluisf.gitlab.io/posts/2018/05/26/setting-up-xfce-with-i3/

本当は Xfce の設定を書き換えるべきなんだろうが、ここでは横着して「xfwm の自動起動を切り、代わりに i3wm が自動起動するように設定する」だけに留めている。
https://wiki.archlinux.jp/index.php/Xfce#.E5.88.A5.E3.81.AE.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.A3.E3.82.92.E4.BD.BF.E3.81.86

デフォルト設定だとこんな感じの見た目になる。どうもパッとしないのでこれからカスタムしていくつもり。

ゆみやゆみや

結局、この横着した方法はやめてもっとマシな方法で再設定した。具体的には、ログインマネージャ (LightDM) の最下部のメニューから、使用するデスクトップ環境を直接 i3 に切り替えた。

ゆみやゆみや

Chrome で PDF ファイルをダウンロードするとなぜか GIMP が自動起動する。
PDF ファイルを落とすたびに GIMP のウィンドウを手動で消すのがとても面倒なので、直す。

xdg-mime で調べると、PDF ファイルを GIMP で開くのが規定の設定になっていることが分かる。

$ xdg-mime query default application/pdf
gimp.desktop

~/.config/mimeapps.list を編集し、Evince (GNOME のドキュメントビューワ) で開くよう設定する。

[Default Applications]
application/pdf=org.gnome.Evince.desktop
(後略)

すると、無事に設定が切り替わった。

$ xdg-mime query default application/pdf
org.gnome.Evince.desktop

http://r03.nurse.medic.mie-u.ac.jp/Ubuntu/UbuntuDisco.html#sec4
https://atmarkit.itmedia.co.jp/ait/articles/1905/31/news013.html
https://wiki.archlinux.jp/index.php/XDG_MIME_Applications#mimeapps.list

ゆみやゆみや

実は買ってからずっとACPIがうまく動作していなかった(/sys/class/backlight/*/brightnessを直接編集してディスプレイ輝度を調節していた)。永遠にこのままだとさすがに不便なので、GRUBの設定でカーネルパラメータを追加して直した。
https://wiki.archlinux.jp/index.php/バックライト#.E3.82.AB.E3.83.BC.E3.83.8D.E3.83.AB.E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.83.A9.E3.82.A4.E3.83.B3.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3
https://wiki.archlinux.jp/index.php/カーネルパラメータ#GRUB

ゆみやゆみや

ずっと放置していたのだが、サスペンド復帰時にパスワードロックがかからないという問題があった。
自宅で使う時は別にどうでもいいのだが、出先で使うとなるとこれでは些か具合が悪いので、どうにかすることにした。

現環境では Xfce と i3wm を共存させており、中でもサスペンドなどの電源機能は xfce4-power-manager で管理している。

https://wiki.archlinux.jp/index.php/Xfce#.E7.94.BB.E9.9D.A2.E3.82.92.E3.83.AD.E3.83.83.E3.82.AF.E3.81.99.E3.82.8B

Xfce から呼び出されるスクリーンロッカーを確認すると、LightDM (light-locker) になっている。

https://kakurasan.blogspot.com/2015/05/xfce-config-xfconf.html

$ xfconf-query -c xfce4-session -lvp /general/LockCommand
/general/LockCommand  light-locker-command --lock

つまり light-locker が常に起動している状態にしておけばいいのだが、最もシンプルな方法であるところの systemd ではどうもうまくいかないらしい。

https://zenn.dev/23prime/articles/99e8866a75b325#light-locker-を自動起動させる

というわけで、i3wm 側で light-locker の自動起動を設定することにした。

https://github.com/the-cavalry/light-locker/issues/151#issuecomment-637749548

exec_always --no-startup-id /usr/bin/light-locker
ゆみやゆみや

システムのアップデートをかけた途端、常用しているGUIファイルマネージャのThunarの起動がハチャメチャに遅くなった(瞬時→約10~15秒)。
Thunar自体の動作に問題はなくエラーも吐かれていなかったため、手がかりがなかった。

ググってみると「gvfsの設定をいじってネットワークドライブの自動マウントを切る」などの情報があったが、自環境では効果なし。

試行錯誤の挙句、ググって見つけた以下の情報のとおりに xdg-desktop-portal-gnome を削除したら元の通り瞬時に起動するようになった。
なんでこれで上手く行ったのか分からないのがどうにも気持ち悪いが、まあよし。
https://forum.endeavouros.com/t/thunar-archive-manager-slow-startup/40727/8

ゆみやゆみや

サスペンドからすぐに復帰してしまうことがあるので、ハイバネーションを設定した。
https://wiki.archlinux.jp/index.php/電源管理/サスペンドとハイバネート
https://masutaka.net/2021-08-25-1/

また、サスペンドの復帰問題それ自体に対しても対症療法があるようだったので、適用してしばらく様子を見ることにした。
https://wiki.archlinux.jp/index.php/電源管理/サスペンドとハイバネート#.E3.82.B5.E3.82.B9.E3.83.9A.E3.83.B3.E3.83.89.E3.81.8B.E3.82.89.E3.81.99.E3.81.90.E3.81.AB.E5.BE.A9.E5.B8.B0.E3.81.99.E3.82.8B

しかし、ハイバネートから復帰した際にワイヤレスネットワーク機能が完全にダウンしてしまい、systemctl restart NetworkManager.service をやっても戻らないという問題に見舞われた(再びネットワーク接続するには再起動するしかないという状況)。

NetworkManager.service は動作しているが、しきりにエラーを吐いている。

$ sudo systemctl status NetworkManager.service                                                                                                                                         
● NetworkManager.service - Network Manager
     Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; preset: disabled)
     Active: active (running) since Tue 2023-07-18 18:51:25 JST; 2min 26s ago
       Docs: man:NetworkManager(8)
   Main PID: 48459 (NetworkManager)
      Tasks: 4 (limit: 36999)
     Memory: 6.0M
        CPU: 97ms
     CGroup: /system.slice/NetworkManager.service
             └─48459 /usr/bin/NetworkManager --no-daemon

 7月 18 18:51:51 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <error> [1689673911.8589] device (wlp1s0): Couldn't initialize supplicant interface: Timeout was reached
 7月 18 18:52:01 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <warn>  [1689673921.8522] device (wlp1s0): re-acquiring supplicant interface (#2).
 7月 18 18:52:06 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <error> [1689673926.8581] device (wlp1s0): Couldn't initialize supplicant interface: Timeout was reached
 7月 18 18:52:16 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <warn>  [1689673936.8626] device (wlp1s0): re-acquiring supplicant interface (#3).
 7月 18 18:52:21 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <error> [1689673941.8665] device (wlp1s0): Couldn't initialize supplicant interface: Timeout was reached
 7月 18 18:52:31 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <warn>  [1689673951.8562] device (wlp1s0): re-acquiring supplicant interface (#4).
 7月 18 18:52:36 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <error> [1689673956.8605] device (wlp1s0): Couldn't initialize supplicant interface: Timeout was reached
 7月 18 18:52:46 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <warn>  [1689673966.8619] device (wlp1s0): re-acquiring supplicant interface (#5).
 7月 18 18:52:51 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <error> [1689673971.8678] device (wlp1s0): Couldn't initialize supplicant interface: Timeout was reached
 7月 18 18:52:51 manjaro-thinkpad-x13-g3 NetworkManager[48459]: <info>  [1689673971.8680] device (wlp1s0): supplicant interface keeps failing, giving up

nmcli の出力はこんな感じ。Wifiカードの情報がシステム上で正しく認識されていないように見える。無線LANクライアントの有効化を試みても変化がなく、SSIDを一覧表示しても何も出てこない。

$ nmcli
lo: 接続済み (外部) から lo
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
        inet4 127.0.0.1/8
        inet6 ::1/128

docker0: 接続済み (外部) から docker0
        "docker0"
        bridge, 02:42:45:F0:72:8D, sw, mtu 1500
        inet4 172.17.0.1/16
        route4 172.17.0.0/16 metric 0

78:F2:38:E3:7D:A1: 切断済み
        "s22u-s141"
        1 接続が利用可能
        bt (bluez), 78:F2:38:E3:7D:A1, hw

wlp1s0: 利用不可
        "Qualcomm QCNFA765"
        wifi (ath11k_pci), F6:56:75:11:C2:09, hw, mtu 1500

既知のデバイスに関する情報を取得するには、"nmcli device show" を使用します。
アクティブな接続プロファイルの概要を取得するには、"nmcli connection show" を使用します。

使用方法の詳細情報については、nmcli(1) と nmcli-examples(7) の man ページを参照してください

$ nmcli radio wifi on
$ nmcli device wifi list
IN-USE  BSSID  SSID  MODE  CHAN  RATE  SIGNAL  BARS  SECURIT

ドライバ(ath11k_pci)の問題であろうとアタリをつけ、dmesg でブート中のログを見てみる。
すると、案の定大量のエラーを吐いていた。

$ sudo dmesg | grep ath11k_pci
[    2.497414] ath11k_pci 0000:01:00.0: BAR 0: assigned [mem 0x98000000-0x981fffff 64bit]
[    2.497440] ath11k_pci 0000:01:00.0: enabling device (0000 -> 0002)
[    2.498003] ath11k_pci 0000:01:00.0: MSI vectors: 32
[    2.498011] ath11k_pci 0000:01:00.0: wcn6855 hw2.1
[    3.860233] ath11k_pci 0000:01:00.0: chip_id 0x12 chip_family 0xb board_id 0xff soc_id 0x400c1211
[    3.860240] ath11k_pci 0000:01:00.0: fw_version 0x110b196e fw_build_timestamp 2022-12-22 12:54 fw_build_id WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.23
[    4.226432] ath11k_pci 0000:01:00.0 wlp1s0: renamed from wlan0
[ 4379.050292] ath11k_pci 0000:01:00.0: failed to resume mhi: -5
[ 4379.050297] ath11k_pci 0000:01:00.0: failed to resume hif during resume: -5
[ 4379.050299] ath11k_pci 0000:01:00.0: failed to resume core: -5
[ 4379.050301] ath11k_pci 0000:01:00.0: PM: dpm_run_callback(): pci_pm_restore+0x0/0xe0 returns -5
[ 4379.050324] ath11k_pci 0000:01:00.0: PM: failed to restore async: error -5
[ 4382.250131] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4382.250143] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4382.250153] ath11k_pci 0000:01:00.0: failed to enable dynamic bw: -11
[ 4382.250334] Modules linked in: xt_conntrack xt_MASQUERADE nf_conntrack_netlink iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c xt_addrtype iptable_filter br_netfilter bridge stp llc ccm michael_mic rfcomm nfnetlink cmac algif_hash algif_skcipher af_alg bnep overlay btusb btrtl btbcm btintel btmtk uvcvideo videobuf2_vmalloc bluetooth uvc videobuf2_memops qrtr_mhi videobuf2_v4l2 vfat joydev ecdh_generic videobuf2_common mousedev fat amdgpu snd_soc_dmic snd_soc_acp6x_mach snd_acp6x_pdm_dma snd_sof_amd_rembrandt snd_sof_amd_renoir intel_rapl_msr snd_sof_amd_acp snd_sof_pci snd_sof_xtensa_dsp intel_rapl_common qrtr snd_sof edac_mce_amd ath11k_pci snd_sof_utils ath11k snd_soc_core kvm_amd qmi_helpers snd_compress snd_ctl_led drm_buddy ac97_bus kvm mac80211 snd_hda_codec_realtek snd_hda_codec_generic snd_pcm_dmaengine gpu_sched hid_multitouch irqbypass snd_hda_codec_hdmi i2c_algo_bit crct10dif_pclmul libarc4 crc32_pclmul drm_suballoc_helper snd_pci_ps polyval_clmulni snd_rpl_pci_acp6x polyval_generic
[ 4382.251301] Modules linked in: xt_conntrack xt_MASQUERADE nf_conntrack_netlink iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c xt_addrtype iptable_filter br_netfilter bridge stp llc ccm michael_mic rfcomm nfnetlink cmac algif_hash algif_skcipher af_alg bnep overlay btusb btrtl btbcm btintel btmtk uvcvideo videobuf2_vmalloc bluetooth uvc videobuf2_memops qrtr_mhi videobuf2_v4l2 vfat joydev ecdh_generic videobuf2_common mousedev fat amdgpu snd_soc_dmic snd_soc_acp6x_mach snd_acp6x_pdm_dma snd_sof_amd_rembrandt snd_sof_amd_renoir intel_rapl_msr snd_sof_amd_acp snd_sof_pci snd_sof_xtensa_dsp intel_rapl_common qrtr snd_sof edac_mce_amd ath11k_pci snd_sof_utils ath11k snd_soc_core kvm_amd qmi_helpers snd_compress snd_ctl_led drm_buddy ac97_bus kvm mac80211 snd_hda_codec_realtek snd_hda_codec_generic snd_pcm_dmaengine gpu_sched hid_multitouch irqbypass snd_hda_codec_hdmi i2c_algo_bit crct10dif_pclmul libarc4 crc32_pclmul drm_suballoc_helper snd_pci_ps polyval_clmulni snd_rpl_pci_acp6x polyval_generic
[ 4382.251976] Modules linked in: xt_conntrack xt_MASQUERADE nf_conntrack_netlink iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c xt_addrtype iptable_filter br_netfilter bridge stp llc ccm michael_mic rfcomm nfnetlink cmac algif_hash algif_skcipher af_alg bnep overlay btusb btrtl btbcm btintel btmtk uvcvideo videobuf2_vmalloc bluetooth uvc videobuf2_memops qrtr_mhi videobuf2_v4l2 vfat joydev ecdh_generic videobuf2_common mousedev fat amdgpu snd_soc_dmic snd_soc_acp6x_mach snd_acp6x_pdm_dma snd_sof_amd_rembrandt snd_sof_amd_renoir intel_rapl_msr snd_sof_amd_acp snd_sof_pci snd_sof_xtensa_dsp intel_rapl_common qrtr snd_sof edac_mce_amd ath11k_pci snd_sof_utils ath11k snd_soc_core kvm_amd qmi_helpers snd_compress snd_ctl_led drm_buddy ac97_bus kvm mac80211 snd_hda_codec_realtek snd_hda_codec_generic snd_pcm_dmaengine gpu_sched hid_multitouch irqbypass snd_hda_codec_hdmi i2c_algo_bit crct10dif_pclmul libarc4 crc32_pclmul drm_suballoc_helper snd_pci_ps polyval_clmulni snd_rpl_pci_acp6x polyval_generic
[ 4385.663638] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4385.663652] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4385.663661] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4388.863760] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4388.863777] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4388.863788] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4392.063391] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4392.063404] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4392.063411] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4404.010083] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4404.010099] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4404.010107] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4407.210066] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4407.210079] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4407.210086] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4419.156741] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4419.156754] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4419.156761] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4422.357015] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4422.357028] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4422.357039] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4434.090086] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4434.090100] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4434.090109] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4437.290356] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4437.290369] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4437.290379] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4449.023722] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4449.023736] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4449.023746] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4452.223720] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4452.223733] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4452.223741] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4464.170368] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4464.170385] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4464.170395] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4467.370377] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4467.370390] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4467.370401] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4548.863446] ath11k_pci 0000:01:00.0: wmi command 77828 timeout
[ 4548.863459] ath11k_pci 0000:01:00.0: failed to issue wow enable: -11
[ 4548.863463] ath11k_pci 0000:01:00.0: failed to enable wow during suspend: -11
[ 4548.863466] ath11k_pci 0000:01:00.0: failed to suspend core: -11
[ 4570.196786] ath11k_pci 0000:01:00.0: failed to resume mhi: -5
[ 4570.196793] ath11k_pci 0000:01:00.0: failed to resume hif during resume: -5
[ 4570.196797] ath11k_pci 0000:01:00.0: failed to resume core: -5
[ 4570.196800] ath11k_pci 0000:01:00.0: PM: dpm_run_callback(): pci_pm_resume+0x0/0xf0 returns -5
[ 4570.196827] ath11k_pci 0000:01:00.0: PM: failed to resume async: error -5
[ 4573.823382] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4573.823393] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4573.823400] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4577.023654] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4577.023669] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4577.023679] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4580.223350] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4580.223362] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4580.223371] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4592.170339] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4592.170353] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4592.170364] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4595.370357] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4595.370370] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4595.370380] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4607.103710] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4607.103724] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4607.103734] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4610.303694] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4610.303708] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4610.303718] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4622.037038] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4622.037051] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4622.037062] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4625.240261] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4625.240277] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4625.240289] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4637.183746] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4637.183760] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4637.183774] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4640.383670] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4640.383716] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4640.383727] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4652.117014] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4652.117029] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4652.117039] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 4655.317005] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 4655.317019] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 4655.317028] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6625.663464] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6625.663478] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6625.663545] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6628.863186] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6628.863199] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6628.863205] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6632.063505] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6632.063519] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6632.063530] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6635.263202] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6635.263216] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6635.263227] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6647.209853] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6647.209865] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6647.209873] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6650.409822] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6650.409832] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6650.409837] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6662.143485] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6662.143498] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6662.143508] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6665.343475] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6665.343489] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6665.343500] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6677.076749] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6677.076763] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6677.076776] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6680.276491] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6680.276504] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6680.276512] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6692.009822] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6692.009834] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6692.009840] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6695.209944] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6695.209957] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6695.209964] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6707.159918] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6707.159933] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6707.159941] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11
[ 6710.356520] ath11k_pci 0000:01:00.0: wmi command 16387 timeout
[ 6710.356534] ath11k_pci 0000:01:00.0: failed to send WMI_PDEV_SET_PARAM cmd
[ 6710.356542] ath11k_pci 0000:01:00.0: failed to enable PMF QOS: (-11

というわけで、このエラーを念頭に「manjaro networkmanager "hibernate" couldn't initialize supplicant interface」とググってみた。すると、トップに出てきたフォーラム投稿で問題が解決した。

https://forum.manjaro.org/t/wifi-doesnt-work-after-using-hibernate/111566/6

$ sudo modprobe -rv ath11k_pci && sleep 3 && sudo modprobe -v ath11k_pci
rmmod ath11k_pci
rmmod ath11k
insmod /lib/modules/6.4.3-1-MANJARO/kernel/drivers/net/wireless/ath/ath11k/ath11k.ko.zst 
insmod /lib/modules/6.4.3-1-MANJARO/kernel/drivers/net/wireless/ath/ath11k/ath11k_pci.ko.zst

しかし、ハイバネートのたびに毎回コマンドを打つのは大変なので、何か根本的な解決を図りたいところ。

ゆみやゆみや

上のワンライナーをハイバネートのフックとして systemd で自動化する。
以下の記事(英語版 ArchWiki の ThinkPad T14 Gen3 (AMD) の項目)を参考に、サービスファイルを書いて有効化する。
注意点として、この記事の ath11k-resume.service(復帰後にカーネルモジュールを再読み込みする設定)には After=suspend.target とだけ書かれているが、実際にはハイバネートのフックならば After=hibernate.target も加えなくてはならない。

https://wiki.archlinux.org/title/Lenovo_ThinkPad_T14s_(AMD)Gen_3#Network/_WiFi

なお、この記事によると ath11k_pci にはハイバネートのリジュームを阻げる既知のバグがあるとの事。自分はこのバグを踏んでいたらしい。

ゆみやゆみや

サスペンドの復帰問題の対症療法の件。自分がなにか設定をまずったのか、むしろサスペンドが余計に不安定になったため、設定したudevルールを削除して元に戻した。

ゆみやゆみや

省電力設定のためにpowertopを使ってみているが、「modprobe cpufreq_stats failed」という怒られが発生しているのが不穏。心なしか省電力設定も十分に効いていない気がするのでどうにかしたい。

$ sudo powertop
[sudo] stepney141 のパスワード:
modprobe cpufreq_stats failed
Loaded 516 prior measurements
RAPL device for cpu 0
RAPL Using PowerCap Sysfs : Domain Mask 5
RAPL device for cpu 0
RAPL Using PowerCap Sysfs : Domain Mask 5
Devfreq not enabled
glob returned GLOB_ABORTED
Leaving PowerTOP

エラーメッセージでググると「キャリブレート→再起動→キャリブレート→--auto-tuneで直った」というコメントが一番上に来るが、弊環境ではまったく効果なし。
https://askubuntu.com/questions/1131279/powertop-cpufreq-stats-failed-and-devfreq-not-enabled-running-auto-tone

このエラーが出る人は結構多いらしく、中には「(上の)askubuntuの方法じゃ直んねーよ」というコメントも散見される。
https://forum.manjaro.org/t/is-this-powertop-error-normal/102610/8
https://github.com/NixOS/nixpkgs/issues/56102

modprobeをしているということは、要するにcpufreq_statsというカーネルモジュールを読み込もうとして失敗していることになる。
というわけで、検索キーワードの対象を広げて「cpufreq_stats archlinux」でググってみるとArchwikiの記事がヒットした。
https://wiki.archlinux.org/title/CPU_frequency_scaling
https://wiki.archlinux.jp/index.php/CPU_周波数スケーリング

なんか便利そうなcpupowerはすでに入っていたが、cpupower.serviceは無効になっていたので、systemd enableで有効化してみる。
しかしpowertopの出力は変わらず。

ゆみやゆみや

メモ
localsendを動かそうとして次のようなエラーが出たら、権限を直せばいい:

❯ localsend
fusermount: mount failed: Operation not permitted

Cannot mount AppImage, please check your FUSE setup.
You might still be able to extract the contents of this AppImage 
if you run it with the --appimage-extract option. 
See https://github.com/AppImage/AppImageKit/wiki/FUSE 
for more information
open dir error: No such file or directory
sudo chmod u+s `which fusermount`

https://github.com/AppImage/AppImageKit/wiki/FUSE

ゆみやゆみや

Wine 8.21 で Kindle for PC を動かせた。

$ yay -S lib32-gnutls zenity wine winetricks
$ wine --version
wine-8.21
$ winecfg  
$ winetricks fakejapanese
$ wine kindle-for-pc-1-26-55076.exe

wine と kindle for pc にはバージョンの組み合わせごとに動くものと動かないものがあり、そのリストは以下にまとまっている。
自分は wine 8.0.1 で動作報告のあった kindle for pc 1.26.x を選んだ。
https://appdb.winehq.org/objectManager.php?sClass=application&iId=10597
kindle for pc のバイナリは以下からダウンロードできる。
https://kindle-for-pc.en.uptodown.com/windows/versions

二回目以降の起動は、単に $ wine kindle-for-pc-1-26-55076.exe だけでOK。

winecfg で動作環境をWindows 8.1以下にしないと動かないという報告もよく見かけたが、弊環境ではWindows 11のままで普通に動いた。

参考リンク
https://qiita.com/teresapp/items/afcd48f0751bc04e682e
https://ryotatake.hatenablog.com/entry/2021/10/22/kindle_on_linux