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导致没有办法正常的开启。

时间: 2024-10-02 23:02:55

Linux中智能小开关rfkill的相关文章

老男孩教育每日一题-2017-04-18:命令风暴:如何快速删除Linux中海量小文件?

老男孩教育每日一题-2017-04-18:命令风暴:如何快速删除Linux中海量小文件? 今天是老男孩教育每日一题陪伴大家的第30天. 对于题目和答案的任何疑问,请在博客评论区留言. 往期题目索引 http://lidao.blog.51cto.com/3388056/1914205

Linux中的小程序—— 进度条

在说正事之前,首先科普一下在什么是回车什么是换行? 我们通常所说的回车就是从一行的末尾跳到另一行的开头,但事实上这却是由回车和换行两个动作所完成的,也就是键盘上<enter>所完成的工作.但实际上,回车是光标重回开头,换行就仅仅只是光标往下一行.(回车\r,r为return:换行\n,n为newline) 对于一个shell中运行的程序,默认情况下printf()是行缓冲的.意思是printf输出时是先将内容输送到缓冲区,再从缓冲区输送到屏幕上.当写入的字符中含有换行符\n时,缓冲区就会立马把

Linux中的括号用法

一.Linux中的小括号(也叫圆括号)"( )"的用法 1.单小括号() 1)数组赋值或者初始化数组: 2)子Shell赋值:小括号中的内容会开启一个子shell独立运行:括号中以分号连接,最后一个命令不需要:各命令和括号无需空格:3)实现多条命令集合:新开多条命令来执行,各个命令之间用分号隔开,最后一个命令必须要分号来隔开:4)与"$"结合实现命令替换:等同于cmd 扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此

Linux以及Android开发中的小技巧和长繁命令记录收集

不断更新收集中.... 2014071743 ssh以nx_guest的身份登录到172.24.221.137,然后在172.24.221.137与172.24.61.252的8080端口建立网络连接,同时创建端口为5678的本地代理服务 ssh -C -f -N -o 'TCPKeepAlive=yes' -L 5678:172.24.61.252:8080 [email protected] 反编译android下的二进制程序 ./prebuilts/gcc/linux-x86/arm/ar

基于Linux的智能家居的设计(2)

1  系统整体设计方案 智能家居系统的是一个实时查询家庭的温湿度.照明控制.自己主动控制的设定.集家庭娱乐.智能安防为一体,大量数据快处理.可靠的系统,因此在硬件和软件上都有非常大的要求,因此在这里进行了多方面的考虑有下面两个实现方案: 方案一:利用STM32单片机作为手持终端的控制器,使用按键和12864液晶屏作为人机交互的接口.利用51单片机作为房子内部的电灯.空调.门禁等家电的控制器,利用串口实现STM32单片机和51单片机作为传输数据的通道.这个能够实现.可是.机械按键和12864在智能

基于Linux的智能家居的设计(3)

2  硬件设计 本课题的硬件设计包括主控制器.数据传输设计.数据采集设计.控制驱动设计.显示设计,门禁设计. 2.1  主控制器 根据方案三选择S3C6410主控芯片,S3C6410是由Samsung公司推出的一款低功耗.高性价比的RSIC处理器 ,基于ARM11内核,内置强大的硬件加速,显示处理和缩放,运动视频处理,音频处理[9].这个作为智能家居的处理器是不二之选,硬件性能上完全可以实现.本设计选用的基于S3C6410的OK6410开发板.开发板上拥有如下特征[10]: (1)  12MHz

linux中Makefile文件相关内容

第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力.因为,makefile关系到了整个

如何在 Linux 中整理磁盘碎片

有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀的日志文件系统(ext3.4等等)来处理文件系统.然而,在一些特殊情况下,碎片仍旧会产生.如果正巧发生在你身上,解决方法很简单. 什么是磁盘碎片 文件系统会按块更新文件,如果这些块没有连成一整块而是分布在磁盘的各个角落中时,就会形成磁盘碎片.这对于 FAT 和 FAT32 文件系统而言是这样的.在 NTFS 中这种情况有所减轻,但在 Linux(extX)中却几乎不会发生.下面是原因: 在像 FA

Linux中监控命令top命令使用方法详解

收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就是我收集的关于Linux top命令的文章,希望能帮到大家 top作为日常管理工作中最常用也是最重要的Linux 系统监控工具之一,可以动态观察系统进程状况.top命令显示的项目很多,默认值是每5秒更新一次,按q键可以退出.显示的各项目为:-b : 批次模式运行.-c : 显示执行任务的命令行.-d