====== SF30 Pro ======
Mando bluetooth con aspecto de mando de Super NES
* [[https://www.8bitdo.com/|Web oficial]]
* [[https://download.8bitdo.com/Manual/Controller/SN30pro+SF30pro/SN30pro+SF30pro_Manual.pdf|Manual]]
* [[https://support.8bitdo.com/|Soporte]] (manual y actualizaciones)
===== Configuración =====
Vendor: 0x2DC8 (8BitDo)
Producto: 0x6000 (SF30 Pro gamepad)
https://www.the-sz.com/products/usbid/index.php?v=2dc8&p=6000&n=
El mando soporta 4 modos diferentes:
* Switch (START + Y)
* Android / Dinput (START + B)
* Mac (START + A)
* Windows / Xinput (START + X)
==== Linux ====
Para emparejar este mando hay usar el modo de emparejamiento Windows:
Start + B
Y luego pulsamos el botón de PAIR durante 3 segundos hasta que las luces LED se enciendan de izquierda a derecha.
sudo systemctl start bluetooth.service
bluetoothctl power on
bluetoothctl
[bluetooth]# scan on
Discovery started
...
[NEW] Device E4:17:D8:A5:F1:7B 8Bitdo SF30 Pro
[bluetooth]# pair E4:17:D8:A5:F1:7B
Attempting to pair with E4:17:D8:A5:F1:7B
[CHG] Device E4:17:D8:A5:F1:7B Modalias: usb:v045Ep02E0d0903
[CHG] Device E4:17:D8:A5:F1:7B UUIDs: 00001124-0000-1000-8000-00805f9b34fb
[CHG] Device E4:17:D8:A5:F1:7B UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device E4:17:D8:A5:F1:7B ServicesResolved: yes
[CHG] Device E4:17:D8:A5:F1:7B Paired: yes
Pairing successful
[bluetooth]# trust E4:17:D8:A5:F1:7B
[CHG] Device E4:17:D8:A5:F1:7B Trusted: yes
Changing E4:17:D8:A5:F1:7B trust succeeded
Si no se conectase solo:
[bluetooth]# connect E4:17:D8:A5:F1:7B
Attempting to connect to E4:17:D8:A5:F1:7B
[CHG] Device E4:17:D8:A5:F1:7B ServicesResolved: yes
Connection successful
There’s no code or confirmation step so pairing is basically instant.
* https://www.omgubuntu.co.uk/2019/06/8bitdo-sn30-pro-controller-linux-firmware
==== Android ====
- Encendemos el mando con Start + B
- El LED 1 empezará a parpadear.
- Mantener pulsado el botón PAIR durante 3 segundos para entrar en modo emparejamiento (las luces LED se moverán de izquierda a derecha)
- Entrar en los ajustes Bluetooth del dispositivo Android y emparejarlo con **8Bitdo SF30 Pro**
- Si todo ha ido bien, el mando vibrará y la luz LED quedará fija
Una vez emparejado, el mando se conectará al dispositivo android al pulsar START.
Si queremos usar dos mandos a la vez, debemos emparejar primero uno, apagarlo y luego emparejar el otro. Finalmente, encenderemos de nuevo el primero y debería conectarse también.
===== Uso por cable =====
==== Linux ====
No es necesario instalar ningún driver/controlador. Sin hacer nada, el mando será reconocido como un dispositivo USB. Salida del comando ''lsusb'':
$ lsusb
(...)
Bus 001 Device 010: ID 2dc8:6000 8BitDo SF30 Pro gamepad
Sin embargo, esto no creará ninguna entrada en el directorio ''/dev/input/'' por lo que no podremos usar el mando.
Para poder conectarlo en modo correcto, hay que mantener pulsado el botón B (modo **Dinput**) y a continuación conectar el cable al ordenador. De esta manera se habrá creado ''/dev/input/js0'' y podremos verificar el funcionamiento con el programa ''jstest'':
jstest /dev/input/js0
En Arch Linux, el programa ''jstest'' está incluido en el paquete ''joyutils''.
===== Actualizaciones =====
8bitdo publica actualizaciones del firmware a través de [[https://fwupd.org/|LVFS]], así que se pueden utilizar programas como **fwupd**, **gnome-software** o **kde-discover** para actualizar el firmware de este mando: https://fwupd.org/lvfs/devices/com.8bitdo.sf30sn30pro.firmware
Si tuviésemos MacOS o Windows, hay una herramienta oficial para realizar las actualizaciones de firmware: https://support.8bitdo.com/firmware-updater.html
Para comprobar si hay actualizaciones para el mando, hay que conectarlo por cable y emparejarlo en modo Android. Sí, en modo Android, así es cómo funciona con fwupd.
Hay que empezar con el mando apagado y desenchufado del ordenador.
Encendemos el mando en modo Android (realmente llamado modo D-input): B + START (parpadea el LED 1)
Conectamos el mando al equipo Linux con el cable USB. Se quedará fijo el LED 1. Comprobamos si lo reconoce:
$ lsusb
(...)
Bus 001 Device 018: ID 2dc8:6000 8Bitdo SF30 Pro 8Bitdo SF30 Pro
(...)
Otra salida:
$ lsusb
Bus 002 Device 002: ID 2dc8:6000 8BitDo SF30 Pro gamepad
En Arch Linux, el programa se instala mediante el paquete ''fwupd''
Comprobamos que funcione el servicio ''fwupd'' para poder comprobar y ver los dispositivos conectados:
systemctl status fwupd
● fwupd.service - Firmware update daemon
Loaded: loaded (/lib/systemd/system/fwupd.service; static; vendor preset: enabled)
Active: active (running) since Sun 2020-08-23 08:22:24 CEST; 24min ago
Docs: https://fwupd.org/
Main PID: 2943 (fwupd)
Tasks: 5 (limit: 4915)
Memory: 24.5M
CGroup: /system.slice/fwupd.service
└─2943 /usr/lib/fwupd/fwupd
ago 23 08:22:23 pepito-pc systemd[1]: Starting Firmware update daemon...
ago 23 08:22:24 pepito-pc systemd[1]: Started Firmware update daemon.
Si no estuviese activo, lo arrancamos con ''systemctl start fwupd''
Ahora revisamos si lo detecta el actualizador de firmware
$ fwupdmgr get-devices
8Bitdo SF30 Pro
DeviceId: 71413822e87deae707da948bd4b7e537af463c19
Guid: 043c7673-bd45-5e2e-b8b9-c22df2dfec2a
Guid: b02f1319-c1c4-54f4-b7f2-5bb3552f6a9e
Guid: e95bfb47-11f9-5afd-856e-fbc45730456d
Guid: 269b3121-097b-50d8-b9ba-d1f64f9cd241
Summary: A redesigned classic game controller
Plugin: ebitdo
Flags: updatable|needs-bootloader|registered
Vendor: 8Bitdo
VendorId: USB:0x2DC8
Version: 1.33
VersionFormat: pair
Icon: input-gaming
Created: 2020-08-23
Si la versión indicada es menor que la última disponibel, realizamos el proceso de actualización:
fwupdmgr install 8Bitdo-SF30_Pro-SN30_Pro-1.33.cab --allow-older
Decompressing… [***************************************]
Authenticating… [***************************************]
Device 8Bitdo SF30 Pro needs to manually be put in update mode:
Unplug the controller, hold down L1 + R1 + START until the red
LED on top of the controller is flashing and then reconnect
the controller.
Nos indica que el mando debe ser puesto en modo actualización: L1+R1+START (en sucesión, pero sin dejar de soltar los botones previos). Si lo hemos hecho bien, el LED superior parpadeará y comenzará la actualización del firmware:
> sudo fwupdmgr install 8Bitdo-SF30_Pro-SN30_Pro-1.33.cab --allow-older
Decompressing… [***************************************]
Authenticating… [***************************************]
Installing on 8Bitdo …[ - ]
Restarting device… [***************************************]
failed to wait for replug after update:
device did not come back
En versiones anteriores del firmware, se detectaron [[https://retropie.org.uk/forum/topic/15162/lag-with-8bitdo-sf30pro|problemas de lag]]. Sin embargo, en la versión 1.33 parecen solucionados.
* https://github.com/fwupd/fwupd/wiki/8BitDo-Controllers
* https://jcastellssala.com/2020/02/02/firmware-update-sn30pro-on-linux/
* https://notes.georgboe.com/post/connect-an-8bitdo-gamepad-on-linux/