leifliddy / macbook12-bluetooth-driver

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Not detecting Bluetooth host controller on Macbook8,1+Linux 5.15

muojp opened this issue · comments

commented

Hello. Thank you for maintaining a great project.

I started to give a try on MacBook+Linux configuration a couple of week ago but still having no luck for Bluetooth HCI communication yet (Wi-Fi works perfectly).

  • Linux kernel: 5.15.0-56-generic (Ubuntu 22.04.1)
    • Also tested on 5.4.0-26-generic (Ubuntu 20.04) but resulting in the same situation
  • Hardware: MacBook8,1 (Retina, 12-inch, Early 2015)
    • Broadcom's radio chipset seems a bit different from supported ones? (detailed below)

No internal Bluetooth dongle is detected after running ./install.bluetooth.sh & rebooting (kernel module is installed and activated according to the output of modinfo command pasted below).

$ sudo bluetoothctl
Agent registered
[bluetooth]#
^D
$ sudo bluetoothctl list
(no output)
$ sudo hciconfig -a
(no output)
$ rfkill list
0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
$

According to the dmesg output (pasted below), Linux does detect ttyS4 as a serial interface but not accessible once the OS is fully booted.

$ ls /dev/ttyS4
ls: cannot access '/dev/ttyS4': No such file or directory

