如何使用 dmesg 检查 Android 上的无线硬件
使用 dmesg 识别您的设备所使用的无线芯片组。
引言
在本技巧中,您将学习如何使用 dmesg 来识别您的设备所使用的无线芯片组。此技巧适用于通配符类别。
有时,您需要导入一个仓库或对象文件,它适用于您设备上的特定硬件,有时,您甚至无法访问该硬件的名称。
在这种情况下,最接近通用手段来辨别这种硬件的方法是使用 dmesg,即驱动程序消息系统。 为了做到这一点,你需要通过 "adb shell" 连接到设备,或者使用终端模拟器或 ConnectBot App,它们都可以在 F-Droid 和 Google Play 商店中找到。
安装终端模拟器
要使用 dmesg,您需要访问设备上的终端模拟器。 如果您愿意,可以使用 "adb shell",但如果不行,您可以在设备上安装一个终端模拟器。 有两个免费软件选项可供选择。
选择哪个?
嗯,这取决于。 使用其中任何一个来使用 dmesg 是完全可能的,并且它们之间没有太大的区别。 简而言之,如果您只想在设备上工作,Android Terminal Emulator 适合您。 如果您想要高级功能或能够通过 ssh 连接到另一台机器,那么您应该使用 ConnectBot。
Android 终端模拟器
Android Terminal Emulator 是一款易于使用的终端模拟器,可从 F-Droid 获取,以 APK 形式提供,也可以从 Google Play 商店获取。 它旨在为您的设备提供终端,在您的设备上。
ConnectBot Android Shell
ConnectBot Android Shell 是一个终端模拟器和安全 shell 客户端。 它可以以终端模拟器模式运行,也可以用于通过 ssh 连接到远程计算机。 如果您的设备支持,它也可以用于连接到 GNU/Linux chroot 并启动一些 X 应用程序。
在终端模拟器中工作
一旦您选择了终端模拟器,启动它并在您的设备上进入该应用程序。 确定您的设备正在使用什么硬件的过程大致是(关闭设备)->(打开设备)->(在模拟器中运行 dmesg)->(检查结果)。
逐步教程
通常,当您这样做时,您会寻找您的 wifi 硬件。 这是一个关于如何使用 dmesg 来辨别您的设备正在使用什么 wifi 硬件的例子。
停止并启动相关硬件
为了确保您要查找的设备的消息易于在 dmesg 输出中找到,您需要让它执行将被记录的操作。 最简单的方法,尤其是在使用 wi-fi 时,是关闭设备,然后重新打开,然后立即运行 dmesg 并检查输出。 只需使用 Android 设备上的界面即可。
运行 dmesg,可以选择将输出保存到文件
在您关闭并打开 wi-fi 后立即打开终端模拟器并键入
dmesg
以立即显示输出,或使用
dmesg > wifi_device_log.log
将输出保存到设备上的文件,然后
cat wifi_device_log.log
查看输出。
如果您想将输出文件保存到您的工作机器,您需要使用 "adb shell
" 连接到您的设备,并将命令的输出通过管道传输到您的工作设备上的文件。
adb shell dmesg > wifi_device_log.log
检查输出以找到设备
dmesg 的输出起初看起来令人困惑,但您需要找到的内容非常简单。 只需查找输出中包含短语 wlan0
的每一行。 从这些行中,可以收集有关正在使用的无线驱动程序的信息,它是否需要专有固件,并且在大多数情况下会揭示实际硬件。 目前,我拥有的唯一手机是那些非常、非常便宜的手机之一 (L35g),并且可以从此特定手机收集的唯一信息是该手机使用专有驱动程序。
<4>[ 27.461203] wlan: module license 'Proprietary' taints kernel.
但是,在稍微好一点的手机上(例如三星 Galaxy Centura),像这样的行将揭示无线网卡。
<6>[ 34.082345] ADDRCONF(NETDEV_UP): wlan0'Card type will be here': link is not ready
用于 dmesg 的强大工具,Busybox 的优势
如果您以前从未使用过 grep,请准备好迎接您最好的朋友。 Grep 代表 GNU 正则表达式解析器,但您不需要关心这个。
例如,这是使用 grep 过滤的 LG Optimus Logic (l35g) 的 dmesg 输出。
cat wifi_device_log.log | grep wlan
<3>[ 2.625814] init: cannot find '/system/bin/wlan_tool', disabling 'wlan_tool'
<4>[ 27.461203] wlan: module license 'Proprietary' taints kernel.
<6>[ 34.082345] ADDRCONF(NETDEV_UP): wlan0: link is not ready
<6>[ 34.838541] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
<6>[ 53.944377] ADDRCONF(NETDEV_UP): wlan0: link is not ready
<6>[ 55.327871] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
<7>[ 65.913191] wlan0: no IPv6 routers present
进一步引用
- 如何找出我的手机有哪些 Wi-Fi 芯片组 Android Stack Exchange,GAThrawn,Gili