usbip-rs/cli
Davíð Steinn Geirsson 075ec146e4 fix: UAC1 audio device recognition, idle timeout, and ISO byte order
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>
2026-03-25 11:52:31 +00:00
..
src fix: UAC1 audio device recognition, idle timeout, and ISO byte order 2026-03-25 11:52:31 +00:00
Cargo.toml feat: concurrent ISO pipelining via nusb update and &self handlers 2026-03-22 15:10:28 +00:00