Pubblicata la versione stabile di MissionControl, dopo ben 5 pre-release, il sysmodule si dimostra come la versione bluetooth del modulo di sistema sys-con che permette di accoppiare una stragrande maggioranza di controller alla console Switch.
Questa versione si rende pienamente compatibile con il firmware 12.x.x, con tanto di supporto per l’abbinamento dei controller Wii e Wii U.
Questa versione si basa sulle funzionalità e sulle correzioni di bug contenute nelle precedenti versioni preliminari, incluso il supporto per i controller aggiuntivi, supporto rumble, file .ini
per la configurazione del modulo globale e molto altro.
[stextbox id=’info’]Nota: Il supporto rumble è ancora altamente work in progress, le vibrazioni riprodotte dai singoli controller potrebbero risultare imperfette rispetto al rombo HD riprodotto dai controller della console Switch.[/stextbox]
Il supporto Rumble si rende disponibile per i principali controller di casa Nintendo, Microsoft e Sony ed è abilitato per impostazione predefinita.
[stextbox id=’info’]Nota: La posizione utilizzata nelle pre-release per il modulo config .ini
è stata modificata in sdmc:/config/MissionControl/missioncontrol.ini
per essere più coerente con altri progetti homebrew.[/stextbox]
Caratteristiche
- Supporta tutte le versioni del firmware.
- Associa i controller Bluetooth in modo nativo tramite la schermata
Cambia impugnatura/ordine
. - Rimappatura nativa dei pulsanti (firmware 10.0.0+).
- Il sismodule
btdrv-mitm
aggiunge i comandi IPC di estensione che possono essere utilizzati per interagire con il processo bluetooth senza interferire con lo stato del sistema.
Controller supportati
Attualmente sono supportati i seguenti controller. Se disponi di una variante di terze parti di uno dei seguenti o di un controller Bluetooth che non è stato elencato, valuta la possibilità di inviare un problema con i dettagli del controller, inclusi vid/pid, per richiedere supporto.
- Nintendo Wii Remote + estensioni (Nunchuck, Classic Controller, Classic Controller Pro, SNES Mini, TaTaCon (Taiko drum)).
- Nintendo WiiU Pro Controller.
- Sony DualShock4 Controller.
- Sony Dualsense Controller.
- Microsoft Xbox One S/X Controller (da non confondere con i controller Series S/X: utilizzano Bluetooth LE, che attualmente non è supportato)*.
- NVidia Shield Controller.
- Ouya Controller.
- Gamestick Controller.
- Gembox Controller.
- iCade Controller.
- Ipega Controllers (9017s, 9023, 9055, 9062S, 9076, 9078, 9087 9096 confermato funzionante. Anche altri potrebbero funzionare).
- Xiaomi Mi Controller.
- Steelseries Free.
- Steelseries Nimbus.
- Steelseries Stratus Duo.
- GameSir G3s.
- GameSir G4s.
- GameSir T1s.
- Hori Onyx.
- 8bitDo SN30 Pro Xbox Cloud Gaming Edition.
- 8BitDo ZERO (la maggior parte degli altri controller 8BitDo ha una modalità Switch disponibile. Potrebbe richiedere l’aggiornamento del firmware).
- PowerA Moga Hero.
- PowerA Moga Pro.
- PowerA Moga Pro 2.
- Mad-Catz C.T.R.L.R.
- Razer Raiju Tournament.
- Razer Serval.
- Mocute 050.
- Gen Game S3.
- AtGames Legends Pinball Controller.
[stextbox id=’info’]Nota: Non tutti i controller wireless per Xbox One supportano il Bluetooth. Le varianti precedenti utilizzano un protocollo proprietario a 2,4 Ghz e non possono essere utilizzate con la console Switch. Vedere qui per informazioni sull’identificazione della variante Bluetooth.[/stextbox]
Requisiti
- Una console Nintendo Switch hackerabile con una versione aggiornata del Custom Firmware Atmosphère. Altri firmware personalizzati non sono supportati.
- Controller Bluetooth compatibile.
Installazione
Scaricare l’archivio .zip
ed estrarlo direttamente nella directory principale della tua scheda SD. Affinché MissionControl diventi attivo, è necessario riavviare la console.
Si consiglia dopo il riavvio di scollegare anche i controller fisicamente collegati dalla console, eliminare il database di accoppiamento e ricollegare tramite Bluetooth per assicurarsi che i controller Switch esistenti abbiano l’ID hardware corretto memorizzato e possano essere riconosciuti correttamente.
Per eliminare il database, accedere a Impostazioni di sistema-> Controller e sensori-> Disconnetti controller.
[stextbox id=’alert’]Importante: Atmosphère >= 0.19.5 è necessario per eseguire questa versione. L’utilizzo di una versione precedente di Atmosphère causerà l’arresto anomalo di Mission Control all’avvio. Si consiglia inoltre agli utenti che eseguono l’aggiornamento dalla versione precedente di MissionControl di cancellare il database di accoppiamento e di ricollegare i controller. La mancata cancellazione delle vecchie voci potrebbe causare il rilevamento errato dei controller non switch.[/stextbox]
Utilizzo
Installare MissionControl sulla scheda SD, riavviare la console Switch e accoppiare i controller come faresti normalmente tramite la schermata Controller > Cambia impugnatura/ordine. Una volta accoppiati, i controller si riconnetteranno automaticamente quando vengono svegliati.
La maggior parte delle funzionalità native dovrebbe funzionare (ad eccezione di cose come l’aggiornamento del firmware). Se trovi qualcosa che non funziona, apri un problema.
Associazione controller
I controller supportati hanno ciascuno i propri metodi per accedere alla modalità di associazione/sincronizzazione. Di seguito sono riportate le istruzioni per accedere a questa modalità per ogni tipo supportato.
Controller Wii (U)
Premere il pulsante rosso di sincronizzazione sul retro del controller. I LED del controller lampeggiano rapidamente.
Controller Dualshock4
Tieni premuti contemporaneamente i pulsanti + finché la barra luminosa non inizia a lampeggiare. Se eseguito correttamente, lo schema di lampeggiamento assomiglierà a un battito cardiaco, altrimenti lampeggerà periodicamente.
Controller Xbox One
Premere e tenere premuto il pulsante guida (X) finché il LED non inizia a lampeggiare. Quindi premere e tenere premuto il piccolo pulsante di sincronizzazione sul retro vicino alla porta di ricarica finché il LED non inizia a lampeggiare più rapidamente.
Dovresti anche assicurarti che il firmware del controller sia aggiornato, poiché i vecchi firmware erano noti per avere un bluetooth flakey.
Per altri controller fare riferimento al manuale utente del controller per informazioni su come metterlo in modalità di sincronizzazione.
Come funziona
MissionControl funziona da Man-In-The-Middling al modulo del sistema Bluetooth
e intercettando i suoi comandi IPC di inizializzazione e gli eventi di sistema e traducendo i dati in entrata/uscita per convincere lo Switch che sta comunicando con un Controller Pro ufficiale.
Per ottenere ciò, il modulo btdrv-mitm
ottiene gli handle per gli eventi di sistema bluetooth
e la memoria condivisa quando il sistema tenta di inizializzarli su IPC tramite i moduli btm
e hid
. Quindi crea le proprie versioni secondarie di questi e passa i loro handle invece dell’originale.
Ciò consente di apportare modifiche a qualsiasi buffer di dati prima di notificare (o meno) il sistema. Inoltre, il comando IPC WriteHidData
viene intercettato per tradurre o eliminare le richieste in uscita al controller. In quest’ultimo caso, risposte false possono essere scritte direttamente nel buffer della memoria condivisa.
L’intercettazione dei comandi IPC di inizializzazione consente inoltre agli homebrew di utilizzare correttamente il servizio bluetooth. Normalmente, la chiamata di uno qualsiasi dei comandi IPC che inizializzerebbero o finalizzerebbero gli eventi di sistema causerebbe un arresto anomalo della console o invaliderebbe gli handle di eventi tenuti dai processi di sistema.
Con btdrv-mitm
siamo in grado di distribuire gestori di eventi alternativi quando l’homebrew tenta di inizializzare un’interfaccia e reindirizzare gli eventi di sistema reali a quelli invece degli eventi contenuti nei processi di sistema.
Le patch IPS al modulo Bluetooth
sono fornite per (ri)abilitare il passaggio di codici PIN abitrari quando viene utilizzato l’accoppiamento legacy Bluetooth (Nintendo codifica un valore di '0000'
, ignorando gli argomenti IPC). Ciò consente ai dispositivi Wii (U) di essere associati alla console.
Caratteristiche pianificate
- Applicazione per la gestione del controller.
- Supporto Rumble.
- Supporto per il movimento.
- Supporto per tastiera e mouse.
Changelog v0.5.0
- Aggiunto supporto per i seguenti controller:
- Razer Raiju Tournament.
- Gamesir T1s.
- 8BitDo SN30 Pro Xbox Cloud Gaming Edition.
- Mad Catz C.T.R.L.R for Samsung.
- Steelseries Stratus Duo.
- iCade controller.
- LanShen X1Pro.
- AtGames Legends Pinball controller.
- Aggiunto il supporto completo per il firmware 12.0.0.
- Aggiunte patch ips per tutti i firmware 12.x.x per rilassare i controlli della classe del dispositivo aggiunti in 12.0.0. Ciò consente a ipega e a molti altri controller che si pubblicizzano come tastiere o altri dispositivi di input di accoppiarsi nuovamente.
- Aggiunte patch ips per tutti i firmware 12.x.x per far funzionare nuovamente Wii/WiiU e altri controller che utilizzano l’associazione di codici pin legacy.
- Aggiunto il supporto del rumble iniziale per i principali controller di console selezionati.
- Aggiunto un file ini di configurazione del modulo globale.
- Aggiunto supporto per lo spoofing del nome e dell’indirizzo dell’adattatore host Bluetooth.
- Aggiunto il supporto per i LED del lettore Sony Dualsense/colore della barra luminosa e la segnalazione del livello della batteria (grazie @Hydr8gon).
- Aggiunto il supporto per il vecchio formato di report del controller Xbox One. L’aggiornamento del firmware del controller non è più un requisito per la corretta mappatura dei controlli.
- Aggiunto supporto per un formato di report alternativo per i controller Mocute 050 su alcune revisioni del firmware.
- Aggiunta un’opzione di configurazione per disabilitare la barra luminosa a LED sui controller Sony Dualshock4 e Dualsense.
- Le combinazioni di pulsanti per i pulsanti
Home
eCapture
ora vengono applicate anche ai controller Nintendo ufficiali. Nota che attualmente la console ignorerà le combo per i pulsanti che non dovrebbero essere presenti sul controller (es. pulsante home sul joycon sinistro, pulsante di acquisizione a destra). - Corretto un bug causato dal passaggio di dati di calibrazione di fabbrica della levetta analogica non validi per i controller emulati. Questo bug influiva in una certa misura sul ridimensionamento dei dati dello stick analogico per tutti i controller, ma era più evidente per i controller Xbox One, dove i valori dello stick raggiungevano il massimo quando lo stick era inclinato solo del 60-70% circa.
- Aggiunti ritardi tra la lettura/scrittura della memoria del controller durante l’inizializzazione delle estensioni del controller Wii. Ciò dovrebbe rendere più affidabile il rilevamento dei controller di estensione per le persone che hanno riscontrato problemi.
- Frequenza di segnalazione predefinita ridotta del controller Dualshock4 da 1000Hz a 125Hz per adattarsi al controller Switch Pro. Questo risolve un problema per cui l’utilizzo di un controller Dualshock4 potrebbe degradare seriamente le prestazioni wifi e causare problemi con la riproduzione LAN.
- Il comando SetTsi ora non può essere inviato solo ai controller in cui è noto creare problemi (attualmente i controller Xbox One e Gamesir). Ciò risolve un problema per cui un controller Dualshock4 collegato insieme a un controller Nintendo ufficiale subirebbe un jitter significativo, rendendolo inadatto ai giochi ritmici. Anche il blocco di questo comando potrebbe aver avuto un ruolo nei problemi del wifi sopra menzionati.
- Corretto un bug per cui alcuni pulsanti del wiimote non potevano essere premuti con un controller di estensione collegato.
- Corretto un bug per cui i controller Xiaomi mostravano sempre livelli di batteria bassi o scarichi.
- Migliorata la precisione della segnalazione del livello della batteria in generale.
- Rimosso il fork personalizzato di libnx ora che tutte le modifiche rilevanti sono state upstream. Il sottomodulo libnx ora punta al ramo master ufficiale e, al momento della scrittura, Mission Control può essere compilato con la versione ufficiale di devkitPro senza la necessità di compilarlo da soli.
- Rimossa la chiamata alla funzione CheckApiVersion. Questo era inteso per l’utilizzo interno di Atmosphere ed era uno dei motivi principali per cui Mission Control richiedeva spesso un aggiornamento dopo una nuova versione di Atmosphere.
- Aggiornato per utilizzare la nuova semantica sf introdotta in Atmosphere 0.18.0.
- Aggiornato per utilizzare l’ultima libstratosphere. Ciò riduce le dimensioni del modulo di quasi il 50%.
- Aggiunto ramo git, commit hash e versione con tag durante la generazione di file
.zip
per la distribuzione.
Problemi noti e limitazioni
- Controlli di movimento attualmente non supportati.
- I controller non Switch non possono essere utilizzati per riattivare il sistema dalla sospensione.
- I controller che utilizzano lo standard Bluetooth LE (BLE) non sono attualmente supportati e non si collegheranno al sistema.
- I controller Xbox One Elite V2 non possono completare il processo di associazione con la console e in alcuni casi ne causano l’arresto anomalo. Senza l’accesso a un controller fisico non c’è molto che posso fare per eseguire il debug del processo.
- Xbox One, Wii/WiiU e (soprattutto) alcuni controller Dualshock v1 possono richiedere del tempo per essere rilevati e successivamente accoppiati con la console. Siate pazienti e rientrate nella modalità di sincronizzazione del controller più volte, se necessario. Una volta sincronizzati, i controller dovrebbero funzionare normalmente.
Il layout dei pulsanti di Xbox One è stato modificato a un certo punto in un aggiornamento del firmware. Assicurati che il firmware del controller sia aggiornato se hai problemi con le mappature dei pulsanti errate. Entrambi i layout sono ora supportati.- I livelli della batteria del controller riportati potrebbero non essere corretti. Mi baso interamente sulle note di reverse engineering trovate su Internet per questi. In molti casi non possiedo il controller e semplicemente non ci sono informazioni disponibili, quindi questi controller mostreranno sempre la batteria piena. Qualsiasi aiuto per migliorare questo è il benvenuto.
- Diversi utenti hanno segnalato controller WiiU knockoff che non possono essere rilevati dalla console durante il rilevamento Bluetooth. Sfortunatamente penso che stiano usando un chipset Bluetooth incompatibile.
FAQ
Domanda: Funziona su <insert CFW here>?
Risposta: No. MissionControl funzionerà solo con Atmosphère. Questo non è un meschino atto di malizia verso altri Custom Firmware e i loro utenti. Altri semplicemente non forniscono (attualmente) il framework necessario per il funzionamento di questo sysmodule.
Domanda: Questo supporta i controller USB?
Risposta: No. MissionControl per ora è solo Bluetooth.
Domanda: Funziona con sys-con installato?
Risposta: Sì, ho ricevuto diversi rapporti dagli utenti che i due possono essere utilizzati insieme senza problemi.
Domanda: L’installazione di questo ha bloccato la mia console !!!!!11!!1!11
Risposta: No. Se al riavvio della console vengono visualizzati errori relativi al titolo 0100000000000008
, quasi certamente stai utilizzando una versione di Atmosphere obsoleta. Installare sempre e comunque la versione più recente e seguire nuovamente le istruzioni di installazione di MissionControl.
Domanda: Come posso usarlo con più configurazioni di avvio di sysNAND/emuMMC?
Risposta: L’accoppiamento dei controller su più installazioni HOS univoche richiede più database di accoppiamento ed è essenzialmente lo stesso dell’accoppiamento con due diverse console. L’unica eccezione è il caso in cui hai accoppiato i controller prima di creare copie di sysNAND. Per ora dovrai riassociare i tuoi controller quando passi avanti e indietro. In futuro spero di includere un’opzione per caricare/memorizzare il database sulla scheda SD per evitare questo problema.
Domanda: Perché i miei controller Joycon/Switch Pro ufficiali hanno smesso di funzionare tramite Bluetooth dopo l’installazione di MissionControl?
Risposta: È possibile accoppiare questi controller tramite le guide Joycon o una connessione USB. In questi casi un ID hardware spazzatura viene archiviato nel database di accoppiamento e il controller non viene identificato. La mancata identificazione di un controller significa che non so come devono essere gestiti i suoi dati di input, quindi lo ignoro. Questo problema può essere risolto disconnettendo fisicamente il controller dalla console, eliminando il database di accoppiamento con l’opzione Impostazioni di sistema-> Controller e sensori-> Disconnetti controller, quindi ricollegando tramite Bluetooth nella schermata Cambia presa / ordine. Questo non dovrebbe più essere un problema con l’ultima versione di MissionControl.
Domanda: Perché il mio controller knockoff di terze parti non funziona?
Risposta: Molti controller di terze parti utilizzano anche ID hardware inutili, rendendoli difficili da identificare in modo affidabile. Se un controller non può essere identificato, lo ignoro, poiché non ho idea di come elaborare i dati in arrivo. Attualmente sto cercando di trovare un modo alternativo per identificarli senza creare problemi altrove. Come sopra.
Domanda: I pulsanti del controller Xbox One non sono mappati correttamente. Puoi aggiustarlo?
Risposta: Non hai letto la sezione Problemi noti e limitazioni, vero? è necessario aggiornare il firmware del controller alla versione più recente. Questa operazione può essere eseguita su Windows utilizzando l’app Accessori Xbox. Puoi anche farlo sulla Xbox stessa.
Domanda: Potete aggiungere il supporto per i controller PS3?
Risposta: È sulla mia lista di cose da esaminare. Il processo di accoppiamento non è standard e potrebbe richiedere modifiche al driver Bluetooth. Se può essere fatto in modo non distruttivo, aggiungerò eventualmente il supporto.
Domanda: Puoi aggiungere il supporto per i controller Xbox 360?
Risposta: No. Questi non usano il Bluetooth. Prova il sys-con con un adattatore USB wireless.
Domanda: Puoi aggiungere il supporto audio Bluetooth?
Risposta: No. Il modulo bluetooth sullo switch implementa solo una piccola serie di servizi necessari per far funzionare i controller nascosti. Di questo piccolo insieme di servizi, solo una manciata di funzioni di alto livello sono esposte al resto del sistema. L’aggiunta del supporto audio richiederebbe l’implementazione dei servizi necessari per il trasporto audio, per i quali qualsiasi persona sana di mente richiederebbe una reimplementazione open source del modulo bluetooth per avere accesso alle funzioni di basso livello richieste per eseguirlo.
Download: MissionControl v0.5.0
Download: Source code MissionControl v0.5.0
Fonte: gbatemp.net