Bluetooth 経由で他のコンソールのコントローラーを Nintendo Switch でネイティブに使用できます。ドングルやその他の外部ハードウェアは必要ありません。
mc.mitm
モジュールは、システムの状態に干渉せずにbluetooth
プロセスと対話するために使用できる拡張 IPC コマンドを追加します。現在、次のコントローラーがサポートされています。以下のいずれかのサードパーティ製バリアント、またはリストされていない Bluetooth コントローラーをお持ちの場合は、コントローラー リクエストの問題を送信することを検討してください。
*すべての Xbox One ワイヤレス コントローラーが Bluetooth をサポートしているわけではありません。古いバージョンでは独自の 2.4Ghz プロトコルが使用されているため、スイッチでは使用できません。 Bluetooth の種類を特定する方法については、ここを参照してください。
最新リリースの .zip をダウンロードして SD カードのルートに解凍すると、フォルダーが結合され、既存のファイルが上書きされます。本体を再起動してモジュールを有効にすると完了です。
重要: ファームウェア 19.0.0 で Mission Control の最新リリースを実行するには、Atmosphère >= 1.8.0 が必要です。古い Atmosphère バージョンを使用すると、起動時に Mission Control がクラッシュしたり、システムがフリーズしたりする原因になります。
Mission Control は主に sysmodule (バックグラウンド プロセス) であり、起動時に Atmosphere によってロードされ、オペレーティング システムの残りの部分とともに無期限に実行されます。これにより、サポートされていない Bluetooth コントローラーをネイティブの Pro コントローラーのように使用できるようになります。これは、追加の自作アプリケーションをロードすることなく、任天堂独自のシステム メニューを介して新しいコントローラーをペアリングして設定できることを意味します。 (現時点では) 開かれるミッション コントロール「アプリ」はありません。
コントローラーは使用する前に、まずコンソールとペアリングする必要があります (下記を参照)。ペアリングすると、コントローラーは起動時に自動的にコンソールを探して再接続します。毎回ペアリングし直す必要はありません。非公式のコントローラーを使用して本体をスリープ解除することはできないことに注意してください。
接続すると、コントローラーのボタンは Switch Pro コントローラーの物理レイアウトに可能な限り厳密にマッピングされます。これは、A/B ボタンと X/Y ボタンが、ボタンに印刷されているものを使用するのではなく、Xbox スタイルのボタン レイアウトを使用するコントローラーに交換されることを意味します。ボタンの組み合わせMINUS + DPAD_UP
およびMINUS + DPAD_DOWN
は、使用可能なフェイス ボタンが足りない場合にCAPTURE
とHOME
ボタンの代替として機能するために、すべてのコントローラーに提供されています。ボタンのマッピングは、公式システム メニューのSystem Settings->Controllers and Sensors->Change Button Mapping
から変更できます。
他のほとんどのネイティブ機能は正常に動作するはずです(ファームウェアのアップデートなどを除く)。何かが壊れているのを見つけた場合は、この github ページでサポートの問題を開いてください。
任天堂は、コントローラーのメニュー項目でかなり混乱を招く名前を選択しました。コントローラーは、システム メニューのControllers->Change Grip/Order
] でペアリングされます。常識的に考えられるように、 Pairing New Controllers
やSearch for Controllers
行われません。この画面で、コントローラーをペアリング モード (下記参照) にし、数秒待ちます。成功すると、画面の左上にPaired
通知が表示されます。これでコントローラーはペアリングされ、この画面に再度入らなくてもいつでも再接続できます。再ペアリングは、コントローラーを別のデバイスまたはemummcに接続した場合にのみ必要です。
サポートされているコントローラーにはそれぞれ、ペアリング/同期モードに入る独自の方法があります。以下は、いくつかの一般的なコンソール コントローラーでこのモードに入る手順です。
Nintendo Wii/WiiU コントローラーコントローラーの背面にある赤い同期ボタンを押します。コントローラーの LED が速く点滅します。
各コントローラーには異なるアナログ スティック範囲と中心位置がありますが、Switch コントローラーとは異なり、工場出荷時に保存されたキャリブレーションがないため、該当する場合、これらのコントローラー タイプに対してアナログ スティック キャリブレーションを実行することをお勧めします。
Sony Dualshock3 コントローラーこのコントローラーをペアリングするには、USB ケーブルで本体に接続する必要があります。コントローラーの LED が点滅し始めたら、USB ケーブルを取り外し、 PS
ボタンを押します。
注: USB 有線モードでコントローラーを使用する場合の望ましくない動作を避けるために、これは通常のControllers->Change Grip/Order
画面からのみ機能します。
Sony Dualshock4/Dualsense コントローラーライトバーが点滅し始めるまで、 PS
+ share
ボタンを同時に押し続けます。正しく行われた場合、点滅パターンは心拍に似ていますが、そうでない場合は、一定の速度で点滅します。
コントローラーを本体にペアリングするのが難しい場合は、コントローラーの背面にあるリセット ボタンを数秒間押し続けて、もう一度試してください。場合によっては、Playstation コンソールまたは他のデバイスに接続した後にこれが必要になることがあります。
Microsoft Xbox One/Elite 2 コントローラーLED が点滅し始めるまで、 guide
( X
) ボタンを押し続けます。次に、LED がより速く点滅し始めるまで、充電ポート近くの背面にある小さな同期ボタンを押し続けます。
注: コントローラー ファームウェア バージョン 5.xx.xxxx.x 以降は Bluetooth Low Energy を使用するため、現在サポートされていません。互換性のあるファームウェアにダウングレードする手順については、FAQ を参照してください。
その他のコントローラーコントローラーを同期モードにする方法については、コントローラーのユーザー マニュアルを参照してください。多くの汎用 Bluetooth コントローラーは、いくつかのモードのいずれかで起動できることに注意してください。通常、正しく動作させるには、HID、PC、Android モードなどを選択する必要があります。
正常にペアリングされたがまだ正式にサポートされていないコントローラーは、 Controllers
メニューに赤いボタンが表示され、コントロールがマッピングされていないことを示します。このようなコントローラーのサポートをリクエストするには、問題を開いてください。
config .ini ファイルのテンプレートは/config/MissionControl/missioncontrol.ini.template
にインストールされます。デフォルトのモジュール設定を変更するには、テンプレートを/config/MissionControl/missioncontrol.ini
にコピーし、コメントを解除し (先頭の;
を削除し)、変更する設定を変更します。ファイルは起動時にのみ解析されるため、変更を有効にするには再起動が必要です。正しく解析/検証できない設定エントリは無視されます。現在、構成設定は少数しかありませんが、これは将来のリリースで拡張される予定です。
[general]
ミッションコントロール機能の全般的な設定です。
enable_rumble
非公式コントローラーのランブル サポートを有効/無効にします。enable_motion
モーション コントロールのサポートを有効/無効にします。 [bluetooth]
これらの設定を使用すると、スイッチの Bluetooth を偽装して別のデバイスとして表示できます。これは、切り替えるたびに再ペアリングする必要がなく、複数のデバイス間でコントローラーを使用したい場合に (リンク キーと組み合わせて) 便利です。これらの設定を変更すると、以前にペアリングしたコントローラーに保存されている本体情報が無効になり、再ペアリングが必要になることに注意してください。
host_name
Bluetooth ホスト アダプタ名をオーバーライドします。host_address
Bluetooth ホスト アダプタ アドレスをオーバーライドします。 [misc]
コントローラー固有のその他の設定などです。
analog_trigger_activation_threshold
アナログ トリガーを持つコントローラーで ZL/ZR が押されたとみなされるしきい値を設定します。有効範囲は [0 ~ 100] パーセントです。dualshock3_led_mode
Dualshock 3 プレーヤーの LED の動作を設定します。有効なモード [0-1] 0=スイッチ パターン、1=PS3 パターン、2=ハイブリッド (スイッチ パターンはコントローラーの数値ラベルと並ぶように反転されています)dualshock4_polling_rate
Sony Dualshock 4 コントローラーのポーリング レートを設定します。有効な範囲は [0-16] で、0=最大、16=最小です。対応する周波数の値については、こちらを参照してください。dualshock4_lightbar_brightness
Sony Dualshock 4 コントローラーの LED ライトバーの明るさを設定します。有効範囲は [0 ~ 9] で、0=オフ、1=最小、2~9=12.5 ~ 100% (12.5% 増分)。dualsense_lightbar_brightness
Sony Dualsense コントローラーの LED ライトバーの明るさを設定します。有効範囲は [0 ~ 9] で、0=オフ、1=最小、2~9=12.5 ~ 100% (12.5% 増分)。dualsense_enable_player_leds
Dualsense タッチパッドの下にある白いプレーヤー インジケーター LED を有効/無効にします。dualsense_vibration_intensity
Dualsense の振動強度を 12.5% ずつ設定します。有効範囲は [1 ~ 8]、1=12.5%、8=100%。Mission Control とそのコンポーネントを機能的にアンインストールするには、SD カードから次のディレクトリを削除し、本体を再起動するだけです。
/atmosphere/contents/010000000000bd00
/atmosphere/exefs_patches/bluetooth_patches
/atmosphere/exefs_patches/btm_patches
これまでにインストールされたソフトウェアの痕跡をすべて完全に削除したい場合 (テレメトリは除く)、次の追加手順を実行することもできます。
SD カードから次のディレクトリを削除します
/config/MissionControl
System Settings->Controllers and Sensors->Disconnect Controllers
Bluetooth ペアリング データベースを消去します。
以下は、現在取り組んでいる機能、または将来検討したい機能のリストです。おおよその優先順位が高い順に示しています。便利な機能になりそうなアイデアがございましたら、リクエストをお待ちしております。
/config/MissionControl/controllers
ディレクトリに保存します。このディレクトリ ツリーの一部が破損すると、構成データの読み取りに失敗したときにコントローラが切断される可能性があります。これは <ここに CFW を挿入> で実行されますか?いいえ、Mission Control は大気環境下でのみ動作します。これは他の CFW のユーザーを締め出す試みではありません。Atmosphere は単に、この sysmodule を可能にする MITM Bluetooth 通信に必要な拡張機能を提供する唯一のものです。
これを使用するとオンラインから禁止されますか?現在、Mission Control の実行によって禁止されたケースは確認されていません。とはいえ、CFW下で非公式ソフトウェアを実行すると、常に禁止されるリスクがゼロではなく、任天堂はいつでも禁止基準を変更する可能性があります。 Mission Control は、接続されている Pro コントローラーをエミュレートするだけなので比較的安全であるはずですが、任天堂がその気になれば、非公式のコントローラーをコンソールに接続したことを検出することは確実に可能です。ご自身の判断でご使用ください。
これはUSBコントローラーをサポートしていますか?いいえ、Mission Control は現在 Bluetooth のみです。今のところ、USB コントローラーには cathery の sys-con を使用できます。
sys-conを取り付けても動作しますか?はい、2 つは問題なく同時に実行できます。
この sysmodule が原因で、コンソールが起動時にクラッシュします。私に何ができる? Mission Control のタイトル ID ( 010000000000bd00
) で起動時にクラッシュが発生する場合は、最近新しい Atmosphere リリースに更新したため Mission Control への更新が必要か、古いバージョンの Atmosphere を実行している可能性があります。 Mission Control の最新バージョンと互換性がありません。 sm
のクラッシュ (タイトル ID 0100000000000004
) は、現在の Atmosphere と 1 つ以上の自作 sysmodule との間のバージョンの非互換性を示している可能性があります。これは、Mission Control が原因である可能性があります。あるいは、Mission Control が原因であるように見えても、libstratosphere を使用する別のカスタム システムモジュールである可能性があります ( ldn_mitm
とemuiibo
が一般的な犯罪者です)。 Atmosphere を更新したばかりの場合は、使用している sysmodule 用の更新もリリースされているかどうかを常に確認する必要があります。 qlaunch エラー (タイトル ID 0100000000001000
) は、実行中のカスタム sysmodule が多すぎて、利用可能な限られたシステム リソースを使い果たしている可能性があります。 /atmosphere/contents
フォルダーをチェックして、そこにあるすべてのものが実際に必要であることを確認してください。何をしているのかわからない場合は、このフォルダーを完全に削除し、atmosphere を再インストールして、必要な sysmodule のみを明示的に再インストールする方が簡単かもしれません。
Mission Controlをインストールしましたが、何も起こりません。ヘルプ! Mission Control は主にバックグラウンド プロセスです。任天堂の公式メニューを通じてコントローラーが正常に接続されたこと以外、システムがインストールされたことを示す視覚的な変化はありません。上記の使用法とペアリングの手順に従っても機能しない場合は、次の基本的なトラブルシューティング チェックリストを参照してください。
DPAD_UP
+ MINUS
ボタンを一緒に押します。これはキャプチャ ボタンとして機能し、モジュールが実行中の場合はスクリーンショットを撮ります。スクリーンショット通知が表示されない場合は、Mission Control が読み込まれていない可能性があります。これは通常、不適切なインストールが原因であり、いくつかの理由で発生する可能性があります。これを複数の sysNAND/emuMMC 起動構成で使用するにはどうすればよいですか?複数の固有の HOS インストール間でコントローラーをペアリングするには、複数のペアリング データベースが必要ですが、基本的に 2 つの異なるコンソールとペアリングするのと同じです。唯一の例外は、sysNAND コピーを作成する前にコントローラーをペアリングした場合です。現時点では、前後に切り替えるときにコントローラーを再ペアリングする必要があります。将来的には、この問題を回避するために、データベースを SD カードにロード/保存するオプションを追加したいと考えています。バージョン 1.5.1 以降、Atmosphere には、SD カード上のファイルを介して sysNAND とエミュMMC の間で Bluetooth ペアリング データベースを同期するために私が提供したコードが含まれています。これを有効にするには、 atmosphere/config/system_settings.ini
の[atmosphere]
セクションにenable_external_bluetooth_db = u8!0x1
を追加します。注: この機能が機能するには、大気が稼働している必要があります。そのため、sysCFW/emuMMC をストック/OFW と同期するために使用することはできません。
Mission Control を使用してコントローラーのボタンを再マッピングできますか?はい。 Mission Control は公式の Pro コントローラーをエミュレートするため、ファームウェア 10.0.0 で任天堂によって導入された公式の方法を使用してプロ コントローラーを再マッピングできます。再マッピング オプションは、システム メニューのSystem Settings->Controllers and Sensors->Change Button Mapping
にあります。
本体に「ペアリングされました」という通知が表示されますが、コントローラーが接続できません。何が問題なのでしょうか?コントローラーは本体と正常にペアリングされましたが、入力の送信を開始する前にすぐに切断されます。これはさまざまな理由で発生する可能性がありますが、最も一般的な理由は次のとおりです。
/config/MissionControl/controllers/<xxxxxxxxxxxx>/
、ここで<xxxxxxxxxxxx>
コントローラーの Bluetooth MAC アドレスを 12 文字の 16 進数で表したもの) を削除し、Mission Control で新しい構成エントリーを作成してみてください。場合によっては、 controllers
ディレクトリ全体を削除する必要があるかもしれません。注: これらのファイルを削除すると、ユーザーのアナログ スティックやモーション キャリブレーションなど、保存されているコントローラー固有のデータが失われます。これは最も破壊的な手段であるため、上記の提案をすべて行った後、最後に試行する必要があります。Xbox コントローラーが接続できません。サポートされていると言ったと思いますか?見た目は似ていますが、すべての Xbox コントローラーが同じように作られているわけではありません。実際には、さまざまなワイヤレス機能を備えた、いくつかのハードウェア リビジョン/モデル (執筆時点では 7 つ) が利用可能です。 Xbox 本体 (またはワイヤレス USB アダプターを備えた PC) では、すべてのコントローラーで GIP と呼ばれる Microsoft 独自のワイヤレス プロトコルが使用されます。ただし、Bluetooth 接続は同じものではなく、コントローラーのモデルによって異なります。 Bluetooth をサポートしているものとサポートしていないものがあります。対応するものの中には、新しい (現在サポートされていない) Bluetooth Low Energy (LE) 標準を使用しているものや、ファームウェアのアップデート後にそれに切り替えるものもあります。サポートされているモデルは、1708 (Xbox One S) および 1797 (Xbox Elite V2) リビジョンのみです。これらが Bluetooth LE ファームウェア (5.xx.xxxx.x 以降) に更新されている場合は、ファームウェアをレガシー バージョンにダウングレードする必要があります (下記を参照)。 。コントローラーのモデル番号は、バッテリー収納部の内側、またはバッテリーが内蔵されているコントローラーの場合はコントローラーの背面に記載されています。
さまざまなコントローラー リビジョンの詳細 (画像付き) については、ここを参照してください。
Xbox One/Elite V2 コントローラーは以前は接続していましたが、今は接続できません。何が原因でしょうか? 2021 年後半の時点で、Microsoft は、Xbox One/Elite 2 コントローラーを新しい Series X|S コントローラーと一致させることを目的とした新しいコントローラー ファームウェアを導入しました。このファームウェアに更新すると、コントローラーは Bluetooth Low Energy (LE) を使用するように切り替わります。これは、低消費電力に重点を置いた新しい Bluetooth 標準ですが、現在 Mission Control ではサポートされていません。コントローラーのファームウェアがバージョン 5.xx.xxxx.x 以降の場合、新しい LE ファームウェアがインストールされているため、従来のファームウェアにダウングレードする必要があります (https://support.xbox.com/en-US/help/hardware を参照) -ネットワーク/アクセサリ/コントローラ-ファームウェア-復帰)
Xbox 360 コントローラーのサポートを追加できますか?いいえ、現在はそうではありません。これらは Bluetooth を使用しません。ワイヤレスUSBアダプターを使ってシスコンを試してみましょう。
スリープからの復帰のサポートを追加できますか?おそらくそうではありません。私の知る限り、スリープからの復帰には、コントローラーが特別な制御コマンドを Switch Bluetooth ハードウェアに送信することが含まれます。ハードウェア/ファームウェアを変更せずに、スイッチによって認識されるコマンドをスイッチ以外のコントローラーに送信させる方法はありません。
Bluetooth オーディオのサポートを追加できますか?いいえ。スイッチの Bluetooth モジュールは、HID コントローラーを機能させるために必要なサービスの小さなセットのみを実装します。この小規模なサービス セットのうち、システムの残りの部分に公開される高レベルの機能はほんの少数です。オーディオサポートを追加するには、オーディオトランスポートに必要なサービスを実装する必要があり、正常な人であれば、それを実現するために必要な低レベル機能にアクセスするために、Bluetoothモジュールのオープンソースの再実装が必要になるでしょう。ファームウェア 12.0.0 以降、任天堂は Bluetooth オーディオをサポートする機能を追加しました。この機能は公式ソフトウェアでは有効になっていませんが、plutooo は録音をサポートするゲームで Bluetooth オーディオを有効にする nx-btred と呼ばれる実験的な sysmodule を作成しました。 Mission Control にその機能を追加するメリットはあまりありません。ファームウェア 13.0.0 以降、任天堂は Bluetooth オーディオを正式にサポートするようになりました。
私のコントローラーにはオーディオ ジャックが付いていますが、ヘッドセットのサポートを追加できますか?ありそうもない。私の知る限り、ヘッドセットオーディオをサポートするコントローラーは、独自のまたは非標準の手段を介してサポートしています。これは、特定のコントローラーでどのように機能するかを理解するだけでなく、オーディオをサポートするゲームパッドの概念がない場合に、それを何らかの方法で HOS に統合するのにも大変な作業になります。コントローラーが何らかの形式の標準 Bluetooth オーディオを使用していた最良の場合でも、コンソールの通常の帯域幅制限 (途切れ途切れのオーディオ、遅延コントローラー入力など) が依然として発生します。通常のヘッドフォンを使用してください。
Mission Control は、 bluetooth
システム モジュールを中間者として操作し、その初期化 IPC コマンドとシステム イベントを傍受し、送受信データを変換してスイッチが公式の Pro コントローラーと通信していることを認識させることで機能します。
これを実現するために、システムがbtm
およびhid
モジュールを介して IPC 経由でbluetooth
システム イベントと共有メモリを初期化しようとすると、 btdrv.mitm
モジュールはこれらのハンドルを取得します。次に、これらの独自のセカンダリ バージョンを作成し、オリジナルの代わりにハンドルを渡します。これにより、システムに通知する (または通知しない) 前に、データ バッファーに変更を加えることができます。さらに、 WriteHidData
IPC コマンドがインターセプトされ、コントローラーへの発信要求が変換またはドロップされます。後者の場合、偽の応答を共有メモリ内のバッファに直接書き込むことができます。
初期化 IPC コマンドをインターセプトすると、homebrew がbluetooth
サービスを適切に利用できるようになります。通常、システム イベントを初期化または終了する IPC コマンドを呼び出すと、コンソールがクラッシュするか、システム プロセスが保持するイベント ハンドルが無効になります。 btdrv.mitm
を使用すると、homebrew がインターフェイスを初期化しようとするときに代替イベント ハンドルを配布し、システム プロセスによって保持されるイベントの代わりに実際のシステム イベントをリダイレクトすることができます。
bluetooth
モジュールへの exefs パッチは、従来のピンコード ペアリングを使用する Wii/WiiU とその他のコントローラー、Xbox Elite 2 ワイヤレス コントローラーのペアリングを有効にし、新しいファームウェアに追加されたデバイス クラス チェックを緩和して、デバイスがキーボードとして識別できるようにするために提供されています。またはジョイスティックを接続します。
btm
モジュールへの exefs パッチは、 nn:: nn::bluetooth::hal::SetTsi
によって送信されたブロードコム ベンダー コマンドにコントローラーが正しく応答できない場合に、 nn::bluetooth::hal::CloseHidConnection
への呼び出しをスキップするために追加されました。これにより、影響を受けるすべてのコントローラーが接続直後に切断されることがなくなり、 settsi_disable.flag
ファイルを使用して特定のコントローラーに手動でフラグを付ける必要がなくなります。
btm
サービスも MITM 化され、ペアリング データベースに元の名前を保持しながら、その場でコントローラー名を偽装できるようになりました。
まず、ローカル マシンにリポジトリのクローンを作成し、新しくクローンを作成したディレクトリに切り替えます。
git clone --recurse-submodules https://github.com/ndeadly/MissionControl.git
cd MissionControl
Mission Control は現在、Bluetooth サービス ラッパーと型定義を追加する公式 libnx マスターが Mission Control の構築に使用されるようになりました。執筆時点では、devkitPro によって配布されている libnx を自分でビルドする必要なく使用できます。これは、公式リリースに存在しない最先端のlibnx
のカスタム フォークを使用しています。libnx
コミットを使用するようにAtmosphere-libs
更新された場合に変更される可能性があります。いずれの場合も、次のコマンドを使用して、含まれているlibnx
サブモジュールをソースからビルドできます。
cd lib/libnx
make && make install
次にlibstratosphere
ビルドします。ビルド エラーが発生した場合は、必要な依存関係が欠落している可能性があります (https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/building.md を参照)。
cd ../Atmosphere-libs/libstratosphere
make
最後に、ディストリビューション .zip をビルドしてパッケージ化します。これにより、 mc.mitm
sysmodule がビルドされ、Bluetooth exefs パッチとともにパッケージ化されます。
cd ../..
make dist
結果として得られるパッケージは、上で説明したようにインストールできます。
このプロジェクトが気に入ったら、開発を続けるために私をサポートすることを検討してください:)