WiFi 热点启动失败问题排查与解决
🔍 错误分析
从日志可以看出热点启动失败的关键信息:
Primary lohs onFailed: 2
SAP failed to start
🛠️ 立即排查步骤
1. 检查当前 WiFi 状态
# 检查 WiFi 和热点状态
adb shell dumpsys wifi | grep -A10 -B10 "SoftAp"# 查看详细的 WiFi 服务状态
adb shell dumpsys wifi | grep -i "softap\|hotspot"# 检查网络接口状态
adb shell ip link show | grep wlan
2. 检查权限和配置
# 检查当前网络配置
adb shell cmd wifi get-softap-supported-features# 查看可用的热点配置
adb shell cmd wifi get-softap-configuration# 检查网络权限
adb shell pm list permissions | grep -i wifi
🔧 解决方案
方案1: 使用标准热点命令
# 尝试标准热点启动命令
adb shell svc wifi enable
adb shell am start -n com.android.settings/.TetherSettings# 或者使用 settings 命令
adb shell settings put global wifi_ap_ssid "MyHotspot"
adb shell settings put global wifi_ap_password "12345678"
adb shell svc wifi enable
方案2: 重置网络配置
# 重置网络设置
adb shell cmd wifi reset-network# 清除网络配置缓存
adb shell cmd wifi clear-network-config# 重启网络服务
adb shell stop network
adb shell start network
方案3: 使用不同的参数组合
# 尝试不同的安全协议
adb shell cmd wifi start-lohs-primary primary wpa2 12345678
adb shell cmd wifi start-lohs-primary primary open# 尝试不同的频段
adb shell cmd wifi start-lohs-primary primary wpa3 12345678 -b 2
adb shell cmd wifi start-lohs-primary primary wpa3 12345678 -b 6# 简化参数
adb shell cmd wifi start-lohs-primary primary wpa3 12345678
📊 深度诊断脚本
完整 WiFi 诊断脚本
#!/bin/bash
# wifi_hotspot_diagnose.shecho "🔍 WiFi 热点启动问题诊断"
echo "======================="echo "1. 检查设备状态..."
adb shell getprop | grep -i "version\|model"echo "2. 检查 WiFi 服务状态..."
adb shell dumpsys wifi | grep -E "Wi-Fi|SoftAp|Hotspot" | head -20echo "3. 检查网络接口..."
adb shell ifconfig -a | grep wlanecho "4. 检查权限..."
adb shell dumpsys wifi | grep -A5 "Permission"echo "5. 尝试启动基础热点..."
adb shell cmd wifi start-lohs-primary primary wpa2 12345678
sleep 3echo "6. 检查启动结果..."
adb shell dumpsys wifi | grep -A10 "SoftApState"
实时监控脚本
#!/bin/bash
# wifi_monitor.shecho "📡 监控 WiFi 热点状态变化..."
adb logcat -cadb logcat -s WifiService:D SoftApManager:D | grep --line-buffered -E "SoftAp|Wifi|hotspot" | while read line; dotimestamp=$(date '+%H:%M:%S')echo "[$timestamp] $line"# 检测到失败立即尝试恢复if echo "$line" | grep -q "failed\|Failed\|ERROR"; thenecho "⚠️ 检测到错误,尝试恢复..."adb shell cmd wifi stop-lohssleep 2adb shell cmd wifi start-lohs-primary primary wpa2 12345678fi
done
⚡ 替代方案
使用 Settings 应用启动热点
# 通过 UI 方式启动热点
adb shell am start -a android.settings.WIFI_AP_SETTINGS# 或者直接调用热点设置
adb shell am start -n com.android.settings/.TetherSettings# 发送按键模拟用户操作
adb shell input keyevent KEYCODE_DPAD_DOWN
adb shell input keyevent KEYCODE_ENTER
通过系统服务启动
# 使用服务命令
adb shell service call wifi 33 i32 1
adb shell service call connectivity 33 i32 1# 或者使用更底层的接口
adb shell am broadcast -a android.net.wifi.WIFI_AP_STATE_CHANGED
🔄 系统级修复
重启相关服务
#!/bin/bash
# wifi_service_restart.shecho "🔄 重启 WiFi 相关服务..."
echo "1. 停止 WiFi 服务..."
adb shell stop wifi
sleep 2echo "2. 停止网络服务..."
adb shell stop network
sleep 2echo "3. 启动网络服务..."
adb shell start network
sleep 3echo "4. 启动 WiFi 服务..."
adb shell start wifi
sleep 5echo "5. 验证服务状态..."
adb shell dumpsys wifi | grep "Wi-Fi is"
清除缓存和数据
#!/bin/bash
# wifi_clear_cache.shecho "🗑️ 清除 WiFi 相关缓存..."
echo "1. 清除 WiFi 服务缓存..."
adb shell pm clear com.android.wifiecho "2. 清除设置缓存..."
adb shell pm clear com.android.settingsecho "3. 清除网络配置..."
adb shell cmd wifi clear-network-configecho "4. 重启系统UI..."
adb shell am restart
📋 参数优化建议
根据设备特性调整参数
#!/bin/bash
# wifi_parameter_test.shecho "🧪 测试不同的热点参数组合..."# 测试不同的安全协议
protocols=("wpa2" "wpa3" "open")
bands=("2" "5" "6")for protocol in "${protocols[@]}"; dofor band in "${bands[@]}"; doecho "测试: 协议=$protocol, 频段=$band"adb shell cmd wifi stop-lohs 2>/dev/nullsleep 1adb shell cmd wifi start-lohs-primary primary $protocol 12345678 -b $bandsleep 3# 检查状态status=$(adb shell dumpsys wifi | grep "SoftApState" | tail -1)echo "结果: $status"echo "---"done
done
🚨 紧急恢复方案
强制恢复网络设置
#!/bin/bash
# wifi_emergency_recovery.shecho "🚨 执行紧急网络恢复..."echo "1. 强制停止所有网络服务..."
adb shell am force-stop com.android.wifi
adb shell am force-stop com.android.networkstackecho "2. 重置网络设置..."
adb shell cmd wifi reset-networkecho "3. 清除 DHCP 租约..."
adb shell rm -f /data/misc/dhcp/* 2>/dev/nullecho "4. 重启网络堆栈..."
adb shell stop network
adb shell start networkecho "5. 等待系统恢复..."
sleep 10echo "✅ 紧急恢复完成"
📊 错误代码解读
根据错误信息 Primary lohs onFailed: 2,可能的含义:
- 错误码 2: 通常表示配置错误或硬件不支持
- SAP failed to start: Soft Access Point 启动失败
🔍 硬件兼容性检查
#!/bin/bash
# wifi_hardware_check.shecho "🔧 检查硬件兼容性..."echo "1. 检查 WiFi 芯片信息..."
adb shell dumpsys wifi | grep -i "chip\|driver\|firmware"echo "2. 检查支持的频段..."
adb shell cmd wifi get-supported-featuresecho "3. 检查热点能力..."
adb shell cmd wifi get-softap-supported-featuresecho "4. 检查国家代码..."
adb shell dumpsys wifi | grep -i "country"
总结:建议按以下顺序尝试:
- 先用简单参数:
cmd wifi start-lohs-primary primary wpa2 12345678 - 检查硬件支持:确认设备支持 WPA3 和 5GHz 频段
- 使用系统 UI:通过设置应用启动热点
- 重启服务:重启 WiFi 和网络相关服务
- 联系厂商:可能是设备特定的限制或 bug
