ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

无需电脑!用手机给手机刷机:OTG+Termux+ADB/Fastboot全攻略

无需电脑!用手机给手机刷机:OTG+Termux+ADB/Fastboot全攻略 1. 为什么有人要用手机给手机刷机1.1 一个真实场景引发的折腾手里有两台安卓手机一台是主力机另一台是几年前的老机器。主力机系统更新后越来越卡想降级回旧版本老机器则想刷个精简系统当备用机或者给家里老人用。问题是家里那台电脑早就吃灰了系统还是Windows 7装驱动各种报错USB接口还接触不良。这时候一个念头冒出来能不能用一台手机去给另一台手机刷机这个想法听起来有点离谱但技术上完全可行。核心思路就是用OTG线把两台手机连起来一台作为“操作端”另一台作为“被刷端”然后在操作端上通过Termux运行ADB和Fastboot工具完成整个刷机流程。整个过程不需要电脑参与也不需要root操作端手机。我实测下来这套方案在大多数支持OTG的安卓手机上都能跑通尤其是那些Type-C接口、支持USB 3.0的机型传输速度完全够用。当然前提是你得搞清楚几个关键点OTG线的芯片兼容性、ADB和Fastboot的权限问题、以及不同品牌手机进入Fastboot模式的差异。1.2 这套方案适合谁不适合谁先说适合的人群。如果你手头有两台安卓手机其中一台能正常开机并安装Termux另一台需要刷机或者救砖那这套方案就是为你准备的。特别是那些经常出差、身边没有电脑、但又想折腾手机的用户用手机刷手机几乎是唯一的选择。不适合的情况也要说清楚。如果两台手机都开不了机那这套方案直接pass因为你需要一台正常运行的设备来执行ADB命令。另外如果你的手机不支持OTG功能或者OTG线质量太差导致供电不足也会影响操作。还有一点部分品牌的手机在Fastboot模式下对OTG连接的支持并不好比如某些小米机型在Fastboot界面下无法识别OTG设备这个后面会详细说。注意刷机有风险操作前务必确认被刷手机的型号和对应刷机包完全匹配。型号不对应直接刷入轻则卡开机画面重则变硬砖。1.3 核心工具链一览整套方案依赖的工具其实不多但每一个都关键。操作端需要安装Termux这是一个安卓上的终端模拟器不需要root就能运行。然后在Termux里安装ADB和Fastboot工具包这两个是安卓调试和刷机的核心命令行工具。OTG线负责物理连接把操作端的USB信号转换成被刷端能识别的数据。被刷端需要开启USB调试模式并且授权操作端的ADB连接。如果是刷机模式则需要进入Fastboot或者Recovery。刷机包根据具体需求选择可以是官方固件也可以是第三方ROM。整个工具链的版本兼容性很重要ADB和Fastboot的版本最好保持一致避免出现协议不匹配的问题。工具作用获取方式Termux安卓终端模拟器官方渠道安装ADB安卓调试桥Termux内包管理安装Fastboot引导模式刷机工具Termux内包管理安装OTG线物理连接两台手机根据接口类型选购刷机包目标系统镜像品牌官方或社区2. OTG连接与ADB环境搭建的细节2.1 OTG线选型与芯片兼容性OTG线的质量直接决定了整个方案能不能跑通。市面上很多便宜的OTG转接线用的是劣质芯片供电不足不说数据传输还经常断连。我踩过的坑是买了一条几块钱的Type-C转Type-C OTG线结果被刷手机在Fastboot模式下根本识别不到换了带独立供电的OTG线才解决问题。选OTG线的时候重点看两个参数一是芯片方案常见的靠谱方案有TI的TUSB系列和Microchip的USB系列这些芯片在信号完整性和供电管理上做得比较好二是线材规格支持USB 3.0的线材通常有更多的屏蔽层和更粗的供电线芯传输稳定性明显更好。如果你用的是Type-C接口的手机建议选支持USB 3.0及以上标准的OTG线虽然价格贵一点但省心。还有一个细节部分手机的OTG供电能力有限只能输出5V/0.5A左右的电流。如果被刷手机在Fastboot模式下耗电较大可能会出现连接不稳定的情况。这时候可以考虑用带外接供电的OTG Hub一边给被刷手机供电一边传输数据。2.2 Termux安装与基础配置Termux的安装很简单从官方渠道下载APK安装即可。安装完成后第一次打开它会自动配置基础环境。这里有个关键操作执行termux-setup-storage命令授予Termux访问手机存储的权限。这个权限很重要因为后面需要把刷机包放到手机存储里Termux才能读取到。接下来更新包管理器并安装核心工具。Termux默认的软件源在国内访问可能比较慢可以换成国内镜像源加速。执行以下命令pkg update pkg upgrade pkg install android-toolsandroid-tools这个包里面包含了ADB和Fastboot的二进制文件。安装完成后可以用adb version和fastboot --version检查是否安装成功。如果提示命令找不到可能是环境变量没配置好需要手动把$PREFIX/bin加入PATH。提示Termux的包管理器和Linux发行版类似但它的文件系统结构是安卓特有的。所有安装的二进制文件都在/data/data/com.termux/files/usr/bin目录下这个路径在后续配置中会经常用到。2.3 被刷手机的调试模式开启被刷手机需要开启开发者选项和USB调试。进入设置找到关于手机连续点击版本号七次开发者选项就会解锁。然后在开发者选项里打开USB调试。如果是小米手机还需要额外打开“USB调试安全设置”选项否则ADB授权会失败。有些品牌手机在开发者选项里还有“默认USB配置”的设置建议改成“文件传输”或者“MIDI”这样连接后更容易被识别。另外部分手机在Fastboot模式下需要单独开启“OEM解锁”选项这个在开发者选项里能找到。如果OEM解锁是灰色的说明手机有网络锁或者运营商限制需要先解除。连接OTG线之后被刷手机会弹出“是否允许USB调试”的对话框勾选“始终允许”并确认。如果没弹出来可以尝试重新插拔OTG线或者在开发者选项里点击“撤销USB调试授权”再重新连接。2.4 ADB设备识别与授权排查在Termux里执行adb devices正常情况下会列出被刷手机的序列号状态显示为device。如果显示unauthorized说明授权没有完成需要在被刷手机上重新确认授权对话框。如果显示no permissions通常是Termux没有获得USB设备的访问权限这个在非root环境下比较麻烦可以尝试用termux-usb命令来请求权限。还有一种情况是adb devices列表为空什么设备都没识别到。这时候先检查OTG线是否插紧然后换一根线试试。如果还是不行可以在Termux里执行dmesg | grep usb查看内核日志看看有没有USB设备接入的记录。如果内核层面都没识别到那就是硬件连接问题跟软件无关。状态含义处理方式device已授权正常连接可以直接执行ADB命令unauthorized未授权在被刷手机上确认授权对话框no permissions权限不足尝试termux-usb请求权限列表为空未识别到设备检查OTG线和接口3. 用Termux执行刷机操作的核心流程3.1 Fastboot模式下刷入镜像刷机最常见的操作就是在Fastboot模式下刷入各种分区镜像。首先让被刷手机进入Fastboot模式不同品牌的操作方式不一样。小米通常是关机后按住音量减和电源键三星是按住音量减和Home键再插线一加是按住音量加减和电源键。进入Fastboot后手机屏幕上会显示一个机器人或者Fastboot字样。在Termux里执行fastboot devices确认连接正常。然后就可以开始刷入了。以刷入boot分区为例fastboot flash boot boot.img fastboot flash system system.img fastboot reboot每条命令执行后都会显示传输进度和结果。如果提示FAILED或者remote: partition not found说明分区名不对或者镜像文件有问题。这时候不要慌先检查镜像文件是否完整然后确认分区名是否和手机实际分区一致。可以用fastboot getvar all查看手机的所有分区信息。注意Fastboot刷机时不要中途拔线或者断电否则可能导致分区损坏。如果刷到一半出问题可以尝试重新进入Fastboot模式再刷一次。3.2 Recovery模式下卡刷操作有些刷机包是卡刷包需要在Recovery模式下刷入。这时候ADB就派上用场了。先让手机进入Recovery模式然后在Termux里执行adb devices确认连接。接着用adb sideload命令推送刷机包adb sideload update.zip这个命令会把刷机包推送到手机并自动执行安装。传输过程中Termux会显示进度百分比手机屏幕上也会显示安装进度。如果卡在某个百分比不动可能是刷机包和当前系统版本不匹配或者Recovery版本太旧不支持新的签名方案。还有一种情况是Recovery不支持sideload那就需要先把刷机包推到手机存储里然后在Recovery里手动选择安装。推送命令是adb push update.zip /sdcard/推送完成后在Recovery界面里选择“从SD卡安装更新”找到对应的zip文件确认刷入。3.3 刷机包的选择与校验刷机包的选择直接决定了刷机后的体验。官方固件最稳定但功能比较保守第三方ROM功能丰富但可能存在兼容性问题。下载刷机包的时候一定要确认版本号和手机型号完全匹配。比如红米Note 10和红米Note 10 Pro的刷机包是不能混用的虽然名字看起来差不多。下载完成后建议校验一下文件的MD5或者SHA256值。很多刷机包发布页面都会提供校验值用Termux里的sha256sum命令算一下对比一致再刷。这一步看起来麻烦但能避免因为下载不完整导致的刷机失败。sha256sum update.zip如果校验值对不上说明文件下载过程中出了问题需要重新下载。不要抱有侥幸心理去刷一个校验失败的文件变砖的概率非常高。3.4 刷机后的首次启动与数据恢复刷机完成后第一次启动会比较慢因为系统需要重建缓存和初始化配置。有些情况下会卡在开机动画十几分钟这是正常的。但如果超过二十分钟还没进入系统可能是刷机包有问题或者分区没刷干净需要重新进入Recovery执行双清再刷一次。数据恢复方面如果刷机前用ADB备份过数据可以通过adb restore命令恢复。但要注意跨版本恢复数据可能会导致应用闪退或者系统异常尤其是从高版本降级到低版本的时候。比较稳妥的做法是只恢复照片、文档等媒体文件应用数据重新配置。adb backup -apk -shared -all -f backup.ab adb restore backup.ab提示ADB备份功能在安卓12及以上版本中已经被限制很多应用的数据无法完整备份。如果数据很重要建议用手机厂商自带的云服务或者第三方备份工具。4. 常见问题与避坑经验实录4.1 Fastboot连接不到设备的排查思路这是最常见的问题之一。Termux里执行fastboot devices没有任何输出但手机明明已经进入Fastboot模式了。排查顺序是这样的先换一根OTG线确认不是线材问题然后检查被刷手机的Fastboot界面是否显示“FASTBOOT”字样有些手机进入的是“FASTBOOTD”模式这个模式不支持刷机命令接着在Termux里执行lsusb看看有没有识别到USB设备。如果lsusb能看到设备但fastboot devices没输出可能是Fastboot版本太旧不支持被刷手机的协议。尝试更新android-tools包到最新版本。还有一种可能是被刷手机的Fastboot驱动在安卓端不兼容这个比较麻烦可以尝试换一台手机作为操作端。我遇到过最诡异的情况是手机在Fastboot模式下插上OTG线后自动重启进入系统根本停不住。后来发现是OTG线的供电触发了手机的某种保护机制换了一根不带供电的OTG线就正常了。4.2 ADB unauthorized的几种解法unauthorized状态说明ADB连接建立了但授权没有通过。最常见的原因是被刷手机上的授权对话框没有弹出来或者弹出来后被忽略了。可以尝试以下操作在被刷手机上进入开发者选项点击“撤销USB调试授权”然后重新插拔OTG线或者在Termux里执行adb kill-server adb start-server重启ADB服务。如果反复尝试还是unauthorized可能是被刷手机的ADB密钥文件损坏了。这个文件在/data/misc/adb/adb_keys需要root权限才能删除。没有root的话可以尝试在开发者选项里关闭再打开USB调试有时候能触发密钥重新生成。还有一种情况是操作端Termux里的ADB密钥和被刷手机不匹配。可以删除Termux里的ADB密钥重新生成rm -rf ~/.android/adbkey* adb keygen ~/.android/adbkey然后重新连接被刷手机上会弹出新的授权对话框。4.3 刷机过程中断连的处理刷机过程中最怕的就是断连。Fastboot刷入分区的时候断连可能导致分区写入不完整手机无法开机。如果遇到这种情况不要拔线先等几分钟看看会不会自动恢复。如果确定已经断连了可以尝试重新进入Fastboot模式重新刷入刚才失败的分区。Recovery模式下sideload断连的话手机会停留在安装界面。这时候可以长按电源键强制重启重新进入Recovery再试一次。如果反复断连可能是OTG线接触不良或者被刷手机电量太低。建议刷机前把被刷手机电量充到50%以上避免因为供电不足导致断连。问题可能原因解决方法Fastboot无设备OTG线问题/驱动不兼容换线/更新工具/换操作端ADB unauthorized授权未确认/密钥损坏撤销授权/重新生成密钥刷机中断连供电不足/线材接触不良充电/换线/重新刷入卡开机动画分区未清/刷机包问题双清/重新刷入4.4 几个容易被忽略的细节第一个细节是Termux的后台限制。安卓系统为了省电可能会在后台杀掉Termux进程。刷机过程中如果Termux被杀了ADB连接就会断开。建议在刷机前把Termux加入电池优化白名单或者在开发者选项里关闭“不保留活动”。第二个细节是文件路径问题。Termux访问手机存储的路径是/sdcard/但有些手机的实际路径是/storage/emulated/0/。如果adb push的时候提示路径不存在可以先用ls /sdcard/确认一下实际路径。第三个细节是Fastboot命令的返回值。有些命令执行后显示OKAY但实际并没有写入成功。可以用fastboot getvar partition-size:boot查看分区大小确认写入是否正常。如果分区大小显示为0说明写入失败了。第四个细节是刷机包的签名验证。部分手机在Fastboot模式下会验证镜像签名如果刷入的是第三方修改过的镜像会提示signature verification failed。这时候需要先解锁Bootloader或者刷入关闭签名验证的补丁。5. 进阶玩法与扩展思路5.1 用Termux实现无线ADB调试OTG线虽然稳定但毕竟有线材束缚。如果被刷手机和操作端在同一个局域网内可以尝试无线ADB调试。先在操作端用OTG线连接被刷手机执行adb tcpip 5555开启无线调试端口然后拔掉OTG线用adb connect 被刷手机IP:5555连接。这样操作端和被刷手机就不需要物理连接了。无线ADB的优点是方便缺点是稳定性不如有线尤其是在刷机这种对传输可靠性要求很高的场景下。如果只是日常调试或者传文件无线ADB完全够用。但如果是刷机还是建议用OTG线避免中途断连导致刷机失败。adb tcpip 5555 adb connect 192.168.1.100:5555 adb devices5.2 在Termux里跑更多安卓工具Termux的能力远不止ADB和Fastboot。你可以在里面安装Python、Node.js、甚至完整的Linux发行版。有些玩家会在Termux里跑scrcpy把被刷手机的屏幕投射到操作端上这样刷机的时候能看到被刷手机的实时画面操作起来更直观。安装scrcpy的命令是pkg install scrcpy然后执行scrcpy就能看到被刷手机的屏幕了。不过scrcpy对性能有一定要求操作端手机太老的话可能会卡顿。另外scrcpy需要ADB连接正常才能工作所以还是得先搞定ADB授权问题。5.3 刷机之外的实用场景这套方案除了刷机还有很多实用场景。比如用ADB批量安装应用、抓取日志、截图录屏、模拟按键操作等。adb shell uiautomator dump可以导出当前界面的UI层级配合自动化脚本可以实现很多有趣的功能。adb logcat可以实时抓取系统日志排查应用崩溃问题非常有用。还有一个场景是用ADB解除安装权限。有些手机预装了大量不可卸载的应用用adb shell pm uninstall --user 0 包名可以卸载掉这些应用不需要root。这个命令对系统稳定性没有影响只是把应用从当前用户空间移除了。adb shell pm uninstall --user 0 com.example.bloatware adb shell pm list packages | grep example5.4 关于安全与风险的几点提醒刷机本身是有风险的操作用手机刷手机又增加了一层不确定性。操作端的Termux如果被恶意软件篡改可能会在刷机过程中注入恶意镜像。所以操作端手机最好是一台干净的设备不要安装来路不明的应用。被刷手机的Bootloader解锁后安全性会降低。解锁状态下任何人都可以通过Fastboot刷入镜像。如果手机里有敏感数据建议刷机前彻底清除或者刷机后重新加密。还有一点部分品牌的手机在解锁Bootloader后会失去保修资格。虽然有些品牌支持重新上锁但上锁后如果系统被修改过可能会触发安全机制导致无法开机。这个在操作前一定要想清楚。提示刷机前建议先用adb backup做一次完整备份虽然不能保证所有数据都能恢复但至少照片和文档能保住。备份文件默认保存在当前目录下记得转移到安全的地方。6. 个人实操体会与最后几句这套方案我前后折腾了大概两周中间踩了不少坑。最开始用的是某品牌的原装OTG线结果在Fastboot模式下死活识别不到设备换了第三方的线才搞定。后来发现是原装线的供电管理芯片和Fastboot模式不兼容具体原因没深究但换线确实解决了问题。Termux的稳定性也让我有点意外。原本以为安卓的后台限制会很影响刷机操作但实际上只要把Termux加入白名单连续跑一两个小时的ADB命令完全没问题。不过刷机过程中还是建议不要切换应用避免Termux被系统回收。最后分享一个小技巧如果被刷手机在Fastboot模式下无法识别OTG设备可以尝试先进入系统用ADB连接后再执行adb reboot bootloader进入Fastboot模式。这样有时候能绕过Fastboot模式下的USB识别问题。这个技巧在几台小米和realme手机上都验证过成功率挺高。刷机这件事说到底就是胆大心细。胆大是指敢于尝试心细是指每一步都确认清楚再操作。用手机刷手机虽然不是最常规的方案但在没有电脑的情况下确实是一个可行的选择。希望这篇内容能帮到同样喜欢折腾的朋友少走一些弯路。
返回列表