トラブルシューティング
このページは開発中のバージョンについて説明しています。一部はまだ v1.3.0 に含まれていません。 v1.3.0 のこのページ · 今後の予定
ロックされた本体を取り戻す方法、よくある問題、不具合の報告、開発者モードについて説明します。
ロックされて入れない?
PlayGuard は、自分が動いているシステムのみまもり設定しか見えません。emuMMC と sysMMC には、それぞれ独自の設定があります(片方で削除した暗証番号も、もう片方には残っています)。直す必要のあるシステムのそれぞれで、PlayGuard を起動してください。
中古の本体
暗証番号はわかっているのに、前の持ち主のスマホアプリがまだ連携している場合です(連携の解除に失敗する、または初期化で前の持ち主のアカウントを求められる)。
セキュリティ › スマホアプリとの連携を解除 を選び、みまもり設定がまったく不要なら、続けて みまもり設定をすべて削除 を選びます。どちらもオフラインで、emuMMC でも sysMMC でも使えます。
暗証番号を忘れた
暗証番号を表示 は暗証番号そのものを求めるので、ここでは使えません。リカバリー sysmodule(下記)をインストールしてあれば、RESCUE ファイルを置いて再起動します。復旧画面で新しい暗証番号を設定できます(古い暗証番号は表示されません)。インストールしていなければ、みまもり設定をすべて削除 でやり直せます(先に設定のバックアップが保存されます。バックアップに暗証番号は含まれません)。PlayGuardを暗証番号で保護 がオンの場合(初期設定は 変更する前)は、先に SD カードをパソコンに入れ、sd:/config/playguard/config.json の "pin_lock" を "off" にしてください。
タイマーがすべてをブロックし(上限 0 分)、暗証番号も忘れた
この場合、PlayGuard 自体が起動できません。オプションのリカバリー sysmodule をあらかじめインストールしておいてください(本体 › 追加モジュール、または手動で playguard-rescue.zip)。ロックされたら、SD カードに空の config/playguard/RESCUE ファイルを置いて本体を起動します。sysmodule が本体のロックを解除し、PlayGuard を開けるようになります。sysmodule/rescue/README.md(英語)を参照してください。
sysmodule は PlayGuard のバージョンに合わせる必要があります。PlayGuard をアップデートするたびに、そのリリースの playguard-rescue.zip を展開し直し(またはお知らせのベルの リカバリー sysmodule が最新ではありません で 更新)、本体を再起動してください。古い sysmodule が残すレポートは、PlayGuard が確認できません。その場合、復旧画面は何も提案せず、sysmodule が古いことを伝えます。アップデートするまでは、もう一度 RESCUE を使っても同じ結果になります。
Homebrewメニューのロック
本体 › フォワーダー › Homebrewメニューをロック を使うと、アルバムからも、R を押しながら起動したゲームからも、Homebrewメニューが開かなくなります。PlayGuard のフォワーダーと保護したメニューの両方がなくなった場合(本体の「設定」で削除した、またはもう一方のシステムにいる。ロックは SD カード上にあり、sysMMC と emuMMC の両方が読み込みます)は、次のようにします。
- パソコンから: SD カードの
atmosphere/config/override_config.iniを削除し(または元の状態のファイルであるconfig/playguard/override_config.ini.backupを元に戻し)、本体を再起動します。 - リカバリー sysmodule をインストールしてある場合(任意):SD カードに空の
config/playguard/RESCUEファイルを置いて再起動します。sysmodule が起動時にロックを外し、次に PlayGuard を起動したときにそのことを知らせます。ロック後に Atmosphère をアップデートした場合も、同じようにロックが外れます。
改造していない本体
PlayGuard ではどうにもなりません。Atmosphère が必要です。任天堂サポートのマスターキーの手続きが、正式な方法です。
よくある問題
残り時間が減らない
残り時間が約 90 秒たっても変わらないと、今日 に 本体は今、プレイ時間をカウントしていません と表示されます。考えられる原因は次のとおりです。
- ネットワーク時計が一度も設定されていない。 本体 › ネットワーク時計 › 時刻のずれを測定 のあと、時計を合わせてください(ネットワーク時計)。
- 時計が戻された。 時計が戻ったあとは、元の時刻を過ぎるまでカウントが止まります。何もする必要はありません。
- 上限を書き込んだ直後。 ゲームを 1 分ほど起動してから、もう一度確認してください。
- みまもり設定が一時解除中。 その間はプレイ時間が数えられないことがあります。今日 › 再び有効にする を選んでください(ヘッダーのラベルをタップしても移動できます)。
上限が勝手に変わった
- スマホアプリがまだ連携している。 次の同期で、PlayGuard で設定した内容が上書きされます。セキュリティ › スマホアプリとの連携を解除 を選んでください。
- 別のツール、またはプリセット。 PlayGuard が最後に見た上限と違うと、今日 にオレンジのカードが表示されます。履歴 › PlayGuardで行った変更 には、PlayGuard の外で見つけた変更がひとつずつ記録されています。変更で Ⓐ を押すと、前の値に戻せます。
- 予約したプリセット が適用された、または期間が終わって元に戻された(プレイ時間 › プリセット › 予約したプリセット)。
子どもが上限を超えて遊んだ
- 本体が知らせるだけになっている。 プレイ時間 › 時間になったとき で ソフトを中断する を選んでください。
- みまもり設定が一時解除のままだった。 その間、今日の上限は一時停止しています。ヘッダーのラベルがどのタブでもそれを示し、タップすると 今日 › 再び有効にする に移動します。本体を再起動しても、ロックされます。
- 時計が戻された。 時計が元の時刻を過ぎるまで、カウントが止まります(数えられるもの)。
- もう一方のシステム。 emuMMC と sysMMC には、それぞれ独自のみまもり設定があります。両方で設定するか、hekate の起動メニューを隠してください(対応状況)。
今日、上限がまるごと使えるようになった
時計(ネットワーク時計または本体の時計)を変えると、今日のプレイ時間がリセットされます。子どもが遊んだあとではなく、遊ぶ前に時計を合わせてください。
PlayGuard が閲覧のみで開く
本体のファームウェアが、確認済みの最新のものより新しい場合です。PlayGuard は、そのファームウェアに対応した新しいリリースがあるかを確認し、アップデートを提案します(新しいファームウェア)。アプリが閲覧のみであることは、タイトルの右の斜線の入った鉛筆が示します。タップすると、ファームウェアの画面が開きます。
PlayGuard がいつも暗証番号を求める、または一度も求めない
セキュリティ › PlayGuardを暗証番号で保護:変更する前(初期設定)は、最初の変更の前に一度だけ求め、暗証番号は PlayGuard を閉じるまで有効です。5分たったら暗証番号を再度確認する をオンにすると、5 分後に再び求めます。暗証番号を表示 は毎回求めます。
ゲームが起動しない、または HOME メニューで「!」が表示される
本体 › インストール済み が、それぞれのゲームの問題と対処法を伝えます。セーブデータは常に残ります(インストール済みのゲーム)。
保護したフォワーダーでエラー 2347-0100 が表示される
ゲート(config/playguard/gate-….nro)が、フォワーダーを作成したときのファイルではなくなっています。SD カード上で変更されたか置き換えられたため、フォワーダーはゲートを起動しません。PlayGuard を自身のフォワーダーから開いてください。起動時にゲートを書き戻します。本体 › フォワーダー › すべて再インストール で、すべてのフォワーダーをこのゲートで作り直せます。
保護したフォワーダーがすぐに閉じる(「エラーが発生しました」)
PlayGuard の画面が出る前に、エラーコードなしで閉じます(atmosphere/crash_reports/ にある Atmosphère のレポートには forwarder モジュール、結果 2000-0000 と書かれています)。ゲートがアセットなしでビルドされた PlayGuard で作成されたフォワーダーで、フォワーダーのローダーがそれを拒否しました。PlayGuard をアップデートしてから、作り直してください。古いローダーで作成したすべてのフォワーダーについて、ベルと 本体 › フォワーダー が作り直しを提案します。
保護したフォワーダーが暗証番号のあともゲートの画面のまま
暗証番号は受け付けられたのに、Homebrew のアイコンが表示された画面のまま、何も起きません。ゲートがその画面を単一のバッファーで描画し、次の画面を描くのをいつまでも待っていました。PlayGuard をアップデートしてから、作り直してください。古いゲートで作成したすべてのフォワーダーについて、ベルと 本体 › フォワーダー が作り直しを提案します。
フォワーダーで「ソフトウェアを起動できませんでした」と表示される
本体が起動を拒否しました。署名チェックがまだ有効です。確認する順に:
- sys-patch と並んだ sigpatch ファイル。 sys-patch が動いているのに、
atmosphere/kip_patches/fs_patches、loader_patches、またはatmosphere/exefs_patches/es_patchesに.ipsファイルがある。2 つのツールが同じチェックにパッチを当てている状態で、GBAtemp の sys-patch や sigpatch のスレッドで最もよく挙げられる原因です。本体 › ゲーム用パッチ がそれを警告し、そこで Ⓐ を押すとそれらを退避します(config/playguard/sigpatches-aside/に移動するだけで、削除はしません。hekate のbootloader/patches.iniはそのまま残ります)。本体を再起動してください。 - sys-patch が適用しなかったパターン。 フォワーダーには、モジュールごとに 1 つだけでなく、このファームウェア用に sys-patch が持つ fs と loader のすべてのパターン(
noncasigchk_17.0.0+、nocntchk_19.0.0+、noacidsigchk_10.0.0+)が必要です。情報 › ヘルプと診断 › 診断レポートをエクスポート のgame patchesの行に、sys-patch のバージョンと、適用されなかった各パターンが表示されます。sd:/config/sys-patch/log.iniにも同じ内容があります。config/sys-patch/config.iniがこのシステムにパッチを当てる設定になっていること(emuMMC ではpatch_emummc=1)と、どれもオフにしていないことを確認してください。sys-patch のメンテナー自身によれば、23.0.x に 1.6.2.3 より新しい sys-patch は必要ありません。 - パッチを変えてから再起動していない。 sys-patch は起動時にパッチを当てます。
- 古い PlayGuard で作成したフォワーダー。 古いローダーで作成したものについては、ベルと 本体 › フォワーダー が作り直しを提案します。
ベルやタブにオレンジのバッジが表示される
対応が必要なことがあります。Ⓨ で一覧を開き、項目で Ⓐ を押すと、その場で解決するか、解決できる場所が開きます(お知らせ)。
不具合の報告
エラーには、システムのコード(0x0001088E など)と、そのコードについてわかっていることが表示されます。意味がわかっているコードには対処法が表示され、それ以外ではレポートが役に立ちます。
- 情報 › ヘルプと診断 › 診断レポートをエクスポート で、
sd:/config/playguard/logs/reports/にテキストファイルが保存されます。内容は、ファームウェア、Atmosphère のバージョン、起動にかかった時間と遅い画面にかかった時間(変更履歴、すべてのゲーム、インストール済みのゲームのチェック、自動で更新されるタブ)、時計、ストレージ、シリアル番号の非表示化とゲーム用パッチの状態、Atmosphère の DNS リダイレクトが任天堂のみまもり設定と時刻のサーバーをどう扱っているか(ネットワークのテストではなく、SD カード上の hosts ファイルから読み取ります。Atmosphère 自身のatmosphere/logs/dns_mitm_startup.logの末尾も付きます)、みまもり設定への各問い合わせの生の結果、そしてログ(前回の実行がどう終わったか、残りのメモリーと SD カードの空き容量、最新のクラッシュファイル、最後に記録された 80 行)です。暗証番号やシリアル番号は含まれません。 - Issue を開いて(英語で)、ファイルを添付してください。
レポートをオンラインで送信
本体がオンラインなら、情報 › ヘルプと診断 › レポートを送信…(開発者モードでは診断レポートで Ⓧ)で、あなたの GitHub アカウントの非公開(secret)gist に送信できます。何が送られるかを正確に示してから送信します。以前 logs/reports/ に保存したレポートも、同じ方法で送信できます。
- 送られるもの: レポートと各ファイルが、それぞれ別のファイルになります。
- 最新のクラッシュレポート:
logs/crashes/にある PlayGuard の最新 3 件と、sd:/atmosphere/crash_reports/にある過去 1 週間の homebrew についての Atmosphère のレポート最新 2 件(ほかの homebrew のクラッシュが含まれることもあり、送信前に表示される一覧でわかります)。 - 今回と前回の実行のログ(
logs/sessions/。長いログは最初の部分と最後の 64 KiB)。 - デバッグ用ファイル:プレイ時間ブロックの基準、プレイ時間を記録 がオンの間の記録の末尾、変更履歴の最新 20 件(ゲーム・ユーザー・プリセットの名前は除き、日付のみ)、PlayGuard の設定。
- ログイン: ログアウト中なら、PlayGuard が先にログインを提案します。ログイン後は、すぐ下の GitHub アカウント でログアウトできます。GitHub が gist を拒否したときは、PlayGuard がもう一度ログインすることを提案します。
- 送信後: 2 つの QR コードを表示し、1 つ目の下にはリンクと、読み上げたり入力したりできるよう 4 文字ずつに区切ったその ID を表示します。1 つ目はレポートで、すでにあなたを手伝っている人のためのもの、2 つ目は不具合報告フォームで、不具合を報告するときに読み取ります。フォームには、リンク、バージョン、PlayGuard の起動方法(ゲームの上から、HOME メニューのアイコンから、またはアルバムから。メニューを書き足してください)、システム(sysMMC か emuMMC)があらかじめ入力されています。リンクはお知らせにも残り、各リンクは
logs/uploads/に、パソコンのブラウザーで開けるインターネットショートカット(.url)として保存されます。
リンクを知っている人は誰でも、GitHub で gist を削除するまでレポートを読めます。また、それを使って開いた不具合報告は公開されます。確認画面でもそのことを伝えます。
PlayGuard が SD カードに残すもの
すべて sd:/config/playguard/logs/ にあり、パソコンで開けるプレーンテキストです。
sessions/session_<date>.txt— 実行ごとに 1 ファイル:PlayGuard が記録したすべて(以前は nxlink で PC にしか届かなかったもの)です。各行に時刻とレベル(Eエラー、W警告、I情報)が付き、最後の行に実行の終わり方が書かれます。=== end: clean exit ===(正常終了)、または=== end: crash, see logs/crashes/… ===(クラッシュ)です。ファイルは 1 MiB に達すると大きくならなくなります。crashes/crash_<date>.txt— クラッシュごとに 1 ファイル。最初の行に、何が起きたかが書かれます。- CPU 例外(不正なポインター、未定義の命令、スタックオーバーフロー):エラーの種類とアクセスしたアドレス、バックトレース、レジスター。アドレスは
playguard.nro内のオフセット(playguard+0x1a2b3c)で、そのビルドのリンカーマップ(CI 実行の-linker-mapアーティファクト)から関数がわかります。そのあと PlayGuard は従来どおり終了します。本体のエラー画面が表示され、Atmosphère 自身のレポートがsd:/atmosphere/crash_reports/に残ります。 - 捕捉されなかった例外:その型とメッセージ、バックトレース。
- 終わらなかった実行:前回の実行のセッションファイルに終了行がないとき、次の起動時に見つかります(PlayGuard が捕捉できなかったクラッシュ、固まっている間に HOME メニューから閉じた、本体の電源が切れた、など)。その実行の最後の 60 行が付きます。
PlayGuard の実行中に捕捉したクラッシュファイルの最後には、クラッシュ前に記録された最後の 80 行が付きます。
- reports/、uploads/、play_timer/ — 保存したレポート、オンラインで送信したレポートのリンク、プレイ時間の記録。
情報 › ヘルプと診断 で、レポート、クラッシュファイル、セッションログ、リンクをいくつ残すかを設定できます(フォルダーごと。最新のものは必ず残ります)。
開発者モード(新しいファームウェアの調査)
情報 › バージョン で Ⓨ を 7 回押すと、情報 › ヘルプと診断 の最後に開発者ツールが現れます。追加されるものは次のとおりです。
- 閲覧のみ のスイッチ — オンにすると、アプリは何も変更できません。新しいファームウェアを安全に調査するための方法です(ファームウェアの画面から直接選べます)。
- 画面上の診断レポート(Ⓨ で保存、Ⓧ でオンライン送信)と、プレイ時間 タブからエクスポートするショートカット。
- 本体のセルフテスト:本体のチェックリスト(英語)を手で確認する前に、PlayGuard がこの本体で自分で確かめる項目です。暗証番号、署名パッチ、データフォルダー、PlayGuard が作成した各フォワーダー(HOME メニューにあるか、保護されているか、ゲートを通して動作を確認できたか)、SD カード上のゲート、Homebrewメニューのロックについて Atmosphère が読み取る内容、戻り道、リカバリー sysmodule です。何も変更せず、結果を Markdown で
config/playguard/self-test.mdに書き出します。プルリクエストに貼り付けるためのものです。 - 別のビルドをインストール(その場で置き換え):修正をリリース前に試せます(下記)。
- プレイ時間ブロックを比較(スマホアプリと連携していて同期できる間だけ使えます。任天堂をブロックする hosts ファイルがある場合は使えません。セキュリティ にもあります):PlayGuard がまだ表示していない設定を解読するためのものです。生のブロックを基準として保存し、スマホアプリで設定をひとつ変えて戻ってくると、PlayGuard が変わった値を一覧にします(求めれば
logs/reports/に保存します)。スマホアプリで設定した、曜日ごとに異なるおやすみアラームも、この方法で確かめられるかもしれません。そのファイルを Issue に添付するか、レポートと一緒に送ってください(レポートを送信…)。 - プレイ時間を記録:PlayGuard を開いている間、30 秒ごとに、タイマーが報告する内容(残り時間、プレイした時間、生の設定ブロック…)を 1 行ずつ
logs/play_timer/log.csv(表計算ソフトでそのまま開けるファイル)に記録します。さらに、PlayGuard が変更をするたびにその直後に 1 行(どの変更かを最後の列eventに)、経過した時間より時計が大きく動いたときはメモを記録します。深夜 0 時をまたいで、または時間切れまで開いたままにすると、1 回のレポートではわからないことがわかります。プレイした時間がいつリセットされるか、終わり近くで本体が何を表示するか、です。スイッチの状態は記憶されますが、記録するのは開発者モードのときだけです。これまでにわかっていることは、parental-controls.md(英語)にあります。 - キャッシュを消去 と ログファイルを削除:どちらも、ファイルの数と容量を示す確認のあとに実行します。キャッシュ(
cache/と各システムのnand/<system>/cache/:ゲームの名前とアイコン、プレイ記録の最新の数値、ビルドの一覧)は、必要なときに本体から読み直されます。ログファイルとは、クラッシュファイル、セッションログ(書き込み中の今回の実行のものは除く)、保存したレポート、プレイ時間の記録のことです。uploads/(オンラインで送信したレポートの削除用リンク)とブロックの基準は残ります。設定、履歴、バックアップ、プリセット、エクスポートには、一切手を触れません。 - 移行をもう一度実行:以前の配置からの移動(
.nroの隣にあったデータフォルダー、サブフォルダーができる前のログ、すべてのシステムで共有していたもの)が 1 行ずつ並び、チェックを付けたり外したりできます(最初はすべてチェック済み。A で 1 つずつ切り替え)。続いて 選んだ N 件を実行 を押すと、それぞれが何を移動するかを示す確認が出ます。migrations.jsonの記録に関係なく、すぐに実行されます(ふだんは、それを必要とするビルドの初回起動時に 1 回だけ実行されます。記録されたレベルが下がることはありません)。すでに正しい場所にあるファイルが置き換えられることはありません。移動した項目の数がダイアログに表示され、各ステップはセッションログに残ります。 - フレーム統計:
logs/frame_stats.txtに 1 秒ごとに 1 行、画面の描画にかかった時間と遅れたフレームを記録します。本体の上で画面どうしを比べるためのものです。背景のグロー は画面の後ろのやわらかい光をオフにし(そのとき行のモードの末尾が-noglowになります)、その負荷を測れるようにします。
別のビルドをインストール
別のビルドをインストール は、PlayGuard 自身の .nro をほかのビルドに置き換えて、修正をリリース前に試せるようにします。
一覧に並ぶもの は、種類ごとに別のタブになっています(タブの両側に表示される Ⓛ / Ⓡ で切り替えます。画面はインストール済みのビルドのタブで開き、各タブの名前のあとには、きらめきマークとインストール済みより新しいビルドの数が表示されます)。
- 最新 20 件のリリース(プレリリースを含み、タグ付き)。
mainの最新 20 件のコミット。- このリポジトリのブランチから開かれたプルリクエストの最新ビルド(フォークからは不可。そのコードはまだレビューされていないため)。プルリクエストのタブでは、表示されていれば A で並び順を逆にします(新しいビルド順、または番号順)。A のボタンガイドに、どちらになるかが表示されます。
各ビルド には、タイトル(コミットやプルリクエストの件名。コミットのメッセージ全体が説明になります)と、その下にタグが表示されます。変更の種類(新機能、修正、ドキュメント…)とその範囲、互換性なし、コミットの元になったプルリクエスト、チェックの結果(CI OK、CI 失敗、CI 実行中)、プレリリース、インストール済みのビルドならチェックマーク、より新しいビルドならきらめきマークです。右側には経過時間(分、時間、そのあとは日単位)とコミットが表示されます。ビルドを選ぶと、まずそのページが開きます。タグ(種類、チェック、チェックマークかきらめきマーク)、情報カード(ビルド日時、サイズ、コミット、チェックサム、GitHub による削除日)、インストール、GitHub で見る(ページを QR コードでスマートフォンに)、チェックがまだ実行中のときは警告、そしてリリースのノートかプルリクエストの説明で、GitHub の Markdown から描画されます(見出し、リスト、チェックボックス、コード、引用とアラート、表)。
安全に読める: GitHub から来るものは、すべてプレーンテキストとして表示されます。リンクは開かず、HTML やスクリプトは実行せず、タイトルを偽装できる見えない文字(右から左への書字方向の上書き、ゼロ幅文字、制御文字、不正な UTF-8)は取り除きます。
ログイン。 リリースには何も必要ありません。それ以外はビルドワークフローのアーティファクトで、GitHub はログインしたユーザーにしか渡しません。GitHub アカウント で、コードとスマートフォンで読み取る QR コードを使ってログインします。求める権限は、ビルドワークフローのファイル(Actions)の読み取りと、レポートを送信… のための gist の作成だけです。それ以外では、トークンは公開されているものしか読めません。トークンは github_token に保存され、レポートと一緒に送られることはありません。GitHub アカウント でログアウトできます。ログイン中は、Ⓨ(検索)でプルリクエストの番号(オープンでもクローズでも)やコミット(7~40 桁の 16 進数)を入力すると、そのビルドを探します(このリポジトリのブランチからのみ)。
インストール: PlayGuard はビルドをダウンロードして確認し(サイズ、GitHub が記録した SHA-256、NRO ヘッダー)、自分の .nro と置き換えて、そのビルドで再起動します(暗証番号が設定されていれば、先に入力を求めます)。ウィンドウには、今どの段階か、ダウンロードのサイズと速度、どのビルドを置き換えるかが表示されます。ビルドの配置が始まると、キャンセルはできなくなります。
- 一覧は 10 分間保持され、経過時間とともにすぐ表示されます(Ⓧ で再取得。ビルドのチェックが実行中の間は、画面も 3 分ごとに再取得します)。取得中は、ヘッダーの右側のバーで進み具合を表示します。インストールで何が行われるかは、画面の下部に表示されます。
- 途中で切れたダウンロード(ネットワークの切断)は、次に同じビルドをインストールするときに続きから再開します。
- アーティファクトは 90 日で期限切れになります。
元に戻す。 置き換えたビルドは残されます(playguard.nro.previous)。同じ一覧の 前のビルドに戻す で、暗証番号を入力したあとに、もう一度入れ替えます。そのビルドは、バージョン、プルリクエスト、コミットで示されます。ここから(または アップデート方法 の PlayGuard 内で で)インストールしたビルドが最初の画面より前にクラッシュした場合、次に PlayGuard を起動すると、何かを読み込む前に、シンプルなテキスト画面で前のビルドに戻ることを提案します(A で戻る、B でそのまま起動)。暗証番号が設定されていれば、戻るときに本体自身の暗証番号の画面で暗証番号を求めます(クラッシュの原因かもしれない PlayGuard のロック画面ではありません)。入力しなければ、インストールしたビルドが起動します。同じ一覧から、いつでもどのリリースにも戻せます。
実行中のビルド: 開発者モードでは、情報 › バージョン にコミットが表示されます。すべての画面のヘッダーには、タイトルの隣に実行中のバージョンが表示されます。リリースはグレーのタグ(1.2.0)、それ以外のビルドはオレンジのタグにコミットが続くので、テスト用のビルドをリリースと取り違えることはありません。