ASUS ROG Zephyrus G14 (2021) への POP!OSの導入と設定

久しぶりに導入したので備忘録

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11540/f04e234e-34ae-548c-683e-0735cdf5e46f.png)


# Install 

導入対象は、 ASUS社のASUS ROG Zephyrus G14 (2021)　アランウォーカーモデルというもの。14インチで国内発売しているものでは珍しく「英語キーボード」でNvidiaのGPUを搭載していたため。交換はしてないけどメモリは1スロットは交換可能（初期は16G）HDDはバスが1つしかないので交換する場合には「取り替え」が必要。初期はWindows10が導入されているのでドライブの後半にパーティションを作成して導入しています。購入後Windows10側ですべてのドライバを導入して最新化して動作確認してから行いましょう（私はなぜかAnime Matixがデバイスがなんたらと言われて設定変更できませんがLinuxからは変更できています）


```
System:                                                                                 
  Host: pop-os Kernel: 5.19.0-76051900-generic x86_64 bits: 64                          
    Desktop: GNOME 42.3.1 Distro: Pop!_OS 22.04 LTS                                     
Machine:                                                                                
  Type: Laptop System: ASUSTeK product: ROG Zephyrus G14 GA401QEC_GA401QEC
  Mobo: ASUSTeK model: GA401QEC v: 1.0 serial: <superuser required>    UEFI: American Megatrends LLC. v: GA401QEC.408 date: 12/13/2021
Battery:                                    
  ID-1: BAT0 charge: 10.0 Wh (12.6%) condition: 79.6/76.0 Wh (104.7%)
    volts: 15.8 min: 15.8                                                               
CPU:                                        
  Info: 8-core model: AMD Ryzen 9 5900HS with Radeon Graphics bits: 64
    type: MT MCP cache: L2: 4 MiB                                                       
  Speed (MHz): avg: 747 min/max: 400/4680 cores: 1: 400 2: 400 3: 400
    4: 400 5: 3114 6: 400 7: 400 8: 400 9: 400 10: 400 11: 400 12: 400 13: 400
    14: 400 15: 400 16: 3239                                                            
Graphics:                                   
  Device-1: NVIDIA GA107M [GeForce RTX 3050 Ti Mobile] driver: nvidia
    v: 515.65.01                            
  Device-2: AMD Cezanne driver: amdgpu v: kernel
  Display: x11 server: X.Org v: 1.21.1.3 driver: X:
    loaded: amdgpu,ati,nvidia unloaded: fbdev,modesetting,nouveau,radeon,vesa
    gpu: amdgpu resolution: 3424x1926~120Hz                                             
  OpenGL:                                   
    renderer: AMD RENOIR (LLVM 13.0.1 DRM 3.47 5.19.0-76051900-generic)
    v: 4.6 Mesa 22.0.5             
Audio:                                                                                  
  Device-1: NVIDIA driver: snd_hda_intel                                                
  Device-2: AMD Renoir Radeon High Definition Audio driver: snd_hda_intel               
  Device-3: AMD Raven/Raven2/FireFlight/Renoir Audio Processor driver: N/A              
  Device-4: AMD Family 17h HD Audio driver: snd_hda_intel                               
  Sound Server-1: ALSA v: k5.19.0-76051900-generic running: yes                         
  Sound Server-2: PipeWire v: 0.3.58 running: yes                                       
Network:                                                                                
  Device-1: MEDIATEK MT7921 802.11ax PCI Express Wireless Network Adapter               
    driver: mt7921e                                                                     
  IF: wlp2s0 state: up mac: 48:e7:da:c2:04:0d                                           
Bluetooth:                                                                              
  Device-1: IMC Networks Wireless_Device type: USB driver: btusb                        
  Report: hciconfig ID: hci0 state: up address: 48:E7:DA:C2:04:0C bt-v: 3.0             
Drives:                                                                                 
  Local Storage: total: 953.87 GiB used: 83.71 GiB (8.8%)                               
  ID-1: /dev/nvme0n1 vendor: Samsung model: MZVLQ1T0HBLB-00B00                          
    size: 953.87 GiB                                                                    
Partition:                                                                              
  ID-1: / size: 518.86 GiB used: 83.59 GiB (16.1%) fs: ext4                             
    dev: /dev/nvme0n1p8                     
  ID-2: /boot/efi size: 511 MiB used: 124.5 MiB (24.4%) fs: vfat
    dev: /dev/nvme0n1p7                     
Swap:                                       
  ID-1: swap-1 type: partition size: 2 GiB used: 0 KiB (0.0%) dev: /dev/dm-0
Sensors:                                    
  System Temperatures: cpu: 46.0 C mobo: N/A gpu: amdgpu temp: 44.0 C
  Fan Speeds (RPM): cpu: 2400                                                           
Info:                                       
  Processes: 392 Uptime: 9m Memory: 15.04 GiB used: 3.12 GiB (20.8%)
  Shell: Zsh inxi: 3.3.13                      
```

