前阵子把自己的古董笔记本安装上了Ubuntu 25.10,结果蓝牙和wifi无法正常启动。作为一个Linux新手,折腾现在才解决,记录一下我解决的流程。
蓝牙无法启动
1)按照教程安装了bluez。
sudo apt update
sudo apt install bluez
结果蓝牙还是无法启动
2)通过命令查询蓝牙状态:
bash
$ hciconfig -a
hci0: Type: Primary Bus: USB
BD Address: XX:XX:XX:XX:XX ACL MTU: 0:0 SCO MTU: 0:0
DOWN
RX bytes:676 acl:0 sco:0 events:18 errors:0
TX bytes:57 acl:0 sco:0 commands:19 errors:0
Features: 0xxz 0xxx 0xxx 0xxx 0xxx 0xxx 0xxx 0xxx
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy:
Link mode: PERIPHERAL ACCEPT
可以看到蓝牙是DOWN的状态
3)尝试启动蓝牙
bash
$ sudo hciconfig hci0 up
Can't init device hci0: Connection timed out (110)
看到蓝牙启动异常
4)打印启动日志
bash
$ sudo dmesg | grep -i bluetooth
[ 4.724382] Bluetooth: Core ver 2.22
[ 4.724432] NET: Registered PF_BLUETOOTH protocol family
[ 4.724436] Bluetooth: HCI device and connection manager initialized
[ 4.724443] Bluetooth: HCI socket layer initialized
[ 4.724447] Bluetooth: L2CAP socket layer initialized
[ 4.724456] Bluetooth: SCO socket layer initialized
[ 6.060376] Bluetooth: hci0: BCM: chip id 70
[ 6.061375] Bluetooth: hci0: BCM: features 0x06
[ 6.077294] Bluetooth: hci0: BCM43142A
[ 6.077304] Bluetooth: hci0: BCM43142A0 (001.001.011) build 0000
[ 6.143709] Bluetooth: hci0: BCM: firmware Patch file not found, tried:
[ 6.143726] Bluetooth: hci0: BCM: 'brcm/BCM43142A0-04ca-2009.hcd'
[ 6.143729] Bluetooth: hci0: BCM: 'brcm/BCM-04ca-2009.hcd'
[ 8.210327] Bluetooth: hci0: command 0x1003 tx timeout
[ 8.210329] Bluetooth: hci0: Opcode 0x1003 failed: -110
[ 8.607318] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 8.607328] Bluetooth: BNEP filters: protocol multicast
[ 8.607337] Bluetooth: BNEP socket layer initialized
[ 75.241504] Bluetooth: hci0: unexpected event for opcode 0x1003
[ 85.606015] Bluetooth: hci0: BCM: Reset failed (-110)
[ 222.432794] Bluetooth: hci0: BCM: chip id 70
[ 222.433875] Bluetooth: hci0: BCM: features 0x06
[ 222.449797] Bluetooth: hci0: BCM43142A
[ 222.449817] Bluetooth: hci0: BCM43142A0 (001.001.011) build 0000
[ 222.451067] Bluetooth: hci0: BCM: firmware Patch file not found, tried:
[ 222.451080] Bluetooth: hci0: BCM: 'brcm/BCM43142A0-04ca-2009.hcd'
[ 222.451085] Bluetooth: hci0: BCM: 'brcm/BCM-04ca-2009.hcd'
[ 224.519245] Bluetooth: hci0: command 0x1003 tx timeout
[ 224.519259] Bluetooth: hci0: Opcode 0x1003 failed: -110
[ 317.362894] Bluetooth: hci0: unexpected event for opcode 0x1003
[ 327.766613] Bluetooth: hci0: BCM: Reset failed (-110)
[ 330.423732] Bluetooth: hci0: BCM: chip id 70
[ 330.424724] Bluetooth: hci0: BCM: features 0x06
[ 330.440745] Bluetooth: hci0: BCM43142A
[ 330.440751] Bluetooth: hci0: BCM43142A0 (001.001.011) build 0000
[ 330.441774] Bluetooth: hci0: BCM: firmware Patch file not found, tried:
[ 330.441778] Bluetooth: hci0: BCM: 'brcm/BCM43142A0-04ca-2009.hcd'
[ 330.441779] Bluetooth: hci0: BCM: 'brcm/BCM-04ca-2009.hcd'
[ 332.502288] Bluetooth: hci0: Opcode 0x1003 failed: -110
[ 332.503731] Bluetooth: hci0: unexpected event for opcode 0x1003
[ 342.613887] Bluetooth: hci0: BCM: Reset failed (-110)
[ 478.173127] Bluetooth: hci0: BCM: chip id 70
[ 478.174082] Bluetooth: hci0: BCM: features 0x06
[ 478.190134] Bluetooth: hci0: BCM43142A
[ 478.190151] Bluetooth: hci0: BCM43142A0 (001.001.011) build 0000
[ 478.191239] Bluetooth: hci0: BCM: firmware Patch file not found, tried:
[ 478.191254] Bluetooth: hci0: BCM: 'brcm/BCM43142A0-04ca-2009.hcd'
[ 478.191260] Bluetooth: hci0: BCM: 'brcm/BCM-04ca-2009.hcd'
[ 480.210701] Bluetooth: hci0: Opcode 0x1003 failed: -110
可以看到,启动时缺少了BCM43142A0-04ca-2009.hcd这个固件
-
我们可以到github的winterheart/broadcom-bt-firmware项目仓库下载,并找到brcm目录下的BCM43142A0-04ca-2009.hcd
-
将下载的固件放到指定目录
bash
sudo cp BCM43142A0-04ca-2009.hcd /lib/firmware/brcm/BCM43142A0-04ca-2009.hcd
7) 移除并重新加载蓝牙驱动
bash
sudo modprobe -r btusb
sudo modprobe btusb
sudo hciconfig hci0 up
这样就可以看到蓝牙正常启动了。
Wifi无法启动
1)查看网络硬件状态
bash
sudo lshw -C network
*-network UNCLAIMED
description: Ethernet controller
product: RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0.1
bus info: pci@0000:07:00.1
version: 12
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list
configuration: latency=0
resources: ioport:3000(size=256) memory:d1504000-d1504fff memory:d1500000-d1503fff
*-network UNCLAIMED
description: Network controller
product: BCM43142 802.11b/g/n
vendor: Broadcom Inc. and subsidiaries
physical id: 0
bus info: pci@0000:08:00.0
version: 01
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress cap_list
configuration: latency=0
resources: memory:d1400000-d1407fff
可以看到,网卡处于UNCLAIMED状态,意味着没有驱动
2)安装驱动
bash
sudo apt install broadcom-sta-dkms
3)手动加载驱动
bash
sudo modprobe wl
modprobe: ERROR: could not insert 'wl': Key was rejected by service
根据控制台显示的结果,查询到这个问题是因为由于安全启动的保护机制,UEFI 安全启动(Secure Boot)功能阻止了驱动加载
4)为驱动签名并注册MOK
1.导入系统生成的密钥:
bash
sudo mokutil --import /var/lib/shim-signed/mok/MOK.der
之后系统会要求你输入一个秘密,记住这个密码
- 重启电脑:
bash
sudo reboot
- 电脑重启过程中,屏幕上会出现一个蓝色的 "Perform MOK management" 界面。需要按顺序执行以下步骤:
按任意键进入管理界面。
选择 "Enroll MOK"。
选择 "Continue"。
选择 "Yes"。
输入你在上一步设置的临时密码。
最后选择 "Reboot" 重启。
重启后Wifi正常可用