如何在Termux中运行ADB,无需USB或Wi-Fi控制安卓设备本身?
在Termux中本地使用ADB的无WiFi解决方案
核心问题分析
你判断的没错:Termux里执行adb devices无设备列出,本质是本地ADB服务器无法通过常规USB通道和自身的adbd通信——既没有实际USB物理连接触发adbd的USB调试监听,默认状态下adbd也不会主动监听本地环回端口(除非开启网络ADB)。
可行的本地环回/USB伪造方案
方案1:修改adbd启动参数,强制监听本地环回
安卓adbd支持通过启动参数指定监听端口,我们可以让它仅监听本地环回端口(避免网络暴露),步骤如下:
- 在Termux中获取root权限(需设备已root):
su - 停止当前运行的adbd进程:
stop adbd - 重启adbd并强制监听本地环回的5555端口:
adbd -L tcp:127.0.0.1:5555 - 在Termux中连接本地设备:
adb connect 127.0.0.1:5555 - 执行
adb devices即可看到本地设备。
方案2:虚拟USB设备实现本地环回
通过创建虚拟USB Gadget模拟USB调试连接,需要root权限:
- 安装USB Gadget工具(部分定制ROM自带,可通过root环境的包管理器安装):
su apt install usb-gadget-tools - 创建并配置虚拟ADB设备:
# 创建gadget目录 mkdir -p /sys/kernel/config/usb_gadget/my_adb_gadget cd /sys/kernel/config/usb_gadget/my_adb_gadget # 设置设备基础参数 echo 0x18D1 > idVendor # Google厂商ID echo 0x4EE7 > idProduct # 模拟ADB设备产品ID echo 0x0100 > bcdDevice echo 0x0200 > bcdUSB # 添加语言与设备描述 mkdir -p strings/0x409 echo "LocalADBGadget" > strings/0x409/manufacturer echo "Virtual ADB Device" > strings/0x409/product # 绑定ADB功能 mkdir -p functions/ffs.adb mkdir -p configs/c.1 ln -s functions/ffs.adb configs/c.1/ # 挂载功能目录并启动adbd mkdir -p /dev/usb-ffs/adb mount -t functionfs adb /dev/usb-ffs/adb stop adbd adbd -F /dev/usb-ffs/adb/adb - 完成后执行
adb devices即可识别到虚拟USB连接的本地设备。
方案3:Termux直接调用本地adbd(无需root)
部分新版本Termux支持绕过设备列表检测,直接调用本地adbd:
- 在Termux中安装adb工具:
pkg install android-tools - 直接执行以下命令进入本地adbd shell:
该命令会直接与本地adbd通信,无需提前连接设备,适合直接操作本地系统。adb shell
注意事项
- 方案1、2需要设备root权限,方案3在部分非root设备上可生效(取决于系统限制)。
- 修改adbd参数或创建虚拟设备后,设备重启会恢复默认设置,可将命令写入开机脚本实现自动配置。
- 虚拟USB Gadget的厂商ID、产品ID可根据需求调整,需符合ADB设备规范。
内容的提问来源于stack exchange,提问作者Phurinat Puekkham
相关产品推荐
相关产品推荐

