完全用Deepin Linux娱乐、工作、学习(3)-- 无线网卡及蓝牙设备驱动篇

1、异常说明

在前面木子已经讲到了关于显卡驱动及CPU微码补丁更新,今天木子要讲的是关于适配蓝牙及无线网卡设备的驱动问题,它不仅仅适用于新驱动的安装,也适用于驱动异常的修复。默认情况下木子的笔记本安装Deepin Linux后是自带驱动的,只是在折腾的过程中出现异常,所以有了需要修复驱动的过程,下面木子就简单和大家分享一下关于无线网卡和蓝牙设备驱动的那些事情。注:木子的无线网卡和蓝牙设备是在同一个模块上的。
        今天发生了一件很奇怪的事情,木子的笔记本启动后发现蓝牙鼠标不可能了,查看控制中心对应的蓝牙管理按钮没有了,让木子很奇怪。重启笔记本也不行,于是开始排除问题,并修复蓝牙设备驱动,在使用的过程中,木子不仅仅出现过蓝牙设备异常的问题,同样也出现过无线网卡设备异常的问题,但木子都是使用相同的方法修复的,在出现异常的情况下,你会发现在控制中心会不存在蓝牙或无线网卡图标的情况。如下图所示:

2、排错过程

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-04-13 14: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
bluetooth             634880  13 btrtl,hci_uart,btintel,btqca,bnep,btbcm,btusb
ecdh_generic           24576  1 bluetooth
rfkill                 28672  8 bluetooth,dell_laptop,cfg80211
crc16                  16384  2 bluetooth,ext4

3)检测软硬开关

查看系统是否开启软或硬开关,关闭了蓝牙模块,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)重装驱动

重装蓝牙驱动,这里要说明的一点是,很多笔记本都是网卡与蓝牙模块一起的,这时候如果没有办法看到蓝牙模块不知道是什么型号,可以通过查看无线模块型号,然后将整个无线模块的驱动更换(其中就包括了蓝牙模块驱动),这样应该就解决问题了。
#查看无线模块型号
lspci | grep Wireless
02:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
在这里木子可以看到对应的型号是qca6174
#下载对应驱动
下载最新的固件并解压缩内容:
https://codeload.github.com/kvalo/ath10k-firmware/zip/master
#进入无线驱动目录(不同的无线模块会不一样,但是都在/lib/firmwareh目录下)
cd /lib/firmware/ath10k
#删除原有驱动
rm -rf QCA6174
#复制最新驱动进去
cp -rf /home/liwenbin/Downloads/ath10k-firmware-master/QCA6174 ./
#进入对应目录,重命名驱动模块名称。
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
bluetooth             634880  48 btrtl,hidp,hci_uart,btintel,btqca,bnep,btbcm,rfcomm,btusb
ecdh_generic           24576  1 bluetooth
rfkill                 28672  8 bluetooth,dell_laptop,cfg80211
crc16                  16384  2 bluetooth,ext4

3、节能控制

刚刚讲到一个关于rfkill的命令,其实通过这个命令可以在必要的时候关闭无线或蓝牙设备,来节约设备用电,以软关闭蓝牙模块为例:
#关闭蓝牙模块
rfkill block 0 #0为设备ID号
#检测是否关闭
rfkill list
0: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
#开启蓝牙模块
rfkill unblock 0
#检测是否开启
rfkill list
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no

4、写在最后

每一台笔记本的无线网卡或蓝牙模块的设备厂商都不一样,但是解决问题的思路和方法是一样的,只是驱动不同而已。木子这里提供三家常用网卡生产厂商的驱动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

原文地址:http://blog.51cto.com/lidongni/2106933

时间: 2024-08-07 08:25:07

完全用Deepin Linux娱乐、工作、学习(3)-- 无线网卡及蓝牙设备驱动篇的相关文章

完全用Deepin Linux娱乐、工作、学习(1)

截至今天我已经用全Deepin Desktop Linux环境娱乐.工作.学习了100多天.当你看到这个桌面的时候,会不会觉得它是MacOS?错了,它是Deepin Desktop Linux,而且它已经在全球很多个国家流行开,它字体的渲染.桌面的细腻是目前Windows10没有办法企及的,可以说和MacOS有得一比,如果你觉得它只是一个花瓶,那你就错了,你想实现的功能它基本上都能实现,有人说2017年是Linux桌面年. 记得在很多年前看过一篇王垠写的<完全用Linux工作>那是在2003还

