Hace 2 años | Por ccguy a youtube.com
Publicado hace 2 años por ccguy a youtube.com

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.

Comentarios

Cesc_

Madre mía, menuda currada y qué didáctico el hombre.

mandelbr0t

#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.

lgg2

Muy interesante el video.

sifou

Lo sigo de hace un tiempo y me parece una pasada. De hecho, con este me quedé flipando lo bien que lo explicaba:



Ya podrían ser así muchos profesores universitarios...

hijomotoss

Asi muchos programadores se volvieron locos. Antes los puertos eran direcciones fisicas en memoria ( COM, LPT, PS2) ahora son virtuales.

D

#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.

sorrillo

#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?

D

#32 El teclado responderá bien pero el bus no, y tampoco creo que con el kernel con el polling a 1000hz haga algo.

sorrillo

#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.

Or3

#28 Edúcate:



cc: #32

D

#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.

sorrillo

#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.

D

#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.

sorrillo

#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.

D

#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.

sorrillo

#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.

D

#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.

sorrillo

#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.

Or3

#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.

F

Hay electrotrastorno de calidad, hay meneo

sorrillo

#25 Pues sin esa medida de bloqueo usar un teclado PS2 no te protege de nada.

m

#26: No, el problema es cuando se permite conectar un teclado en cualquier sitio del ordenador.

sorrillo

#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.

m

#29: La idea es poder seguir disponiendo de puertos USB, pero sin que pueda llegar alguien con un patito de goma y llevarse todo.

sorrillo

#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.

D

Un teclado PS2 generaba una interrupcion inmediata.

sorrillo

#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 :

Or3

#8 Los retrojugadores comen placebo en todos los platos cuatro veces al día.

D

#12
Sí bueno. Funcionan juntos. La arquitectura Intel va con eso. En procesadores modernos ha sido desplazado por el APIC, que permite recibir interrupciones entre núcleos y de periféricos de E/S.

D

#47 Además, el método de encuesta no es muy óptimo que digamos. Gasta ciclos de procesador inútilmente. El PS/2 no demanda atención del procesador hasta que no se pulse una tecla, generando una interrupción.
Los dispositivos USB 1.1/2.0 como son teclados y ratones gastan ciclos inútilmente, puesto que el controlador USB es controlado por software. No es autónomo. Así que en el siguiente párrafo donde dice que el «host controller» dirige el tráfico, en realidad está diciendo que la CPU del anfitrión está dirigiendo el tráfico:

The host controller directs traffic flow to devices, so no USB device can transfer any data on the bus without an explicit request from the host controller. In USB 2.0, the host controller polls the bus for traffic, usually in a round-robin fashion. The throughput of each USB port is determined by the slower speed of either the USB port or the USB device connected to the port.
https://en.wikipedia.org/wiki/USB

De esta forma el hardware es más barato.

Alvarro53

#15 Entonces mejor quitamos los puertos USB de las placas base.

m

#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.


Esta herramienta te pwnea un ordenador en pocos segundos.

Alvarro53

#17 ¿Por qué escribes patito de goma en negrita?

m

#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).
¿Verdad, Antena 3, Telecinco...? lol

sorrillo

#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.

m

#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.

sorrillo

#21 Salvo que bloquees la instalación de teclados adicionales USB.

¿Es realista poder hacer eso con los sistemas operativos actuales?

m

#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é.

f

#24 en linux es facil: solo tienes que poner una regla udev que deje pasar solo el teclado con el numero de serie correcto.

a

¿Y esto, entonces, funciona?

K

#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.

crycom

#4 Pues seguramente peor.