2018年8月29日水曜日

Surface GoでLinux/CloudReadyを正しく走らせる話

定められた枠から外れたい人はいつの時代にもいるもので、ぼくもそのうちのひとりなので、ついうっかりCloudReadyをインストールしてしまいました。

しかし、Wi-Fiアダプタが正しく動かなくて断念した(CloudReadyはGoogleアカウントでのログインが必要なのでインターネット未接続では使用不可)のは前回記したとおりで、Wi-Fi周りのソースを眺めながらあれやこれやと試行錯誤していたのですが、このたび晴れてWi-Fi APに繋がってインターネットできるようになったので、ここに手順を記しておきます。

CloudReadyはChrome OS/Chromium OS (CxOS)のディストリビューションのひとつであり、CxOSはDebian GNU/Linuxをベースとしているので、少なくともDebian系のディストリビューションには応用できるはずで、Linux全般で共通であることを期待します。

Wi-Fiアダプタは見えているのにAPが見つけられない問題

ここにハマっていたのですが、要するにドライバはロードされているものの、正しいファームウェアを読み出せていないのでこのような状況に陥っている、ということです。

ファームウェアは /lib/firmware/ath10k/QCA6174/hw3.0/ に含まれていて、Surface Goの場合は特に board.bin ファイルが重要です。このファイルが正しい情報を持っていないと、ロードに失敗して前述のような状況になります。

上に記したリンクからファイルをダウンロードして、正しいフォルダに配置します。また、同フォルダにある board-2.bin は不要なので削除します。

    $ sudo mount -o rw,remount /
    $ cd /lib/firmware/ath10k/QCA6174/hw3.0
    $ sudo cp -r ~/Downloads/board.bin ./
    $ sudo rm -r ./board-2.bin

    $ sudo reboot

最後に再起動していますので、再起動後からWi-Fi APが見える状態になっているはずです。

また、このファイルが更新されてしまうと繋がらなくなるので、同じ手順を実行する必要があります。

ここに思い至ったのは、OSX86でもQualcomm製のBluetoothデバイスでは正しいファームウェアをロードする必要があって、ファームウェアアップローダなどが存在するというところからです。