How to fix bricked System settings app and keyboard ?
カスタムキーボードをインストールした状態でCFWをアンインストールすると、キーボードが使えなくなり、本体設定が起動できなくなります。この記事では、この状態から再度CFWを導入し、復旧する方法を解説します。
本体設定が使えないということ
本体設定が起動できなくなる上で障壁となるのは、大きく2つです。
インターネット接続の設定が出来ない
まず、この記事の内容を編纂するにあたって、私もカスタムキーボードを導入した状態でCFWのアンインストールを実施しました。すると、正常に繋がっていたインターネットへの接続が失われてしまいました。仮にインターネットへ接続できていたとしても、設定内容が変更できないのは痛手となり得ます。
セーフモードが使えない
セーフモードは、3DSを復旧するための標準機能で、電源を投入する際、↑
+A
+L
+R
をホールドし続けることで起動できる、本体を更新するためのウィザードです。現在最も主流なCFWのインストール方法では、このセーフモードのexploitを利用するため、必然的に別の方法を選ばざるを得なくなります。
用意するもの
まず、本記事内容を実施するに当たり必要なものを紹介します。
- 対象の3DS
- 上記とは別の 3DS(CFW導入済み) 1台
- 『マリオカート7』1本
- ダウンロードソフトの場合、CFW導入済みの本体で動作している必要があります
- GPUを搭載しているPC 1台
- Python3
- PCにインストールしておきます
- Windowsの場合、以下のPowerShellコマンドでインストールできます
iwr get.scoop.sh | iex ; scoop update ; scoop install python3
手順
以下のように進めます。
- kartdlphax
- seedminer
- frogtool
kartdlphax
kartdlphaxは、CTGP-7 Projectで知られるPabloMK7氏によるセミプライマリ1Exploitです。『マリオカート7』の『みんなで(ローカル通信プレイ)』を利用してコードを送信します。
plugin.3gxをダウンロードし、CFW機のSDカード
SD:/luma/titles/0004000000030600/
に配置する。Note
0004000000030600
は、JPN版マリオカート7のTitleIDです。他リージョンのタイトルを利用する場合、そちらに合わせます。3GXに対応しているboot.firmのビルドをダウンロードし、CFW機のSDカード
SD:/
に配置する。boot.3dsxをダウンロードし、故障機のSDカード
SD:/
に配置する。menuhax67をダウンロードしたのち展開し、故障機の3DSのファミリとリージョンに応じた
Launcher.bat
を、故障機のSDカードSD:/
に配置する。CFW機でRosalina menuを開き、
Plugin Loader:
の項目でAボタンを押下しEnabled
の状態にする。この状態でマリオカート7を起動する。正常に3gxを用意できれば、起動時に一瞬スクリーンの色が変化する。「みんなで」を選択すると、kartdlphaxのメニューが開く。この画面で「Change Settings」を選択する。
- 画面の指示に従って対象の3DSファミリを選択する。
3DS ROP xPloit Injector
を選択する。- 上画面で設定内容を確認し直し、
Use settings
を選択する。
通常のプレイと同様にプレイヤーを募集し、50ccのキノコカップを選択する。この際、プレイヤーとカートは問わない。レースを開始すると、haxの送信が開始される。完了すると、CFW機は自動でHOMEメニューに戻り、故障機は
3DS ROP xPloit Injector
が起動する。故障機で、
Y: menuhax67
を実行する。成功すると、下画面がグリーンバックになりHOMEメニューに回帰した後、電源が切断される。再度電源を投入し、下画面左上のHOMEメニューの設定ボタンを押下し、HBLが起動することを確認する。
以降は、全て故障機における作業を記します。
Seedminer
Nintendo3DSには、全てのユーザセーブデータに影響を及ぼす128bitの暗号化キーmovable.sed
が存在します。セーブデータにインジェクトを実施する場合、この鍵を使ってデータを復号し、また暗号化する必要があります。Seedminerは、その暗号化キーを、総当たりによって算出するための仕組みです。より詳しい情報を得るには、ここを訪れると良いでしょう。
Seedminerをダウンロードしたのち展開する。これはPC上で動かすためのソフトウェアである。
Seedstarterをダウンロードしたのち展開する。これはSeedminerが必要とするファイルをダンプするhomebrewである。取り出した
seedstarter.3dsx
をSDカードの任意の場所に保存する。HBLを開き、
seedstarter
を起動する。A dump LFCS from GetConfigInboBlk2
を実施する。完了したら、終了し、3DSからSDカードを取り外す。SD:/seedstarter/movable_part1.sed
をPC上のSeedminerディレクトリ(Windows/Linux/Mac)にコピーする。コピーしたディレクトリでShellを開き、以下のコマンドを実行する。
python3 ./seedminer_launcher3.py gpu
成功すると、以下のような出力とともに、movable.sed
が生成される。
GPU selected
Old3DS msed - this can happen on a New3DS
LFCS : 0x2d9a0ca
msed3 est : 0x91e028
Error est : 3277
ID0 hash 0: b385a906c822c3d993618c9d0123abcd
Hash total: 1
movable_part2.sed generation success
bfcl msky caa0d902000000000000000028e09100 b385a906c822c3d993618c9d0123abcd 00000000 00400000
selected device NVIDIA GeForce RTX 3060 on platform NVIDIA CUDA
0.012 seconds for OpenCL compiling
local work size: 256
got a hit: abcdef01234567890123456789e09100 at offset: 1
movable.sed dumped to file!
msed_data will also be written to
msed_data_000033BE.bin
just keep it handy if you don't know what to do with it!
done.
1.66 seconds, 2741.32 M/s
frogtool
frogtoolは、「うごくメモ帳」にハック用のデータをパッチしたり、またパッチ後のアプリを起動するためのユーティリティです。B9sInstallerをパッチして起動することで、故障機に再度CFWを構築し直すことが可能です。
- Seedminerで算出した
movable.sed
をSD:/
に配置する。 - frogcert.bin(magnet) をダウンロードし、
SD:/
に配置する。 - frogtoolをダウンロードしたのち展開する。
frogtool.3dsx
をSDカードの任意の場所に保存する。 - b9sToolをダウンロードしたのち展開する。
boot.nds
をSD:/
に配置する。 - Luma3DSをダウンロードしたのち展開する。
boot.firm
をSD:/
に配置する。 - HBLを開き、
frogtool
を起動する。INJECT
を選択し、完了したら同様にBOOT
を選択する。 - 「うごくメモ帳」が起動する。初回の案内を飛ばし、メインメニューまで遷移させる。
- 「メモを見る」「SDカード」「(顔文字のメモ)」「書く」の順に選択する。
- 方向キー上または
X
でエディタ画面を開き、「終了」ボタン隣のフィルムアイコンをクリックする。 - 3枚目のコマを1枚目のコマへコピーする。b9sToolが起動する。画面の指示に従って、インストールを完了する。
- ソフトを終了すると、Luma3DSの設定画面が起動する。
最後に
カスタムキーボードを削除、またはNANDイメージをリストアして、CFWインストール操作を完了する。
脚注
- ^ プライマリExploitは、他にHomebrewを実行する手段がない中でHomebrewを実行可能にするExploitを指します。例えば、
SoundHax
はプライマリです。一方、手順の簡略化を目的とするなど、既にHomebrewを実行できる環境でのみ導入可能なものをセカンダリExploitと呼び、BaseHaxx
などがこれにあたります。