Mostrando entradas con la etiqueta driver. Mostrar todas las entradas
Mostrando entradas con la etiqueta driver. Mostrar todas las entradas

Instalar y configurar un dispositivo de infrarrojos en Linux.

Este tutorial o manual esta basado en el dispositivo CIR4u de conceptronic, con chip STIR4210 de Sigmatel.
Sigmatel fue adquirida por freescale en el año 2008 y como puede parecer lógico, la página web no se encuentra operativa.
Gracias a Internet Archive, es posible encontrar información del chip, driver, firmware para Linux y notas de aplicación.
Puedes consultar la información en este enlace:
http://web.archive.org/web/20050206010419/http://www.sigmatel.com/products/technical_docs.htm
o bien descargarla desde el blog.

Información técnica (Datasheet)

Esquema adaptador USB-IR

Firmware stir4210-4220-4116 (Linux)

Instalación.

1 Abrir un terminal, Aplicaciones -> Accesorios -> Terminal o bien Alt+F2 y ejecutar "gnome-terminal" sin comillas.

2 Instalar los siguientes paquetes:

sudo aptitude install irda-utils openobex-apps

3 Copiar en el directorio /lib/firmware los dos parches (42101001.sb, 42101002.sb) que se encuentran dentro del archivo "stir4210_4220_4116_patch_files.tar.gz"

Desde la carpeta actual.

tar zxvf stir4210_4220_4116_patch_files.tar.gz
sudo cp *.sb /lib/firmware


3 Crear el fichero /etc/modprobe.d/blacklist-usbserial.

sudo gedit /etc/modprobe.d/blacklist-usbserial

4 Añadir este contenido.

#If these modules are loaded stir421x driver won't work.
blacklist ir_usb
blacklist usbserial

guardar y cerrar el archivo.

Configuración.

5 Abrir el fichero de configuración /etc/default/irda-utils

sudo gedit /etc/default/irda-utils

Configurar tal y como aparece aquí.

    ENABLE="true"
    AUTOMATIC="false"
    DISCOVERY="true"
    DEVICE="irda0"
    DONGLE="none"
    SETSERIAL=""

guardar y cerrar el archivo.

Ahora es necesario reiniciar el sistema con el dispositivo conectado, o bien conectarlo una vez reiniciado.
Si optamos por conectar el dispositivo después de reiniciar, es necesario iniciar el servicio de irda.

sudo /etc/init.d/irda-utils restart

Verificación.

6 Para verificar que el dispositivo es reconocido y funciona correctamente, enviar los siguientes comandos:

dmesg

respuesta obtenida:


[  349.299342] IRDA-USB found at address 5, Vendor: 66f, Product: 4210
[  349.300002] irda_usb_parse_endpoints(), And our endpoints are : in=02, out=01 (512), int=00
[  349.310429] irda_usb_init_qos(), dongle says speed=0x17F, size=0x20, window=0x8, bofs=0x80, turn=0x4
[  349.311660] IrDA: Registered device irda0
[  349.311665] usb 1-1: firmware: requesting 42101002.sb
[  349.323706] stir421x_patch_device(): Received firmware 42101002.sb (1687 bytes)
[  349.343998] irda_usb_init_qos(), dongle says speed=0x17F, size=0x20, window=0x8, bofs=0x80, turn=0x4
[  349.344052] usbcore: registered new interface driver irda-usb
[  349.344059] USB IrDA support registered

ifconfig irda0

respuesta obtenida:
irda0     Link encap:IrLAP  direcciónHW 00:00:00:00
          NOARP  MTU:2048  Métrica:1
          Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:8
          Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)

sudo irdadump