## 導入の手順
1. BIOS ( 起動のスプラッシュが出ている際に `ESC` で入れる）の設定で、セキュアブートを無効(disable) へ変更 (BIOSのアップデートがあるとSecure BootがEnableになるようなのでその場合には都度変更をする）
1. (Windows上) サイト（https://pop.system76.com/) からNvidia用の導入メディアをダウンロード
1. (Windows上) USB起動ディスクの作成（https://www.balena.io/etcher/)
1. USBを指してBootすれば導入が開始できます（https://support.system76.com/articles/install-pop/)

### ディスクのパーティション

導入時にカスタム導入を選択して既存データを残した状態で導入をする. 1ドライブ構成だとビビりながらになるが以下の設定で一応できている。

1. nvme0n1p2のWindows基本データ領域（元は900G程度）を適当なサイズに縮小
1. p7/p8/p9の領域を作成する（EFI領域として500M以上が必要とのことなので追加しています）

```
デバイス         開始位置   最後から     セクタ サイズ タイプ
/dev/nvme0n1p1       2048     534527     532480   260M EFI システム
/dev/nvme0n1p2     534528     567295      32768    16M Microsoft 予約領域
/dev/nvme0n1p3     567296  839428095  838860800   400G Microsoft 基本データ
/dev/nvme0n1p4 1952428032 1953861631    1433600   700M Windows リカバリ環境
/dev/nvme0n1p5 1953861632 1999998975   46137344    22G Microsoft 基本データ
/dev/nvme0n1p6 1999998976 2000408575     409600   200M Windows リカバリ環境
/dev/nvme0n1p7  839428096  840476670    1048575   512M EFI システム
/dev/nvme0n1p8  840476672 1948233726 1107757055 528.2G Linux ファイルシステム
/dev/nvme0n1p9 1948233728 1952428030    4194303     2G Linux スワップ
```

起動後の状態
```
❯❯ df
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.6G  6.0M  1.5G   1% /run
/dev/nvme0n1p8  519G   84G  409G  17% /
tmpfs           7.6G  4.0K  7.6G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/nvme0n1p7  511M  125M  387M  25% /boot/efi
tmpfs           1.6G  2.0M  1.6G   1% /run/user/1000
```

### ブートについて

POPは特にGrub2は入らないのだが、BIOSの起動スプラッシュの画面で `ESC` を押すことでブートドライブを選択することができるので特に問題は起きていない。普通にWin/Linuxのデュアルブートができている。欲しい人はあとからGRUB2を通常の手順で導入すれば良いかと。


# ハードウェア周り

利用可能なデバイス。今の所指紋以外は使えている（想定通り）

| デバイス | 可否 |
|:--|:--|
|Keyboard | OK |
|Bluetooth | OK(最初NGだったけどいつの間にか）|
|キー（マイクミュート) | 要設定 |
|キー（特殊キー）| 認識はしているので割当化 |
|指紋 | NG（DualBootだとそもそも認識してもNG？) |
|ディスプレイ | OK|
|HDD | OK |
|GPU(Nvidia3050Ti) | OK |
|Battery| OK（ソフトで満充電防止可能。AC/USBからの充電可）) | 
|Sound | OK |


