Bue, este es el típico caso en que una empresa larga un producto con soporte incompleto, algo que se ve cada vez más seguido y es lo que separa a un producto "bueno" de uno "mas o menos". En este caso la víctima es una tablet Eurocase Argos EUTB-708, con Android 4.1, la cuál no detecta un joystick al conectarlo con un cable OTG. Como siempre desde ArcadeNEA le ponemos el pecho a las balas y salimos a flote con una solución.

NOTA: si la solución les sirve, manden una docena de empanadas.


Estas instrucciones son una orientación para agregarle soporte de joystick a este modelo de tablets. Las instrucciones pueden servir como guía para otros dispositivos similares. Existen dos opciones para agregar el soporte, la primera es simplemente instalar el módulo ya compilado que proveemos, la segunda es compilar el módulo desde el source del kernel de Rockchip. La diferencia es que la primera es mas fácil, pero el segundo método puede servir para agregar soporte para otros dispositivos USB o tablets con otra configuración de hardware.

Todas las instrucciones son para sistemas DEBIAN o compatibles. Pueden servir para otros sistemas operativos/distribuciones con pequeños cambios.


Primer Paso: Descargar EL archivo.

http://arcadenea.com.ar/archivos/argos-708-joystick.zip

Este archivo contiene el módulo ya compilado, un archivo de configuración de teclado y un archivo .config que se puede copiar en la raíz del source del kernel Linux para poder compilarlo sin tener que configurarlo.


Compilar el módulo.

1) Descargar el NDK de Android desde

http://developer.android.com/tools/sdk/ndk/index.html

y el kernel de Linux para Rockchip desde

https://github.com/crewrktablets/rk3x_kernel_3.0.36

2) Descomprimir el SDK de Android en una carpeta y agregarlo al path. Para agregar al path debemos ejecutar:

export PATH=$PATH:/carpetadelndk/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/bin

3) Configurar el kernel:

make menuconfig ARCH=arm

Dentro de la configuración, se pueden deshabilitar todos los drivers que se deseen (video, sonido, red, etc.) para que la compilación sea más rápida, solamente hay que dejar los drivers para dispositivos HID y joystick USB (DragonRise). Otra posibilidad es simplemente copiar el archivo .config que proveemos en la carpeta raíz del kernel, de esta forma ya estará configurado para generar el módulo correspondiente.

4) Compilar el kernel:

make modules ARCH=arm CROSS_COMPILE=arm-linux-androideabi- CFLAGS_MODULE=-fno-pic

5) Verificar la compatibilidad del módulo:

/sbin/modinfo drivers/hid/hid-dr.ko

Es importante que la información que figura en "Vermagic" sea la misma que la configuración de la tablet. En este caso debe ser

3.0.36+ preempt mod_unload ARMv7

Si no tiene esta configuración (o la que corresponda a su dispositivo), hay que ajustar la configuración del kernel hasta que sea igual.


Instalar el módulo en la tablet.

1) Descargar el SDK de Android desde http://developer.android.com/sdk/index.html

2) Habilitar en la tablet la opción de Depuración USB desde la pantalla de "Ajustes->Opciones de desarrollador".

3) Descomprimir y configurar el SDK para poder acceder al dispositivo. No vamos a explicarlo en este tutorial, pero pueden leer algunos ejemplos en la sección "Referencias".

4) Ingresar a la tablet mediante el comando:

adb shell

4) Dentro de la tablet, montar nuevamente la partición /system mediante el comando:

mount -o rw,remount /dev/block/mtdblock8 /system

5) Presionar CTRL+D y transferir los archivos con los siguientes comandos:

adb push hid-dr.ko /system/lib/modules

adb push Vendor_0079_Product_0006.kl /system/usr/keylayout

6) Volver a ingresar a la tablet con el comando:

adb shell

Luego ejecutar el comando:

insmod /system/lib/modules/hid-dr.ko

Si todo salió bien, entonces con el comando "lsmod" podremos ver que el módulo se cargó correctamente. Si el dispositivo se apaga o reinicia, el módulo no es compatible con el dispositivo y hay que compilar uno con la configuración correcta.

7) Agregar la carga del módulo en un script de arranque (init.rc por ejemplo).


Referencias.

https://github.com/crewrktablets/rk3x_kernel_3.0.36 (kernel para Rockchip)

http://anilsoni85.blogspot.com.ar/2013/05/connect-joystick-to-play-games-on-your.html?m=1 (Tutorial similar a este)

http://arcadenea.com.ar/retrotecno/homebrew/692-proton-lite-2 (configurar el SDK de Android para acceder mediante ADB).