[Bug 297257] usr.sbin/bluetooth/iwmbtfw: libusb_interrupt_transfer timeout (err=-7) during HCI reset on Intel Wireless 7260/3160

From: <bugzilla-noreply_at_freebsd.org>
Date: Tue, 04 Aug 2026 05:30:51 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297257

            Bug ID: 297257
           Summary: usr.sbin/bluetooth/iwmbtfw: libusb_interrupt_transfer
                    timeout (err=-7) during HCI reset on Intel Wireless
                    7260/3160
           Product: Base System
           Version: 15.1-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: jimmbird2068@gmail.com

Created attachment 273429
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=273429&action=edit
usbconfig -d ugen0.2 dump_device_desc

The iwmbtfw(8) utility fails to initialize Intel Wireless 7260 Bluetooth
controller on FreeBSD 15.0-CURRENT. During the identification phase,
iwmbt_bt_reset() fails due to a USB interrupt transfer timeout
(libusb_interrupt_transfer error -7).

[Hardware]
Device: Intel Wireless 7260 / 3160 Bluetooth adapter
PCI/USB Node: ugen0.2 (Intel Corp. Bluetooth wireless interface)

[Environment]
OS: FreeBSD 15.0-CURRENT
Utility: /usr/src/usr.sbin/bluetooth/iwmbtfw

[Steps to Reproduce]
1. Run iwmbtfw in debug mode:
   # iwmbtfw -D -I -d ugen0.2

[Expected Behavior]
The device undergoes HCI reset, firmware is downloaded and loaded into the
controller.

[Actual Behavior]
HCI reset times out while communicating via libusb:

main: opening dev 0.2
iwmbt_is_supported: found iwmbtfw compatible
iwmbtfw: iwmbt_hci_command: libusb_interrupt_transfer() failed: err=Timeout
iwmbt_bt_reset: HCI reset command failed: code=-7
iwmbt_identify: iwmbt_bt_reset() failed!
iwmbtfw: main: Failed to identify device
iwmbtfw: main: Firmware download failed!

[Additional Notes & Troubleshooting Attempted]
- Increasing IWMBT_HCI_CMD_TIMEOUT from 1000ms to 5000ms in iwmbt_hw.h does not
resolve the issue.
- Adding a delay (e.g. sleep(2)) before iwmbt_bt_reset() in main.c inside the
`if (device == IWMBT_DEVICE_7260)` block still results in libusb timeout (code
-7 / LIBUSB_ERROR_TIMEOUT).

-- 
You are receiving this mail because:
You are the assignee for the bug.