云网牛站
所在位置:首页 > Linux教程 > 在Deepin Linux系统无线网卡、蓝牙模块驱动安装和出现问题的解决

在Deepin Linux系统无线网卡、蓝牙模块驱动安装和出现问题的解决

2018-09-04 11:27:12作者:木子Lee稿源:欧巴云

本文为你带来在Deepin Linux系统中无线网卡、蓝牙模块驱动安装和出现问题的解决方法。本文所讲的关于适配蓝牙和无线网卡设备的驱动问题,它不仅仅适用于新驱动的安装,也适用于驱动异常的修复。

 

一、问题说明

下面就和大家分享一下关于无线网卡和蓝牙设备驱动的那些事情。注:无线网卡和蓝牙设备是在同一个模块上的。发生了一件很奇怪的事情,笔记本启动后发现蓝牙鼠标不可能了,查看控制中心对应的蓝牙管理按钮没有了,所以觉得很奇怪。重启笔记本也不行,于是开始排除问题,并修复蓝牙设备驱动,在使用的过程中,不仅仅出现过蓝牙设备异常的问题,同样也出现过无线网卡设备异常的问题,但都是使用相同的方法修复的,在出现异常的情况下,你会发现在控制中心没有发现蓝牙或无线网卡图标的情况。如下图所示:

在Deepin Linux系统无线网卡、蓝牙模块驱动安装和出现问题的解决

 

二、排错过程

1.检测蓝牙服务

首先检测蓝牙服务是否正常启动,检测发现服务是正常启动的,重启服务无法生效。

systemctl status bluetooth

bluetooth.service – Bluetooth service

Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)

Active: active (running) since Fri 2018-09-4 11:08:38 CST; 30min ago

Docs: man:bluetoothd(8)

Main PID: 829 (bluetoothd)

Status: “Running”

Tasks: 1 (limit: 4915)

CGroup: /system.slice/bluetooth.service

└─829 /usr/lib/bluetooth/bluetoothd

2.检测内核加载模块

查看系统内核加载模块,蓝牙模块是有加载的。

lsmod | grep blue

在Deepin Linux系统无线网卡、蓝牙模块驱动安装和出现问题的解决

3.检测软硬开关

查看Deepin Linux系统是否开启软或硬开关,关闭了蓝牙模块,rfkill是Linux内核提供的一个子接口,用于进行 Wi-Fi、 蓝牙、3G和4G设备的开关控制的,结果发现根本没有蓝牙设备。

sudo rfkill list

0: phy0: Wireless LAN

Soft blocked: no

Hard blocked: no

看这情况是没有加载模块成功了。于是想通过modprobe btusb加载一下模块看是否OK,发现加载以后还是不行,卸载内核蓝牙模块rmmod bluetooth再重载蓝牙模块到内核insmod bluetooth也不行。

4.开机日志检测

于是开始检索日志信息,dmesg是用来检测系统开机时的信息的。

dmesg | egrep -i ‘blue|firm’

[   14.374064] Bluetooth: HCI UART protocol Marvell registered

[   14.741564] request_firmware: ath10k/pre-cal-pci-0000:02:00.0.bin

[   14.741954] ath10k_pci 0000:02:00.0: firmware: failed to load ath10k/pre-cal-pci-0000:02:00.0.bin (-2)

[   14.741958] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:02:00.0.bin failed with error -2

[   14.741961] request_firmware: ath10k/cal-pci-0000:02:00.0.bin

[   14.741970] ath10k_pci 0000:02:00.0: firmware: failed to load ath10k/cal-pci-0000:02:00.0.bin (-2)

[   14.741972] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/cal-pci-0000:02:00.0.bin failed with error -2

[   14.741974] request_firmware: ath10k/QCA6174/hw3.0/firmware-6.bin

[   14.742930] ath10k_pci 0000:02:00.0: firmware: direct-loading firmware ath10k/QCA6174/hw3.0/firmware-6.bin

[   14.743438] ath10k_pci 0000:02:00.0: firmware ver WLAN.RM.4.4-00022-QCARMSWPZ-2 api 6 features wowlan,ignore-otp crc32 4d458559

[   14.807142] request_firmware: ath10k/QCA6174/hw3.0/board-2.bin

