Skip to content

Instantly share code, notes, and snippets.

@jszsj
Created April 9, 2021 08:41
Show Gist options
  • Save jszsj/3949e73477187329c18f479ca004086d to your computer and use it in GitHub Desktop.
Save jszsj/3949e73477187329c18f479ca004086d to your computer and use it in GitHub Desktop.
Raspberry Pi Zero W + JoyControl = AMIIBO

Tiempo requerido Dificultad

En esta guia, vamos a enseñar cómo usar el paquete joycontrol y una placa Raspberry Pi Zero W para emular Amiibos en nuestra Nintendo Switch.

Si no dispones de una Raspberry Pi Zero W o un ordenador con Linux sigue este otro tutorial para usar una máquina virtual de Linux sobre Windows|macOS.

Nota: Si ya tienes una Raspberry Pi W con Raspbian Lite y conexión a internet, puedes saltar directamente al paso 4.

Índice de contenidos

Requisitos previos

Para seguir esta guia, necesitarás conocimientos mínimos de manejo de terminales y una Raspberry Pi Zero W, que incorpora un módulo Wi-Fi y bluetooth de fábrica.

También serán necesarios los archivos binarios de los Amiibos (por ejemplo, los de Animal Crossing que puedes descargar aquí).

Hardware

Puedes hacerte con una Raspberry Pi Zero W por internet a precios muy competitivos (e.g., en kubii.es por 10,5 euros). Además de la placa, necesitaremos tres cosas: una fuente de alimentación compatible, una tarjeta micro-SD y un adaptador de red USB (opcionalmente, puedes conectarte por Wi-Fi y omitir este requisito técnico).


¿Todo listo? Comenzamos.

Instalación

Paso 1. Instalar Raspbian Lite en la micro-SD

Para instalar el sistema operativo en la micro-SD, usaremos la herramienta Raspberry Pi Imager. Tan solo debemos introducir la tarjeta en nuestro ordenador, ejecutar la aplicación y seleccionar el SO Raspbian Lite.

Paso 2. Habilitar ssh

Antes de expulsar la tarjeta micro-SD, crearemos un fichero ssh vacio y sin extensión dentro del directorio raíz de la tarjeta:

macbook-pro:~ benhid$ sudo touch ssh

Si no vas a usar un adaptador de red para conectar la placa a internet, también deberás habilitar la conexión Wi-Fi de la placa. Crea un fichero wpa_supplicant.conf en el directorio raíz de la tarjeta e introduce las siguientes líneas (adaptándolas a la configuración de tu red):

country=ES
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={ 
	ssid="NOMBRE-DE-TU-WIFI" 
	psk="CONTRASEÑA-DE-TU-WIFI" 
	key_mgmt=WPA-PSK
}

Paso 3. Conexión remota por ssh

Una vez introducida la tarjeta micro-SD en la placa y conectarla a la corriente con la fuente de alimentación, esperaremos 30 segundos a que se inicie el sistema operativo.

Después, escanea tu red para encontrar la dirección IP de la placa. Ésto puedes hacerlo accediendo al panel de configuración del router o bien usando el siguiente comando en la terminal de tu ordenador:

macbook-pro:~ benhid$ sudo nmap -sn 192.168.1.0/24

Una vez identificada la IP, usaremos ssh para conectarnos remotamente a la placa (la contraseña por defecto es raspberry).

macbook-pro:~ benhid$ ssh pi@192.168.1.X
pi@raspberrypi:~  $

Paso 4. Mover Amiibos al dispositivo

Vamos a necesitar mover el fichero comprimido con los Amiibos a la máquina virtual. Para moverlo a nuestra micro-SD de forma remota, abre una nueva terminal en tu ordenador e introduce el siguiente comando:

macbook-pro:~ benhid$ scp nfc-ac-dump.zip pi@192.168.1.X:/home/pi/Escritorio/

Podemos descomprimir el fichero usando unzip o cualquier otra utilidad:

pi@raspberrypi:~/Escritorio  $ sudo apt-get install unzip
pi@raspberrypi:~/Escritorio  $ unzip nfc-ac-dump.zip

Paso 5. Instalar JoyControl

En primer lugar, vamos a instalar git y otras utilidades en nuestra placa:

pi@raspberrypi:~  $ sudo apt update
pi@raspberrypi:~  $ sudo apt upgrade
pi@raspberrypi:~  $ sudo apt install git python3-pip python3-dbus libhidapi-hidraw0

A continuación instalaremos el paquete joycontrol >= 0.13 a través de su repositorio en Github:

pi@raspberrypi:~/Escritorio  $ git clone https://github.com/mart1nro/joycontrol
pi@raspberrypi:~/Escritorio  $ cd joycontrol
pi@raspberrypi:~/Escritorio/joycontrol  $ sudo pip3 install  .

Uso de joycontrol

Inicia la aplicación usando el siguiente comando:

pi@raspberrypi:~/Escritorio/joycontrol  $ sudo python3 run_controller_cli.py PRO_CONTROLLER

Inmediatamente después, abre el menú "Cambiar el orden o el modo de sujeción" en la consola. En pocos seguros deberías ver que un nuevo mando Pro se ha conectado.

Si ocurre algún error o quieres empezar de cero, pulsa la combinación de teclas Ctrl+C y vuelve a iniciar la aplicación.

Presiona enter en la consola. Si todo ha ido bien, aparecerá la siguiente línea:

cmd >>

Usa los comandos home, up, down, left, right, y, x, b y a para volver al juego, por ejemplo:

cmd >> home
cmd >> a
cmd >> b

Por último, introduce el siguiente comando para añadir un nuevo Amiibo cuando te lo indique la consola:

cmd >> amiibo /home/pi/Escritorio/nfc-ac-dump/001.bin

Resolución de problemas

P1. No avanzo del mensaje "Please open the Change Grip menu.." / No logro emparejar la consola con el mando emulado.

R1. Prueba a desactivar el plugin "input" introduciendo los siguientes comandos en la consola:

sudo sed -i 's|^ExecStart=/usr/lib/bluetooth/bluetoothd.*$|ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=input|g' /lib/systemd/system/bluetooth.service
sudo systemctl daemon-reload
sudo systemctl restart bluetooth

P2. He desactivado el plugin "input" pero mi consola sigue sin poder conectarse.

R2. Algunos adaptadores parecen no funcionar con joycontrol por el momento. Prueba con otro adaptador o usa un live USB con Linux en lugar de una máquina virtual.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment