透過藍牙在您的 Nintendo Switch 上使用本機其他控制台的控制器。無需加密狗或其他外部硬體。
mc.mitm
模組新增了擴展 IPC 命令,可用於與bluetooth
進程交互,而不會幹擾系統狀態。目前,支援以下控制器。如果您有以下其中一項的第三方變體,或未列出的藍牙控制器,請考慮提交控制器請求問題。
*並非所有 Xbox One 無線控制器都支援藍牙。較舊的版本使用專有的 2.4Ghz 協議,無法與 Switch 一起使用。有關識別藍牙變體的信息,請參閱此處。
下載最新版本的 .zip 並解壓縮到 SD 卡的根目錄,允許資料夾合併並覆蓋任何現有檔案。重新啟動控制台以啟動模組即可完成!
重要提示:要在韌體 19.0.0 上執行最新版本的 Mission Control,需要 Atmosphère >= 1.8.0。使用較舊的 Atmosphère 版本將導致任務控制在啟動時崩潰或凍結系統。
Mission Control 主要是一個系統模組(後台進程),在啟動時由 Atmosphère 加載,並與作業系統的其餘部分一起無限期地運行。它允許使用不支援的藍牙控制器,就像它們是本機 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 控制器按住guide
( X
) 按鈕,直到 LED 開始閃爍。然後按住背面靠近充電埠的小同步按鈕,直到 LED 開始更快閃爍。
注意:控制器韌體版本 5.xx.xxxx.x 及更高版本使用藍牙低功耗,目前不支援。請參閱常見問題解答,以了解有關降級到相容韌體的說明
其他控制器請參閱控制器的使用手冊,以了解如何將其置於同步模式的資訊。請注意,許多通用藍牙控制器可以以多種模式之一啟動。通常您需要選擇 HID、PC 或 Android 模式才能使其正常運作。
成功配對但尚未正式支援的控制器將在Controllers
選單上顯示紅色按鈕,以指示其控制項尚未對應。請開啟一個問題來請求對此類控制器的支援。
config .ini 檔案的範本將安裝到/config/MissionControl/missioncontrol.ini.template
。若要修改預設模組設置,請將範本複製到/config/MissionControl/missioncontrol.ini
並取消註解(刪除前導;
)並修改要變更的任何設定。該文件僅在啟動時解析,因此您所做的任何變更都需要重新啟動才能生效。無法正確解析/驗證的設定條目將被忽略。目前只有一小部分配置設置,但這將在未來的版本中進行擴展。
[general]
這些是任務控制功能的常規設定。
enable_rumble
啟用/停用對非官方控制器的隆隆聲支援。enable_motion
啟用/停用運動控制支援。 [bluetooth]
這些設定可用於欺騙您的 Switch 藍牙,使其顯示為另一個裝置。如果您想在多個裝置上使用控制器而無需每次切換時重新配對,這可能很有用(與連結金鑰結合使用)。請注意,更改這些設定將使儲存在任何先前配對的控制器中的控制台資訊無效,並且需要重新配對。
host_name
覆蓋藍牙主機適配器名稱。host_address
覆蓋藍牙主機適配器位址。 [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
來擦除藍牙配對資料庫
以下是我目前正在開發或將來想要研究的功能列表,大致按優先順序降序排列。如果您有任何您認為會成為有用功能的想法,歡迎提出請求。
/config/MissionControl/controllers
目錄中。如果此目錄樹的任何部分損壞,則在嘗試讀取配置資料失敗時控制器可能會斷開連接。它可以在 <在此插入 CFW> 上運行嗎?不可以。這並不是試圖鎖定其他 CFW 的用戶,Atmosphere 只是唯一提供 MITM 藍牙通訊所需擴充的模組,從而使該系統模組成為可能。
使用此功能會導致我被禁止上網嗎?目前還沒有任何確認的因運行任務控製而被禁止的案例。也就是說,在 CFW 下運行任何非官方軟體都將始終面臨非零的禁令風險,而任天堂可以隨時更改其禁令標準。雖然任務控制應該相對安全,因為它只是模擬正在連接的專業控制器,但如果任天堂有興趣這樣做,肯定有可能檢測到您已將非官方控制器連接到控制台。請自行決定使用。
這支援 USB 控制器嗎?不,任務控制目前僅支援藍牙。現在您可以使用 cathery 的 sys-con 作為 USB 控制器。
安裝了 sys-con 後這可以工作嗎?是的,兩者可以同時運行,沒有問題。
由於這個系統模組,我的控制台在啟動時崩潰。我能做些什麼?如果您發現 Mission Control 的標題 ID ( 010000000000bd00
) 在啟動時崩潰,則可能是您最近更新到了新的 Atmosphere 版本並且需要更新 Mission Control,或者您正在執行舊版本的 Atmosphere與最新版本的任務控制不相容。 sm
中的崩潰(標題 ID 0100000000000004
)可能表示目前 Atmosphere 與一個或多個自製系統模組之間的版本不相容。這可能是由 Mission Control 引起的,也可能是另一個使用 libstratosphere 的自訂系統模組引起的,即使看起來似乎是 Mission Control 造成的( ldn_mitm
和emuiibo
是常見的罪犯)。如果您剛剛更新了 Atmosphere,您應該始終檢查是否也為您使用的 sysmodules 發布了更新。 qlaunch 錯誤(標題 ID 0100000000001000
)可能表示您執行了太多自訂系統模組,並且正在耗盡可用的有限系統資源。檢查您的/atmosphere/contents
資料夾並確認您確實需要其中的所有內容。如果您不知道自己在做什麼,則完全刪除此資料夾,重新安裝氣氛,然後僅明確重新安裝您需要的 sysmodules 可能會更容易。
我安裝了任務控制,但它沒有執行任何操作。幫助!任務控制主要是一個後台程序。除了您的控制器透過任天堂官方選單成功連接之外,您的系統沒有任何視覺變化表明它已安裝。如果您已按照上述使用和配對說明進行操作,但仍無法使其正常運作,請參閱以下基本故障排除清單。
DPAD_UP
+ MINUS
按鈕。如果模組正在運行,這將充當捕獲按鈕並截取螢幕截圖。如果您沒有看到螢幕截圖通知,則可能尚未載入任務控制。這通常是由於安裝錯誤造成的,並且可能有多種原因造成:如何將其與多個 sysNAND/emuMMC 啟動配置一起使用?跨多個獨特的 HOS 安裝配對控制器需要多個配對資料庫,本質上與與兩個不同控制台配對相同。唯一的例外是在製作 sysNAND 副本之前配對控制器的情況。目前,您在來回切換時必須重新配對控制器。將來我希望包含一個在 SD 卡上載入/儲存資料庫的選項,以避免這個問題。從版本 1.5.1 開始,Atmosphere 現在包含我貢獻的程式碼,用於透過 sd 卡上的檔案同步 sysNAND 和 emuMMC 之間的藍牙配對資料庫。可以透過在atmosphere/config/system_settings.ini
中的[atmosphere]
部分新增enable_external_bluetooth_db = u8!0x1
來啟動此功能。注意:此功能需要運行大氣才能發揮作用。因此,它不能用於將 sysCFW/emuMMC 與 stock/OFW 同步。
我可以使用 Mission Control 重新映射控制器按鈕嗎?是的。由於 Mission Control 模擬官方 Pro 控制器,因此您可以使用任天堂在韌體 10.0.0 中引入的官方方法重新映射它們。您可以在系統選單中的System Settings->Controllers and Sensors->Change Button Mapping
下找到重新映射選項。
我的控制台顯示“已配對”通知,但我的控制器無法連接,出了什麼問題?您的控制器已成功與控制台配對,但不久之後就會斷開連接,然後才能開始發送輸入。發生這種情況的原因有很多,最常見的是:
/config/MissionControl/controllers/<xxxxxxxxxxxx>/
,其中<xxxxxxxxxxxx>
是控制器藍牙MAC 位址的12 個字元的十六進位表示形式)並讓Mission Control 建立一個新配置條目。在某些情況下,可能需要刪除整個controllers
目錄。注意:刪除這些檔案時,您將遺失任何儲存的控制器特定數據,例如使用者模擬搖桿或運動校準。由於這是最具破壞性的措施,因此您應該在用盡上述建議後最後嘗試。我的 Xbox 控制器無法連接,我以為您說它們受支援?儘管它們看起來很相似,但並非所有 Xbox 控制器都是一樣的。實際上有幾種可用的硬體修訂/型號(在撰寫本文時有 7 個)具有不同的無線功能。在 Xbox 控制台(或具有無線 USB 轉接器的 PC)上,所有控制器都使用稱為 GIP 的專有 Microsoft 無線協定。然而,藍牙連接並不是一回事,並且因控制器型號而異。有的支援藍牙,有的不支援。其中一些正在使用較新的(目前不受支援的)藍牙低功耗 (LE) 標準,或在韌體更新後切換到該標準。唯一支援的型號是 1708 (Xbox One S) 和 1797 (Xbox Elite V2) 修訂版。如果這些已更新為藍牙 LE 韌體(5.xx.xxxx.x 及更高版本),您將需要將韌體降級到舊版本(請參閱下文)。 。控制器型號可以在電池盒內部找到,或在具有內建電池的控制器的控制器背面找到。
有關各種控制器修訂版(帶圖像)的更多詳細信息,請參閱此處。
我的 Xbox One/Elite V2 控制器過去可以連接,但現在無法連接,這是怎麼回事?截至 2021 年末,微軟推出了新的控制器韌體,旨在使 Xbox One/Elite 2 控制器與較新的 Series X|S 控制器保持一致。更新到此韌體會將控制器切換為使用藍牙低功耗 (LE),這是一種專注於低功耗的新藍牙標準,任務控制目前不支援該標準。如果您的控制器韌體版本為5.xx.xxxx.x 或更高版本,則您擁有新的LE 固件,並且需要降級到舊版固件(請參閱https://support.xbox.com/en-US /help/hardware -網路/配件/控制器韌體版本)
可以新增對 Xbox 360 控制器的支援嗎?不,目前還沒有。這些不使用藍牙。嘗試使用無線 USB 轉接器進行 sys-con。
您可以添加從睡眠中喚醒的支援嗎?可能不會。據我所知,從睡眠中喚醒需要控制器向 Switch 藍牙硬體發送特殊的控制命令。沒有辦法讓非交換器控制器在不修改其硬體/韌體的情況下發送交換器識別的命令。
可以添加藍牙音訊支援嗎?不會。在這一小組服務中,只有少數高級功能暴露給系統的其餘部分。添加音訊支援需要實現音訊傳輸所需的服務,為此任何理智的人都需要開源地重新實現藍牙模組,以便存取實現該功能所需的低階功能。從韌體 12.0.0 開始,任天堂添加了支援藍牙音訊的功能。雖然官方軟體尚未啟用該功能,但 plutooo 創建了一個名為 nx-btred 的實驗性系統模組,可在支援錄音的遊戲中啟用藍牙音訊。將其功能添加到任務控制中對我來說並沒有多大好處。自韌體 13.0.0 起,任天堂正式支援藍牙音訊。
我的控制器有音訊插孔,可以添加耳機支援嗎?不太可能。據我所知,支援耳機音訊的控制器是透過專有或非標準方式實現的。這將是一項艱鉅的工作,不僅要了解它如何適用於特定控制器,而且當它沒有支援音訊的遊戲手把概念時,還要以某種方式將其整合到 HOS 中。在最好的情況下,控制器使用某種形式的標準藍牙音頻,您仍然會受到控制台通常的頻寬限制(斷斷續續的音頻、滯後的控制器輸入等)。只需使用普通耳機即可。
任務控制的工作原理是中間人bluetooth
系統模組並攔截其初始化 IPC 命令和系統事件,並轉換傳入/傳出資料以使 Switch 相信它正在與官方 Pro 控制器進行通訊。
為了實現這一點,當系統嘗試透過btm
和hid
模組透過 IPC 初始化bluetooth
系統事件和共享記憶體時, btdrv.mitm
模組會取得它們的句柄。然後,它創建自己的輔助版本,並傳遞它們的句柄而不是原始句柄。這允許在通知(或不通知)系統之前對任何資料緩衝區進行修改。此外, WriteHidData
IPC 命令被攔截以轉換或丟棄對控制器的傳出請求。在後者的情況下,假回應可以直接寫入共享記憶體中的緩衝區。
攔截初始化 IPC 命令還允許自製程式正確使用bluetooth
服務。通常,呼叫任何初始化或完成系統事件的 IPC 命令都會導致控制台崩潰,或使系統程序持有的事件句柄無效。透過btdrv.mitm
當自製程式嘗試初始化介面時,我們能夠分發替代事件句柄,並將真實的系統事件重新導向到那些事件,而不是系統程序所持有的事件。
提供了bluetooth
模組的exefs 補丁,以啟用Wii/WiiU 和其他使用舊版pincode 配對的控制器、Xbox Elite 2 無線控制器的配對,並放寬在較新韌體上新增的裝置類別檢查,以允許裝置識別為鍵盤或要連接的操縱桿。
新增了btm
模組的 exefs 補丁,以便在控制器無法正確回應nn::bluetooth::hal::CloseHidConnection
nn::bluetooth::hal::SetTsi
::CloseHidConnection 的呼叫。這可以防止所有受影響的控制器在連接後立即斷開連接,並且無需使用settsi_disable.flag
檔案手動標記某些控制器。
btm
服務現在也是 MITM,允許動態偽造控制器名稱,同時在配對資料庫中保留原始名稱。
首先,將儲存庫克隆到本機並切換到新克隆的目錄
git clone --recurse-submodules https://github.com/ndeadly/MissionControl.git
cd MissionControl
任務控制目前使用官方 libnx master 現在用於建立任務控制。在撰寫本文時,可以使用 devkitPro 分發的 libnx,無需自行建置。如果libnx
的自訂分支,新增藍牙服務包裝器和類型定義。Atmosphere-libs
更新為使用官方版本中不存在的前緣libnx
提交,這可能會改變。在任何情況下,您都可以使用以下命令從原始程式碼建立包含的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
系統模組並將其與藍牙 exefs 補丁一起打包。
cd ../..
make dist
可以按照上述方法安裝產生的套件。
如果您喜歡這個項目,請考慮支持我繼續開發:)