Three fixes for the UAC1 loopback test device: - Add CS_ENDPOINT descriptors (type 0x25) after audio streaming isochronous endpoints. The Linux snd-usb-audio driver requires these to recognize the device. Added class_specific_descriptor field to UsbEndpoint (mirroring the existing field on UsbInterface) and emit it in the config descriptor builder. - Remove the 30s URB read timeout from handle_urb_loop. The connection lifetime is managed by the kernel (vhci_hcd closes the socket on device detach). An application-level timeout killed healthy idle devices. Fixed tests to properly shutdown() write halves instead of relying on the timeout. - Fix ISO packet descriptor byte order from big-endian to little-endian. The USB/IP protocol uses big-endian for header fields but little-endian for ISO descriptors (matching the kernel's usbip_pack_iso using cpu_to_le32). With big-endian, field values like length=192 were byte-swapped to ~3GB, corrupting isochronous audio streams. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||