Re: MacbookPro12,1 Bluetooth not found by Bluez

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux