<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/lib/libusb, branch main</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=main</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2026-02-16T08:14:05Z</updated>
<entry>
<title>libusb: dequeue next transfer on completion to prevent stalls</title>
<updated>2026-02-16T08:14:05Z</updated>
<author>
<name>Baptiste Daroussin</name>
<email>bapt@FreeBSD.org</email>
</author>
<published>2026-02-15T18:07:07Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=38c18332642500fdfe075a82f88e033f6673a53f'/>
<id>urn:sha1:38c18332642500fdfe075a82f88e033f6673a53f</id>
<content type='text'>
The transfer proxy callbacks (bulk/interrupt, control, isochronous)
only called libusb10_submit_transfer_sub() in the START path to
pipeline the second kernel transfer slot. On completion or error,
no attempt was made to dequeue the next pending transfer from
tr_head onto the now-free slot.

When more than two async transfers were submitted on the same
endpoint, the third (and subsequent) transfers would remain stuck
on tr_head indefinitely, since no completion ever triggered their
submission. This caused a protocol-level deadlock in applications
like adb that submit header + payload + zero-length terminator as
three separate bulk transfers in sequence.

Fix by calling libusb10_submit_transfer_sub() after every
libusb10_complete_transfer() in all three proxy callbacks.

MFC After:	2 weeks
Reviewed by:	adrian
Differential Revision:	https://reviews.freebsd.org/D55289
</content>
</entry>
<entry>
<title>libusb: make libusb_hotplug_get_user_data actually return user_data</title>
<updated>2026-02-16T08:14:05Z</updated>
<author>
<name>Baptiste Daroussin</name>
<email>bapt@FreeBSD.org</email>
</author>
<published>2026-02-15T19:39:18Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=be522176951d8b542de9354f4ec9ac7603745b71'/>
<id>urn:sha1:be522176951d8b542de9354f4ec9ac7603745b71</id>
<content type='text'>
MFC After:	2 days
Reviewed by:	adrian
Differential Revision:	https://reviews.freebsd.org/D55291
</content>
</entry>
<entry>
<title>libusb20: Add dev_open + be_device_foreach manuals</title>
<updated>2026-02-15T18:00:28Z</updated>
<author>
<name>Rick Parrish</name>
<email>unitrunker@unitrunker.net</email>
</author>
<published>2026-02-15T17:45:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=caf23c8e0b7981dd022c52feaf6edfef232f7e27'/>
<id>urn:sha1:caf23c8e0b7981dd022c52feaf6edfef232f7e27</id>
<content type='text'>
Manual pages for libusb20_open(3) and libusb20_be_device_foreach(3).

PR:			291675
MFC after:		3 days
Reviewed by:		adrian (usb), ziaee (manpages)
Differential Revision:	https://reviews.freebsd.org/D54231
</content>
</entry>
<entry>
<title>libusb: implement libusb_get_platform_descriptor</title>
<updated>2025-08-06T14:05:40Z</updated>
<author>
<name>ShengYi Hung</name>
<email>aokblast@FreeBSD.org</email>
</author>
<published>2025-07-11T03:55:37Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=20056f0e5a7fe8df85a9934150d32594d6fe84da'/>
<id>urn:sha1:20056f0e5a7fe8df85a9934150d32594d6fe84da</id>
<content type='text'>
This adds a function introduced in libusb 1.0.27 to parse
platform-specific USB descriptors, enabling access to vendor- or OS-specific information.

Approved by:    lwhsu (mentor)
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D51242
</content>
</entry>
<entry>
<title>libusb: Add missing misc class in LIBUSB_CLASS</title>
<updated>2025-08-06T14:05:40Z</updated>
<author>
<name>ShengYi Hung</name>
<email>aokblast@FreeBSD.org</email>
</author>
<published>2025-08-05T12:28:37Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=315dec5ce6a2512a9c269b3e0be4622f7fc3e5ef'/>
<id>urn:sha1:315dec5ce6a2512a9c269b3e0be4622f7fc3e5ef</id>
<content type='text'>
Reviewed by:    emaste
Approved by:    markj (mentor), lwhsu (mentor)
Sponsored by:   The FreeBSD Foundation

