rfkill 模块的初值 | 少将全栈
  • 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

rfkill 模块的初值

点滴 admin 11年前 (2014-05-13) 6035次浏览 已收录 扫描二维码

我们公司把蓝牙芯片的电源控制代码放在了rfkill模块里面,然后通过
echo 1 /sys/class/rfkill/rfkill0/stateecho 0 /sys/class/rfkill/rfkill0/state 分别打开和关闭蓝牙电源。

但是rfkill默认值是unblock,这样的话,蓝牙芯片默认就是加电的,所以我们想把默认值改为block,于是在init中加了这个调用:
rfkill_init_sw_state(rfkill, true);
结果,我们的蓝牙服务不能正常启动了。我们发现 echo 1 /sys/class/rfkill/rfkill0/state是起作用的(确实能打开蓝牙电源),但是应用层的服务起不来了,而且hciconfig hci0发现mac地址为0。


开始我们以为要在set_block里面调用rfkill_set_sw_state,但是根本没用。后来研究rfkill的代码,发现原来
net/rfkill/core.c里面有一个全局变量rfkill_global_states,这个变量用来记录rfkill的状态。当使用echo
XXX
/sys/class/rfkill/rfkill0/state的时候,这个变量并没有变。这个变量只有在rfkill_fop_write被调用时才
被改写,也就是说,要在应用层打开rfkill并写它,才能改变这个变量的值,从而真正开启或关闭rfkill

好在已经有第三方工具可用了,见这个:link
或者从这里下载也行:link

很 多 计 算 机 系 统 包 含 无 线 电 传 输 ,其 中 包 括 Wi-Fi、 蓝 牙 和 3G 设 备 。 这 些 设 备 消 耗 电 源 ,在 不 使 用 这 些 设 备 时 是 一 种 浪 费 。

RFKillLinux 内 核 中 的 一 个 子 系 统 ,它 可 提 供 一 个 界 面 ,在 此 界 面 中 可 查 询 、 激 活 并 取 消 激 活 计 算 机 系 统 中 的 无 线 电 传 输 。 当 取 消 激 活 传 输 时 ,可
使 其 处 于 可 被 软 件 重 新 激 活 的 状 态 (
软 锁 定)或 者 将 其 放 在 软 件 无 法 重 新 激 活 的 位 置 (
锁 定
)。

RFKill 核 为 子 系 统 提 供 应 用 程 序 编 程 界 面 (API)。 内 核 驱 动 程 序 被 设 计 为 支 持
RFKill 使 用 这 个 API 注 册 内 核 ,并 包 含 启 用 和 禁 用 这 个 设 备 的 方 法 。 另 外 ,RFKill 核
提 供 用 户 程 序 可 解 读 的 通 知 以 及 用 户 程 序 查 询 传 输 状 态 的 方 法 。

RFKill 界 面 位 于/dev/rfkill,其
中 包 含 系 统 中 所 有 无 线 电 传 输 的 当 前 状 态 。 每 个 设 备 都 在sysfs中
注 册 当 前 RFKill 状 态 。 另 外 ,在 启 用 了 RFKill 的 设 备 中 每 当 状 态 更 改 时 ,RFKill 会 发 出
uevents

Rfkill是 一 个
命 令 行 工 具 ,您 可 使 用 它 查 询 和 更 改 系 统 中 启 用 了 RFKill 的 设 备 。 要 获 得 这 个 工 具 ,请 安 装
rfkill软 件 包 。

使 用 命 令rfkill
list获 得 设 备 列 表 ,每 个 都 包 含 与 之 关 联 的
索 引 号,从0开
始 。 您 可 以 使 用 这 个 索 引 号 让
rfkill
止 使 用 或 者 使 用 某 个 设 备 ,例 如 :

rfkill block 0

停 用 系 统 中 第 一 个 启 用 RFKill 的 设 备 。

您 还 可 以 使 用rfkill
断 某 一 类 设 备 ,或 者 所 有 启 用 了 RFKill 的 设 备 。 例 如 :

rfkill block wifi

停 用 系 统 中 的 所 有 Wi-Fi 设 备 。 要 停 用 所 有 启 用 了 RFKill 的 设 备 ,请 运 行 :

rfkill block all

要 重 新 使 用 设 备 ,请 运 行rfkill
unblock,而 不 是rfkill
block。 要 获 得
rfkill
停 用 的 完 整 设 备 类 别 列 表 ,请 运 行rfkill
help。

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。