前阵子写了"纯视"PureView,把吃灰的旧手机变成显示器。文章发出去之后,得到很多朋友的支持,看来大家手上的旧手机不少。
但折腾的过程中我慢慢发现一件事:旧手机的很多玩法,都卡在 USB 上。
想接 U 盘?得看支不支持 OTG。想直连显示器?得看支不支持 DP 视频输出。想传个大文件?得看是 USB 2.0 还是 USB 3.x。
旧手机本身其实没毛病,毛病是我们根本不知道它的 USB 接口是什么水平。
于是,脑子又一热:要不,再写一个USB测试软件?
一、为什么会有这个想法?
起因很简单——我在折腾旧手机的时候发现,旧手机的利用价值,很大程度取决于 USB 接口的能力。
- 能不能接采集卡当显示器?→ 要看 USB 控制器支不支持 UVC、速率够不够
- 能不能当下载机挂 U 盘?→ 要看支不支持 OTG、能不能稳定供电
- 能不能 Type-C 直连显示器?→ 要看支不支持 DP Alt Mode
- 老一点的 Micro-USB 机型呢?→ 还要看支不支持 MHL
这些能力,手机说明书上不会写,厂商也不一定公开。
而且就算你手头有专业的检测工具——像 USB Device Tree、USBlyzer 这种——那界面满屏的英文术语,什么 Descriptor、Endpoint、Configurations,普通人看了直接劝退。
专业的工具专业的人用,普通人看不懂。这就是需求。
我要做的,就是一个普通人都能用的 USB 检测工具:插上设备,它用大白话告诉你,这个口到底是什么水平。
二、它能检测什么?
这个 APP 叫 USBcheck,安卓手机直接装上就能用。
插上 USB 设备(或者充电线),它自动弹出检测结果,主要看这几样:
- 🔌 接口类型:是 Type-C 还是 Micro-USB?
- ⚡ USB 版本 / 速率:USB 2.0(480Mbps)还是 USB 3.x(5Gbps+)?
- 🔋 充电规格:充不充得进电、什么协议(USB / AC / DC / PD)、大概多少瓦
- 🖥️ 视频输出:支不支持 DP Alt Mode(Type-C 直连显示器)、支不支持 MHL
- 🔗 OTG 能力:能不能接 U 盘、键鼠
- 📝 外设详情:接了什么设备、厂商、型号、VID:PID
每个结果都是绿、黄、红、灰四种颜色,一眼看懂:
- 🟢 绿色 = 支持 / 正常
- 🟡 黄色 = 需要注意
- 🔴 红色 = 不支持
- ⚪ 灰色 = 系统没暴露信息,无法判断(不瞎编)
最贴心的一点:每一条结果都标注了来源。它是从系统属性读的,还是从 sysfs 里探测的,还是电池服务报的,全都写清楚。这样你就知道这条结论可不可信。

三、它到底是怎么测出来的?
可能有人会问:一个小 APP,怎么知道这么多底层的 USB 信息?
原理其实不复杂,安卓系统本身暴露了不少 USB 相关的接口,我把它分成几个通道去探测:
| 检测项 | 数据来源 |
|---|---|
| 端口类型 / USB 版本 | 系统属性 sys.usb.controller |
| 已接入外设 | UsbManager.deviceList |
| 充电状态 / 协议 | 电池服务 + /sys/class/power_supply |
| DP 视频输出 | /sys/class/typec 端口模式 |
| Type-C 插入方向 | /sys/class/typec partner orientation |
| OTG / 主机模式 | USB 外设枚举 + dual_role_usb |
| 总线活动 | /sys/bus/usb/devices 节点数 |
系统说一句,我翻译一句;系统不说,我就去底层目录翻一翻;还翻不到,就老老实实显示"无法判断"。
这就是它和那些专业工具最大的区别:专业工具给你原始数据,我帮你把数据翻译成大白话。

四、老规矩,AI 当"全栈外援"
跟"纯视"一样的路子——我提需求,AI 写代码。
说实话,我对 Android 底层这些 API 是一知半解,什么 UsbManager、BatteryManager、sysfs 探测,真要我自己从头啃,估计得啃一两个月。
把需求往 AI 一扔:"做个 USB 检测 APP,面向普通人,结果要能看懂,别整一堆术语。"
AI 给我生成了一整套 Kotlin 项目,Jetpack Compose 界面、MVVM 架构,连 USB 插入自动弹出检测结果这种细节都安排上了。
整个开发过程还是那套熟悉的流程:
- 我说"要显示充电协议",AI 加电池服务读取
- 我说"DP 信息有些机型读不到,别瞎编",AI 加了"无法判断"的灰色状态
- 我说"结果来源要透明,用户才知道可不可信",AI 给每条检测项都挂了 source 字段
- 我说"专业术语太多,加个名词速查",AI 直接加了一个帮助 Tab
前后迭代了好多版本,AI 帮我写了大部分代码,我负责提需求、看结果、提意见。
你当产品经理,AI 当程序员。你做决策,它写代码。 这套模式,我是越用越顺手。
五、还是得诚实说几句
虽然这个 APP 做出来了,但有些事我得提前说明白,免得大家期望值太高:
- 部分机型读不到 DP / 充电协议等信息。有些厂商把底层信息藏得死死的,软件层面确实拿不到,界面会显示"无法判断",而不是瞎编一个。
- "理论速率"是接口上限,不等于实际速度。实际传输速度还取决于数据线、对端设备和文件系统。
- 充电功率是按协议估算的,不是硬件功率计实测,参考就好。
- MHL 在 Type-C 时代基本淘汰了,新机型基本都判定"不支持",这是事实,不是它不行。
做这个 APP 的初衷,就是透明、可信、看得懂。测不出来就明说,绝不忽悠你。
六、现在还不完美,想继续完善
这个 APP 从 v0.1 一路迭代到现在,已经陆陆续续补上了不少东西:
- v0.1 基础检测:接口 / 速率 / 充电 / DP / MHL / OTG / 外设详情
- v0.2 实测带宽测试:写读 32MB 临时文件,测出真实读写速度
- v0.3 USB-PD 协商信息:尽力探测电压 / 电流 / 功率挡位
- v0.4 检测历史 + 图片报告分享 + 实时充电功率曲线
- v0.5 自动更新 + 二维码长按保存相册
- v0.6 全页面使用者体验优化
但说实话,它离我理想中的样子还差得远。很多机型的底层信息厂商就是不给你读,USB 生态又五花八门,我自己测不到的地方还很多。
我一个人 + AI,慢慢磨。如果你也有想检测的 USB 能力、或者发现了什么 bug,欢迎告诉我。
最后
从"纯视"到"USBcheck",其实都是同一件事:让吃灰的旧手机,再发挥一次价值。
旧手机不值钱,但它身上那些被埋没的能力——视频输出、OTG、高速传输——值得被看见、被用起来。
这个 APP 不收费、没广告,就图一件事:下次你拿起旧手机的时候,能清清楚楚地知道——它能干什么,不能干什么。
下载和源码都在 CNB 开源仓库:kyeo.top/USBcheck
玩出花样的、踩到坑的、有更好建议的,随时在公众号私信我。
感谢每一位关注和支持的朋友。
USBcheck
旧手机的 USB 能力,一看就懂。
微信公众号:集家嘴的壳玛