Differential Revision: https://reviews.freebsd.org/D51738
</content>
</entry>
<entry>
<title>libusb: implement libusb_wrap_sys_device</title>
<updated>2025-08-06T14:05:40Z</updated>
<author>
<name>ShengYi Hung</name>
<email>aokblast@FreeBSD.org</email>
</author>
<published>2025-08-05T12:59:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=872065688515c0c4549b568f7573eb9e7deeedd7'/>
<id>urn:sha1:872065688515c0c4549b568f7573eb9e7deeedd7</id>
<content type='text'>
The libusb_wrap_sys_device function can wrap an opened fd from the
system into a libusb handler. However, in FreeBSD's libusb implementation, a
USB device contains two fds: one for control transfers and another for
normal (bulk, interrupt, isochronous) transfers.

This design makes it impossible for FreeBSD to implement this function
without exposing a different structure in libusb.h to provide two fds.
Therefore, we return LIBUSB_ERROR_NOT_SUPPORTED to maintain API
compatibility.

Approved by:    makrj (mentor), lwhsu (mentor)
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D51739
</content>
</entry>
<entry>
<title>libusb: implement libusb_pollfds_handle_timeouts</title>
<updated>2025-08-06T14:05:40Z</updated>
<author>
<name>ShengYi Hung</name>
<email>aokblast@FreeBSD.org</email>
</author>
<published>2025-08-05T15:25:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=b0d5c1cfda7696e62fa0256b5aab0e218ab98c45'/>
<id>urn:sha1:b0d5c1cfda7696e62fa0256b5aab0e218ab98c45</id>
<content type='text'>
This function tells applications who maintain the pollfds themselves if
they should handle the timeout for each xfer themselves. In FreeBSD, the
timeout for each xfer is handled by kernel and doesn't need a special timer to
do so. Therefore, we return 1 to indicate that it is handled by libusb
internally.

Approved by:    lwhsu (mentor), markj (mentor)
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D51742
</content>
</entry>
<entry>
<title>libusb: add libusb_supported_speed enum</title>
<updated>2025-08-06T14:05:40Z</updated>
<author>
<name>ShengYi Hung</name>
<email>aokblast@FreeBSD.org</email>
</author>
<published>2025-08-05T16:09:48Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=c43a8504516643e747488011ede347b9fe2d7777'/>
<id>urn:sha1:c43a8504516643e747488011ede347b9fe2d7777</id>
<content type='text'>
Approved by:    lwhsu (mentor), markj (mentor)
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D51743
</content>
</entry>
<entry>
<title>libusb: add libusb_usb_2_0_extension_attributes</title>
<updated>2025-08-06T14:05:40Z</updated>
<author>
<name>ShengYi Hung</name>
<email>aokblast@FreeBSD.org</email>
</author>
<published>2025-08-05T16:17:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8ddbb5e80099d80650b529128f1998a126f67e0a'/>
<id>urn:sha1:8ddbb5e80099d80650b529128f1998a126f67e0a</id>
<content type='text'>
Approved by:    lwhsu (mentor), markj (mentor)
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D51745
</content>
</entry>
<entry>
<title>libusb: add missing function signature to header</title>
<updated>2025-08-06T14:05:40Z</updated>
<author>
<name>ShengYi Hung</name>
<email>aokblast@FreeBSD.org</email>
</author>
<published>2025-08-06T08:52:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=2525f9f84bbec545c30da3870865f426aed2f0e3'/>
<id>urn:sha1:2525f9f84bbec545c30da3870865f426aed2f0e3</id>
<content type='text'>
Approved by:    markj (mentor), lwhsu (mentor)
Fixes: 3eda34934097 ("libusb: implement libusb_fill_bulk_stream_transfer")
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D51754
</content>
</entry>
</feed>