## Asus ツールの導入

Asusから出ているツールを入れることで以下ができるとなっています
* システムデーモン 
* GUI アプリ (**rog_control_center** コマンドで起動）
* ユーザー通知デーモン 
* 内蔵 LED モードの設定/変更 
* キーごとの LED 設定 
* AniMatrix表示 
* バッテリーの充電制限を設定する (カーネルがこれをサポートしている場合) 
* サポートされているラップトップでのファン カーブ コントロール (G14/G15、FA507 のような一部の TUF) 
* ブート/POST サウンドの BIOS 設定を切り替えます 

https://asus-linux.org/asusctl/

サポートされていませんとありますが以下で入れます

```
apt install libclang-dev libudev-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
make
sudo make install
```

設定が変更された際に、GNOME通知が来るようにするために以下の設定を入れておきます。

```
systemctl --user enable asus-notify.service
systemctl --user start asus-notify.service
```

Fn+F5を押すとCPUのモード変更とした場合に以下のような通知が来るようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11540/fb5286ec-e334-a411-7256-79823beb2670.png)



## キーマップの変更

X側でするとかいろいろ試したけどこれが一番安定している

* 英語キーボードなのですが日本語変換を mac のようにスペースバーの左右のキーで実施したいためこれをキーマップの変更と、日本語入力ソフトのMozcの機能で実施します。
* 特殊キーの割当

キーコードを調べるためには以下のコマンドなど。この機種の場合には event11にキーボードが割当られていた。変更後の確認は `xev` などのコマンドで可能。

```
sudo evtest /dev/input/event11
```


```/etc/udev/hwdb.d/90-nkey.hwdb 
evdev:input:b0003v0B05p19B6*
  KEYBOARD_KEY_ff31007c=f20 # x11 mic-mute
  KEYBOARD_KEY_700e6=hiragana
  KEYBOARD_KEY_700e2=katakana
  KEYBOARD_KEY_700e0=capslock
  KEYBOARD_KEY_70039=leftctrl
  KEYBOARD_KEY_700e4=leftalt

evdev:input:b0003v0B05p1866*
  KEYBOARD_KEY_c00b6=kbdillumdown # Fn+F2 (music prev)
  KEYBOARD_KEY_c00b5=kbdillumup   # Fn+F4 (music skip)
  KEYBOARD_KEY_ff3100c5=pagedown  # Fn+Down
  KEYBOARD_KEY_ff3100c4=pageup    # Fn+Up
  KEYBOARD_KEY_ff3100b2=home      # Fn+Left
  KEYBOARD_KEY_ff3100b3=end       # Fn+Right
```

```
systemd-hwdb update && udevadm trigger
```

### 省電力設定

最終的に以下の設定は入れてないのですが以下の内容で省電力動作になるとのこと。現在はPowerProfileの切り替えで使っているます。

```/etc/modprobe.d/nvidia.conf
options nvidia "NVreg_DynamicPowerManagement=0x02"
```

```
echo 0 > /sys/devices/system/cpu/cpufreq/boost
```

# ソフトウェア周り

## 環境設定

### デスクトップのアイコンの日本語を英語化

```
LANG=C xdg-user-dirs-gtk-update
```

### デスクトップのスケーリング
任意倍率のスケーリングが選択ができるが、実際に各アプリが対応してないケースがありうまく動作しないことがある。200％、300％は概ね動く。Wineのゲームなどで、125％などにしておくとディスプレイの解像度が実際のサイズより大きいように判断されてものすごい小さい文字で表示されてしまったりする。問題がありそうであれば整数倍で設定しておく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11540/182cdf66-88aa-49fe-fd26-98d007237a98.png)

### Waylandへの変更
WaylandとNvidiaの相性の悪さがこれまでも言われていますが現時点ではPOPSOSでも動きます（設定を変更することで動かすことが出来ます）

