Android 打开热点2.4G系统重启解决

2024-01-07 17:12:11

Android 打开热点2.4G系统重启解决

一、前言

Android 设备开机后第一次打开热点2.4G系统重启?以5G形式打开热点没有问题!

这个问题咋回事呢?和底层驱动的人一起分析了一下,本文进行分享一下分析和解决过程。

这种问题一般应用开发不会遇到,只有一些系统开发,或者系统新方案调试可能会遇到。

查看了AndroidRuntime 和crash 日志,重启前没啥异常日志。这种情况一般是底层/驱动未完全适配导致。

二、过程分析

1、Android 设备开机后第一次打开热点2.4G系统重启

以5G形式打开热点没有问题!

并且第一次以5G形式打开热点,第二次再以2.4G形式可以正常打开热点。

这种情况没遇到过啊!只能看看日志了。

2、日志分析

查看了AndroidRuntime 和 crash 关键字的日志,重启前没啥异常日志。

设备重启的异常情况一般adb日志比较难看到相关日志。

从串口查看日志发现重启前logcat和内核日志,有如下日志:

 12-2[ 407.566214][0 T6256 d.] Internal error: BRK handler: f2005512 [#1] PREEMPT SMP
...
[ 409.545917][0 T6256 d.] Kernel panic - not syncing: BRK handler: Fatal exception

从这个内核Kernel日志看,BPK异常后,就挂了。

百度查看了一下“Kernel panic - not syncing”这个异常是芯片启动异常。

对底层不熟悉,不做进一步分析。

后续的分析和解决都是底层开发的协助完成的。

3、设备重启原因

8852bs在打开2.4G热点的时候,wpa config文件中配置了80211ac就会重启!

80211ac 是一种路由设置,开启热点需要把自己的设备当成路由器,所以底层要配置一写路由参数。

80211ac 配置是5G热点才能设置的。所以系统热点开启不能默认配置80211ac,否则会异常。

三、解决方法

对wpa config配置文件修改了一下,80211ac 属性只有在5G热点才配置。

+++ b/release/XXX/common/wifi_bt/wifi/wpa_supplicant_8/hostapd/aidl/hostapd.cpp
@@ -699,7 +699,7 @@ std::string CreateHostapdConfig(
                iface_params.name.c_str(), ssid_as_string.c_str(),
                channel_config_as_string.c_str(),
                iface_params.hwModeParams.enable80211N ? 1 : 0,
-               iface_params.hwModeParams.enable80211AC ? 1 : 0,
+               (iface_params.hwModeParams.enable80211AC && ((band & band5Ghz) != 0)) ? 1 : 0,
                he_params_as_string.c_str(),
                hw_mode_as_string.c_str(), ht_cap_vht_oper_he_oper_chwidth_as_string.c_str(),
                nw_params.isHidden ? 1 : 0,

从上面代码可以看到 最终修改就是把 enable80211AC 判断是5G网络时才配置。

上面的 wpa 目录是AML 供应商的目录,一般系统的目录可能是在 external/wpa_supplicant_8

四、其他

1、wifi/有线网 代理信息也可能导致系统重启

设置代理信息需要填写端口号,如果端口号超出范围也会导致系统重启。

网络端口号的范围是1-65535,65535 是2的16次方,是4个字节的存储空间。

具体报错是啥当的时没看!因为比较好解所以未进行分析。

这里只要在应用中判断端口号范围即可解决该问题。

今天顺便测了一下,发现这种情况只是sygoty重启了是有AndroidRuntime 的,部分日志如下:

01-05 18:23:41.261  1452  1452 D wpa_supplicant: nl80211: Deauthenticate event
01-05 18:23:41.261  1452  1452 D wpa_supplicant: nl80211: Ignore deauth event triggered due to own deauth request
01-05 18:23:41.261  1452  1452 D wpa_supplicant: nl80211: Event message available
01-05 18:23:41.262  1452  1452 D wpa_supplicant: nl80211: Drv Event 48 (NL80211_CMD_DISCONNECT) received for wlan0
01-05 18:23:41.262  1452  1452 D wpa_supplicant: nl80211: Ignore disconnect event when using userspace SME
01-05 18:23:41.265  1951  1951 D PinyinIME: onWindowHidden
01-05 18:23:41.272  1951  1951 D wdw     : getScreenWidth 1260
01-05 18:23:41.272  1951  1951 D wdw     : getHeightForCandidates mCandidatesAreaHeight50
01-05 18:23:41.273   889  1067 D WifiConfigurationUtil: Add upgradable SAE configuration.
--------- beginning of crash
01-05 18:23:41.276   889  1067 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: WifiHandlerThread
01-05 18:23:41.276   889  1067 E AndroidRuntime: java.lang.IllegalArgumentException: Invalid ProxyInfo: [t] 888888 xl=y
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at android.net.wifi.WifiConfiguration.setHttpProxy(WifiConfiguration.java:3807)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at com.android.server.wifi.WifiConfigManager.mergeWithInternalWifiConfiguration(WifiConfigManager.java:1164)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at com.android.server.wifi.WifiConfigManager.updateExistingInternalWifiConfigurationFromExternal(WifiConfigManager.java:1284)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at com.android.server.wifi.WifiConfigManager.addOrUpdateNetworkInternal(WifiConfigManager.java:1384)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at com.android.server.wifi.WifiConfigManager.addOrUpdateNetwork(WifiConfigManager.java:1578)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at com.android.server.wifi.WifiConfigManager.addOrUpdateNetwork(WifiConfigManager.java:1619)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at com.android.server.wifi.WifiServiceImpl.lambda$connect$112(WifiServiceImpl.java:5899)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at com.android.server.wifi.WifiServiceImpl.$r8$lambda$nNJamaVDTZuLL0j_quZy9fnDAw4(Unknown Source:0)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at com.android.server.wifi.WifiServiceImpl$$ExternalSyntheticLambda16.run(Unknown Source:12)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:942)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at android.os.Looper.loopOnce(Looper.java:201)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:288)
01-05 18:23:41.276   889  1067 E AndroidRuntime:        at android.os.HandlerThread.run(HandlerThread.java:67)
01-05 18:23:41.282   889  1067 I DropBoxManagerService: add tag=system_server_crash isTagEnabled=true flags=0x2
01-05 18:23:41.287   889  1067 I Process : Sending signal. PID: 889 SIG: 9

看了下日志没看出啥,可能跟Hal层有点关系,具体还需要进一步分析。

2、Android13 热点默认5G频道配置修改

这个是之前写的framework 上层代码的修改:

https://blog.csdn.net/wenzhi20102321/article/details/135349837

3、Android 设置默认热点名称和热点密码、密码长度

https://blog.csdn.net/wenzhi20102321/article/details/127737534

文章来源:https://blog.csdn.net/wenzhi20102321/article/details/135426024
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。