Android 蓝牙笔记-底层RFKILL驱动

概念

RFKill, 就是RF(射频) 设备的开关,有类似一键关闭所有射频外设的功能,比如当我们在飞机上飞行开启飞行模式时候, 所有这些RF相关的设备都需要关闭.

linux的rfkill子系统提供了用于禁用系统中任何无线电发射器的通用接口, 发射设备关闭时.不得辐射任何功率. RFKill的出现方便管理各种RF芯片的开关. 目前已经很多厂商的设备使用的是RFKill的驱动来管理一些无线设备的电源了, 都是和RF相关的芯片, 比如WIFI, 蓝牙, NFC, FM, GPS等等. 由于这个rfkill的功能是管理无线设备的电源开关, 所以这和硬件的关联是直接的,一般都会涉及到硬件的power或reset引脚.

rfkill子系统有"hard"和"soft" block的概念, block的意思就是发射器关闭, hard block和soft block的差异在于

hard block : 软件无法管控到的只读类型的无线模块
soft block: 系统软件可设置的无线模块(可不需要读权限)

rfkill子系统由三个主要组件组成:

1.rfkill core
2.rfkill-input模块(不推荐使用的, 输入层处理程序,已由用户空间策略代码代替)
3.rfkill驱动程序

rfkill core为驱动程序提供了API,让驱动程序可向内核注册无线电发射器设备, 以及打开和关闭内核的方法, 这样系统就知道怎么禁用设备硬件. rfkill core还向用户空间通知状态更改,并为用户空间提供查询当前状态的方法.

hal层一般使用/dev/rfkill设备节点来操作设备使能/禁用, 用户空间一般都操作这个设备节点来写程序. linux下有rfkill工具, 有兴趣的朋友可以去玩下, 就是开关无线设备功能. 比如我电脑ubuntu上的:

zkh@zkh-ThinkPad-Edge-E430c:~$ rfkill
Usage:	rfkill [options] command
Options:
	--version	show version (0.5-1ubuntu3.1 (Ubuntu))
Commands:
	help
	event
	list [IDENTIFIER]
	block IDENTIFIER
	unblock IDENTIFIER
where IDENTIFIER is the index no.
  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值