我在基于原子的平板电脑 ACER Aspire Switch 10 上安装了 Ubuntu 20.04。蓝牙无法工作。事实上,ubuntu 似乎根本无法识别蓝牙硬件。但系统确实有蓝牙模块,在 Windows 下被识别为 RTK8723 (ACPI\RTK8723\some-id)
我搜索了一下,发现至少在过去五年里,人们设法将 8723 HW 引入 Linux。但解决方案涉及编译/安装一些模块。我可以这样做,但真的怀疑是否要复制发行版中已经存在的一些机制,我只需打开它,但不知道该怎么做。
你建议我做什么?
细节:
$ lsb_release -d
Description: Ubuntu 20.04 LTS
$ uname -vr
5.4.0-26-generic #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020
$ dmesg | grep -i 8723
[ 8.087918] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
[ 8.088914] r8723bs: module verification failed: signature and/or required key missing - tainting kernel
[ 8.092667] RTL8723BS: module init start
[ 8.092671] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
[ 8.092673] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
[ 8.303955] RTL8723BS: rtw_ndev_init(wlan0)
[ 8.304653] RTL8723BS: module init ret =0
[ 13.200223] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
[ 17.832536] RTL8723BS: rtw_set_802_11_connect(wlan0) fw_state = 0x00000008
[ 17.889893] RTL8723BS: start auth
[ 17.892815] RTL8723BS: auth success, start assoc
[ 17.901012] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
[ 17.901053] RTL8723BS: assoc success
[ 17.913846] RTL8723BS: send eapol packet
[ 17.939873] RTL8723BS: send eapol packet
[ 17.942652] RTL8723BS: set pairwise key camid:4, addr:50:c7:bf:31:a1:fa, kid:0, type:AES
[ 17.944712] RTL8723BS: set group key camid:5, addr:50:c7:bf:31:a1:fa, kid:1, type:TKIP
$ rfkill list all
0: acer-wireless: Wireless LAN
Soft blocked: no
Hard blocked: no
1: acer-bluetooth: Bluetooth
Soft blocked: no
Hard blocked: no
2: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
更新:
启动并登录 GUI 后
$ dmesg | grep -i blue
$ sudo lsmod | grep btrtl
$ sudo lsmod | grep btqca
$ sudo lsmod | grep btintel
$ sudo lsmod | grep hci_uart
$ sudo lsmod | grep bnep
$ sudo lsmod | grep hidp
$ sudo lsmod | grep btbcm
$ sudo lsmod | grep rfcomm
$
也就是说,所有这些命令都没有返回任何内容,所以
$ sudo modprobe btrtl
$ sudo modprobe btqca
$ sudo modprobe btintel
$ sudo modprobe hci_uart
$ sudo modprobe bnep
$ sudo modprobe hidp
$ sudo modprobe btbcm
$ sudo modprobe rfcomm
然后
$ dmesg | grep -i blue
[ 922.885915] Bluetooth: Core ver 2.22
[ 922.886059] Bluetooth: HCI device and connection manager initialized
[ 922.886083] Bluetooth: HCI socket layer initialized
[ 922.886097] Bluetooth: L2CAP socket layer initialized
[ 922.886125] Bluetooth: SCO socket layer initialized
[ 1110.038155] Bluetooth: HCI UART driver ver 2.3
[ 1110.038159] Bluetooth: HCI UART protocol H4 registered
[ 1110.038161] Bluetooth: HCI UART protocol BCSP registered
[ 1110.038237] Bluetooth: HCI UART protocol LL registered
[ 1110.038240] Bluetooth: HCI UART protocol ATH3K registered
[ 1110.038317] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 1110.038469] Bluetooth: HCI UART protocol Intel registered
[ 1110.038756] Bluetooth: HCI UART protocol Broadcom registered
[ 1110.038823] Bluetooth: HCI UART protocol QCA registered
[ 1110.038825] Bluetooth: HCI UART protocol AG6XX registered
[ 1110.038892] Bluetooth: HCI UART protocol Marvell registered
[ 1127.857569] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 1127.857580] Bluetooth: BNEP filters: protocol multicast
[ 1127.857594] Bluetooth: BNEP socket layer initialized
[ 1135.830750] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[ 1135.830767] Bluetooth: HIDP socket layer initialized
[ 1153.832918] Bluetooth: RFCOMM TTY layer initialized
[ 1153.832949] Bluetooth: RFCOMM socket layer initialized
[ 1153.832979] Bluetooth: RFCOMM ver 1.11
和
$ sudo lsmod
Module Size Used by
rfcomm 81920 0
hidp 28672 0
bnep 24576 0
hci_uart 126976 0
btbcm 16384 1 hci_uart
btintel 24576 1 hci_uart
btqca 20480 1 hci_uart
btrtl 24576 1 hci_uart
bluetooth 581632 10 btrtl,hidp,btqca,btintel,hci_uart,btbcm,bnep,rfcomm
ecdh_generic 16384 1 bluetooth
ecc 28672 1 ecdh_generic
snd_soc_sst_bytcr_rt5640 40960 2
snd_hdmi_lpe_audio 28672 1
mei_hdcp 24576 0
intel_rapl_msr 20480 0
gpio_keys 20480 0
intel_soc_dts_thermal 20480 0
intel_powerclamp 20480 0
coretemp 20480 0
kvm_intel 286720 0
kvm 663552 1 kvm_intel
punit_atom_debug 16384 0
nls_iso8859_1 16384 2
crct10dif_pclmul 16384 1
ghash_clmulni_intel 16384 0
aesni_intel 372736 0
crypto_simd 16384 1 aesni_intel
cryptd 24576 2 crypto_simd,ghash_clmulni_intel
glue_helper 16384 1 aesni_intel
intel_cstate 20480 0
snd_sof_acpi 20480 0
snd_sof_intel_byt 20480 1 snd_sof_acpi
snd_sof_intel_ipc 20480 1 snd_sof_intel_byt
snd_sof 106496 3 snd_sof_acpi,snd_sof_intel_byt,snd_sof_intel_ipc
snd_sof_xtensa_dsp 16384 1 snd_sof_acpi
ledtrig_audio 16384 1 snd_sof
r8723bs 573440 0
snd_soc_rt5670 155648 0
joydev 24576 0
snd_intel_sst_acpi 20480 1
snd_soc_rt5651 102400 0
snd_intel_sst_core 61440 1 snd_intel_sst_acpi
input_leds 16384 0
snd_soc_sst_atom_hifi2_platform 110592 2 snd_intel_sst_core
snd_soc_rt5645 172032 0
cfg80211 704512 1 r8723bs
mac_hid 16384 0
snd_soc_acpi_intel_match 32768 2 snd_sof_acpi,snd_intel_sst_acpi
snd_soc_rt5640 143360 2 snd_soc_sst_bytcr_rt5640
snd_soc_acpi 16384 4 snd_soc_sst_bytcr_rt5640,snd_sof_acpi,snd_soc_acpi_intel_match,snd_intel_sst_acpi
snd_soc_rl6231 20480 4 snd_soc_rt5651,snd_soc_rt5670,snd_soc_rt5640,snd_soc_rt5645
i915 1986560 14
snd_soc_core 245760 7 snd_soc_rt5651,snd_soc_sst_bytcr_rt5640,snd_sof,snd_soc_rt5670,snd_soc_rt5640,snd_soc_sst_atom_hifi2_platform,snd_soc_rt5645
snd_compress 24576 1 snd_soc_core
ac97_bus 16384 1 snd_soc_core
snd_pcm_dmaengine 16384 1 snd_soc_core
hid_multitouch 28672 0
snd_pcm 106496 10 snd_soc_rt5651,snd_soc_sst_bytcr_rt5640,snd_sof,snd_soc_rt5670,snd_soc_rt5640,snd_hdmi_lpe_audio,snd_soc_sst_atom_hifi2_platform,snd_soc_core,snd_soc_rt5645,snd_pcm_dmaengine
ak8975 24576 0
drm_kms_helper 184320 1 i915
acer_wmi 24576 0
snd_seq_midi 20480 0
i2c_algo_bit 16384 1 i915
snd_seq_midi_event 16384 1 snd_seq_midi
sparse_keymap 16384 1 acer_wmi
fb_sys_fops 16384 1 drm_kms_helper
mei_txe 28672 1
wmi_bmof 16384 0
mei 106496 3 mei_hdcp,mei_txe
snd_rawmidi 36864 1 snd_seq_midi
syscopyarea 16384 1 drm_kms_helper
sysfillrect 16384 1 drm_kms_helper
sysimgblt 16384 1 drm_kms_helper
snd_seq 69632 2 snd_seq_midi,snd_seq_midi_event
processor_thermal_device 24576 0
inv_mpu6050_i2c 16384 0
intel_rapl_common 24576 2 intel_rapl_msr,processor_thermal_device
inv_mpu6050 28672 2 inv_mpu6050_i2c
snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi
intel_soc_dts_iosf 20480 2 intel_soc_dts_thermal,processor_thermal_device
snd_timer 36864 2 snd_seq,snd_pcm
industrialio_triggered_buffer 16384 2 inv_mpu6050,ak8975
int3400_thermal 20480 0
kfifo_buf 16384 1 industrialio_triggered_buffer
acpi_thermal_rel 16384 1 int3400_thermal
soc_button_array 20480 0
int3403_thermal 16384 0
int340x_thermal_zone 16384 2 int3403_thermal,processor_thermal_device
int3406_thermal 16384 0
i2c_mux 16384 1 inv_mpu6050_i2c
dptf_power 16384 0
industrialio 73728 4 industrialio_triggered_buffer,inv_mpu6050,kfifo_buf,ak8975
snd 90112 16 snd_seq,snd_soc_sst_bytcr_rt5640,snd_seq_device,snd_timer,snd_compress,snd_hdmi_lpe_audio,snd_soc_sst_atom_hifi2_platform,snd_soc_core,snd_pcm,snd_rawmidi
intel_int0002_vgpio 16384 1
acpi_pad 184320 0
soundcore 16384 1 snd
8250_dw 16384 0
sch_fq_codel 20480 5
parport_pc 40960 0
ppdev 24576 0
lp 20480 0
drm 491520 8 drm_kms_helper,i915
parport 53248 3 parport_pc,lp,ppdev
ip_tables 32768 0
x_tables 40960 1 ip_tables
autofs4 45056 2
hid_ite 16384 0
hid_generic 16384 0
mmc_block 49152 5
crc32_pclmul 16384 0
usbhid 57344 0
lpc_ich 24576 0
wmi 32768 2 acer_wmi,wmi_bmof
video 49152 3 acer_wmi,int3406_thermal,i915
dw_dmac 16384 0
dw_dmac_core 28672 1 dw_dmac
i2c_hid 28672 0
hid 131072 6 i2c_hid,hidp,hid_ite,usbhid,hid_multitouch,hid_generic
sdhci_acpi 24576 0
sdhci 65536 1 sdhci_acpi
但是当我尝试在设置对话框中打开 BT 时,开关变成蓝色,但什么也没有发生,也就是说 BT 仍然不起作用。
更新 2020-11-28
我尝试升级内核,现在使用的是 5.8.0-25-generic,但这没有帮助。
$ dmesg | egrep -i -e "8723|blue|rfcomm|hci|mmc|rtl"
[ 0.126698] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[ 0.126698] PCI: not using MMCONFIG
[ 0.220530] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[ 0.230809] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[ 0.230814] PCI: not using MMCONFIG
[ 0.281489] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[ 1.215434] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.215452] ehci-pci: EHCI PCI platform driver
[ 1.215483] ehci-platform: EHCI generic platform driver
[ 1.215544] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 1.215552] ohci-pci: OHCI PCI platform driver
[ 1.215584] ohci-platform: OHCI generic platform driver
[ 1.215618] uhci_hcd: USB Universal Host Controller Interface driver
[ 3.735915] sdhci: Secure Digital Host Controller Interface driver
[ 3.735917] sdhci: Copyright(c) Pierre Ossman
[ 3.742860] mmc0: SDHCI controller on ACPI [INT33BB:00] using ADMA
[ 3.768137] mmc1: SDHCI controller on ACPI [80860F14:00] using ADMA
[ 3.788409] mmc2: SDHCI controller on ACPI [80860F14:01] using ADMA
[ 3.792645] mmc0: new high speed SDIO card at address 0001
[ 3.847968] xhci_hcd 0000:00:14.0: xHCI Host Controller
[ 3.847986] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[ 3.849090] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x0000000000009810
[ 3.849098] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[ 3.849712] usb usb1: Product: xHCI Host Controller
[ 3.849715] usb usb1: Manufacturer: Linux 5.8.0-25-generic xhci-hcd
[ 3.875942] mmc2: Problem switching card into high-speed mode!
[ 3.876070] mmc2: new SDHC card at address 0001
[ 3.940300] mmc1: new HS200 MMC card at address 0001
[ 3.977460] mmcblk2: mmc2:0001 SPCC 14.6 GiB
[ 3.980124] mmcblk2: p1
[ 3.981199] mmcblk1: mmc1:0001 CWBC3R 58.2 GiB
[ 3.981516] mmcblk1boot0: mmc1:0001 CWBC3R partition 1 4.00 MiB
[ 3.981845] mmcblk1boot1: mmc1:0001 CWBC3R partition 2 4.00 MiB
[ 3.982051] mmcblk1rpmb: mmc1:0001 CWBC3R partition 3 4.00 MiB, chardev (240:0)
[ 3.986302] mmcblk1: p1 p2
[ 4.395717] xhci_hcd 0000:00:14.0: xHCI Host Controller
[ 4.395745] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[ 4.395768] xhci_hcd 0000:00:14.0: Host supports USB 3.0 SuperSpeed
[ 4.396312] usb usb2: Product: xHCI Host Controller
[ 4.396321] usb usb2: Manufacturer: Linux 5.8.0-25-generic xhci-hcd
[ 4.593186] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[ 4.734185] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[ 5.182221] usb 1-1.3: new full-speed USB device number 3 using xhci_hcd
[ 5.714516] EXT4-fs (mmcblk1p2): re-mounted. Opts: errors=remount-ro
[ 7.584890] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
[ 7.620644] RTL8723BS: module init start
[ 7.620649] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
[ 7.620650] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
[ 7.937449] RTL8723BS: rtw_ndev_init(wlan0)
[ 7.950610] RTL8723BS: module init ret =0
[ 8.663080] Modules linked in: snd_hdmi_lpe_audio(+) hid_ite(+) snd_soc_sst_bytcr_rt5640(+) mei_hdcp gpio_keys intel_rapl_msr intel_soc_dts_thermal intel_powerclamp coretemp kvm_intel kvm punit_atom_debug crct10dif_pclmul ghash_clmulni_intel aesni_intel crypto_simd cryptd glue_helper intel_cstate joydev mac_hid efi_pstore r8723bs(CE) snd_soc_rt5670 snd_soc_rt5651 cfg80211 snd_soc_rt5645 snd_intel_sst_acpi snd_intel_sst_core ak8975 snd_soc_sst_atom_hifi2_platform snd_soc_rt5640 usbhid snd_soc_acpi_intel_match snd_soc_rl6231 snd_soc_acpi snd_soc_core snd_compress ac97_bus i915 hid_multitouch snd_pcm_dmaengine snd_pcm drm_kms_helper cec acer_wmi rc_core snd_seq_midi sparse_keymap i2c_algo_bit wmi_bmof fb_sys_fops snd_seq_midi_event syscopyarea sysfillrect mei_txe sysimgblt snd_rawmidi mei snd_seq snd_seq_device snd_timer dptf_power soc_button_array int3406_thermal processor_thermal_device intel_rapl_common int3403_thermal inv_mpu6050_i2c intel_soc_dts_iosf int3400_thermal int340x_thermal_zone
[ 8.663135] inv_mpu6050 atomisp_ov2722(CE) atomisp_gmin_platform(CE) acpi_thermal_rel videodev industrialio_triggered_buffer intel_int0002_vgpio snd kfifo_buf cm32181 i2c_mux industrialio acpi_pad mc soundcore 8250_dw sch_fq_codel parport_pc ppdev lp parport drm ip_tables x_tables autofs4 hid_generic mmc_block crc32_pclmul lpc_ich xhci_pci xhci_pci_renesas video wmi dw_dmac dw_dmac_core i2c_hid hid sdhci_acpi sdhci
[ 11.975496] mmc2: Problem switching card into high-speed mode!
[ 14.284231] Bluetooth: Core ver 2.22
[ 14.284282] Bluetooth: HCI device and connection manager initialized
[ 14.284293] Bluetooth: HCI socket layer initialized
[ 14.284297] Bluetooth: L2CAP socket layer initialized
[ 14.284307] Bluetooth: SCO socket layer initialized
[ 15.914839] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
[ 18.437803] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 18.437806] Bluetooth: BNEP filters: protocol multicast
[ 18.437816] Bluetooth: BNEP socket layer initialized
[ 20.111345] RTL8723BS: rtw_set_802_11_connect(wlan0) fw_state = 0x00000008
[ 20.192610] RTL8723BS: start auth
[ 20.197563] RTL8723BS: auth success, start assoc
[ 20.204229] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
[ 20.204257] RTL8723BS: assoc success
[ 20.209185] RTL8723BS: send eapol packet
[ 20.221098] RTL8723BS: send eapol packet
[ 20.221260] RTL8723BS: set pairwise key camid:4, addr:50:c7:bf:31:a1:fa, kid:0, type:AES
[ 20.225943] RTL8723BS: set group key camid:5, addr:50:c7:bf:31:a1:fa, kid:1, type:TKIP
[ 68.474482] mmc2: Problem switching card into high-speed mode!
[ 68.482849] FAT-fs (mmcblk2p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 73.703696] mmc2: Problem switching card into high-speed mode!
但
$ sudo bluetoothctl
Agent registered
[bluetooth]# show
No default controller available
[bluetooth]# list
[bluetooth]# exit
$
看起来我遗漏了一些东西,如能得到任何帮助我将不胜感激。
答案1
自 4.19 内核以来,蓝牙在 rtl8723bs 上完全正常工作。它在该硬件上的 Xubuntu 20.04 升级版上工作。默认安装中存在必要的固件,无需编译。查看已加载的模块,并检查“蓝牙”行。它应该有 btrtl、btqca、btintel、hci_uart、bnep、hidp、btbcm 和 rfcomm。最后三个可能缺失,并导致您的问题。手动加载它们:
sudo modprobe hidp
sudo modprobe btbcm
sudo modprobe rfcomm
看看是否允许蓝牙运行。较旧的编译说明可能指的是内置固件的英特尔(?)版本(Ubuntu 14.04 上提供)。这不是提供的可行版本,但需要单独加载固件。您列出的固件是正确的版本。