* daemon not running; starting now at tcp:5037 * daemon started successfully List of devices attached error: protocol fault (couldn't read status): Connection reset by peer
时间: 2025-05-30 21:11:55 浏览: 84
### ADB Daemon 和 Protocol Fault 错误的综合解决方案
当遇到 `ADB daemon not running`, `failed to start daemon`, 或者 `protocol fault (couldn't read status)` 类型的错误时,这些问题通常是由于以下几个方面引起的:守护进程未正确启动、端口冲突、版本不匹配或通信中断等问题。以下是详细的分析和解决方法。
---
#### 1. **Daemon 无法启动**
如果出现 `daemon not running` 并伴随 `cannot bind to 127.0.0.1:5037` 的情况,说明目标端口已经被其他程序占用。
- **检查端口占用**
执行以下命令查找占用端口的进程:
```cmd
netstat -ano | findstr "5037"
```
输出类似于以下内容:
```
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 3820
```
- **结束占用进程**
根据上一步找到的 PID(如 3820),使用以下命令终止该进程:
```cmd
taskkill /PID 3820 /F
```
- **重启 ADB 服务**
清理旧有的 ADB 实例并重新启动服务:
```cmd
adb kill-server
adb start-server
```
---
#### 2. **Protocol Fault 和 Connection Reset by Peer**
这类问题通常由客户端和服务端之间的版本差异引起,或者可能是网络层面上的数据传输异常所致。
- **检查 ADB 版本一致性**
确认当前系统的 ADB 客户端与服务器版本一致。运行以下命令查看版本信息:
```cmd
adb version
```
如果发现版本不同步,则需要升级或降级 ADB 工具以保持统一[^1]。
- **清理缓存重置连接**
删除现有的 ADB 密钥文件以重建信任关系:
```cmd
del %USERPROFILE%\.android\adbkey*
adb kill-server
adb start-server
```
- **修复底层协议栈**
在某些情况下,操作系统级别的网络配置可能存在问题。尝试释放并刷新 IP 地址:
```cmd
ipconfig /release
ipconfig /renew
netsh winsock reset
netsh int ip reset
```
---
#### 3. **Device Not Found or Unrecognized**
即使解决了上述问题,仍可能出现设备未能识别的情况。
- **启用开发者模式和 USB 调试**
确保目标设备已开启开发者选项,并启用了 USB 调试功能[^2]。
- **更换数据线或接口**
不良接触可能导致握手失败,请尝试不同的电缆或计算机端口。
- **安装正确的驱动程序**
Windows 用户应确保已经安装适用于其手机型号的 Google USB Driver 或厂商提供的专用驱动程序[^3]。
---
#### 4. **高级调试技巧**
对于更复杂的情形,可采用以下手段进一步定位根源:
- **日志跟踪**
利用 `-P` 参数附加额外的日志输出以便深入剖析交互细节:
```cmd
adb devices -l -P
```
- **切换到无线调试模式**
如果物理连线不可靠,考虑通过 Wi-Fi 进行远程操控:
```cmd
adb tcpip 5555
adb connect <device_ip>:5555
```
- **验证 OverlayFS 支持**
部分自定义 ROM 可能存在挂载点权限限制,需先确认系统分区是否成功转换为读写状态:
```cmd
adb remount
```
---
### 示例代码片段
以下是一个完整的脚本用于自动化解决问题的过程:
```bash
#!/bin/bash
# Step 1: Kill any rogue processes on port 5037
PORT=5037
PID=$(netstat -tulpn | grep ":$PORT" | awk '{print $7}' | cut -d'/' -f1)
if [[ ! -z "$PID" ]]; then
echo "Killing process ID: $PID..."
kill -9 $PID
fi
# Step 2: Restart ADB service
echo "Restarting ADB server..."
adb kill-server && adb start-server
# Step 3: Verify connection
echo "Checking connected devices..."
adb devices -l
```
---
### 总结
通过对端口占用、版本同步性以及硬件连通性的全面排查,大多数常见的 ADB 故障都可以得到有效缓解甚至彻底消除。若仍有疑问或特殊场景下仍未奏效,建议提供更多上下文线索便于精准诊断。
---
阅读全文
相关推荐

















