Tengo que probar cómo se comporta un dispositivo USB de alta velocidad cuando se ejecuta a velocidad máxima.
Como la velocidad alta funciona a 480 MHz y la velocidad máxima a 12 MHz, pensé que esto sería fácil con un "filtro de paso bajo" que no permite que las altas frecuencias pasen, por lo que el host negociaría automáticamente una velocidad más lenta con el dispositivo.
Abrí un cable USB y soldé un condensador entre Data + y Data, así:
Pero aunque probé varios valores para el condensador, no funcionó.
Cuando conecto 3.3pF, 6.8pF o 12pF, el dispositivo funcionará con Alta velocidad. ¿Cómo probé eso? Conecto una memoria USB y transfiero un archivo grande. La velocidad de transferencia es de 20 Megabyte / s, que es demasiado rápida para la velocidad máxima.
Cuando aumente el condensador a 15pF o más, de repente veo que el dispositivo funciona con Baja velocidad (1.5MHz) o incluso falla completamente (falla la enumeración del dispositivo)
Intenté esto en dos computadoras diferentes. La placa base tiene concentradores USB 2.0 y concentradores USB 3.0. No hay diferencia en bahaviour. Lo intenté en Windows XP y Windows 7.
No hay manera de conseguir la velocidad máxima. Ya sea Alta velocidad o Baja velocidad o nada.
¿Alguien me puede explicar eso? ¿Cómo fuerzo a que el dispositivo funcione a velocidad máxima?
ACTUALIZACIÓN: 9 meses después de hacer esta pregunta (y de ser más experto en dispositivos USB), hoy sé que el USB no tiene un mecanismo de retroceso. Si un dispositivo de alta velocidad no responde como se esperaba, la enumeración del dispositivo simplemente fallará. La computadora no intenta comunicarse con un dispositivo de alta velocidad a toda velocidad después de que haya fallado una negociación de alta velocidad y tampoco el dispositivo vuelve al modo de velocidad máxima. La única forma de forzar la velocidad máxima es usar un concentrador de velocidad completa (USB 1.1), que es muy difícil de encontrar hoy en día.