実体験・トラブル解決記録
Nintendo Switch / Atmosphère / Hekate
Nintendo SwitchのCFW環境を更新したところ、次から次へとエラーが発生。
最初はemuMMCが正常に起動せず、ようやく起動できたと思ったら、今度はWi-Fi接続でクラッシュ。さらにHomebrew MenuやDBI、インストール済みゲームまで起動しなくなるというトラブルに遭遇しました。
最終的には、ネットワーク遮断設定の見直し、DBIの更新、Sys-Patchの導入によって、主要な問題を解消できました。
今回は、その復旧までの過程を、実際に発生したエラーや設定内容とともに紹介します。
| 項目 | バージョン |
|---|---|
| 本体 | 初代Nintendo Switch |
| sysMMC | 23.0.0 |
| emuMMC | 22.5.0 |
| Atmosphère | 1.11.2 |
| Hekate | 6.5.3 |
| SDカード | パーティション方式emuMMC |
※この記事は筆者の環境での復旧記録です。別のファームウェアやCFWの組み合わせで同じ結果になるとは限りません。
最初に発生したのは、HekateからAtmosphèreを起動する際のエラーでした。
起動エラー
Hekateが指定された署名チェック用パッチを適用できなかったことを示すエラー。
当時の hekate_ipl.ini には、以下の設定がありました。
[Atmosphere (EmuNAND)]
fss0=atmosphere/package3
kip1patch=nosigchk
atmosphere=1
emummcforce=1
icon=bootloader/res/icon_payload.bmp
{} 原因を切り分けるため、次の1行を削除しました。
kip1patch=nosigchk すると、Hekateのパッチ適用エラーを回避して、emuMMCを起動できるようになりました。
しかし、これで終わりではありませんでした。
ネットワーク関連のエラー
HOMEメニューまで起動できても、しばらくするとエラーが発生する状態になりました。
そこで、起動直後に機内モードを有効にしてみました。
すると、エラーが発生しなくなったのです。
さらに、次のように条件を変えて検証しました。
| 検証条件 | 結果 |
|---|---|
| 機内モードON | 正常動作 |
| 機内モードOFF・Wi-Fi接続あり | エラー発生 |
| Wi-FiルーターOFF・機内モードOFF | 正常動作 |
この結果から、Wi-Fi接続後の通信処理がエラー発生の引き金になっている可能性が高いと考えました。
当時の設定は以下のとおりです。
[exosphere]
blank_prodinfo_sysmmc=1
blank_prodinfo_emummc=1 これは本体固有の識別情報を隠す設定です。
ネットワーク関連のエラーとの関係を疑いましたが、今回はこの設定を変更せず、通信先の制御を確認することにしました。
SDカードの以下の場所を確認しました。
F:\atmosphere\hosts\ 当初は default.txt のみ存在していました。
そこで、emuMMC専用の emummc.txt を作成し、任天堂関連サーバーへの通信を制限する設定を追加しました。
設定ファイルの配置例
F:\atmosphere\hosts\
├── default.txt
└── emummc.txt 実際の設定は使用するAtmosphèreのバージョンやネットワーク構成に合わせて確認が必要です。
この変更後、Wi-Fiに接続してもエラー2123-0011が発生しなくなりました。
ただし、通信先を遮断したことでエラーを回避できたのであり、ネットワーク処理の根本的な問題が修正されたと確認できたわけではありません。
ネットワーク関連のエラーを回避できたため、次にHomebrew MenuからDBIを起動しました。
しかし、今度はAtmosphèreのクラッシュ画面が表示されました。
Atmosphère Fatal Error
Program ID: 010000000000100Dアルバム経由でDBIを起動した際に発生。
当初はApplet Modeのメモリ制限や、Homebrewの実行環境を疑いました。
しかし、実際にDBIのNROファイルを更新したところ、正常に起動するようになりました。
今回の環境では、古いDBIと現在の実行環境との互換性が問題だった可能性があります。
DBIの配布ページから新しいNROファイルを入手し、既存ファイルをバックアップしてから置き換えました。DBIの配布ページ
更新後はDBIが起動しましたが、表示言語がロシア語になっていたため、日本語翻訳対応版も確認しました。
DBIの更新によってHomebrewの問題は解消しましたが、まだインストール済みゲームが起動しない問題が残っていました。
今回、特に苦労したのがこの問題です。
ゲームカードを本体に差し込んだ場合は正常に起動するのに、DBIでNSP・XCIファイルからインストールしたゲームは起動できませんでした。
ゲーム起動エラー
HOMEメニューからもう一度おためしください。
最初に疑ったのは、署名チェック用パッチの問題です。
以前削除した kip1patch=nosigchk を再び追加してみましたが、Hekateで同じパッチ適用エラーが発生しました。
つまり、当時のパッチ構成では正常に適用できないことが再確認できました。
そこで、SigpatchesとSys-Patchについて調べ直すことにしました。
あらかじめ用意されたパッチデータを、HekateやAtmosphèreの起動処理などで適用する方式です。
対象のファームウェアやシステムモジュールの変更によって、既存のパッチが適用できなくなる場合があります。
Atmosphère上で動作するsysmoduleとして、対象コードを検索し、対応するパッチを適用する方式です。
従来の固定パッチとは異なる仕組みですが、すべてのファームウェア更新に自動対応するわけではありません。
| 比較項目 | Sigpatches | Sys-Patch |
|---|---|---|
| 方式 | パッチファイルを適用 | sysmoduleが対象コードを検索して適用 |
| 更新時 | 対応パッチが必要になる場合がある | Sys-Patch本体の更新が必要になる場合がある |
| Hekateのnosigchk設定 | 構成によって使用 | 通常は不要 |
| 適用状態の確認 | 使用する構成による | 対応オーバーレイから確認可能 |
この違いを理解したうえで、Sys-Patchの導入を試すことにしました。
調査中に参考になったのが、GBAtempのSigpatches関連スレッドです。GBAtemp:Sigpatches for Atmosphere / Hekate
そこでは、FW 22.5.0とAtmosphère 1.11.2の組み合わせで、ゲームが正常に起動しないという報告がありました。
ある投稿者は、Atmosphèreの公式リリース後に追加されたzstd-zbic関連のLoader修正が関係している可能性を指摘していました。
さらに、修正後のmasterブランチからAtmosphèreをビルドすることで、ゲームが正常に動作したと報告しています。
投稿者が動作を確認した構成は次のとおりです。
| 項目 | 構成 |
|---|---|
| Firmware | 22.5.0 |
| Atmosphère | 1.11.2以降のmasterビルド |
| Sys-Patch | 1.6.2.3 |
| Hekate | 6.5.3 |
この報告から、ゲーム起動の問題には、パッチの不整合だけでなくAtmosphèreのLoader側の問題が関係する場合もあると分かりました。
ただし、今回の自分の環境では、Atmosphère本体を再ビルドせずにSys-Patchの導入を試しました。
今回の環境では、Sys-Patchを導入したところ、これまで起動できなかったインストール済みゲームが正常に起動するようになりました。
復旧成功
Sys-Patch導入後、インストール済みゲームの起動を確認。
Atmosphère 1.11.2 / Hekate 6.5.3 / emuMMC 22.5.0
今回の結果から、ゲーム起動失敗には、従来の署名チェック用パッチの不足または不整合が関係していた可能性が高いと考えています。
ただし、Sys-Patchの導入によってゲームが起動したという結果だけでは、以前のパッチファイルのどの部分に問題があったのかまでは特定できません。
また、GBAtempで報告されていたLoader側の問題が、今回の環境でも発生していたかどうかは未確認です。
今回の作業で、次のような結果になりました。
| トラブル | 対応結果 |
|---|---|
| Hekateのnosigchkエラー | 該当設定を削除して回避 |
| エラー2123-0011 | emuMMC専用の通信制御設定で回避 |
| Homebrew Menu | 起動成功 |
| DBIのクラッシュ | DBI更新で解消 |
| ゲームカードの起動 | 正常 |
| インストール済みゲーム | Sys-Patch導入後に起動成功 |
今回、sysMMCのファームウェアを変更したり、emuMMCを作り直したりすることなく、主要な問題を解消できました。
今回の経験で特に重要だと感じたのは、CFW更新時に複数の問題が同時に発生しても、必ずしも原因が一つとは限らないということです。
Hekateのパッチ適用エラー、ネットワーク接続時のクラッシュ、DBIの起動失敗、ゲームの起動失敗は、それぞれ別の対処によって改善しました。
また、CFWを更新する際は、AtmosphèreやHekateだけでなく、Homebrewアプリや追加sysmoduleの対応状況も確認する必要があります。
今回のようなトラブルに備えて、正常動作しているSDカードの内容と、パーティション方式emuMMCのバックアップを保存しておくことも重要です。
なお、SDカードのファイルをコピーするだけでは、パーティション方式emuMMCの全データをバックアップできるとは限りません。必要に応じて、emuMMCパーティション自体のバックアップも取得しておきましょう。
今回のSwitchのCFW更新は、想像以上に苦労しました。
最初はHekateの起動エラーから始まり、ネットワーク接続時のクラッシュ、DBIの起動失敗、ゲームの起動失敗と、次々に問題が発生しました。
しかし、一つずつ原因を切り分けていくことで、最終的にゲームを起動できる状態まで復旧できました。
同じようにCFW更新後のトラブルで困っている方は、いきなりSDカードを初期化したり、emuMMCを作り直したりする前に、エラーが発生する条件や各ソフトの対応状況を確認してみてください。
※本記事は個人環境での検証記録です。非公式ソフトウェアの導入や本体の改造には、データ破損、動作不良、オンラインサービスの利用制限などのリスクがあります。作業前に重要なデータをバックアップしてください。