Bueno, vuelvo a retomar este tema y he aqui el porque. Ayer estaba jugando, todo normal y sin problema alguno aparente, cuando derrepente y a la hora-hora y media de juego, el mando deja de reaccionar y veo que, aunque sigue encendido el piloto del mando no me deja moverme ni nada. Ignore el problema y reinicie recalbox. Pero para mi sorpresa, en el mismo intervalo de tiempo (a la hora y poco) volvio a suceder lo mismo. Pense que tal vez podria ser casualidad. Y lo intente por tercera vez, y !oh vaya¡ otra vez colgado. Total, asumi que la potencia del hardware de bluetooth de mi raspberry no podia rendir mejor. Por lo que, he vuelto a retomar lo de intentar hacer funcionar el adaptador usb bluetooth.
Lo probe en el respaldo de prueba en el que hice la instalacion de Recalbox 6.1 y volvi a indagar como hacerlo correr. Y afortunadamente, lo he conseguido y voy a dar los pasos para hacerlo para que se quede ya por escrito.
Una vez pasada "quemada la iso en la tarjeta sd" lo pondremos en la raspberry pi y dejaremos que Recalbox configure todo el sistema de archivos hasta que ya nos deje en el menu de seleccion de sistemas. Recomiendo no instalar aun el adaptador bluetooth hasta no haber hecho todo lo que sigue. Aqui lo que vamos a hacer es apagar recalbox desde su menu como hariamos normalmente. Ahora el siguiente paso es irnos a un ordenador que tenga sistema operativo linux, por ejemplo yo tengo una distro de ubuntu instalada en un equipo antiguo. El motivo de hacer esto, es que, se puede visualizar toda la estructura de archivos creada en la tarjeta sd compuesta de los tres subgrupos: BOOT, RECALBOX, SHARE. El grupo que vamos a trabajar es el que dice RECALBOX y dentro vamos a tener que dar permisos totales a cada ruta que se vaya a tocar para la implementacion del firmware al sistema. Para ello utilizaremos en todo momento el uso de "sudo" y el comando chmod 777. Y a continuacion los pasos:
1.- Colocaremos en las siguientes rutas contenidas en la estructura RECALBOX:
ruta: /lib/firmware/brcm
ruta: /usr/lib/firmware/brcm
El archivo .hcd del firmware del ASUS BT400 llamado (BCM20702A1-0b05-17cb.hcd) !Ojo¡ porque se dice que se use la ultima version del driver y a mi no me ha funcionado. Pero si la revision mas antigua que pesa unos 35kb. Os dejo el siguiente enlace para que lo podais descargar:
Enlace del firmware BCM20702A1-0b05-17cb.hcd
-
- El siguiente paso es crear una carpeta con el nombre "btusb" en la siguiente ruta:
ruta: /sys/bus/usb/drivers
He aqui lo dificil del asunto. La crearemos con el comando "mkdir" y pondremos "sudo" para tener privilegios de super usuario. Algo asi como:
sudo mkdir /sys/bus/usb/drivers/btusb
Si no lo permite, usaremos "chmod 777" para que nos de la totalidad de la ejecucion y escritura de la ruta y tambien con "sudo" por delante es decir:
sudo chmod 777 /sys/bus/usb/drivers
y repetimos el paso de añadir la carpeta "btusb".
3.- Una vez la hayas creado tenemos que crear dentro de esa carpeta un archivo con nombre "new id" y dentro tendremos que poner ""0b05 17cb". Para ello invocaremos el siguiente comando:
sudo echo "0b05 17cb" >> /sys/bus/usb/drivers/btusb/new_id
Igualmente puede pasar que tengais problemas de privilegios de nuevo. Por lo que repetiremos los comandos del paso dos sobre esta ruta. Y si esto falla, otra opcion es hacerlo con "nano"
sudo nano "0b05 17cb" >> /sys/bus/usb/drivers/btusb/new_id
-
- Una vez hayamos hecho el paso anterior Ejecutaremos el siguiente comando:
sudo nano /etc/default/bluetooth
y añadiremos la siguiente informacion:
HID2HCI_ENABLED=0
HID2HCI_UNDO=0
HIDD_ENABLED=1
Y lo guardamos y cerramos el archivo.
A partir de aqui, desmontamos las particiones de la tarjeta sd y lo llevamos a la raspberry. Y ahora si, antes de encenderla conectamos el adaptador bluetooth y lo conectamos a la red (no wifi ojo, directamente con un cable ethernet) Es mi recomendacion para no estar liandonos, que si a poner el wifi y la contraseña. Una vez, Recalbox este en la pantalla de sistemas. Nos iremos a otro ordenador que este en la misma red que la raspberry y ejecutamos un terminal remoto para comprobar que este todo correcto. Yo uso un equipo con windows y el programa TERMIUS, pero hay bastantes opciones para hacer esto. Lo que haremos aqui una vez conectemos con la raspberry, es ejecutar un comando para que nos muestre que el adaptador esta operativo y con el firmware cargado. Ejecutaremos el siguiente comando: "dmesg | egrep -i 'blue|firm'" y si todo esta correcto, nos tendria que salir el siguiente resultado:
# dmesg | egrep -i 'blue|firm'
[ 0.070083] raspberrypi-firmware soc:firmware: Attached to firmware from 2019-03-27 15:45
[ 2.512520] Bluetooth: Core ver 2.22
[ 2.512577] Bluetooth: HCI device and connection manager initialized
[ 2.512592] Bluetooth: HCI socket layer initialized
[ 2.512599] Bluetooth: L2CAP socket layer initialized
[ 2.512618] Bluetooth: SCO socket layer initialized
[ 2.754105] Bluetooth: hci0: BCM: chip id 63
[ 2.755094] Bluetooth: hci0: BCM: features 0x07
[ 2.771144] Bluetooth: hci0: BCM20702A
[ 2.772105] Bluetooth: hci0: BCM20702A1 (001.002.014) build 0000
[ 3.244742] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Oct 23 2017 03:55:53 version 7.45.98.38 (r674442 CY) FWID 01-e58d219f
[ 3.863144] Bluetooth: hci0: BCM20702A1 (001.002.014) build 1467
[ 3.879275] Bluetooth: hci0: Broadcom Bluetooth Device
[ 8.177422] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 8.177438] Bluetooth: BNEP filters: protocol multicast
[ 8.177465] Bluetooth: BNEP socket layer initialized
[ 12.907719] Bluetooth: HCI UART driver ver 2.3
[ 12.907737] Bluetooth: HCI UART protocol H4 registered
[ 12.907742] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 12.907964] Bluetooth: HCI UART protocol Broadcom registered
desde las filas 10 a la 14 se muestra que el adaptador esta cargado y bajo el firmware que le hemos insertado.
Aun asi estoy viendo de que manera sincronizar los mandos. Porque desde recalbox y emparejamiento de mando, aunque los detecta, al sincronizarlos da error de "no se puede emparejar" de momento estoy usando el comando bluetoothctl
$bluetoothctl
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# discoverable on
Changing discoverable on succeeded
[bluetooth]# pairable on
Changing pairable on succeeded
[bluetooth]# agent NoInputNoOutput
Agent registered
[bluetooth]# default-agent
Default agent request successful
para conectarlos y aunque va como un tiro. No consigo que, tras reiniciar recalbox se quede registrado para que se vuelva a reconectar el mando al encenderse. No se si es que es un comando aislado y no se inicia si no es de forma manual y necesita de script para que, cada vez que se encienda recalbox, se automatice en el boot, para que se empareje automaticamente nada mas encender el mando. Aqui ya necesitaria una mano para resolverlo. Pero espero que esta aportacion ayude aquellos usuarios que tengan el mismo adaptador que yo, a lograr que corra correctamente en Recalbox. Aunque, apuesto, que seguramente si se tratara de otro adaptador, los pasos serian los mismos solo que cambiando un par de cosillas.