[   14.807740] ath10k_pci 0000:02:00.0: firmware: direct-loading firmware ath10k/QCA6174/hw3.0/board-2.bin

[   55.479518] Bluetooth: BNEP (Ethernet Emulation) ver 1.3

[   55.479519] Bluetooth: BNEP filters: protocol multicast

[   55.479521] Bluetooth: BNEP socket layer initialized

在日志中发现了两条错误信息,这两条错误信息很显然在系统启动的时候,驱动加载就有问题了。到找了问题,解决问题就简单了。

5.重装驱动

重装蓝牙驱动,这里要说明的一点是,很多笔记本都是网卡与蓝牙模块一起的,这时候如果没有办法看到蓝牙模块不知道是什么型号,可以通过查看无线模块型号,然后将整个无线模块的驱动更换(其中就包括了蓝牙模块驱动),这样应该就解决问题了。

1].查看无线模块型号

lspci | grep Wireless

02:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)

在这里可以看到对应的型号是qca6174。

2].下载对应驱动

下载最新的固件并解压缩内容:

https://codeload.github.com/kvalo/ath10k-firmware/zip/master

在Deepin Linux系统无线网卡、蓝牙模块驱动安装和出现问题的解决

3].进入无线驱动目录(不同的无线模块会不一样,但是都在/lib/firmwareh目录下)

cd /lib/firmware/ath10k

4].删除原有驱动

rm -rf QCA6174

5].复制最新驱动进去

cp -rf /home/liwenbin/Downloads/ath10k-firmware-master/QCA6174 ./

6].进入对应目录,重命名驱动模块名称。

cd QCA6174/hw3.0

mv firmware-4.bin_WLAN.RM.2.0-00180-QCARMSWPZ-1 firmware-4.bin

然后关机、重新开机,即可识别蓝牙模块了,这时候蓝牙设备就可以正常工作了。

这时候再查看对应模块已经存在了。

0: hci0: Bluetooth

Soft blocked: no

Hard blocked: no

1: phy0: Wireless LAN

Soft blocked: no

Hard blocked: no

通过对比发现,之前的蓝牙模块里面少加载了hidp和rfcomm两个协议。而rfcomm协议就是蓝牙设备的通讯协议,hidp就是基本支持协议。

lsmod | grep blue

在Deepin Linux系统无线网卡、蓝牙模块驱动安装和出现问题的解决

 

三、节能控制

上面说到一个关于rfkill的命令,其实通过这个命令可以在必要的时候关闭无线或蓝牙设备,来节约设备用电,以软关闭蓝牙模块为例。

1.关闭蓝牙模块

rfkill block 0 #0为设备ID号

2.检测是否关闭

rfkill list

0: hci0: Bluetooth

Soft blocked: yes

Hard blocked: no

1: phy0: Wireless LAN

Soft blocked: no

Hard blocked: no

3.开启蓝牙模块

rfkill unblock 0

4.检测是否开启

rfkill list

0: hci0: Bluetooth

Soft blocked: no

Hard blocked: no

1: phy0: Wireless LAN

Soft blocked: no

Hard blocked: no

 

四、总结

每一台笔记本的无线网卡或蓝牙模块的设备厂商都不一样,但是解决问题的思路和方法是一样的,只是驱动不同而已。在这里提供三家常用网卡生产厂商的驱动:Broadcom、Killer、Realtek。

Broadcom:https://github.com/winterheart/broadcom-bt-firmware

Killer:https://codeload.github.com/kvalo/ath10k-firmware/zip/master

Realtek:https://github.com/lwfinger/rtlwifi_new

同样Broadcom驱动存放在/lib/firmware目录下brcm中。

对于realtek会有所不同,可以将对应的驱动下载,然后执行以下命令:

make

sudo make install

sudo modprobe rtl8192de

 

附:关于BCM43602的网卡驱动

可以采用下面方法测试。

1.从Linux固件git回购下载固件。

https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/plain/brcm/brcmfmac43602-pcie.bin

2.将此文件移动到文件夹/lib/firmware/brcm/

cp brcmfmac43602-pcie.bin /lib/firmware/brcm

3.重新启动系统,运行以下命令。

reboot

 

相关主题

在Ubuntu 18.04下安装腾达Tanda U6无线网卡(RTL8192EU)驱动

精选文章
热门文章