Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
muojp opened this issue Dec 5, 2022 · 3 comments
Open

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

muojp opened this issue Dec 5, 2022 · 3 comments

Comments

@muojp
Copy link

muojp commented Dec 5, 2022

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.

@muojp muojp changed the title Macbook8,1 Not detecting Bluetooth host controller on Macbook8,1+Linux 5.15 Dec 5, 2022
@muojp
Copy link
Author

muojp commented Dec 16, 2022

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

@muojp
Copy link
Author

muojp commented Dec 16, 2022

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?

@amirian
Copy link

amirian commented Jul 1, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants