Hosting de Calidad
  • Inicio
  • Precios y servicios
  • F.a.q y ayudas
  • Realizar pedido
  • Webs alojadas
  • Quienes somos
  • Foro HyD
  • Contacto

    Zona Dominios

    Entrar
    registro de dominios


    Zona Hosting

    Entrar
    alojamiento web


    5 Métodos de Pago
    Tarjeta de crédito
    Domiciliación
    Transferencia
    Soporte Epagado
    Soporte Paypal

    Liberalización .es

    Ver mas
    dominios .es


  •  
     
     
    Linux - Dominios - Hosting - USB: USB ratón-teclado Página siguiente Página anterior Índice general

    8.1 USB ratón-teclado

    Esta sección está fuertemente basada en el capítulo 2 del documento The Linux USB sub-system y me centro en el ratón y teclado, supongo que el resto de componentes no debiera tener ningún problema añadido (exceptuando dispositivos de puerto pararelo).

    Se supone que se trabaja con el kernel 2.2.16 (es en el que probó el autor, aunque debiera de funcionar con el 2.2.14).

    ¿Cómo puedo saber si mi adaptador USB es OHCI o UHCI ?

    Si tu placa madre usa chipsets Intel, PIIX4, VIA,... el adaptador USB es UHCI, y si usa Compaq, iMacs, OPTi, Sis,Ali,... el adaptador USB es OHCI. En caso de no conocer que chipsets tiene tu ordenador hay dos opciones: lo abres y/o (lo más cómodo) y suponiendo que tengas un kernel compilado con la entrada /proc/pci activada, puedes hacer un cat /proc/pci, si la entrada USB es de la forma 0xHHHH (16 bits) es UHCI, si es 0xHH000000 (32 bits) entonces es OHCI.

    No me aparecen las opciones de compilación de USB en el kernel 2.2.16

    Los drivers de USB están en contínuo desarrollo y se arreglan muchos bugs de una versión a otra, al igual que se añaden muchas características nuevas. Actualmente, el desarrollo de USB se centra para la serie de kerneles 2.4 y los que vienen de serie con el 2.2.x están muy anticuados. Para ello hay un backport de los drivers USB de la seria 2.4 al 2.2.16. Estos funcionarán con los dispositivos soportados a excepción de los que usen el puerto paralelo, por necesitar éstos del driver partport que sufrió muchas modificaciones.

    Entonces lo que tendremos que hacer es descargar el parche de http://www.suse.cz/development/usb-backport/usb-2.4.0-test2-pre2-for-2.2.16-v3.diff.gz y aplicarlo al árbol de fuentes del kernel 2.2.16 mediante los comandos:

       [22:55:17 asimov@asimovi download]$ cd /usr/src/linux-2.2.16/
       [22:55:17 asimov@asimovi download]$ gzip -dc /tmp/usb-2.4.0-test2-pre2-for-2.2.16-v3.diff.gz|patch -p1
    

    Ahora ya podremos hacer un make xconfig o un make menuconfig, el make config se lo dejo a los arriesgados o a los que no tienen más remedio (aunque si se tiene usb, se tiene máquina suficiente ;-).

    ¿Qué opciones marco?

    La primera opción a seleccionar es la de Support USB (recomiento la opción como módulo), y la opción Preliminary USB device filesystem para la opción de /proc/usb, a continuación si se sabe ya si es OHCI o UHCI pues seleciona UHCI (Intel PIIX4, VIA, ...) ó ohci-hcd (Compaq, iMacs,OPTi, SiS, ALi,...) aunque si se va a utilizar el script de este howto, mejor seleccionar los dos (siempre como módulo).

    Necesitarás marcar qué dispositivos quieres usar:

    • Human Interface Device (HID) support : (es en la que nos centramos en este howto) útil para teclado, ratón, joystick USB.
    • Mouse support : Selecciona esta opción en caso de tener un ratón USB, no selecciones USB HIDBP Mouse support.
    • Keryborard support: Selecciona esta opción en caso de tener un teclado USB, no selecciones USB HIDBP Keyboard support.
    • USB Scanner support :
    • ....

    ¿Dónde está el dispositivo del ratón, y cómo le digo a las X donde está?

    El dispositivo de un PS/2 es el /dev/psaux, el de uno serie es el /dev/ttySx, en realidad da igual el nombre, lo importante son los números mágicos mayores y menores. En el script que se adjunta más abajo, crea el directorio /dev/input/ y en él dispositivo con mknod /dev/input/mice c 13 63.

    Para utilizar el ratón USB con las X, hay que editar el fichero /etc/X11/XF86Config

    Versión

    XFree86>=4.0

       Section "InputDevice"
                 Identifier "Ratón USB"
                 Driver "mouse"
                 Option "Protocol" "IMPS/2"
                 Option "Device" "/dev/input/mice"
                 Option "ZAxisMapping" "4 5"
    EndSection
    
    Y en la seccion ServerLayout:
                 InputDevice "Ratón USB" "CorePointer"
    
    Versión

    XFree86 3.3x

       Section "Pointer"
                 Protocol "IMPS/2"
                 Device "/dev/input/mice"
                 ZAxisMapping 4 5
    EndSection
    

    ¿Como cargo los módulos compilados y como monto el sistema de ficheros /proc/usb?

    Yo cogí el fichero que viene en la Mandrake 7.1, y lo modifiqué un poco, ya que éste viene para cargar los módulos antiguos, y modifiqué tambien la detección de si es UHCI o OHCI. Aquí está:

    #!/bin/sh
    if [ ! -f /etc/conf.modules -o ! -f /etc/sysconfig/usb ];then
            echo "No existe /etc/sysconfig/usb";
            exit 1;
    fi
    . /etc/rc.d/init.d/functions
    . /etc/sysconfig/usb
    #Esta función mete el alias correspondiente en /etc/conf.modules
    function sed_usb_interface () {
            local module
            module=$1
            #echo "alias usb-interface $module"
            echo "alias usb-interface $module">>/etc/conf.modules
            touch /lib/modules/$(uname -r)/modules.dep
    }
    #Esta funcion detecta el tipo de interfaz usb que tenemos (uhci_t o ohci_t)
    function probe_usb_interface () {
            local t pci_f uhci_t ohci_t
            if ! grep -q "USB" /proc/pci  ;then
            return 1;
            fi
            if [ $(cat /proc/pci |sed -n '/USB/,$p'|sed -n '3p'|awk  '{print $3;}'|wc -c|sed -e 's/\ *//') -gt 7 ];then 
                    sed_usb_interface usb-ohci      
                    return 0;
            else    
                    sed_usb_interface usb-uhci      
                    return 0;
            fi
    }       
     
    function get_usb_interface () {
            if ! grep -q "^alias usb-interface" /etc/conf.modules; then
                    echo -n "Detectando interfaz USB    "
                    if ! probe_usb_interface; then
                            echo_failure;
                            echo
                            exit 1;
                    else
                            echo_success
                            echo
                    fi
            fi
    }
     
    function mount_proc_usb () {
            if grep -q usbdevfs /proc/filesystems; then
                    if ! grep -q /proc/bus/usb /proc/mounts; then
                            action "Montando sistema de ficheros USB" mount -t usbdevfs /proc/bus/usb /proc/bus/usb
                    fi
            fi              
    }
     
    function umount_proc_usb () {
            if grep -q usbdevfs /proc/filesystems;then
                    if grep -q /proc/bus/usb /proc/mounts;then
                            action "Desmontando sistema de ficheros USB" umount /proc/bus/usb
                    fi
            fi
    }
     
     
    ################################################
    #           Main                               #
    ################################################
     
    PKLVL=`sed -e 's/^\(.\).*/\1/'</proc/sys/kernel/printk`
    case $1 in
            start)
            get_usb_interface;
            sysctl -w kernel.printk=0
            action "Cargando interfaz USB" /sbin/modprobe usb-interface
            if [ "$MOUSE" = "yes" ];then
                    sleep 2
                    if [ ! -d /dev/input ];then
                            mkdir /dev/input
                    fi
                    if [ ! -c /dev/input/mice ];then
                            mknod /dev/input/mice c 13 63
                    fi
                    action "Cargando ratón USB" /sbin/modprobe input && /sbin/modprobe hid && /sbin/modprobe mousedev
            fi
            if [ "$KEYBOARD" = "yes" ];then
                    sleep 2
                    action "Cargando teclado USB" /sbin/modprobe input && /sbin/modprobe hid && /sbin/modprobe keybdev
            fi
            sleep 1 && sysctl -w kernel.printk=$PKLVL
            mount_proc_usb;
            ;;
            stop)
            sysctl -w kernel.printk=0
            if [ "$MOUSE" = "yes" ];then
                    action "Descargando ratón USB" /sbin/modprobe -r mousedev && /sbin/modprobe -r hid && /sbin/modprobe -r input 
        fi
        if [ "$KEYBOARD" = "yes" ];then
                    action "Descargando teclado USB" /sbin/modprobe -r keybdev && /sbin/modprobe -r hid && /sbin/modprobe -r input 
        fi
        action "Descargando interfaz Usb" /sbin/modprobe -r usb-interface
        sleep 1 && sysctl -w kernel.printk=$PKLVL
        ;;
        status)
        if fgrep -q usbcore /proc/modules; then
                echo "USB Cargado."
        else 
                echo "USB no cargado."
        fi  
        exit 0
        ;;
        restart)
        $0 stop
        $0 start
        ;;
        *)
        echo "Uso: $(basename $0) start|stop|restart|status"
        exit 0
        ;;
    esac
    exit 0
     
    

    Este archivo se puede meter en /etc/rc.d/init.d/usb, y hacerle un enlace desde el nivel de ejecución, bien sea a mano, o mediante el ksysv o cualquier otro editor de niveles de arraque. Este fichero funcionará en redhat y derivadas. Para que funcione en el resto hay que eliminar la línea . /etc/rc.d/init.d/functions y sustituir la expresión action <cadena> por echo <cadena>';'.

    El fichero supone que existe el fichero /etc/sysconfig/usb, en el que estarán las claves MOUSE y KERYBOARD, con yes o cualquier otra cosa.

    Básicamente los módulos a cargar son:

    usbcore.o, usb-uhci.o o usb-ohci.o, input.o, hid.o, y mousedev.o y/o keybdev.o

    Direcciones de interés

    http://www.linux-usb.org.

    Aquí está todo lo que se necesita (para qué se quiere más).


    Página siguiente Página anterior Índice general
     
       



    registro de dominios | alojamiento web | hosting por publicidad

       

     

    Manual de linux Manual de apache Manual de php Manual de mysql Manual de SQL Manual del Plesk Como funciona Paypal Manual de html