host USB que solicita una longitud de descriptor no válida

0

Supervisando el tráfico a mi dispositivo USB HS, hay una transferencia extraña. Host es 64 bit Ubuntu 13.10.

  • El Device Descriptor es siempre 18 bytes, según la especificación USB.
  • En cada enumeración, el host envía un 3% de solicitudes de Get Descriptor: Device con wLength campos de 18, 8 y 18.
  • Wireshark se queja de que la segunda respuesta, en la que el dispositivo corta correctamente los primeros 8 bytes del Device Descriptor y los envía, es un Malformed packet .

El dispositivo finalmente se enumera correctamente, pero no aparece en el menú de sonido para transmitir el audio a.

El mismo dispositivo, bajo Windows de 64 bits, nuevamente enumera correctamente, pero vuelve a publicar
    Error (10): el dispositivo no puede iniciarse.

Entonces, mi pregunta es: ¿Es anormal la situación descrita en los puntos de bala o Wireshark está equivocado?

    
pregunta Vorac

1 respuesta

1

Solicitar 8 bytes para el descriptor del dispositivo es muy normal. Windows ha estado usando esto para conocer el tamaño exacto del paquete de Endpoint0 max. Dado que esto varía de dispositivos a dispositivos (los valores posibles son 8 ... 64). Se elige 8 porque, independientemente del tamaño del punto final0, la solicitud finalizará con un solo paquete de datos. Esto no debería ser un problema ya que el dispositivo siempre debe devolver los datos solicitados hasta la longitud solicitada según las especificaciones. Esto también se aplica con el descriptor de configuración en algunos sistemas operativos; en primer lugar, el host solicita solo 9 bytes solo para saber la longitud total y luego solicita el descriptor completo de antemano.

Para resumir, creo que el problema de su dispositivo posiblemente se encuentre en otra cosa, como el controlador de clase de audio

    
respondido por el ha thach

Lea otras preguntas en las etiquetas