Use controles de outros consoles nativamente no seu Nintendo Switch via Bluetooth. Não são necessários dongles ou outro hardware externo.
mc.mitm
adiciona comandos IPC de extensão que podem ser usados para interagir com o processo bluetooth
sem interferir no estado do sistema.Atualmente, os seguintes controladores são suportados. Se você tiver uma variante de terceiros de um dos itens abaixo ou um controlador Bluetooth que não esteja listado, considere enviar um problema de solicitação de controlador.
* Nem todos os controladores sem fio do Xbox One suportam Bluetooth. Variantes mais antigas usam um protocolo proprietário de 2,4 GHz e não podem ser usadas com o Switch. Veja aqui informações sobre como identificar a variante Bluetooth.
Baixe a versão .zip mais recente e extraia para a raiz do seu cartão SD, permitindo que as pastas mesclem e substituam quaisquer arquivos existentes. Reinicie seu console para ativar o módulo e pronto!
IMPORTANTE: Atmosphère >= 1.8.0 é necessário para executar a versão mais recente do Mission Control no firmware 19.0.0. Usar uma versão mais antiga do Atmosphère fará com que o Mission Control trave ou congele o sistema na inicialização.
O Mission Control é principalmente um sysmodule (processo em segundo plano) que é carregado pelo Atmosphère no momento da inicialização e é executado indefinidamente junto com o resto do sistema operacional. Ele permite o uso de controladores Bluetooth não suportados como se fossem Pro Controllers nativos. Isso significa que você pode emparelhar e configurar novos controladores através dos menus do próprio sistema da Nintendo, sem a necessidade de carregar aplicativos homebrew adicionais. Não há (atualmente) nenhum "aplicativo" de Controle de Missão para ser aberto.
Os controladores devem primeiro ser emparelhados com o console (veja abaixo) antes de poderem ser usados. Uma vez emparelhados, os controladores procurarão e se reconectarão ao console automaticamente quando forem ativados. Não há necessidade de emparelhá-los novamente todas as vezes. Observe que controladores não oficiais não podem ser usados para ativar o console.
Uma vez conectado, os botões do seu controlador são mapeados o mais próximo possível do layout físico de um Switch Pro Controller. Isso significa que os botões A/B e X/Y serão trocados por controladores que usam um layout de botão estilo Xbox em vez de usar o que está impresso no botão. Os combos de botões MINUS + DPAD_UP
e MINUS + DPAD_DOWN
são fornecidos para todos os controladores para funcionarem como uma alternativa aos botões CAPTURE
e HOME
nos casos em que não há botões frontais suficientes disponíveis. Os mapeamentos de botões podem ser alterados no menu oficial do sistema em System Settings->Controllers and Sensors->Change Button Mapping
.
A maioria dos outros recursos nativos deve funcionar (com exceção de coisas como atualização de firmware). Se você encontrar algo quebrado, abra um problema de suporte nesta página do github.
A Nintendo fez algumas escolhas de nomenclatura bastante confusas com os itens de menu do controlador. Os controladores são emparelhados no menu do sistema em Controllers->Change Grip/Order
e não Pairing New Controllers
ou Search for Controllers
, como o bom senso pode levar você a esperar. Nesta tela, coloque seu controlador no modo de emparelhamento (veja abaixo) e aguarde alguns segundos. Se for bem-sucedido, você verá uma notificação Paired
no canto superior esquerdo da tela. Seu controlador agora está emparelhado e pode ser reconectado a qualquer momento sem a necessidade de entrar novamente nesta tela. O novo emparelhamento só é necessário se você conectou o controlador a outro dispositivo ou emummc.
Cada controlador suportado tem seus próprios métodos para entrar no modo de emparelhamento/sincronização. Abaixo estão instruções sobre como entrar neste modo para alguns dos controladores de console comuns.
Controladores Nintendo Wii/WiiU Pressione o botão vermelho de sincronização na parte traseira do controlador. Os LEDs do controlador piscarão rapidamente.
Recomenda-se que você execute uma calibração do stick analógico para esses tipos de controlador, quando aplicável, pois cada controlador tem faixa de stick analógico e posição central diferentes, mas, diferentemente dos controladores Switch, não há calibração de fábrica armazenada.
Controlador Sony Dualshock3 Para emparelhar este controlador, você precisará conectá-lo ao console via cabo USB. Assim que os LEDs do controlador começarem a piscar, desconecte o cabo USB e aperte o botão PS
.
Nota: para evitar comportamento indesejado ao usar o controlador no modo com fio USB, isso só funciona na tela normal Controllers->Change Grip/Order
.
Controladores Sony Dualshock4/Dualsense Pressione e segure os botões share
PS
+ simultaneamente até que a barra de luzes comece a piscar. Quando feito corretamente, o padrão de intermitência se assemelhará a um batimento cardíaco; caso contrário, piscará continuamente.
Se você tiver dificuldade em emparelhar o controlador com o console, pressione e segure o botão reset na parte traseira do controlador por alguns segundos e tente novamente. Às vezes, isso é necessário depois de conectar-se a um console Playstation ou outro dispositivo.
Controladores Microsoft Xbox One/Elite 2 Pressione e segure o botão guide
( X
) até que o LED comece a piscar. Em seguida, pressione e segure o pequeno botão de sincronização na parte traseira, próximo à porta de carregamento, até que o LED comece a piscar mais rapidamente.
Observação: as versões de firmware do controlador 5.xx.xxxx.x e superiores usam Bluetooth Low Energy e não são suportadas atualmente. Consulte o FAQ para obter instruções sobre como fazer o downgrade para um firmware compatível
Outros controladores Consulte o manual do usuário do seu controlador para obter informações sobre como colocá-lo no modo de sincronização. Observe que muitos controladores Bluetooth genéricos podem ser iniciados em um dos vários modos. Normalmente você deseja escolher algo como o modo HID, PC ou Android para que funcione corretamente.
Os controladores que emparelharem com sucesso, mas ainda não tiverem suporte oficial, serão exibidos com botões vermelhos no menu Controllers
para indicar que seus controles não estão sendo mapeados. Abra um problema para solicitar suporte para tais controladores.
Um modelo para o arquivo .ini de configuração será instalado em /config/MissionControl/missioncontrol.ini.template
. Para modificar as configurações padrão do módulo, copie o modelo para /config/MissionControl/missioncontrol.ini
e remova o comentário (remova o ;
) inicial e modifique as configurações que deseja alterar. O arquivo só é analisado na inicialização, portanto, qualquer alteração feita exigirá uma reinicialização para ter efeito. As entradas de configurações que não podem ser analisadas/validadas corretamente são ignoradas. Atualmente existe apenas um pequeno conjunto de definições de configuração, mas isso será expandido em versões futuras.
[general]
Estas são configurações gerais para recursos de controle de missão.
enable_rumble
Ativa/desativa o suporte a ruído para controladores não oficiais.enable_motion
Ativa/desativa o suporte a controles de movimento. [bluetooth]
Essas configurações podem ser usadas para falsificar o bluetooth do seu switch para aparecer como outro dispositivo. Isso pode ser útil (em conjunto com uma chave de link) se você quiser usar seu controlador em vários dispositivos sem precisar emparelhar novamente toda vez que trocar. Observe que alterar essas configurações invalidará as informações do console armazenadas em quaisquer controladores emparelhados anteriormente e exigirá um novo emparelhamento.
host_name
Substitua o nome do adaptador host Bluetooth.host_address
Substitua o endereço do adaptador host Bluetooth. [misc]
Estas são configurações diversas específicas do controlador, etc.
analog_trigger_activation_threshold
Defina o limite para o qual ZL/ZR são considerados pressionados para controladores com gatilhos analógicos. Intervalo válido [0-100] por cento.dualshock3_led_mode
Define o comportamento do LED do Dualshock 3 player. Modos válidos [0-1] onde 0=Padrão de troca, 1=Padrão PS3, 2=Híbrido (Padrão de troca invertido para alinhar com rótulos numéricos no controlador)dualshock4_polling_rate
Defina a taxa de polling para controladores Sony Dualshock 4. Intervalo válido [0-16] onde 0=máx, 16=mín. Consulte aqui os valores de frequência correspondentes.dualshock4_lightbar_brightness
Defina o brilho da barra de luz LED para controladores Sony Dualshock 4. Intervalo válido [0-9] onde 0=desligado, 1=min, 2-9=12,5-100% em incrementos de 12,5%.dualsense_lightbar_brightness
Defina o brilho da barra de luz LED para controladores Sony Dualsense. Intervalo válido [0-9] onde 0=desligado, 1=min, 2-9=12,5-100% em incrementos de 12,5%.dualsense_enable_player_leds
Ativa/desativa os LEDs indicadores brancos do player abaixo do touchpad Dualsense.dualsense_vibration_intensity
Defina a intensidade de vibração Dualsense, 12,5% por incremento. Intervalo válido [1-8] onde 1=12,5%, 8=100%.Para desinstalar funcionalmente o Mission Control e seus componentes, tudo o que precisa ser feito é excluir os seguintes diretórios do cartão SD e reiniciar o console.
/atmosphere/contents/010000000000bd00
/atmosphere/exefs_patches/bluetooth_patches
/atmosphere/exefs_patches/btm_patches
Se você deseja remover completamente todos os vestígios do software já instalado (exceto telemetria), você também pode seguir estas etapas adicionais
Remova o seguinte diretório do seu cartão SD
/config/MissionControl
Limpe o banco de dados de emparelhamento Bluetooth em System Settings->Controllers and Sensors->Disconnect Controllers
Abaixo está uma lista de recursos nos quais estou trabalhando atualmente ou que gostaria de examinar no futuro, aproximadamente em ordem decrescente de prioridade. Solicitações são bem-vindas se você tiver uma ideia que possa ser um recurso útil.
/config/MissionControl/controllers
. Se qualquer parte desta árvore de diretórios for corrompida, os controladores poderão ser desconectados quando a tentativa de leitura dos dados de configuração falhar.Isso funciona em <insira CFW aqui>? Não. O Controle da Missão só funcionará no Atmosphère. Esta não é uma tentativa de bloquear usuários de outros CFW, o Atmosphere é simplesmente o único que fornece as extensões necessárias às comunicações Bluetooth MITM que tornam este sysmodule possível.
Usar isso me banirá da Internet? Atualmente não houve nenhum caso confirmado de banimento como resultado da execução do Controle da Missão. Dito isto, executar qualquer software não oficial sob CFW sempre acarretará um risco diferente de zero de banimento, e a Nintendo poderá alterar seus critérios de banimento a qualquer momento. Embora o Mission Control deva ser relativamente seguro, pois simplesmente emula um Pro Controller sendo conectado, certamente seria possível detectar que você conectou controladores não oficiais ao console se a Nintendo estivesse interessada em fazê-lo. Use a seu critério.
Isso suporta controladores USB? Não, o Mission Control atualmente é apenas Bluetooth. Por enquanto você pode usar o sys-con do cathery para controladores USB.
Isso funciona com o sys-con instalado? Sim, os dois podem ser executados simultaneamente sem problemas.
Meu console está travando na inicialização por causa deste sysmodule. O que posso fazer? Se você estiver vendo travamentos na inicialização com o ID de título do Mission Control ( 010000000000bd00
), é provável que você tenha atualizado recentemente para uma nova versão do Atmosphere e uma atualização do Mission Control seja necessária ou você esteja executando uma versão antiga do Atmosphere que é não é compatível com a versão mais recente do Mission Control. Falhas em sm
(título ID 0100000000000004
) podem indicar incompatibilidades de versão entre seu Atmosphere atual e um ou mais de seus sysmodules homebrew. Isso pode ser causado pelo Controle da Missão ou pode ser outro módulo de sistema personalizado que usa libstratosphere, mesmo que pareça que o Controle da Missão é o culpado ( ldn_mitm
e emuiibo
são infratores comuns). Se você acabou de atualizar o Atmosphere, você deve sempre verificar se também foram lançadas atualizações para os sysmodules que você usa. Erros de qlaunch (ID do título 0100000000001000
) podem ser um sinal de que você tem muitos sysmodules personalizados em execução e está esgotando os recursos limitados do sistema disponíveis para eles. Verifique sua pasta /atmosphere/contents
e verifique se você realmente precisa de tudo que está lá. Se você não sabe o que está fazendo, pode ser mais fácil simplesmente excluir esta pasta completamente, reinstalar o Atmosfera e reinstalar explicitamente apenas os sysmodules necessários.
Instalei o Mission Control, mas ele não faz nada. Ajuda! O Controle da Missão é principalmente um processo em segundo plano. Não há alterações visuais em seu sistema que indiquem que ele está instalado, exceto o controle conectado com sucesso através dos menus oficiais da Nintendo. Se você seguiu as instruções de uso e emparelhamento acima e não consegue fazer funcionar, aqui está uma lista de verificação básica para solução de problemas.
DPAD_UP
+ MINUS
juntos. Isso funcionará como um botão de captura e fará uma captura de tela se o módulo estiver em execução. Se você não vir uma notificação de captura de tela, é provável que o Mission Control não esteja sendo carregado. Isso geralmente ocorre devido a uma instalação incorreta e pode acontecer por vários motivos: Como posso usar isso com várias configurações de inicialização do sysNAND/emuMMC? O emparelhamento de controladores em várias instalações HOS exclusivas requer vários bancos de dados de emparelhamento e é essencialmente o mesmo que o emparelhamento com dois consoles diferentes. A única exceção é o caso em que você emparelhou o(s) controlador(es) antes de fazer cópias sysNAND. Por enquanto, você terá que emparelhar novamente seus controladores ao alternar entre eles. No futuro espero incluir uma opção para carregar/armazenar o banco de dados no cartão SD para evitar esse problema. Desde a versão 1.5.1, o Atmosphere agora contém o código que contribuí para sincronizar o banco de dados de emparelhamento Bluetooth entre sysNAND e emuMMC por meio de um arquivo no cartão SD. Isso pode ser ativado adicionando enable_external_bluetooth_db = u8!0x1
na seção [atmosphere]
em atmosphere/config/system_settings.ini
. Nota: este recurso requer que a atmosfera esteja funcionando para funcionar. Como tal, não pode ser usado para sincronizar sysCFW/emuMMC com stock/OFW.
Posso remapear os botões do controlador usando o Mission Control? Sim. Como o Mission Control emula Pro Controllers oficiais, você pode remapeá-los usando o método oficial introduzido pela Nintendo no firmware 10.0.0. Você pode encontrar as opções de remapeamento no menu do sistema em System Settings->Controllers and Sensors->Change Button Mapping
.
Meu console mostra uma notificação “Emparelhado”, mas meu controlador não conecta, o que há de errado? Seu controlador foi emparelhado com sucesso com o console, mas será desconectado logo depois, antes de começar a enviar entradas. Isso pode acontecer por vários motivos, sendo os mais comuns:
/config/MissionControl/controllers/<xxxxxxxxxxxx>/
, onde <xxxxxxxxxxxx>
é a representação hexadecimal de 12 caracteres do endereço MAC Bluetooth do seu controlador) e deixe o Mission Control criar um novo. Pode ser necessário excluir todo o diretório controllers
em alguns casos. Observação: você perderá todos os dados específicos do controlador armazenados, como o stick analógico do usuário ou calibrações de movimento, ao excluir esses arquivos. Como esta é a medida mais destrutiva, você deve tentar por último, depois de esgotar as sugestões acima.Meu controlador do Xbox não conecta, pensei que você disse que eles eram compatíveis. Embora possam parecer semelhantes, nem todos os controladores do Xbox são criados iguais. Na verdade, existem várias revisões/modelos de hardware disponíveis (7 no momento em que este artigo foi escrito) com diversos recursos sem fio. Nos consoles Xbox (ou PC com adaptador USB sem fio), todos os controladores usam um protocolo sem fio proprietário da Microsoft conhecido como GIP. A conectividade Bluetooth, entretanto, não é a mesma coisa e varia entre os modelos de controlador. Alguns suportam Bluetooth e outros não. Daqueles que o fazem, alguns estão usando o padrão Bluetooth Low Energy (LE) mais recente (atualmente sem suporte) ou mudarão para ele após uma atualização de firmware. Os únicos modelos suportados são as revisões 1708 (Xbox One S) e 1797 (Xbox Elite V2). Se estes tiverem sido atualizados para um firmware Bluetooth LE (5.xx.xxxx.xe superior), você precisará fazer o downgrade do firmware para a versão herdada (veja abaixo). . Os números de modelo do controlador podem ser encontrados na parte interna do compartimento da bateria ou na parte traseira do controlador em controladores com bateria interna.
Para mais detalhes sobre as diversas revisões do controlador (com imagens), veja aqui.
Meu controlador Xbox One/Elite V2 costumava conectar e agora não conecta, o que acontece? No final de 2021, a Microsoft introduziu um novo firmware de controlador que visa alinhar os controladores Xbox One/Elite 2 com os controladores Série X | A atualização para este firmware faz com que o controlador passe a usar Bluetooth Low Energy (LE), um padrão Bluetooth mais recente focado no baixo consumo de energia, que atualmente não é compatível com o Mission Control. Se o firmware do seu controlador for a versão 5.xx.xxxx.x ou superior, você tem o novo firmware LE e precisará fazer o downgrade para o legado (consulte https://support.xbox.com/en-US/help/hardware -rede/acessórios/reversão de firmware do controlador)
Você pode adicionar suporte para controladores do Xbox 360? Não, atualmente não. Estes não usam Bluetooth. Experimente o sys-con com um adaptador USB sem fio.
Você pode adicionar suporte para despertar do sono? Provavelmente não. Pelo que eu sei, acordar do sono envolve um controlador enviando um comando de controle especial para o hardware Switch Bluetooth. Não há como fazer um controlador não-switch enviar o comando reconhecido pelo Switch sem modificar seu hardware/firmware.
Você pode adicionar suporte de áudio bluetooth? Não. O módulo Bluetooth no switch implementa apenas um pequeno conjunto de serviços necessários para fazer os controladores ocultos funcionarem. Deste pequeno conjunto de serviços, apenas algumas funções de alto nível são expostas ao resto do sistema. Adicionar suporte de áudio exigiria a implementação dos serviços necessários para o transporte de áudio, para os quais qualquer pessoa sã exigiria uma reimplementação de código aberto do módulo bluetooth para ter acesso às funções de baixo nível necessárias para executá-lo. A partir do firmware 12.0.0, a Nintendo adicionou funções que suportam áudio Bluetooth. Embora o recurso não tenha sido habilitado no software oficial, plutooo criou um sysmodule experimental chamado nx-btred que permite áudio Bluetooth em jogos que suportam gravação. Não há muitos benefícios em adicionar sua funcionalidade ao Mission Control. Desde o firmware 13.0.0, a Nintendo agora suporta oficialmente áudio Bluetooth.
Meu controlador tem uma entrada de áudio. Você pode adicionar suporte para fone de ouvido? Improvável. Pelo que eu sei, os controladores que suportam áudio de fone de ouvido fazem isso por meios proprietários ou não padrão. Seria muito trabalhoso, não apenas para entender como ele funciona para um controlador específico, mas também para integrá-lo ao HOS de alguma forma quando ele não tem o conceito de um gamepad com suporte para áudio. Na melhor das hipóteses, um controlador estava usando alguma forma de áudio Bluetooth padrão, você ainda estaria sujeito às restrições usuais de largura de banda do console (áudio instável, entradas lentas do controlador, etc.). Basta usar fones de ouvido normais.
O Mission Control funciona Man-In-The-Middling o módulo do sistema bluetooth
e intercepta seus comandos IPC de inicialização e eventos do sistema, e traduz os dados de entrada/saída para convencer o Switch de que está se comunicando com um Pro Controller oficial.
Para conseguir isso, o módulo btdrv.mitm
obtém os identificadores para eventos do sistema bluetooth
e memória compartilhada quando o sistema tenta inicializá-los via IPC por meio dos módulos btm
e hid
. Em seguida, ele cria suas próprias versões secundárias e passa seus identificadores em vez do original. Isso permite que modificações sejam feitas em quaisquer buffers de dados antes de notificar (ou não) o sistema. Além disso, o comando WriteHidData
IPC é interceptado para traduzir ou descartar solicitações de saída para o controlador. No caso deste último, respostas falsas podem ser gravadas diretamente no buffer da memória compartilhada.
A interceptação de comandos IPC de inicialização também permite que o homebrew faça uso adequado do serviço bluetooth
. Normalmente, chamar qualquer um dos comandos IPC que inicializariam ou finalizariam eventos do sistema travaria o console ou invalidaria os identificadores de eventos mantidos pelos processos do sistema. Com btdrv.mitm
somos capazes de distribuir manipuladores de eventos alternativos quando o homebrew tenta inicializar uma interface e redirecionar os eventos reais do sistema para aqueles em vez dos eventos mantidos pelos processos do sistema.
patches exefs para o módulo bluetooth
são fornecidos para permitir o emparelhamento de Wii/WiiU e outros controladores que fazem uso de emparelhamento de código PIN legado, controladores Xbox Elite 2 Wireless e para relaxar as verificações de classe de dispositivo adicionadas em firmwares mais recentes para também permitir que dispositivos sejam identificados como teclado ou joystick a ser conectado.
patches exefs ao módulo btm
foram adicionados para ignorar chamadas para nn::bluetooth::hal::CloseHidConnection
quando um controlador não responde corretamente ao comando do fornecedor broadcom enviado por nn::bluetooth::hal::SetTsi
. Isso evita que todos os controladores afetados sejam desconectados imediatamente após a conexão e elimina a necessidade de sinalizar manualmente determinados controladores com um arquivo settsi_disable.flag
.
O serviço btm
agora também é MITM, permitindo falsificar nomes de controladores em tempo real, mantendo os nomes originais no banco de dados de emparelhamento.
Primeiro, clone o repositório em sua máquina local e mude para o diretório recém-clonado
git clone --recurse-submodules https://github.com/ndeadly/MissionControl.git
cd MissionControl
O Mission Control atualmente usa um fork personalizado do O libnx master oficial agora é usado para construir o Mission Control. No momento em que este artigo foi escrito, a libnx distribuída pelo devkitPro pode ser usada sem a necessidade de construí-la você mesmo. Isso pode mudar se libnx
que adiciona wrappers de serviço Bluetooth e definições de tipo.Atmosphere-libs
for atualizado para usar commits libnx
de ponta que não estão presentes no lançamento oficial. Em qualquer caso, você pode construir o submódulo libnx
incluído a partir do código-fonte com os seguintes comandos.
cd lib/libnx
make && make install
Em seguida, construa libstratosphere
. Se você encontrar algum erro de compilação, podem estar faltando dependências necessárias (consulte https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/building.md)
cd ../Atmosphere-libs/libstratosphere
make
Por fim, construa e empacote o .zip de distribuição. Isso criará o sysmodule mc.mitm
e o empacotará com patches de exefs bluetooth.
cd ../..
make dist
O pacote resultante pode ser instalado conforme descrito acima.
Se você gosta deste projeto, considere me apoiar para continuar seu desenvolvimento :)