I checked a hardware report on macOS 11.7 and compared against https://bugzilla.kernel.org/show_bug.cgi?id=110901#c32 .
I found the Broadcom's chipset seems slightly different (4350 vs 4350C1). It might be because I'm using a MacBook purchased in Japan (it's a common case for device manufactures to distribute different hardware variants among countries to meet radio-wave regulations).

  Bluetooth Low Energy Supported:       Yes
  Handoff Supported:    Yes
  Instant Hot Spot Supported:   Yes
  Manufacturer: Broadcom
  Transport:    UART
  Chipset:      4350
  Firmware Version:     v133 c5619
  Bluetooth Power:      On
  Auto Seek Pointing:   On
  Remote wake:  On
  Vendor ID:    0x05AC
  Product ID:   0x005C
  Bluetooth Core Spec:  4.2 (0x8)
  HCI Revision: 0x15F3
  LMP Version:  4.2 (0x8)
  LMP Subversion:       0x6185

Outputs from several other commands seem OK to me.

$ find /sys/devices/* -name 'BCM*'
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:17/BCM2E7C:00
$ lshw
...snip...
        *-communication:0
             description: Serial controller
             product: Wildcat Point-LP Serial IO UART Controller #0
             vendor: Intel Corporation
             physical id: 15.5
             bus info: pci@0000:00:15.5
             version: 03
             width: 32 bits
             clock: 33MHz
             capabilities: 16550 bus_master cap_list
             configuration: driver=8250_lpss latency=0
             resources: irq:21 memory:c1819000-c1819fff
...snip...

Below is a result of dmesg with some grep-ing. I think it's weird that there is no hci0 related outputs.

# dmesg | egrep -i "blue|firm|hci|tty"
[    0.044443] ACPI: SSDT 0x000000008AD7D000 000024 (v01 APPLE  SataAhci 00001000 INTL 20140424)
[    0.044489] ACPI: SSDT 0x000000008AD76000 000753 (v02 APPLE  Xhci     00001000 INTL 20140424)
[    0.299619] printk: console [tty0] enabled
[    0.305923] Spectre V2 : Enabling Restricted Speculation for firmware calls
[    0.371952] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    0.408463] acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-34] only partially covers this bridge
[    0.557802] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.557818] ehci-pci: EHCI PCI platform driver
[    0.557858] ehci-platform: EHCI generic platform driver
[    0.557891] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.557899] ohci-pci: OHCI PCI platform driver
[    0.557957] ohci-platform: OHCI generic platform driver
[    0.557992] uhci_hcd: USB Universal Host Controller Interface driver
[    1.393515] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    1.395421] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    1.396481] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x000000000004b810
[    1.400732] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    1.400743] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    1.400750] xhci_hcd 0000:00:14.0: Host supports USB 3.0 SuperSpeed
[    1.400803] usb usb1: Product: xHCI Host Controller
[    1.400804] usb usb1: Manufacturer: Linux 5.15.0-56-generic xhci-hcd
[    1.433322] usb usb2: Product: xHCI Host Controller
[    1.433324] usb usb2: Manufacturer: Linux 5.15.0-56-generic xhci-hcd
[    3.148704] 0000:00:15.5: ttyS4 at MMIO 0xc1819000 (irq = 21, base_baud = 2764800) is a 16550A
[    3.149330] serial serial0: tty port ttyS4 registered
[    3.346174] Bluetooth: Core ver 2.22
[    3.346203] NET: Registered PF_BLUETOOTH protocol family
[    3.346209] Bluetooth: HCI device and connection manager initialized
[    3.346216] Bluetooth: HCI socket layer initialized
[    3.346220] Bluetooth: L2CAP socket layer initialized
[    3.346227] Bluetooth: SCO socket layer initialized
[    3.502639] hci_uart: loading out-of-tree module taints kernel.
[    3.502804] hci_uart: module verification failed: signature and/or required key missing - tainting kernel
[    3.504357] Bluetooth: HCI UART driver ver 2.3
[    3.504361] Bluetooth: HCI UART protocol H4 registered
[    3.504363] Bluetooth: HCI UART protocol BCSP registered
[    3.504390] Bluetooth: HCI UART protocol LL registered
[    3.504392] Bluetooth: HCI UART protocol ATH3K registered
[    3.504405] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    3.504440] Bluetooth: HCI UART protocol Intel registered
[    3.504489] Bluetooth: HCI UART protocol Broadcom registered
[    3.504501] Bluetooth: HCI UART protocol QCA registered
[    3.504503] Bluetooth: HCI UART protocol AG6XX registered
[    3.504515] Bluetooth: HCI UART protocol Marvell registered
[    3.695752] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4350c2-pcie.Apple Inc.-MacBook8,1.bin failed with error -2
[    3.700555] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4350c2-pcie.Apple Inc.-MacBook8,1.txt failed with error -2
[    3.700800] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4350c2-pcie.txt failed with error -2
[    4.062617] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4350/5 wl0: Nov 26 2015 03:48:57 version 7.35.180.133 (r602372) FWID 01-c45b39d6
[    8.584989] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    8.584995] Bluetooth: BNEP filters: protocol multicast
[    8.585001] Bluetooth: BNEP socket layer initialized
$ modinfo hci_uart
filename:       /lib/modules/5.15.0-56-generic/updates/hci_uart.ko
alias:          tty-ldisc-15
license:        GPL
version:        2.3
description:    Bluetooth HCI UART driver ver 2.3
author:         Marcel Holtmann <marcel@holtmann.org>
srcversion:     14C3C77235E025FC979B323
alias:          acpi*:DLB26390:*
alias:          acpi*:DLB16390:*
alias:          acpi*:DLA16390:*
alias:          acpi*:QCOM6390:*
alias:          of:N*T*Cti,wl1837-stC*
alias:          of:N*T*Cti,wl1837-st
alias:          of:N*T*Cti,wl1835-stC*
alias:          of:N*T*Cti,wl1835-st
alias:          of:N*T*Cti,wl1831-stC*
alias:          of:N*T*Cti,wl1831-st
alias:          of:N*T*Cti,wl1807-stC*
alias:          of:N*T*Cti,wl1807-st
alias:          of:N*T*Cti,wl1805-stC*
alias:          of:N*T*Cti,wl1805-st
alias:          of:N*T*Cti,wl1801-stC*
alias:          of:N*T*Cti,wl1801-st
alias:          of:N*T*Cti,wl1285-stC*
alias:          of:N*T*Cti,wl1285-st
alias:          of:N*T*Cti,wl1283-stC*
alias:          of:N*T*Cti,wl1283-st
alias:          of:N*T*Cti,wl1281-stC*
alias:          of:N*T*Cti,wl1281-st
alias:          of:N*T*Cti,wl1273-stC*
alias:          of:N*T*Cti,wl1273-st
alias:          of:N*T*Cti,wl1271-stC*
alias:          of:N*T*Cti,wl1271-st
alias:          of:N*T*Cti,cc2560C*
alias:          of:N*T*Cti,cc2560
alias:          acpi*:OBDA8723:*
alias:          acpi*:OBDA0623:*
alias:          acpi*:INT33E3:*
alias:          acpi*:INT33E1:*
alias:          of:N*T*Crealtek,rtl8723ds-btC*
alias:          of:N*T*Crealtek,rtl8723ds-bt
alias:          of:N*T*Crealtek,rtl8723bs-btC*
alias:          of:N*T*Crealtek,rtl8723bs-bt
alias:          of:N*T*Crealtek,rtl8822cs-btC*
alias:          of:N*T*Crealtek,rtl8822cs-bt
alias:          acpi*:BCM2EAC:*
alias:          acpi*:BCM2EAB:*
alias:          acpi*:BCM2EAA:*
alias:          acpi*:BCM2EA9:*
alias:          acpi*:BCM2EA8:*
alias:          acpi*:BCM2EA7:*
alias:          acpi*:BCM2EA6:*
alias:          acpi*:BCM2EA5:*
alias:          acpi*:BCM2EA4:*
alias:          acpi*:BCM2EA3:*
alias:          acpi*:BCM2EA2:*
alias:          acpi*:BCM2EA1:*
alias:          acpi*:BCM2EA0:*
alias:          acpi*:BCM2E9D:*
alias:          acpi*:BCM2E9C:*
alias:          acpi*:BCM2E9B:*
alias:          acpi*:BCM2E9A:*
alias:          acpi*:BCM2E99:*
alias:          acpi*:BCM2E98:*
alias:          acpi*:BCM2E97:*
alias:          acpi*:BCM2E96:*
alias:          acpi*:BCM2E95:*
alias:          acpi*:BCM2E94:*
alias:          acpi*:BCM2E93:*
alias:          acpi*:BCM2E92:*
alias:          acpi*:BCM2E90:*
alias:          acpi*:BCM2E8E:*
alias:          acpi*:BCM2E8D:*
alias:          acpi*:BCM2E8C:*
alias:          acpi*:BCM2E8B:*
alias:          acpi*:BCM2E8A:*
alias:          acpi*:BCM2E89:*
alias:          acpi*:BCM2E88:*
alias:          acpi*:BCM2E87:*
alias:          acpi*:BCM2E86:*
alias:          acpi*:BCM2E85:*
alias:          acpi*:BCM2E84:*
alias:          acpi*:BCM2E83:*
alias:          acpi*:BCM2E82:*
alias:          acpi*:BCM2E81:*
alias:          acpi*:BCM2E80:*
alias:          acpi*:BCM2E7F:*
alias:          acpi*:BCM2E7E:*
alias:          acpi*:BCM2E7D:*
alias:          acpi*:BCM2E7C:*
alias:          acpi*:BCM2E7B:*
alias:          acpi*:BCM2E7A:*
alias:          acpi*:BCM2E79:*
alias:          acpi*:BCM2E78:*
alias:          acpi*:BCM2E77:*
alias:          acpi*:BCM2E76:*
alias:          acpi*:BCM2E75:*
alias:          acpi*:BCM2E74:*
alias:          acpi*:BCM2E73:*
alias:          acpi*:BCM2E72:*
alias:          acpi*:BCM2E71:*
alias:          acpi*:BCM2E70:*
alias:          acpi*:BCM2E6F:*
alias:          acpi*:BCM2E6E:*
alias:          acpi*:BCM2E6D:*
alias:          acpi*:BCM2E6B:*
alias:          acpi*:BCM2E69:*
alias:          acpi*:BCM2E68:*
alias:          acpi*:BCM2E67:*
alias:          acpi*:BCM2E66:*
alias:          acpi*:BCM2E65:*
alias:          acpi*:BCM2E64:*
alias:          acpi*:BCM2E63:*
alias:          acpi*:BCM2E62:*
alias:          acpi*:BCM2E61:*
alias:          acpi*:BCM2E60:*
alias:          acpi*:BCM2E5F:*
alias:          acpi*:BCM2E5E:*
alias:          acpi*:BCM2E5D:*
alias:          acpi*:BCM2E5C:*
alias:          acpi*:BCM2E5B:*
alias:          acpi*:BCM2E5A:*
alias:          acpi*:BCM2E59:*
alias:          acpi*:BCM2E58:*
alias:          acpi*:BCM2E57:*
alias:          acpi*:BCM2E56:*
alias:          acpi*:BCM2E55:*
alias:          acpi*:BCM2E54:*
alias:          acpi*:BCM2E53:*
alias:          acpi*:BCM2E52:*
alias:          acpi*:BCM2E51:*
alias:          acpi*:BCM2E50:*
alias:          acpi*:BCM2E4F:*
alias:          acpi*:BCM2E4E:*
alias:          acpi*:BCM2E4D:*
alias:          acpi*:BCM2E4C:*
alias:          acpi*:BCM2E4B:*
alias:          acpi*:BCM2E4A:*
alias:          acpi*:BCM2E49:*
alias:          acpi*:BCM2E48:*
alias:          acpi*:BCM2E47:*
alias:          acpi*:BCM2E46:*
alias:          acpi*:BCM2E45:*
alias:          acpi*:BCM2E44:*
alias:          acpi*:BCM2E43:*
alias:          acpi*:BCM2E42:*
alias:          acpi*:BCM2E41:*
alias:          acpi*:BCM2E40:*
alias:          acpi*:BCM2E3F:*
alias:          acpi*:BCM2E3E:*
alias:          acpi*:BCM2E3D:*
alias:          acpi*:BCM2E3C:*
alias:          acpi*:BCM2E3B:*
alias:          acpi*:BCM2E3A:*
alias:          acpi*:BCM2E39:*
alias:          acpi*:BCM2E38:*
alias:          acpi*:BCM2E37:*
alias:          acpi*:BCM2E36:*
alias:          acpi*:BCM2E35:*
alias:          acpi*:BCM2E34:*
alias:          acpi*:BCM2E33:*
alias:          acpi*:BCM2E32:*
alias:          acpi*:BCM2E31:*
alias:          acpi*:BCM2E30:*
alias:          acpi*:BCM2E2F:*
alias:          acpi*:BCM2E2E:*
alias:          acpi*:BCM2E2D:*
alias:          acpi*:BCM2E2C:*
alias:          acpi*:BCM2E2B:*
alias:          acpi*:BCM2E2A:*
alias:          acpi*:BCM2E29:*
alias:          acpi*:BCM2E28:*
alias:          acpi*:BCM2E27:*
alias:          acpi*:BCM2E26:*
alias:          acpi*:BCM2E25:*
alias:          acpi*:BCM2E24:*
alias:          acpi*:BCM2E23:*
alias:          acpi*:BCM2E22:*
alias:          acpi*:BCM2E21:*
alias:          acpi*:BCM2E20:*
alias:          acpi*:BCM2E1F:*
alias:          acpi*:BCM2E1D:*
alias:          acpi*:BCM2E1C:*
alias:          acpi*:BCM2E1B:*
alias:          acpi*:BCM2E1A:*
alias:          acpi*:BCM2E19:*
alias:          acpi*:BCM2E18:*
alias:          acpi*:BCM2E17:*
alias:          acpi*:BCM2E16:*
alias:          acpi*:BCM2E15:*
alias:          acpi*:BCM2E14:*
alias:          acpi*:BCM2E13:*
alias:          acpi*:BCM2E12:*
alias:          acpi*:BCM2E11:*
alias:          acpi*:BCM2E10:*
alias:          acpi*:BCM2E0F:*
alias:          acpi*:BCM2E0E:*
alias:          acpi*:BCM2E0D:*
alias:          acpi*:BCM2E0C:*
alias:          acpi*:BCM2E0B:*
alias:          acpi*:BCM2E0A:*
alias:          acpi*:BCM2E09:*
alias:          acpi*:BCM2E08:*
alias:          acpi*:BCM2E07:*
alias:          acpi*:BCM2E06:*
alias:          acpi*:BCM2E05:*
alias:          acpi*:BCM2E04:*
alias:          acpi*:BCM2E03:*
alias:          acpi*:BCM2E02:*
alias:          acpi*:BCM2E01:*
alias:          acpi*:BCM2E00:*
depends:        bluetooth,btintel,btqca,btbcm,btrtl
retpoline:      Y
name:           hci_uart
vermagic:       5.15.0-56-generic SMP mod_unload modversions 
parm:           irq_polarity:IRQ polarity 0: active-high 1: active-low (int)
parm:           txcrc:Transmit CRC with every BCSP packet (bool)
parm:           hciextn:Convert HCI Extensions into BCSP packets (bool)

Any hints/comments are welcomed.

commented

Here's some more information I found in /sys/devices/.

In /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:17/BCM2E7C:00:

$ ls
adr  hid  modalias  path  power  status  subsystem  uevent  uid
$ cat path 
\_SB_.PCI0.URT0.BLTH
$ cat status 
15
$ cat uevent 
MODALIAS=acpi:BCM2E7C:APPLE-UART-BLTH:
$ cat power/runtime_enabled 
disabled

commented

It means the device itself is recognized by the system as BCM2E7C which is listed in hci_uart.ko's aliases, but powered off by some reasons, right?

I have the same issue on Macbook 8,1 running Ubuntu 22.04.2 LTS