Modulo wl1837: puesta en marcha

El modulo R078 (WL1837) de TDK contiene un componente Wi-Fi por puerto SDIO, y un componente Bluetooth conectado por UART. Cada parte ha de ser configurada por separado, y tiene metodos distintos de configuracion. En este documento se explica la configuracion minima, y se enlaza a documentos que permiten otras configuraciones.


Modulo Wi-Fi:

Para configuarlo se necesita - Un linux, sea instalado o virtualizado, con capacidad de cross-compiler (usa esta pagina con arm-linux-gnueabihf- para instalar lo necesario)

- Fuentes del Kernel 3.8.18 (de nuestro github, preguntar a Pedro o Arturo)

- Backports del 3.17 (programa que genera los modulos necesarios para nuestro kernel, en el NAS)

- Fuentes de texas instruments, que se consiguen con un script Aqui

- Comunicacion UART o posibilidad de usar monitor y teclado en el sistema de destino.



Paso 1: variables globales

Abre un terminal en linux. necesitamos establecer varias variables globales antes de empezar. Escribe estas lineas, modificando conforme sea necesario.

 export CCPREFIX=/usr/bin/arm-linux-gnueabihf-
 export KERNEL_SRC=/path/hasta/las/fuentes/del/kernel
 export ARCH=arm
 export CROSS_COMPILE=${CCPREFIX}
 export BACK_PORTS=/path/hasta/las/fuentes/del/backports
 export KLIB_BUILD=${KERNEL_SRC}
 export KLIB=/path/hasta/el/directorio/de/los/modulos/del/kernel


Paso 2: editar .config

Has de compilar el kernel, pero sin incluir los modulos que controlan el wifi ni el bt. Edita el archivo .config, y cambia estas lineas:

 CONFIG_WL_TI=y
 CONFIG_WL18XX=n
 CONFIG_WLCORE=n
 CONFIG_WLCORE_SDIO=n
 CONFIG_WL12XX_PLATFORM_DATA=y


Paso 3: compilar kernel

Compila el Kernel y los modulos, haciendo:

 cd $KERNEL_SRC
 make oldconfig
 make -j4 


Paso 4: compilar backports

Compila el backports, haciendo:

 cd $BACK_PORTS
 make mrproper
 make defconfig-wifi
 make oldconfig
 make -j4
 make install INSTALL_MOD_PATH=/path/a/los/modulos

Este paso intentará (sin exito) hacer depmod en tu propio sistema (instalarte los modulos). No hagas caso a este error.


Paso 5: instalar modulos

Instala los modulos en el filesystem de destino:

 cp -r $KLIB/lib/modules/nombre de distribucion/updates /media/$USER/particion sistema/lib/modules/nombre distribucion/wireless_backports
 cp $KERNEL_SRC/arch/arm/boot/zImage /media/$USER/BOOT/zImage
 cd $KERNEL_SRC
 make modules_install INSTALL_MOD_PATH=/media/$USER/trusty && sync


Paso 6: sobreescribir

Sobreescribe los modulos del kernel con los generados por el backports. Has de copiar y combinar las carpetas compat, drivers, y net en la carpeta de /lib/modules/nombre distribucion/kernel/ del sistema de destino.


Paso 7: firmware

Descarga los script de texas instruments siguiendo sus instrucciones hasta el punto del comando

 ./build_wl18xx.sh init

Despues utiliza estos comandos:

 ./build_wl18xx.sh firmware
 ./build_wl18xx.sh utils
 ./build_wl18xx.sh bt-firmware

Comprueba los archivos generados. Han de estar en la carpeta fs , o en la carpeta outputs, comprimido. Has de copiar estos archivos en las carpetas correspondientes en el sistema de destino.


Paso 8: configuracion por defecto

Busca en los scripts de texas la carpeta que contiene el modulo wlconf. En esa carpeta está el archivo wl18xx-conf-default.bin . Copialo en /lib/firmware/ti-connectivity/ del sistema de destino.

Elimina en /lib/firmware/ti-connectivity/ del sistema de destino, el archivo wl18xx-conf.bin

En este paso, la carpeta de /lib/firmware/ti-connectivity/ ha de contener los archivos wl18xx-conf-default.bin y wl18xx-fw-4.bin.


Paso 9: arranque del sistema

Arranca el sistema de destino con el nuevo kernel. Si algo sale mal en el arranque, tendras que rehacerlo. Habla con Arturo o Pedro si pasa eso.

Una vez arrancado, y en el simbolo de sistema:

 depmod -a
 lsmod

Aqui tendras una lista de modulos instalados. Si la lista no esta vacia, esta todo correcto. Ahora es momento de encender el modulo Wi-Fi. Averigua el numero de GPIO de la linea Wlan_enable del sistema del destino, y cambialo en los siguientes comandos:

 echo "135" > /sys/class/gpio/export
 echo "out" > /sys/class/gpio/gpio135/direction
 echo "1" > /sys/class/gpio/gpio135/value


Te tiene que dar un mensaje de que no ha encontrado el archivo .bin correcto. Si no te da mas mensajes, es que estamos en el buen camino. Comprueba que se ha cargado el modulo wl18xx haciendo lsmod.


Paso 10: buscar redes

Ejecuta el comando

 ifconfig

Si todo ha ido bien, tendras un dispositivo wlan0 u otro numero. Ejecuta

 iwlist wlan0 scan

te saldra una lista de las redes disponibles. A partir de aqui, busca en google metodos de conexión a wi-fi (wpa_supplicant es el mas comun, usa ese si no sabes lo que haces), o si tienes un sistema con escritorio y sistema grafico funcionando, utiliza las aplicaciones que te proporcione.



Bluetooth:

Paso 1

Descarga el binario necesario desde el git de texas instruments aqui

Copialo en /lib/firmware del sistema de destino


Paso 2

arranca el sistema, y carga el modulo hci_uart. prueba primero con

 modprobe hci_uart
 lsmod

Si no funciona, prueba con

 insmod /lib/modules/nombre compilacion/kernel/drivers/bluetooth/hci_uart.ko
 lsmod


Paso 3

Arranca el bluetooth. Averigua el numero de GPIO de BT_Enable en tu sistema, y cambialo en los comandos

 echo "128" > /sys/class/gpio/export
 echo "out" > /sys/class/gpio/gpio128/direction
 echo "1" > /sys/class/gpio/gpio128/value


Paso 4

Averigua el numero de UART del bluetooth en tu sistema (suele ser /dev/ttySAC2 ). Ejecuta el comando:

 hciattach -s 115200 /dev/ttySAC2 texas

Te dara mensajes de que ha encontrado un chip de texas instruments, cambiara la velocidad de conexion, y si todo sale ok, dirá "Device setup complete". Comprueba que es asi ejecutando

 hciconfig.


Paso 5

Ejecuta

 hcitool <nombre del dispositivo> scan

y podras buscar dispositivos descubribles.