Hi, Bugs section of ugen(4) up to date? or does devel/libusb1 support reads from isochronous endpoints by mistake? In my tests with cheap chinese video capture usb-stick, for which the userland code using libusb supposedly works on other platforms, it never seems to return from read() in _sync_gen_transfer() within openbsd backend of libusb.
I added more debug messages into ugen.c, while trying to find out where it fails, only to find out that the code _seems_ to work as supposed (with minimal knowledge about everything related), just that usbd_get_xfer_status does always return 0 count. I see that the bugs section hasn't been touched since the initial commit about 13years ago. Comparing uvideo(4) code in relevant parts for isoc transfers gave me no obvious clues as to what might still be wrong with ugen.c. I think going deeper to find out more is too much for me, without reading specs etc.. Totally off-topic: Index: ehci.c =================================================================== RCS file: /cvs/src/sys/dev/usb/ehci.c,v retrieving revision 1.125 diff -u -p -r1.125 ehci.c --- ehci.c 7 Aug 2012 23:51:36 -0000 1.125 +++ ehci.c 15 Aug 2012 17:36:17 -0000 @@ -3884,7 +3884,7 @@ ehci_device_isoc_start(usbd_xfer_handle splx(s); if (sc->sc_bus.use_polling) { - DPRINTF(("Starting ohci isoc xfer with polling. Bad idea?\n")); + DPRINTF(("Starting ehci isoc xfer with polling. Bad idea?\n")); ehci_waitintr(sc, xfer); }