[Linux]谈谈如何学习Linux操作系统

一. 选择适合自己的linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他系统转到linux系统来的初学者可能会感到困惑,即便是忠实的 Linux 用户也没有时间和精力去挨个尝试,因此初学者在学习linux的之前,需要有一个明确的方向,选择一个适合自己的系统开始学习linux至关重要!下面我们就分类介绍. 1.1 初学者入门首选-redhat系列在学习redhat系列li

学习、实践分析取舍,工作学习总结

列举: 工作快要一年了,最近发现自己想要学习的东西非常多,已经到了完全应付不过来的程度.看来需要列举一下,然后分一下主次关系: 这些就是目前我想要学习的知识点: 1.C++.C语言基础知识 2.cocos2dx游戏引擎 3.android应用基础知识和eclipse.ADT.CDT.ANT.NDK.SDK基本知识点 4.xcode.object-c和mac基础知识点 5.openGL相关知识 6.lua语言基础知识 7.Linux和unix编程基础 8.编译.链接.装载,静态库.动态库 9.计算

Linux 搭建深度学习环境教程

Linux 搭建深度学习环境教程 Notes: ? 开门见山:使用 Anaconda 直接搞定 Linux Nvidia 驱动这个千年难题 ? 重点: 关于这个问题,今天我来总结一篇专治头疼的药方:只需要安装 Anaconda ,使用 conda 安装 Pytorch 或者 Tensorflow-gpu 即可. conda 会自动帮助我们安装好几乎所有必需的驱动,可谓是一键式安装,简直是我等"菜鸡"们的福音!!! I Love Anaconda ?????? 1. Linux 发行版选

deepin linux安装与配置

作者:相思羽  出处:http://www.cnblogs.com/xiang-siyu 欢迎转载,也请保留这段声明.谢谢! deepin linux是由深度开发的操作系统,基于debian,内置了搜狗输入法,wps,谷歌浏览器,QQ,有道词典等,适合初学linux者使用 其安装比较简单,官网有教程.http://www.deepin.org/ 可以通过官网或者各个开源镜像来下载其安装镜像. ----------------------------------------------------

linux网络编程学习笔记之二 -----错误异常处理和各种碎碎(更新中)

errno 在unix系统中对大部分系统调用非正常返回时,通常返回值为-1,并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen().erron存放一个正整数来保存上次出错的错误值. 对线程而言,每个线程都有专用的errno变量,不必考虑同步问题. strerror converts to English (Note: use strerror_r for thread safety) perror is simplified str

松口气,近一段时间的工作学习情况

公司的工作最近又小松口气,其实剩下的事情还不少,但是框架已经成型,接下来硬骨头还有很多,但是吃一个就少一个,这就不太怕了. 去年开始做这套类似Blue Print的图脚本的时候没想到虚幻能这么快就开放,项目推行类Blue Print时也就没有太激进,图本身的出发点是自然语言,而不是程序语言,带有不少Coroutine的概念,结果现在就有点被动了.自己做出的图表系统无论怎么看,从组织上和方便程度上都不能跟UE4相提并论,所以--现在压力略大. 不过坚持到最后能实施成这样子,而且得到了部分策划的支持

Linux运维学习-4——2016年7月26日

格式说明: 操作 概念 命令 说明及举例 四 du -sh /sys 查看文件.文件夹大小 /sys/class/scsi_host/host2/scan 在线扫盘(新加硬盘执行这个命令后才能发现) stat /etc/issue 更详细的看数据 蓝色:目录绿色:可执行文件浅蓝色:链接文件红色:压缩文件 创建-h文件名的文件,删除?访问?绝对路径 -:常规文件d:目录l:链接文件b:块设备(比如硬盘,有缓存)c:字符设备(不真实存在,没缓存) p:管道文件 例: 命令1 | 命令2 命令1的输出

奔跑中的2015:Linux运维学习八大禁忌

随着Linux服务器在企业中的日益普及,高级Linux运维工程师岗位缺口也在递增.目前,为企业人才输送人才的各大院校,很少有开设Linux课程.我所了解和接触从事Linux运维工作同事和朋友多半是半路出家,很少有一出校门就去做Linux运维的相关工作.问其为何学习Linux因为技术?有的人说是兴趣所致,也有的人说是由于工作需要,可以说后者有点被迫无奈,但是痛并快乐着. Linux运维学习可以说"入门不易,深入更难",由于Linux系统主要是使用命令和脚本操作的特点:尤其多数Linux操