WSLでトラブったことをきっかけに家のPC環境を本格的にWindowsからLinuxへ移行することにした。
その流れでSurface GoにもLinux(Manjaro)を入れることにした。
始めに
- 本記事は以下の内容を含みません
- インストール自体の解説(インストーラー自体はかなり親切なため。)
- デュアルブート(Windowsは完全に削除してクリーンインストールしたため。)
- Manjaroを入れた Surface Go をトラブルなく使う方法(未解決な問題がまだまだあるため。1)
- 本記事では筆者の好みでManjaroを前提としています。
先に結論
- インストーラーによって動いたり動かなかったりする。
自分が試した範囲だと
Installer | 結果(詳細は後述) |
---|---|
manjaro-kde-20.1.2-201019-linux58.iso | インストール後に起動しない |
manjaro-kde-19.0.2-200311-linux54.iso | インストールできる |
manjaro-architect-20.0.3-200607-linux56.iso | インストール自体ができない |
- 無線のドライバーは入れ替え必須
- キーボードカバーやSurface DockといったSurface固有の周辺機器はそのままでも問題なく動く。
- Surface Pen も一応使えるのだが、ボタンの設定等するのにドライバー入れたほうがいい。
- Surface Dockがあるととても楽(おそらくなくてもインストール自体はできるはずだが2、そのままだと無線LANが使えなかったり、端子がUSB Type-C 一つなので既存のUSBメモリやLAN端子、USBハブが刺さらなかったりするので…)
使ったもの
- USB Type-C 対応のUSBメモリx2 インストール用とバックアップ用
(Surface Go本体にはUSB端子が Type-c 1つしかないため。) - Surface Go(初代){{ affiliate_links(amazon="https://amzn.to/3ghJxCr") }}
- (Surface DocK 2{{ affiliate_links(amazon="https://amzn.to/3ghJxCr") }}
有線LAN端子兼USBハブとして利用。最終的にはなくても良かった気もする…。)
トラブル1: 有線LANが検出できない(Manjaro Architect Installerでの起動時)
Manjaro linuxにはインストーラーが4種類ある。そのうちGnome, KDE, XFCE版については(おそらく)デスクトップ環境が違うだけなのだが、Architectは単にデスクトップ環境がないというだけではなく、インストールにネットが必須となっている。(あとから知った)
当初デスクトップ環境を決めかねていたということもあり、とりあえずArchitectでインストールして様子を見ようと試したのだが、なぜかSurface Goだと有線LANを認識しなかった。3
別のデスクトップPCでManjaro Architectをインストールした際はは有線LANを自動設定できたので、ドライバーの問題だろうか。
先に述べたようにArchitect Installerはネット接続が必須なため、ここで手詰まりである。
解決策
ダメ元でKDE版のインストーラーを入れたところ普通に有線LANを認識した。試したわけではないが、おそらく他のデスクトップ入のインストーラーでも同様に問題ないかと思われる。
トラブル2: インストールが完了しても起動しない
(KDE版で)インストールが無事に終わっても再起動するとbiosのロゴから先に進まなくなった。
解決策
Linuxのカーネルには一部にLTSという長期サポートのバージョンがあり、最新版よりも安定している傾向があるらしい。
Manjaroの(公式サイトから直接リンクがはられている)デフォルトのインストーラーはカーネルが最新(2020年11月時点で5.8)のものだったが、LTS(の中で最新、2020年11月時点で5.4)のものも用意されていたので、こちらを試したら問題なく起動するようになった。
公式のダウンロードから直接とぶとこの最新のカーネルのページに行き着き自動でダウンロードが始まるが、キャンセルして左上のファイルからインストーラの一覧へ飛べる。
トラブル3: Wifiがつながらない
無事にインストールしてもWifi
がそのままだとつながらない。(Surface Go のWifiモジュール自体の不具合らしい。)
解決策
以下のページに解決策が乗っている
Surface Go · linux-surface/linux-surface Wiki
平たく言えばちゃんと動く無線のファームウェアをよそからダウンロードして差し替えればいい
1.ファームウェアを用意する
自分は上記のページとおり以下のリンク先から取得したが、これの正当性を自分は担保できないのでやるなら自己責任でお願いします。
http://www.killernetworking.com/support/K1535_Debian/board.bin
killerとか物騒な単語が入っているから一応調べたところここ自体は普通にNetworkインターフェース作ってるインテル配下の会社?ブランド?らしい(ソースはWikipediaので、純正のドライバーなのかもしれない。
2. ファームウェアの差し替え
手をつけるファームウェアは以下
パス | 変更内容 |
---|---|
/usr/lib/firmware/ath10k/QCA6174/hw2.1/board.bin | 差し替え |
/usr/lib/firmware/ath10k/QCA6174/hw2.1/board-2.bin | 削除 |
/usr/lib/firmware/ath10k/QCA6174/hw3.0/board.bin | 差し替え |
/usr/lib/firmware/ath10k/QCA6174/hw3.0/board-2.bin | 削除 |
ちなみに差し替えるファイルは同じでいい。
一応バックアップしておく
$ sudo mv /usr/lib/firmware/ath10k/QCA6174/{hw2.1,hw3.0}/board*.bin /path/to/backup/
board-2.bin
の削除
$ sudo rm /usr/lib/firmware/ath10k/QCA6174/{hw2.1,hw3.0}/board-2.bin
board.bin
の差し替え
$ sudo mv /path/to/new/board.bin /usr/lib/firmware/ath10k/QCA6174/hw2.1/
$ sudo mv /path/to/new/board.bin /usr/lib/firmware/ath10k/QCA6174/hw3.0/
3 カーネルモジュールの設定
/etc/modprobe.d/ath10k.conf
に以下の内容のファイルを作成する
options ath10k_core skip_otp=y
これでつながるようになった。
トラブル4: Stylus で右クリックが使えない
認識はしているのだが、ボタンには中クリックが割り当てられている模様。右クリックがないと不便なので入れ替えたい。4
対策
スタイラスの認識
一般的なwacomタブレットではxsetwacom --list devices
でデバイスの取得ができるらしい。が、できなかった。
更に探してみたところ、wacomドライバのsurface用というそれらしいものがあったので
linux-surface/libwacom-surface: Patches to support Microsoft Surface Devices with libwacom
.
AURでインストールした
$ git clone https://aur.archlinux.org/libwacom-surface.git
$ makepkg -si
改めて実行すると、ちゃんと検出できた。
$ xsetwacom --list devices
ELAN9038:00 04F3:261A touch id: 12 type: TOUCH
ELAN9038:00 04F3:261A stylus id: 13 type: STYLUS
ELAN9038:00 04F3:261A eraser id: 18 type: ERASER
ボタン設定
Stylusのボタンは1が右クリック、2が中クリック、3が右クリックに割り当てられているらしい。
xsetwacom --set
で別のボタンを割り当てられる
$ xsetwacom --get "ELAN9038:00 04F3:261A stylus" Button 2
button +2
$ xsetwacom --set "ELAN9038:00 04F3:261A stylus" Button 2 3
これで右クリックにできた
これだと再起動するたびにリセットされてしまうので永続化には何かしら対策が必要。
InputDeviceの設定なので本来は/etc/X11/xorg.conf
に設定するのが正しそうではあるが、書き方がよくわからないので今回は割愛。bashで起動時に実行するのが一番手軽だろうか
KDEであればkcm-wacomtablet
をインストールするとGUIでかんたんに設定できる。
参考
null-i.net - Linux/wacomでペンタブを使う
Wacom tablet - ArchWiki
トラブル5: Bluetoothが繋がらなくなる
スリープから復帰した際にbluetoothが接続できなくなる
解決策
bluetoothのデバイスをリセットする必要があるらしい。
リセットには以下のコマンドを使う
usb_modeswitch -T -v "ベンダーID" -p "プロダクトID"
ベンダーIDとプロダクトIDはlsusb
で確認できる。
$ sudo lsusb
[中略]
Bus 001 Device 002: ID 0cf3:e302 Qualcomm Atheros Communications
[中略]
この場合0cf3
がベンダーID、e302
がプロダクトIDになるので
$ sudo usb_modeswitch -R -v 0cf3 -p e302
Look for default devices ...
Found devices in default mode (1)
Access device 002 on bus 001
Get the current device configuration ...
Current configuration number is 1
Use interface number 0
with class 224
Warning: no switching method given. See documentation
Reset USB device .
Device was reset
-> Run lsusb to note any changes. Bye!
$ sudo systemctl start bluetooth
これで復旧できた。
参考
残る課題
- sim が使えない
- テザリングができない
- バッテリーの消耗が激しい(カバーを閉じた状態では画面は消えているがサスペンドはしていない疑惑)
-
最近はほとんどベッドで使っているということもあって、残る問題を対処するモチベーションがなくなってしまったので更新未定。 ↩
-
うろおぼえなので断言できないが、KDEならネットに繋げなくてもインストールできるじゃないか、Dockいらないじゃん、とショックを受けた覚えがあるので多分できたはず ↩
-
デスクトップでArchitectからインストールした際は普通に認識していたのでArchitectだから有線も手動で設定しなければいけないというわけではない模様。KDEはminimamでも容量2倍あるし、GUI以外にもArchitectには含まれていないドライバがあるのかもしれない。GUIなし≒サーバー向けと考えるとノート用のドライバーが省かれていてもおかしくはないか。 ↩
-
今思えばASUS TP203にxubuntuを入れたときもボタンが中クリック扱いで困ってた覚えがある。なぜ右クリックでは中クリックなのかと思うが、そもそも純正ドライバであれば自由に割り当てられるので、使い勝手を考えず、単純にボタン123と割り振っているだけなのかもしれない。 ↩