respuesta obtenida:
20:21:57.966408 xid:cmd e52c5b89 > ffffffff S=6 s=0 (14)
20:21:58.053362 xid:cmd e52c5b89 > ffffffff S=6 s=1 (14)
20:21:58.131360 xid:rsp e52c5b89 < 51473487 S=6 s=1 TuxPalm hint=8220 [ PDA/Palmtop IrOBEX ] (25)
20:21:58.141901 xid:cmd e52c5b89 > ffffffff S=6 s=2 (14)
20:21:58.229340 xid:cmd e52c5b89 > ffffffff S=6 s=3 (14)
20:21:58.318339 xid:cmd e52c5b89 > ffffffff S=6 s=4 (14)
20:21:58.406361 xid:cmd e52c5b89 > ffffffff S=6 s=5 (14)
20:21:58.493326 xid:cmd e52c5b89 > ffffffff S=6 s=* laptop hint=0400 [ Computer ] (22)
20:22:00.966316 xid:cmd e52c5b89 > ffffffff S=6 s=0 (14)
20:22:01.053312 xid:cmd e52c5b89 > ffffffff S=6 s=1 (14)
20:22:01.141305 xid:cmd e52c5b89 > ffffffff S=6 s=2 (14)
20:22:01.229332 xid:cmd e52c5b89 > ffffffff S=6 s=3 (14)
20:22:01.307243 xid:rsp e52c5b89 < 51473487 S=6 s=3 TuxPalm hint=8220 [ PDA/Palmtop IrOBEX ] (25)
20:22:01.317332 xid:cmd e52c5b89 > ffffffff S=6 s=4 (14)
20:22:01.405295 xid:cmd e52c5b89 > ffffffff S=6 s=5 (14)
20:22:01.493324 xid:cmd e52c5b89 > ffffffff S=6 s=* laptop hint=0400 [ Computer ] (22)
20:22:03.965332 xid:cmd e52c5b89 > ffffffff S=6 s=0 (14)
20:22:04.054140 xid:cmd e52c5b89 > ffffffff S=6 s=1 (14)
20:22:04.141362 xid:cmd e52c5b89 > ffffffff S=6 s=2 (14)
xid:rsp e52c5b89 < 51473487 S=6 s=2 TuxPalm hint=8220 [ PDA/Palmtop IrOBEX ] (25)
20:22:04.229350 xid:cmd e52c5b89 > ffffffff S=6 s=3 (14)
20:22:04.318286 xid:cmd e52c5b89 > ffffffff S=6 s=4 (14)
20:22:04.406349 xid:cmd e52c5b89 > ffffffff S=6 s=5 (14)
20:22:04.494330 xid:cmd e52c5b89 > ffffffff S=6 s=* laptop hint=0400 [ Computer ] (22)
^C
24 packets received by filter


Para detener el comando irdadump, es necesario pulsar ctrl-c.

Nota:  Si disponemos de un dispositivo de infrarrojos, podemos colocarlo delante para comprobar la comunicación entre ambos (Ver texto en negrita).

Compilar e instalar los drivers de Kvaser en Linux.

Compilar e instalar los drivers de Kvaser en Linux.


Kvaser es uno de los mayores fabricantes de tarjetas CAN que existen en el mercado, especialista en buses de comunicaciones CAN y bus LIN.

Para instalar los drivers de las tarjetas CAN Kvaser, lo descargaremos de la página web http://www.kvaser.com/en/downloads.html. en la página seleccionar el tipo de descarga 'Download Type=Driver' automáticamente se actualiza la lista de archivos, mostrando el driver 'Kvaser LINUX Driver and SDK'.
Es necesario indicar una dirección de correo electrónico para descargar el archivo y hacer click en el botón 'Download'.
Una vez descargado, se extrae el contenido del archivo. Se puede dejar en la misma carpeta de descarga, pero en mi opinión creo que es mejor mover el contenido a otra ubicación.
Por ejemplo '/home/user/' o en mi caso está en '/opt/'


Abriremos el terminal con la combinación de teclas 'Alt+F2' y escribir 'gnome-terminal'.
Para cambiar a la carpeta de descargas, 'cd /home/user/Descargas/' o bien cambiar por la ruta del archivo descargado.
Copiar el archivo descargado y descomprimir el contenido en la carpeta '/opt/':

