On Thu, 10 Sep, 2015 at 1:21 AM, Marcel Holtmann <marcel@xxxxxxxxxxxx>
wrote:
T: Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 2.01 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=05ac ProdID=8290 Rev= 0.90
S: Manufacturer=Broadcom Corp.
S: Product=Bluetooth USB Host Controller
[snip]
okay, this is new. Is this by any chance the new Broadwell based
MacBook Pro from beginning of the year?
Yep, it sure is - has an i7-5557U Broadwell-U SoC.
In general all MacBook Bluetooth controllers are suppose to work.
If you happen to still have OS X installed, then start it and see
if it might runs a firmware upgrade for the controller.
I don't - I might be able to try it form an external hard drive
over the next few days however. Will report back if I do manage to.
If you can, then that would be great, however I assume that with the
new Broadwell designs they have picked new Broadcom controllers and
instead of hiding behind an internal USB hub, the devices are
multi-function devices with HID and Bluetooth combined into a single
USB device.
I do think there is an update of the Bluetooth controller firmware
from 0.90 that you have to 1.04 at least. While it might not make the
controller work, but it might fix actual Bluetooth bug in the
firmware that you would stumble over later. So try to boot up an OS X
if you can. If this is the BCM20703A1 chip from Broadcom, then they
are rather new and having an updated firmware helps there.
We have the following statement in probe function:
/* interface numbers are hardcoded in the spec */
if (intf->cur_altsetting->desc.bInterfaceNumber != 0)
return -ENODEV;
This will avoid activating the device correctly in your case.
As a background, we chose to do it this simple since Bluetooth is a
multi-interface device by itself. It uses interface 0 (for
ACL/cmd/evt) and also interface 1 (for SCO). So the interface numbers
are pretty much hard coded and in the last 15 years nobody did it
different. However it seems you find the first device that does this
differently now.
So you change the above 0 to a 2 and the later on then 1 to a 3.
/* Interface numbers are hardcoded in the
specification */
data->isoc = usb_ifnum_to_if(data->udev, 1);
This should get you your controller working, but obviously that is
just for testing. The real fix is a lot more complicated and such a
simple change will break every other Bluetooth dongle you might want
to play with.
It did indeed - I changed those values, recompiled and installed the
new kernel, rebooted and the adapter is now being found. I was able to
pair it with my Nexus 5 and transfer a file across, but getting
Internet access through doesn't seem to be working.
I'll look into doing the firmware upgrade that you suggest above and
see if that helps anything.
Thanks for looking into this. I could try working on a real fix but
don't have any experience working on the kernel, so would need some
guidance. In any case I am more than happy to test patches and what-not.
//Mike
--
⊨ Michael Gratton, Percept Wrangler.
⚙ <http://mjog.vee.net/>
--
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