以下に変更
```/etc/gdm3/custom.conf
WaylandEnable=true
```

以下の2行をコメントアウト
```/usr/lib/udev/rules.d/61-gdm.rules
LABEL="gdm_prefer_xorg"
#RUN+="/usr/libexec/gdm-runtime-config set daemon PreferredDisplayServer xorg"
GOTO="gdm_end"

LABEL="gdm_disable_wayland"
#RUN+="/usr/libexec/gdm-runtime-config set daemon WaylandEnable false"
GOTO="gdm_end"

LABEL="gdm_end"
```

注意点としては、いつくかのアプリケーションはWaylandに対応しておらず動かない可能性もあります（私の使用しているマウスジェスチャーアプリなどは利用できませんでした）
メリットしては、概ね速度は早いです。Wine経由でのゲームなどはFPSが向上している気がします。





## アプリケーション
### Steam 
steam は flakpak版とNative版が選択できますがローカルへの操作がほしかったので（多分これはうまく権限を変更すればFlakpakでもできるはず）Native版を入れています。HiDPIのこの環境ではメニューが恐ろしく小さく表示されるので環境変数を入れます。


```/usr/share/applications/steam.desktop
Exec=env GDK_SCALE=2 /usr/games/steam 
```

- HiDPIの弊害で、フルスクリーンにした際に画面の解像度が合わなくて表示がおかしくなるケースがある（設定から、HiDPIをやめて100％表示にすれば治る）
- HiDPIが無効？の場合の解像度が3xxxxになっているのが謎。


### PAVUCONTROL
導入は、```sudo apt install pavucontrol``` でできる。このソフトを使うとどのデバイスでサウンドが再生されているかボリュームのレベル等を視覚的に調べることができる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11540/f75a34cf-997f-ce4b-ab0e-4defd42585a2.png)



## あとは時間のあるときに書いておく

* 環境設定 GNOME/POPの設定
    * 日本語変換の設定
    * マウスジェスチャー
    * 普段利用しているGNOME拡張機能
    * Theme変更


# トラブルシューティング
## 音割れがする
**症状**
音割れが発生。急に音割れがしたことに気がついた。原因は不明。

**対処**
```/usr/share/wireplumber/main.lua.d/50-alsa-config.lua
 ["api.alsa.period-size"] = 2048
 ["api.alsa.headroom"] = 2048
```
もとの値はそれぞれ 256, 8192 である

参考文献
* https://www.reddit.com/r/pop_os/comments/ujgsaq/comment/i9b6fos/?utm_source=share&utm_medium=web2x&context=3




## サウンドカードが見つからない

**症状**
突然音がでなくなりログには以下のようにデバイスとつながらない旨が出ている（デバイスは認識している（起動音やWindowsでは使えているのでHWの故障ではない）
```
Sep 25 22:52:52 pop-os pipewire-pulse[2776]: mod.protocol-pulse: 0x55775bcf6010: failed to connect client: ホストが落ちています
Sep 25 22:52:52 pop-os pipewire-pulse[2776]: mod.protocol-pulse: client 0x55775bd07910 [GNOME Volume Control Media Keys]: ERROR command:9 (SET_CLIENT_NAME) tag:1 error:6 (ホストが落ちています
```

**対処**
原因は不明ですが pipewireの設定がおかしくなっている（ような）気がします。ググっても似たような症状はあれど特定は出来ませんでしたが以下のパッケージをReinstallすることで復帰しました。`sudo apt install --reinstall XXXXX`　以下のうち何が解決したのかはわからないですが。

* libpulse0
* libpulsedsp 
* pulseaudio 
* pulseaudio-module-bluetooth 
* pulseaudio-utils
* libpipewire-0.3-0 
* libpipewire-0.3-common 
* libpipewire-0.3-modules 
* pipewire 
* pipewire-audio-client-libraries （これかな？）
* pipewire-bin pipewire-pulse
* alsa-base 
* alsa-utils 
* linux-sound-base 
* libasound2


# Changelog
* 2022/09/21 : init