整理中 创建 2026/06/06 更新 2026/06/06

一、先看 getprop.txt:认识设备环境

#tools #adb

ADB TOOL使用指南

笔记内容

先看 getprop.txt:认识设备环境

getprop.txt 是 Android 系统属性快照。它回答的是:

这台设备是什么系统?
是什么 build?
什么平台?
是否方便调试?`

你这份文件有 1347 行,不需要全读。新人只先看这些字段:
ro.build.version.release
ro.build.version.sdk
ro.build.type
ro.debuggable
ro.secure
ro.board.platform
ro.boot.hardware
ro.boot.verifiedbootstate
ro.boot.veritymode
ro.bootimage.build.type`

我已经从你的文件里看到几个关键事实:
ro.board.platform = mt6789
ro.boot.hardware = mt8781
ro.bootimage.build.version.release = 12
ro.bootimage.build.version.sdk = 31
ro.bootimage.build.type = userdebug
ro.boot.verifiedbootstate = green
ro.boot.veritymode = enforcing`

Android 版本:Android 12
SDK:31
build 类型:userdebug
平台信息:MTK 平台相关
verified boot:green
verity:enforcing

再看 dmesg.txt:认识 kernel log 格式

你的 dmesg.txt 有 1269 行。

先看一行典型日志:

[ 8628.396623] binder:524_1: [name:sipo_seri_kb&]sipo_drv[DBG]: sipo_suspend:513: >>> Entering suspend...

我们拆开看:

[ 8628.396623]

这是 kernel 启动后的时间,单位是秒。

不是现实时间,不是 15:20:09。

它表示系统启动后大约 8628 秒,也就是设备已经运行一段时间了。

binder:524_1:

这是打印日志的进程或线程上下文。

说明这条日志是在某个 binder 线程上下文里打出来的。
[name:sipo_seri_kb&]

这是模块/驱动名信息。

这里明显和 sipo 键盘相关。
sipo_drv[DBG]:

这是驱动自己的 log tag。

DBG 一般表示 debug 级别,不一定是错误。
sipo_suspend:513:

这是函数名和代码行号。

说明日志来自 sipo_suspend() 函数附近。

`>>> Entering suspend...`

这是具体事件:进入 suspend。

所以这一行的真正含义是:

`sipo 键盘驱动进入 suspend 流程。`

这不是错误。

这是正常的电源管理流程日志。

判断这份 dmesg 的时间窗口

你这份 dmesg.txt 开头是:

[ 8626.xxxxxx]

这说明它不是完整开机日志。

如果是完整 boot log,通常会从类似下面开始:

[    0.000000] Booting Linux
[    0.000000] Linux version ...`

但你的日志从 8626 秒开始,说明 kernel ring buffer 里只保留了较新的日志。

所以这份 dmesg 当前主要适合分析:
运行期问题
休眠唤醒问题
按键/霍尔/充电状态变化
当前 module/sysfs 状态`

它不太适合完整分析:
开机早期 probe 顺序
第一次驱动加载全过程
bootloader 到 kernel 的早期问题`

这是第一条非常重要的经验:

`看 dmesg 之前,先判断它是不是从 0 秒开始。`

从你的 dmesg 里识别正常日志

你这里有一组 sipo 日志:

sipo_suspend: >>> Entering suspend...
Enable IRQ wake for ID
Switched RX pin to GPIO (sleep) mode
RX IRQ Enabled
Enabled IRQ wake for RX (Success Path)
sipo_suspend: <<< Suspend OK`

这组日志说明:
sipo 驱动进入休眠
切换 RX pin 到 GPIO sleep 状态
打开 IRQ wake
suspend 成功`

这看起来是正常路径。

后面 resume:
sipo_resume: >>> Entering resume...
Switched RX pin to UART (default) mode
Disabled IRQ wake for ID
Disabled IRQ wake for RX
RX IRQ Disabled`

这说明:
sipo 驱动从休眠恢复
RX pin 切回 UART 默认状态
关闭 wake IRQ`

这也像正常路径。

所以你现在要养成一个习惯:

`看到 fail/error 之前,先看上下文是在初始化、suspend、resume、还是事件处理。`

suspend OK、resume、Enabled IRQ wake 这些不是问题。

好,进入第二课。

这一节你要学会看这一条链路:
ko 文件是否存在
-> module 是否加载
-> device 是否注册
-> driver 是否注册
-> dmesg 有没有运行痕迹`

我会用你真实目录里的 sipo 来讲。你之前举的是键盘例子,这次正好日志里有完整证据。

---

**第二课:ko、module、device、driver 怎么看**

我们今天重点看这些文件:
module_ko_files_keyword.txt
lsmod_driver_keyword.txt
platform_devices_keyword.txt
platform_drivers_keyword.txt
dmesg_driver_keyword.txt
i2c_devices.txt
i2c_drivers.txt`

先记住一句话:
有 ko 不代表驱动已经运行。
有 driver 不代表 device 匹配成功。
有 dmesg 运行日志,才说明代码真的执行过。`

---

看 ko 文件是否存在

文件:

module_ko_files_keyword.txt

你这里有:
/vendor_dlkm/lib/modules/sipo_seri_kb.ko
/vendor_dlkm/lib/modules/hall.ko
/vendor_dlkm/lib/modules/sensorhub.ko`

这说明什么?

说明系统镜像里确实有这些驱动模块文件。

对 sipo 来说:

`sipo_seri_kb.ko 存在`

这是第一层正常。

但注意,只能说明:

`这个 ko 被打包进系统了`

不能说明:
它已经加载了
它 probe 成功了
它功能正常了`

新人最容易犯的错就是看到 .ko 存在,就以为驱动已经生效。

这是不对的。

---

看 module 是否已加载

文件:

lsmod_driver_keyword.txt

你这里有:
sipo_seri_kb           40960  0
hall                   20480  0
sensorhub              98304  0`