Linux智能小开关rfkill
Linux智能小开关rfkill
Rfkill,当中rf是Radio frequency(射频)。主要作用是一个专门管理开关的子系统,举例说明Android手机的通知栏能够方便地开关Airplane/BT/WiFi/Data/GPS。使用起来着实非常方便。
可是这是Android系统上层统一实现的。相应Linux内核曾经是没有统一的实现,随着这样的情况的增多也有专门的子系统来集中实现这个功能。这正是rfkill的工作。
上述的几个控制样例中。也许它们每一个功能被发明时都是一场革命。原理甚或配置都可能相当复杂。可是对终于的用户来说,使用最多的也就是「开关」。
使用范例,监听无线网卡硬件变化:
$ rfkill
Usage: rfkill [options] command
Options:
--version show version (0.4-1ubuntu3 (Ubuntu))
Commands:
help
event
list [IDENTIFIER]
block IDENTIFIER
unblock IDENTIFIER
where IDENTIFIER is the index no. of an rfkill switch or one of:
<idx> all wifi wlan bluetooth uwb ultrawideband wimax wwan gps fm
$ rfkill event
1412007426.882932: idx 0 type 1 op 0 soft 0 hard 0
1412007465.911313: idx 0 type 1 op 2 soft 0 hard 1
1412007605.911553: idx 0 type 1 op 2 soft 0 hard 0
1412007705.911463: idx 0 type 1 op 2 soft 0 hard 1
1412007715.911449: idx 0 type 1 op 2 soft 0 hard 0
$
驱动中实现了复杂的特性驱动后。最好完好一个rfkill驱动就再好只是了。Rfkill从原理只是是一个新的sys文件系统中的class。
位于/sys/class/rfkill/。由于它小,所以所说的东西也不是特别多,可是由于它引起了一段经历让人揪心。重点写下来。
写在后面:
研究这个的源由是在移植一个BT驱动的时候,出现了一个怪异的现象。
因为不过系统版本号的升级(从Android4.2升级到Android4.4)所以能够确定硬件是完善的。
对应的驱动先配置后好,烧写系统后BT測试正常。出于「不糊弄」的心态,我决定反測试一下,在内核中将BT相关选项去掉后,測试结果BT确实是不能使用了。再将驱动配置加入上却意外发现仍然不能正常开启。
然后立马回退版本号。測试之前能正常的内核。结果还是成功打开设备。我就開始乱想了。BT IC被我使用软件配置坏了?出现这样的诡异的事件时,答案一般都在厕所或者去厕所的路上,我得去那里找找。顺便洗把脸。找到的概率会更高。
厕所还是给了我一些指点。先确认BT的硬件IC究竟有没有问题,将系统完整地烧回Android4.2系统。測试结果是正常的。我放心一些了,然后使用第二台进行诡异事件的又一次測试。把之前的系统镜像依次烧入,现象和第一台机器是一样的。到此刻就该是逗灵巧的时刻了:一旦执行了不带BT驱动的的镜像,那么再烧写带BT驱动的也不能正常打开驱动了——BT芯片没有复位!
!
!这个是我的推測,立马全然断电再上电,原来包括BT驱动的不能正常打开BT的系统镜像能够正常打开了。
以之前的验证结果为起点进行思考,我又一次烧写系统镜像都是直接按「重新启动键」(硬件上叫复位键)进行系统的重新启动,如今发现它会引起一个问题。BT为什么没有在按下复位键的时候进行复位呢?这个相同仅仅是如果。万用表侍奉。先无论电路怎么连接。直接測试BT的复位管脚,在按下复位键时。电压并没有由高电平变为低电平。这一点得到证实后。查看原理图得知原来BT的复位管脚并非和总复位键相连。而是连接到了CPU的一个GPIO上。再然后依据这个GPIO的名字查出在Android4.2的内核驱动中是要注冊成rfkill中BT的reset管脚的。
照做后一切问题得以解决。
我曾经的印象中一个电路板上的全部的IC的reset管脚都是统一连接到用户的复位开关上呢!这次认识了一直以来都仅是眼熟的rfkill。原来BT的IC一直都没有断电和RESET导致没有办法正常开放。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Linux智能小开关rfkill的更多相关文章
- 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)
微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...
- 支持语音识别、自然语言理解的微信小程序(“遥知之”智能小秘)完整源码分享
记录自己搭建https的silk录音文件语音识别服务的调用过程,所有代码可在文中找链接打包下载 >>>>>>>>>>>>> ...
- 百度智能小程序弹窗组件wcPop|智能小程序自定义model弹窗模板
百度智能小程序自定义弹窗组件wcPop|百度小程序model对话框|智能小程序弹窗界面模板 最近百度也推出了自己的智能小程序,如是就赶紧去试了下,官方提供的api还不是狠完整.而且官方提供的弹窗组件也 ...
- Linux内核日志开关
Linux内核日志开关 1.让pr_debug能输出 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -59,7 +59,7 ...
- 如何快速将百度大脑AI技术内置智能小程序中
实现效果: 该AI智能小程序目前集成了百度AI开放平台数十个AI服务产品功能,包括人脸识别.文字识别.表格识别.红酒识别.货币识别.地标识别.手势识别.商标识别.果蔬识别.菜品识别等图片识别功能,以及 ...
- Linux通用小技能
Linux通用小技能 前言 无论你用ubuntu还是centos,通通没问题,运维这东西,踩坑写文档就是了. 小技能 新磁盘挂载 不管是阿里云还是腾讯云,还是自己的机器,请记住这条命令. mkfs.e ...
- Linux[Manjaro] 小新15笔记本AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题
Linux[Manjaro] 小新15AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题解决办法 年初尝试将manjaro安装在我的笔记本上就存在这个问题,也一度将我劝退.系统安装在 ...
- linux相关小工具的使用(一)————代码相关工具
在linux环境下,对于程序员来说,知道使用一些好用的小工具,对源代码的阅读.编译和调试都有着事半功倍的效果,这里我也是边学边写的原则,把自己知道的一丁点小知识分享给大家. 一. 源代码的阅读 首先 ...
- 一个cheat命令 == Linux命令小抄大全
本文介绍一个Linux超级命令,有了这个命令,你就可以开开心心的使用linux上的各种命令了.当你要执行一个linux命令,在这个命令参数选项众多时,你一般怎么做?对,我们大多数人都会去求助man命令 ...
随机推荐
- uva 140
思路:暴力+剪枝 uva140 wa了好多次……数组开小了……!!! #include <iostream> #include <cstdio> #include <cm ...
- Oracle Tablespace Transportation
前提:进行表空间传输需要用户有SYSDBA的系统权限,被移动的表空间是自包含的表空间,不应有依赖于表空间外部对象的对象存在.确定是否自包含可使用系统包DBMS_TTS中的TRANSPORT_SET_C ...
- 新秀操作和维护注意事项:Windows关于使用Xshell管理你的云主机
假设你PC它是linux系统.那么直接与终端ssh命令就可以了.假设Windows系统.使用它是必要的sshclient. PS:我双系统. 有时候,他们想使用Windows的. Windows上ss ...
- javascript (十) 变量
变量必须以字母开头 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做) 变量名称对大小写敏感(y 和 Y 是不同的变量) 声明(创建) JavaScript 变量 在 JavaScript 中创 ...
- vc 在edit控件中动态插入数据滚动显示
内存从网上论坛摘抄整理 思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->G ...
- 【Demo 0010】事件响应链
本章学习要点: 1. 熟悉iOS事件分发过程以及事件响应链; 2. 掌握基本事件响应方法(单击,双击): 3. 掌握基本手势处理方法:
- JPA的Embeddable注解
来源于http://zjsword2000.blog.163.com/blog/static/4583983320083184844734/ 在hibernate中实现自定义类型,只要实现UserTy ...
- 11gR2(11.2) RAC TAF Configuration for Admin and Policy Managed Databases (文档 ID 1312749.1)
In this Document Purpose _afrLoop=1459323732561579&id=1312749.1&displayIndex=10&_afr ...
- 为cocos2dx添加ndk库
碰到很多坑: 1:引用库定义成include $(BUILD_SHARED_LIBRARY),结果生成了两个so文件,应该把库声明为BUILD_STATIC_LIBRARY 2:把库的java放到了项 ...
- STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())
一:起因 (1)STL中关于二分查找的函数有三个:lower_bound .upper_bound .binary_search -- 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),以 ...