Ubuntuだけ入っているSurface Go 3(以下、SGO3)でファームウェアを更新します。
SGO3のドライバーとファームウェアのサービス期間は2027年10月5日なので、今後も偶に更新する機会があるはずです。私が前回更新したのは2024年1月で、当時はUbuntu 23.10でした。
環境
- Surface Go 3
- Ubuntu 24.04
必要なもの
surface-uefi-firmware
ファームウェアアップデートのフォーマットを変換するツールです。
fwupd
ファームウェアを更新するツールです。
サインなしのファイルでも使用できるように、/etc/fwupd/fwupd.confにOnlyTrusted=falseを追加します。
[fwupd]
# use `man 5 fwupd.conf` for documentation
OnlyTrusted=false
手順
1. ファームウェアファイルのダウンロード
マイクロソフトのDownload CenterからSurface 用のドライバーとファームウェアをダウンロードします。LinuxでSurfaceアプリを開くことはできませんから、Webページを下にスクロールし、Surface のドライバーとファームウェアの手動更新のところでモデルを選択するとダウンロードリンクが表示されます。
リンク先ではWindows11用とWindows10用の2つのファイルのリンクがあり、そのリンクからファイルがダウンロードできます。
今回はWindows 11用の SurfaceGo3_Win11_22621_24.050.2873.0.msi をダウンロードしました。
2. surface-uefi-firmware を使いフォーマットを変換する
cd surface-uefi-firmware
./repack.sh ../SurfaceGo3_Win11_22621_24.050.2873.0.msi -o fwupdates
ファイルを展開して再構成してくれます。
==> Extracting ../SurfaceGo3_Win11_22621_24.050.2873.0.msi
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/surfacesmf/SurfaceSMF.inf
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/surfacepd/SurfacePD.inf
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/surfacetpm_ntz/SurfaceTPM.inf
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/surfacetouch/SurfaceTouch.inf
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/surfaceec/SurfaceEC.inf
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/ish/SurfaceISH.inf
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/surfaceme/SurfaceME.inf
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/surfacetpm_ntc/surfacetpm.inf
==> Repacking ./tmp.UaHs55OdNc/SurfaceUpdate/uefi/SurfaceUEFI.inf
Success!
If you wish, you may now install the firmware like so:
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/surfacesmf_74.0.35_928e813f-a355-451d-a0ec-f917970c72f9.cab'
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/surfacepd_2.6.0_a439deea-8139-49f2-bdce-c1d0dbf6cd15.cab'
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/surfacetpm_ntz_55.33.1536_f13104af-7099-42d8-92ba-156735f8ee95.cab'
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/surfacetouch_6.4.9728_cba990ca-3d8d-4dfd-8e34-94eeed1971a7.cab'
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/surfaceec_4.26.32768_c117fbce-cff3-44b5-ad72-da56b4fccda5.cab'
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/ish_49.1.13_d4250c93-1e5b-4b54-8aeb-ea297f1404c0.cab'
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/surfaceme_184.94.4494_1430fb8a-9eeb-4259-8d12-0677b91bfe3f.cab'
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/surfacetpm_ntc_7.2.512_1c472044-934f-4b0f-8c91-813ef436809d.cab'
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check --force 'fwupdates/uefi_13.0.27791_28d35383-b6c2-44be-897c-aa9f24f15342.cab'
3. fwupdmgrでファームウェアを更新する
個別に更新できますが、面倒なので全て更新します。未対応なファイルは無視してくれます。
for f in fwupdates/*; do
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check "$f"
done
ファームウェアを更新してくれました。ファームウェアの対象のデバイスが見つからないところはスキップしてくれています。
Waiting… [***************************************]
Successfully installed firmware
Waiting… [***************************************]
Successfully installed firmware
Waiting… [***************************************]
Successfully installed firmware
Waiting… [***************************************]
Successfully installed firmware
Waiting… [***************************************]
Successfully installed firmware
Waiting… [***************************************]
Successfully installed firmware
Decompressing… [ - ]
No supported devices found
Decompressing… [ - ]
No supported devices found
Waiting… [***************************************]
Successfully installed firmware
4. 再起動して新しいファームウェアを適用する
マシンを再起動するとファームウェアが適用されます。Windowsのロゴの下にプログレスバーが表示され、進捗状況が表示されます。適用するファームウェアの分だけプログレスバーはリフレッシュされるので、その表示は何回か繰り返されます。