edición general
147 meneos
3058 clics
El protocolo USB: ¿cómo funciona un teclado USB? [ENG]

El protocolo USB: ¿cómo funciona un teclado USB? [ENG]  

Al contrario que su predecesor PS/2, en que cada pulsación de tecla tenía una respuesta eléctrica inmediata, el protocolo USB y también los teclados, son mucho más complejos. Un teclado USB conectado directamente a un osciloscopio no "hace nada" cuando se pulsa una tecla. ¿Por qué? En USB la conexión la maneja el maestro: Los dispositivos por sí mismos no inician ningún intercambio de información. Ben Eater explica con su habitual forma didáctica las bases de un teclado USB, y del protocolo base en general.

| etiquetas: ben eater , usb , teclado
  1. Madre mía, menuda currada y qué didáctico el hombre.
  2. Muy interesante el video.
  3. Hay electrotrastorno de calidad, hay meneo
  4. ¿Y esto, entonces, funciona?  media
  5. Un teclado PS2 generaba una interrupcion inmediata.
  6. #5 Sí, pero transmitía a menor velocidad que el USB.

    Por contra en el USB es el ordenador que le pide al teclado si hay alguna tecla pulsada, de los teclados que prueba en el vídeo en uno el ordenador lo pide cada 16 ms y en otro lo pide cada 1 ms. Con ésta última velocidad de petición el tiempo de respuesta del PS2 y USB son equiparables, el PS2 empieza a transmitir inmediatamente cuando se pulsa la tecla pero va lento a hacerlo, el USB no dice nada hasta que el PC pregunta pero responde muy rápido cuando es preguntado.
  7. #4 Tal cual está descrito en la entradilla. El ordenador controla el USB, y el USB tiene un controlador que convierte las señales recibidas por el puerto PS/2 en un teclado USB virtual.
  8. #6 Olvidas el polling del USB.

    La latencia del USB es infumable, todo retrojugador lo sabe.

    Las interrupciones de la CPU desde el PS2 son a nivel del 8259.
  9. #4 Pues seguramente peor.
  10. #8 No solo no lo olvido si no que me refiero a ello de forma explícita: "Por contra en el USB es el ordenador que le pide al teclado si hay alguna tecla pulsada".

    La latencia del USB es infumable, todo retrojugador lo sabe.

    En el vídeo se demuestra que depende del teclado, que hay teclados de baja velocidad a 16ms de polling y teclados de alta velocidad a 1ms de polling. Es con éstos que se compite en latencia con el PS2.

    En el vídeo lo tienes a partir del minuto 30:25 : www.youtube.com/watch?v=wdgULBpRoXk&t=30m25s
  11. #11 Si, pero para las interrupciones creo que estaba el 8259.

    es.wikipedia.org/wiki/Intel_8259

    Sobre lo de depurar un SO con PS2 lo se de sobra (kernel panics en BSD).
  12. Asi muchos programadores se volvieron locos. Antes los puertos eran direcciones fisicas en memoria ( COM, LPT, PS2) ahora son virtuales.
  13. #5: Yo el teclado como mínimo lo prefiero por PS2, porque lo veo más fiable en caso de problemas.
    Y es más, los teclados y ratones USB abren la puerta a los espionajes realizados mediante patitos de goma, que básicamente es un dispositivo USB que dice ser un teclado, y cuando lo conectas a una torre empieza a ejecutar guiones a toda velocidad y te permite descargar en el propio dispositivo (también es una memoria) toda la información interesante de ese ordenador en pocos segundos (lo que se tarde en ejecutar). Antes eso requería de teclear, buscar... con un #patito_de_goma es enchufar y listo. Por supuesto, antes tienes que programar el patito de goma, si no lo programas no funciona. Otra es que requiere de un acceso físico al ordenador, aunque lo mismo inventan los teclados por cable de red y entonces os podéis imaginar.
    www.youtube.com/results?search_query=patito+de+goma+usb
    www.youtube.com/results?search_query=rubber+ducky+usb
    Un patito de goma te puede pwnear en pocos segundos.
  14. #15 Entonces mejor quitamos los puertos USB de las placas base.
  15. #16: En según qué ordenadores lo interesante sería poder bloquear los conectores para teclado y ratón (ambos PS2) e impedir que el sistema operativo acepte otros teclados y ratones, así, incluso aunque el #Rubber_Ducky tenga un cable PS2 adicional no podrías hacer gran cosa.
    www.youtube.com/watch?v=9gocQFl6mWI
    Esta herramienta te pwnea un ordenador en pocos segundos.
  16. #8 Los retrojugadores comen placebo en todos los platos cuatro veces al día.
  17. #17 ¿Por qué escribes patito de goma en negrita?
  18. #15 Usar un teclado PS2 no te protege del ataque que describes, cualquier otro dispositivo USB puede llevar a cabo ese ataque con el teclado PS2 enchufado.
  19. #20: Salvo que bloquees la instalación de teclados adicionales USB.
    Aunque como digo, si se populariza eso sacarían una versión especial del Rubber Ducky con un cable adicional PS2.
  20. Lo sigo de hace un tiempo y me parece una pasada. De hecho, con este me quedé flipando lo bien que lo explicaba:

    www.youtube.com/watch?v=kRlSFm519Bo

    Ya podrían ser así muchos profesores universitarios...
  21. #19: Para generar temor entre los no iniciados, un poco como cuando en la TV ponen música siniestra de fondo cuando hablan de estos temas, además de usar imágenes de almacén (stock) de gente usando el ordenador con guantes y un pasamontañas, ordenadores en entornos oscuros y con pantallas con un código fuente aleatorio (a ser posible fondo negro con letras verdes). :-P
    ¿Verdad, Antena 3, Telecinco...? xD
  22. #21 Salvo que bloquees la instalación de teclados adicionales USB.

    ¿Es realista poder hacer eso con los sistemas operativos actuales?
  23. #24: Ni idea, pero en ordenadores con acceso a información sensible sería interesante que se pudiera hacer algo así, aunque alguno será capaz de sacar algo para "pinchar" el teclado con algo e inyectarle señales directamente en el cable, o vete a saber qué.
  24. #25 Pues sin esa medida de bloqueo usar un teclado PS2 no te protege de nada.
  25. #26: No, el problema es cuando se permite conectar un teclado en cualquier sitio del ordenador.
  26. #18 Los cojones.

    Tu comprueba la latencia de entrada de DOS + teclado USB junto a un sistema de ventanas con un compositor y teclado USB.

    twitter.com/gravislizard/status/927593460642615296
  27. #27 Si anulas los usb de forma que no se pueda acceder físicamente a ellos entonces es lo mismo usar un teclado PS2 que tener un teclado USB (bloqueas todos los puertos menos ese).

    Si no bloqueas los puertos USB te da igual donde esté conectado el teclado y de que formato sea, te viene el usuario te enchufa una memoria USB infectada y el sistema operativo se traga el ataque como si nada.
  28. #29: La idea es poder seguir disponiendo de puertos USB, pero sin que pueda llegar alguien con un patito de goma y llevarse todo.
  29. #30 La idea la entiendo, pero si el sistema operativo se sigue tragando lo que le pongan, como ocurre ahora, el elegir poner un teclado PS2 en vez de USB no te protege de ninguna forma.
  30. #28 Como demuestra el vídeo del meneo hay teclados USB con tiempos de respuesta de 16ms y teclados USB con tiempos de respuesta de 1ms, ¿a que tipo de teclado hace referencia tu comentario?
  31. #32 El teclado responderá bien pero el bus no, y tampoco creo que con el kernel con el polling a 1000hz haga algo.
  32. #33 Eso son especulaciones.

    Si no conoces cual es el tiempo de respuesta del teclado no puedes saber cual es el cuello de botella.

    Si existen teclados con tiempos de respuesta de 16ms y no sabes si estás usando uno de esos tus resultados no pueden extrapolarse a los teclados con tiempo de respuesta de 1ms, y quién sabe si los hay con tiempos de respuesta inferiores.
  33. #35 No es solo la frecuencia de polling, tambien afecta en PS2 la interrupcion directa de la CPU mediante una IRQ.

    Antanyo si quitabas un teclado/raton USB en caliente podias colgar el equipo.

    Por cierto, muchas placas de PS2 en esos PC's son PS2 con un convertidor hacia un bus USB.
  34. #36 ¿Has visto el vídeo al que te han enlazado?

    Por que tu discurso es idéntico sean cuales sean las evidencias que se te presenten.
  35. #37 Si. Y sigue respondiendo una CPU *por disenyo* mucho mas rapido a una interrupcion PS/2 que a un USB incluso a 1000 hz.

    Un dia descubriras que el disenyo de los specs del USB es una puta pesadilla.
  36. #38 Y aún así un teclado con adaptador PS2 e interrupciones responde más lento que un teclado USB en un entorno de uso real como es un videojuego, que contempla todo lo que estás exponiendo. Tal como se demuestra en el vídeo que dices haber visto.

    Tu hipótesis ha sido falsada. Un teclado USB puede responder más rápido que uno PS2. Y es que el puerto PS2 usa una velocidad de transmisión muy inferior al puerto USB y eso lo penaliza por muchas interrupciones que utilice.

    Si fuera una carrera siempre saldría antes que el contrincante pero iría más lento.
  37. #39 Olvidas que el bus USB es compartido el polling de 1000 hz en el USB lo es en el mejor de los casos, mientras que la interrupcion y latencia de la PS2 siempre es inmediata puesto que la IRQ es impepinable.

    El controlador 8259 siempre va a procesar los datos de forma inmediata y con el USB no te aseguras dicha inmediatez.

    Cuando el controlador escucha al raton PS2, la CPU obedece al controlador por sus cojones, quiera o no.
  38. #40 No, no olvido nada, lo que te recuerdo es que las pruebas aportadas en el vídeo ya incluyen todo lo que tú dices que se olvida, está incorporado por que es una prueba real de medición desde que se pulsa la tecla a la reacción del videojuego.

    Y un teclado PS2 puede perder contra un teclado USB en cuanto a latencia real.
  39. #1 Es uno de los youtubers que mejor explica las bases de la tecnología electrónica e informática. Su canal es una mina.
  40. #41 El teclado si, el conjunto de teclado + controlador en un uso real con mas dispositivos en el bus (cosa que siempre ocurre en muchos casos con dispositivos de uso en conjunto) no va a ser tanto como en el video.
  41. #43 El teclado si, el conjunto de teclado + controlador en un uso real con mas dispositivos en el bus (cosa que siempre ocurre en muchos casos con dispositivos de uso en conjunto) no va a ser tanto como en el video.

    Eso son especulaciones.

    En los experimentos que sí conocemos, donde sí se han hecho mediciones, el teclado USB puede ganar al teclado PS2.
  42. #37 Esta gentuza lleva con el mismo discurso desde hace décadas. Da igual que AMD incluya el controlador USB dentro del propio procesador. Que los fabricantes de periféricos se dejen los cuernos desarrollando formas de mejorar el input lag. Da igual que un OLED a 120hz tenga unos 6ms de input lag. Que Sony con el DS4 haya conseguido latencias ridículas sobre... ¡Bluetooth! Da igual que con los datos en la mano las diferencias sean de menos de 3ms.

    Da todo igual. Te lo van a tirar todo por tierra porque sus sentimientos son más importantes que todo lo demás. Viva el puto método científico.
  43. #24 en linux es facil: solo tienes que poner una regla udev que deje pasar solo el teclado con el numero de serie correcto.
comentarios cerrados

menéame