Hi Santtu, > Recently salvaged this 'BCM43142A0' WiFi/Bluetooth module from a Lenovo laptop > and noticed it doesn't work automatically, because the USB IDs are missing > from btusb.c. > > Plugging in the adapter on Linux 4.1 (dmesg): > usb 3-3.3.3: new full-speed USB device number 90 using xhci_hcd > usb 3-3.3.3: New USB device found, idVendor=105b, idProduct=e065 > usb 3-3.3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 > usb 3-3.3.3: Product: BCM43142A0 > usb 3-3.3.3: Manufacturer: Broadcom Corp > usb 3-3.3.3: SerialNumber: 0090A286559E > > /sys/kernel/debug/usb/devices: > T: Bus=03 Lev=03 Prnt=22 Port=02 Cnt=02 Dev#= 90 Spd=12 MxCh= 0 > D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 > P: Vendor=105b ProdID=e065 Rev= 1.12 > S: Manufacturer=Broadcom Corp > S: Product=BCM43142A0 > S: SerialNumber=0090A286559E > C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr= 0mA > I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) > E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms > E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms > E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms > I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) > E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms > I: If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) > E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms > I: If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) > E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms > I: If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) > E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms > I: If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) > E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms > I: If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none) > E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms > I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) > E: Ad=84(I) Atr=02(Bulk) MxPS= 32 Ivl=0ms > E: Ad=04(O) Atr=02(Bulk) MxPS= 32 Ivl=0ms > I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) > > Support for the chipset was added in commit 88f9b65 and a similar BCM43142 > based device was added in commit 8f0c304. > > To work around the issue, I got the firmware > (BCM43142A0_001.001.011.0122.0153) off a Windows installation of Broadcom > bluetooth driver and converted it to a .hcd -file via. hex2hcd and placed it > in /lib/firmware/brcm/BCM.hcd. After that: > > $ echo "105b e065 0 19ff 0239" > /sys/bus/usb/drivers/btusb/new_id > ...(plug in the adapter) > usb 3-3.3.3: new full-speed USB device number 91 using xhci_hcd > usb 3-3.3.3: New USB device found, idVendor=105b, idProduct=e065 > usb 3-3.3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 > usb 3-3.3.3: Product: BCM43142A0 > usb 3-3.3.3: Manufacturer: Broadcom Corp > usb 3-3.3.3: SerialNumber: 0090A286559E > Bluetooth: hci0: BCM: chip id 70 > Bluetooth: hci0: BCM (001.001.011) build 0000 > bluetooth hci0: firmware: direct-loading firmware brcm/BCM.hcd > Bluetooth: hci0: BCM (001.001.011) build 0154 > > Bam, now it works for me! > > /sys/kernel/debug/usb/devices: > T: Bus=03 Lev=03 Prnt=22 Port=02 Cnt=02 Dev#= 92 Spd=12 MxCh= 0 > D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 > P: Vendor=105b ProdID=e065 Rev= 1.12 > S: Manufacturer=Broadcom Corp > S: Product=BCM43142A0 > S: SerialNumber=0090A286559E > C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr= 0mA > I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb > E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms > E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms > E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms > I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb > E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms > I: If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb > E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms > I: If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb > E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms > I: If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb > E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms > I: If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb > E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms > I: If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb > E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms > E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms > I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) > E: Ad=84(I) Atr=02(Bulk) MxPS= 32 Ivl=0ms > E: Ad=04(O) Atr=02(Bulk) MxPS= 32 Ivl=0ms > I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none) > > Signed-off-by: Santtu Rekilä <sare@xxxxxxxxxx> > --- > drivers/bluetooth/btusb.c | 3 +++ > 1 file changed, 3 insertions(+) patch has been applied to bluetooth-next tree. Regards Marcel -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html