sudo cp linuxcan_beta.tar.gz /opt/
sudo tar xzvf linuxcan_beta.tar.gz

Eliminar archivo *.tar.gz inecesario:
sudo rm linuxcan_beta.tar.gz

Instalación completa de drivers.

Los pasos para compilar e instalar todos los drivers son:

make // compilar
make install // instalar

Al iniciar el canal virtual con 'virtualcan.sh start' aparece un mensaje de error.
WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
Lo que viene a decir, es que todos los archivos de configuración deberían estar dentro de la carpeta '/etc/modprobe.d/'

En distribuciones basadas en Debian, Ubuntu, Guadalinex y derivadas es necesario mover el archivo 'modprobe.conf' que se encuentra en la carpeta '/etc/modprobe.conf' a la carpeta '/etc/modprobe.d/'
Es posible que este problema también ocurra en otras distribuciones Linux.

Instalación parcial o personalizada.


Es posible compilar e instalar solo el driver que nos interese, es recomendable realizarlo así por varios motivos:
  1. Reducir el tamaño del driver final.
  2. Hardware compatible con nuestro equipo ya sea Laptop o PC.
  3. Solventar errores de 'modprobe.conf'
Por ejemplo no tendría mucho sentido instalar el driver ISA o PCI en un portátil.

Para compilar e instalar un driver solo, lanzamos el comando 'make' seguido del driver a instalar.

make leaf_install

donde 'leaf_install' es el hardware que queremos instalar.

Si queremos excluir hardware al compilar, necesitamos modificar el archivo settings.mak
En mi caso solo me interesa el canal virtual, el resto de hardware están comentados con #.

#----------------------------------------
# Hardware included in build
#
# To exclude a hardware add a '#' in front
# of the hardware
#----------------------------------------
#DRIVERS   += lapcan
#DRIVERS   += pcican
#DRIVERS   += pcicanII
#DRIVERS   += usbcanII
#DRIVERS   += leaf
DRIVERS   += virtualcan

En la instalación manual, podemos evitar el error de modprobe.conf modificando el archivo 'installscript_virtualcan_26.sh'
Editar el archivo 'installscript_virtualcan_26.sh' desde el terminal:

sudo gedit installscript_virtualcan_26.sh

Cambiar las siguientes lineas:

comentar la linea 8
#grep -v virtualcan /etc/modprobe.conf                    > new_modprobe.conf
y poner esta otra
grep -v virtualcan /etc/modprobe.d/modprobe.conf         > new_modprobe.conf

comentar la linea 13
#cat new_modprobe.conf > /etc/modprobe.conf
y poner esta otra
cat new_modprobe.conf > /etc/modprobe.d/modprobe.conf

guardamos el archivo y salimos de la aplicación.
Ahora ya es posible realizar la instalación personalizada y sin errores.

sudo make virtualcan_install

Para comprobar si la instalación es correcta:
sudo /usr/sbin/virtualcan.sh start

Cargamos el modulo del canal virtual de CAN.
Y ahora listamos los canales CAN disponibles:

sudo ./canlib/examples/listChannels

La respuesta obtenida seria similar a esta:

Found 2 channels.
channel 0 = KVASER VIRTUALcan channel 0, 0-0000-00000-0, (0)0, 0.0.0.0
channel 1 = KVASER VIRTUALcan channel 1, 0-0000-00000-0, (0)0, 0.0.0.0

Terminada la instalación del driver CAN Kvaser y verificado su funcionamiento.

El driver Kvaser podrá incluirse en CANinLinux

Después de consultar la posibilidad de incluir los drivers Kvaser en la aplicación, tengo respuesta por parte del soporte técnico de Kvaser. Es posible incluir los drivers sin problema alguno, además permiten modificar y distribuir libremente.

Su principal interes es vender su hardware no las librerías.

También tienen interés en la evolución del proyecto, tal vez otras personas podrían interesarse e incluirlo en su lista.