Академический Документы
Профессиональный Документы
Культура Документы
§1 Antecedentes
Como resultado de un intento de dotar al PC de un bus de alta velocidad que ofreciera las
características ideales PnP de universalidad; facilidad de conexión y desconexión, incluso en
caliente ("Hot Swappable"), y sobre todo, que consumiese pocos recursos. Intel y otros líderes
de la industria diseñaron el Bus Universal Serie, más comunmente conocido por su acrónimo
inglés USB ("Universal Serial Bus"). Que como su nombre indica, es un bus serie bidireccional
y de bajo coste. Diseñado como una extensión en la arquitectura estándar del PC y orientado
principalmente en la integración de periféricos, que aparecen como un solo puerto en lo que se
refiere a utilización de recursos.
Nota: En sus orígenes el interés primordial del bus USB se centraba en la integración de
dispositivos telefónicos CTI ("Computer Telephony Integrations") en los ordenadores.
§2 Estándares
La tecnología USB ha sido promovida principalmente por Intel, aunque le han seguido todos los
grandes fabricantes, de forma que se ha convertido en un estándar importante. En sus
comienzos los interesados en esta tecnología se agruparon en un foro, el USB Implementers
Forum Inc., USB-IF, que agrupa a más de 460 compañías [4], y ha publicado diversas
revisiones de la norma:
§3 Historia
El primer ordenador que incluyó un puerto USB de forma estándar fue el iMac de Apple,
presentado en Marzo de 1998, que utilizaba esta conexión para el teclado y el ratón. Por su
parte el mundo del PC solo comenzó a utilizarlo cuando Microsoft introdujo los controladores
correspondientes en la versión OSR 2.1 de Windows 95. Fue a partir de Windows 95C cuando
los sistemas de MS incorporan de forma estándar soporte para este bus. En el ámbito de
servidores la incorporación se produjo en Windows 2000.
Los primeros dispositivos que empezaron a utilizar este tipo de conexión fueron las cámaras de
video-conferencia, aunque actualmente (2005) pueden encontrarse todo tipo de dispositivos.
El resultado es que, junto con los dispositivos inalámbricos (algunos de los cuales se conectan
también a través de esta interfaz), la conexión USB se ha convertido en el método universal de
conexión de periféricos, incluyendo dispositivos de almacenamiento y los denominados HID
("Human Interface Device") - principalmente ratones y teclados-.
§4 Topología
Los dispositivos USB adoptan una topología de estrella y se organiza por niveles a partir de un
controlador host instalado en la placa base, que actúa de interfaz entre el bus de ésta
(generalmente a la interfaz PCI 6.4) y el primer dispositivo USB, el denominado
concentrador raíz ("Root hub"), instalado también en la placa. El controlador de host es
único; suele ser un chip Intel con una denominación como 82371AB/EB; 82801DB, etc. Dada
la proliferación de este tipo de dispositivos, las placas modernas pueden disponer de varios
concentradores raíz, cada uno con su propia salida (generalmente 2 conectores del tipo "A"
por cada uno de ellos). Cada uno de estos concentradores se considera el origen de un bus
(numerados sucesivamente a partir del 0), del que cuelgan los dispositivos en el orden en que
son detectados por el Sistema.
El bus USB soporta intercambio simultáneo de datos entre un ordenador anfitrión y un amplio
conjunto de periféricos. Todos los periféricos conectados comparten el ancho de banda del
bus por medio de un protocolo de arbitraje basado en testigos ("Tokens"). El bus permite
conexión y desconexión dinámica, es decir, que los periféricos se conecten, configuren,
manipulen y desconecten mientras el sistema anfitrión y otros periféricos permanecen en
funcionamiento.
Nota: A pesar de lo anterior, dado que una vez instalados, los discos USB son
contemplados como parte de sistema de ficheros, estos dispositivos requieren un
tratamiento especial para su desconexión. El proceso garantiza que los ficheros sean
propiamente cerrados; que que se grabe el contenido de las cachés correspondientes; que
(en su caso) las cabezas de lectura escritura se sitúen en sus zonas de aparcamiento, y
que no puedan ser accedidos accidentalmente por otra aplicación mientras son retirados,
lo que podría producir corrupciones en el sistema de ficheros.
En Windows, pulsando con el botón derecho del ratón sobre el icono de la unidad en el
explorador y seleccionando "Expulsar".
En Linux, si estamos en un entorno gráfico (por ejemplo como KDE), podemos pulsar con
el botón derecho sobre el icono de la unidad y seleccionar "Unmount". Si estamos en un
entorno texto (Shell del sistema) podemos utilizar la orden umount (consulte el manual).
Generalmente este tipo de dispositivos se instalan en los directorios /mnt o /media.
En un bus USB existen dos tipos de elementos: Anfitrión ("host") y dispositivos; a su vez, los
dispositivos pueden ser de dos tipos: concentradores y funciones [2].
Los concentradores ("Hubs") son el centro de una estrella, y sirven para conectar con
el sistema anfitrión, con otro hub o con una función. Cada hub puede conectar hasta 7
dispositivos, aunque lo normal es que sean de 4 salidas, y proporcionar 500 mA de
energía de alimentación (hasta 2.5 W) a cada uno de ellos, ya que el cable de conexión
tiene hilos de señal (datos) y de alimentación (5 V. CC ± 0.25 V).
Una función es un dispositivo capaz de transmitir o recibir datos o información de
control en un bus USB, suele conectarse como un dispositivo independiente enlazado
por un cable de menos de 5 metros, a un puerto del hub o directamente al sistema
anfitrión.
De esta descripción se desprende que cada segmento del bus representa una conexión apunto
a punto de alguno de los tipos siguientes:
Que un hub pueda estar conectado a otro hub, significa que pueden conectarse dispositivos en
cascada; el sistema soporta un total de 127 dispositivos. Una característica importante es que
el concentrador (hub), proporcionan la energía necesaria a la función por el cable de conexión
(que transporta fuerza y datos ), lo que evita la necesidad de fuentes de alimentación
independientes a las funciones.
§4 Funcionamiento
El bus serie USB es síncrono, y utiliza el algoritmo de codificación NRZI ("Non Return to Zero
Inverted"). En este sistema existen dos voltajes opuestos; una tensión de referencia
corresponde a un "1", pero no hay retorno a cero entre bits, de forma que una serie de unos
corresponde a un voltaje uniforme; en cambio los ceros se marcan como cambios del nivel de
tensión, de modo que una sucesión de ceros produce sucesivos cambios de tensión entre los
conductores de señal.
A partir de las salidas proporcionadas por los concentradores raíz (generalmente conectores
del tipo "A" ) y utilizando concentradores adicionales, pueden conectarse más dispositivos
hasta el límite señalado.
El protocolo de comunicación utilizado es de testigo, que guarda cierta similitud con el sistema
Token-Ring de IBM. Puesto que todos los periféricos comparten el bus y pueden funcionar de
forma simultanea, la información es enviada en paquetes; cada paquete contiene una
cabecera que indica el periférico a que va dirigido. Existen cuatro tipos de paquetes distintos:
Token; Datos; Handshake, y Especial; el máximo de datos por paquete es de 8; 16; 32 y 64
Bytes. Se utiliza un sistema de detección y corrección de errores bastante robusto tipo CRC
("Cyclical Redundancy Check").
El sistema utiliza cuatro tipo de transacciones que resuelven todas las posibles situaciones de
comunicación. Cada transacción utiliza un mínimo de tres paquetes, el primero es siempre un
Token que avisa al dispositivo que puede iniciar la transmisión.
Nota: Las comunicaciones asíncronas ponen más énfasis en garantizar el envío de datos,
y menos en su temporización ("cuando" lleguan); por su parte las comunicaciones
isócronas son justamente lo contrario, ponen más énfasis en la oportunidad de la
transmisión que en la velocidad. Esta sincronización es importante en situaciones como la
reproducción de video, donde no debe existir desfase entre las señales de video y audio.
§5 Cables y conectores
El cable de bus USB es de 4 hilos, y comprende líneas de señal (datos) y alimentación, con lo
que las funciones pueden utilizar un único cable.
Existen dos tipos de cable: apantallado y sin
apantallar. En el primer caso el par de hilos de señal Pin Nombre Descripción Color
es trenzado; los de tierra y alimentación son rectos, y 1 VBUS + 5 V. CC rojo
la cubierta de protecció (pantalla) solo puede
2 D- Data - azul
conectarse a tierra en el anfitrión. En el cable sin
apantallar todos los hilos son rectos. Las conexiones 3 D+ Data + amarillo
a 15 Mbps y superiores exigen cable apantallado. 4 GND Tierra verde
Nota: Una forma de identificar que los concentradores (hubs) USB están realmente
adaptados a la norma 2.0 es por su cable apantallado.
22 0.644 3.33 m
Se usan dos tipos de conectores, A y B. Ambos son polarizados
20 0.812 5.00 m (solo pueden insertarse en una posición) y utilizan sistemas de
presión para sujetarse. Los de tipo A utilizan la hembra en el
sistema anfitrión, y suelen usarse en dispositivos en los que la
conexión es permanente (por ejemplo, ratones y teclados). Los de tipo B utilizan la hembra en
el dispositivo USB (función), y se utilizan en sistemas móviles (por ejemplo, cámaras
fotográficas o altavoces). En general podemos afirmar que la hembra de los conectores A
están en el lado del host (PC) o de los concentradores (hubs), mientras las de tipo B están del
lado de los periféricos.
§6 Identificación y diagnóstico
§6.1 Windows dispone de un programa específico para ver los puertos USB reconocidos y
sus parámetros de configuración, es el programa Usbview.exe, que puede encontrarse en el
CD de instalación de Windows 98, en el directorio Tools\Reskit\Diagnose
En la figura se muestra el resultado de conectar distintos dispositivos a un hub externo colgado
de una de las dos salidas USB que proporciona el hub raíz del sistema (señaladas Port1 y
Port2). Los cuatro puertos están ocupados por los siguientes dispositivos:
Grabadora DVD
Disco de estado sólido (aparece como USB mass storage device)
Webcam
Scaner
§6.2 Linux dispone de varias utilidades relacionadas con el manejo de estos puertos.
La primera, usbview, una utilidad de interfaz gráfica GTK, que es un remedo exacto de la
utilidad Windows comentada en el párrafo anterior (es raro que se instale por defecto, de modo
que seguramente deberá instalarla ex profeso). Además de mostrar una vista jerárquica de los
dispositivos conectados, informa de las particularidades de cada uno. Puede ser útil para
comprobar si un dispositivo ha sido detectado y está funcionando correctamente.
En cuanta a la operación en modo texto (desde el Sehell), como es casi seguro que si su
equipo dispone de salidas USB, tenga su controlador de host conectado al bus PCI. Lo
primero sería averiguar que dispositivos están conectados a esta interfaz. Para ello puede
utilizarse el comando lspci, que produce una salida similar a la que sigue (se ha resaltado la
información relacionada con el controlador de host USB que es lo interesante aquí).
Como puede verse, usbcore es utilizado por los demás módulos USB (usbserial y usb-
uhci).
Los detalles de los dispositivos conectados pueden obtenerse con la utilidad lsusb. que
proporciona una relación resumida:
Aquí son significativas las indicaciones de número de bus y de dispositivo. Debemos recordar
que el número de dispositivo depende del orden en que los encuentra el kernel.
Si quiere ver los módulos (controladores) del Kernel asociados con un dispositivo USB
conectado al Sistema, puede utilizar la utilidad usbmodules en la forma usbmodules --
device /proc/bus/usb/Bus/Device. En nuestro caso, para comprobar los utilizados por
la WebCam se utilizaría la orden:
usbmodules --device /proc/bus/usb/001/005
El resultado es cpia_usb. Análogamente se obtiene que los módulos del hub NEC y del disco
sólido de Ours Technology son respectivamente usbcore y usb_storage.
Si, como es el caso, existe más de un dispositivo conectado, puede utilizar la opción lusb -t,
que proporciona una visión en árbol ("Tree") de las conexiones, similar a la obtenida con los
programas de interfaz gráfica (GUI) ya comentados:
us# 1
`-Dev# 1 Vendor 0x0000 Product 0x0000
`-Dev# 2 Vendor 0x0409 Product 0x0058
|-Dev# 3 Vendor 0x152e Product 0xe003
|-Dev# 4 Vendor 0x0ea0 Product 0x6803
|-Dev# 5 Vendor 0x0553 Product 0x0002
`-Dev# 6 Vendor 0x03f0 Product 0x0605
lsusb -v -s 001:003
También mediante el comando sginfo -l. que permite comprobar la asignación que le ha
correspondido al dispositivo:
/dev/scd0 /dev/sr0
/dev/sg0 [=/dev/scd0 scsi0 ch=0 id=0 lun=0]
Si se desea conocer la distribución interna de la unidad puede recurrir a la utilidad fdisk. Por
ejemplo, en otra ocasión se ha conectado un disco móvil USB. Las salidas a los comandos
anteriores presentan el siguiente aspecto (# es el "Propt" del shell):
§7 Enlaces de interés
Los enlaces que siguen pueden ser de interés si deseas ampliar conocimientos, buscas drivers,
información, utilidades, solución de problemas, Etc sobre este puerto tan versátil y actual.
¿Qué diferencia existe entre los puertos USB y los LPT (puerto
paralelo)?
El estándar USB 2.0 posee la ventaja de aumentar la velocidad de transferencia, que llega
a 480 MB/seg. En las impresoras no es muy importante la velocidad de transferencia,
pero sí la estabilidad, ya que estos dispositivos utilizan una memoria interna para
almacenar los datos, conocida como búfer de impresión. - La transmisión de datos
paralela, en cambio, consiste en enviar datos en forma simultánea por varios canales. Los
puertos paralelos pueden utilizarse para enviar 8 bits simultáneamente por 8 hilos, a una
velocidad máxima de transferencia de 1,5 MB/seg.