高通410 随身WiFi 5分钟自动重启解决方案

关键字: 高通410 随身WiFi systemUI  自动重启 5分钟 移动数据

随身WiFi就不多描述了。

最近用随身Wifi做短信转发,SIM卡没流量,所以需要关闭网络共享,关闭移动数据,使用WiFi连接无线路由器上网转发短信。

本来一切都做好了,结果每5分钟左右系统就自动重启。

经过分析logcat发现systemui中,会发送reboot广播,所以只需要反编译SystemUI.apk 修改去掉相关代码即可。

关键代码

具体代码如下:

自动重启

com.android.systemui.statusbar.policy.NetworkController
// 无sim卡重启
private final Runnable mSimSTMonitorRunable = new Runnable() { // from class: com.android.systemui.statusbar.policy.NetworkController.2
        @Override // java.lang.Runnable
        public void run() {
            if (NetworkController.this.mSimState == IccCardConstants.State.ABSENT) {
                Log.d("StatusBar.NetworkController", "reboot not sim");
                Intent reboot = new Intent("android.intent.action.REBOOT");
                reboot.putExtra("nowait", 1);
                reboot.putExtra("interval", 1);
                reboot.putExtra("window", 0);
                TelephonyManager.set_led_alloff();
                NetworkController.this.mContext.sendBroadcast(reboot);
            }
        }
    };


// 有sim卡且sim卡ready,但是关闭了移动数据,或者开启了WiFi,重启系统
private final Runnable mDataMonitorRunable = new Runnable() { // from class: com.android.systemui.statusbar.policy.NetworkController.3
        @Override // java.lang.Runnable
        public void run() {
            Log.d("StatusBar.NetworkController", "Data time out , mAirplaneMode=" + NetworkController.this.mAirplaneMode + " mSimState=" + NetworkController.this.mSimState + " last_data_state=" + NetworkController.last_data_state);
            if (!NetworkController.this.mAirplaneMode && NetworkController.this.mSimState == IccCardConstants.State.READY && !NetworkController.this.mDataConnected) {
                Intent reboot = new Intent("android.intent.action.REBOOT");
                reboot.putExtra("nowait", 1);
                reboot.putExtra("interval", 1);
                reboot.putExtra("window", 0);
                TelephonyManager.set_led_alloff();
                NetworkController.this.mContext.sendBroadcast(reboot);
            }
        }
    };




// 相关调用处 关闭移动数据
Log.d("StatusBar.NetworkController", "mAirplaneMode=" + this.mAirplaneMode + " mSimState=" + this.mSimState + " last_data_state=" + last_data_state);
        if (!this.mAirplaneMode && this.mSimState == IccCardConstants.State.READY && last_data_state) {
            Log.d("StatusBar.NetworkController", "start no data connect monitor");
            this.mDataMonitorHdl.postDelayed(this.mDataMonitorRunable, 300000L);
            last_data_state = false;
        }
// 相关调用处 无sim卡

if (this.mSimState != IccCardConstants.State.READY) {
            update_4G_nosignal(true);
            if (this.mLastSimstate > 0) {
                this.mLastSimstate = 0;
                this.mSimSTMonitorHdl.postDelayed(this.mSimSTMonitorRunable, 60000L);
            }
        }


//我的处理方法是
// 在两处位置都删除以下两行代码
TelephonyManager.set_led_alloff();
NetworkController.this.mContext.sendBroadcast(reboot);

// 删除
this.mSimSTMonitorHdl.postDelayed(this.mSimSTMonitorRunable, 60000L);
this.mDataMonitorHdl.postDelayed(this.mDataMonitorRunable, 300000L);

上述处理去掉关机逻辑后就正常了。

自动进入飞行模式

com.android.systemui.ElinkAutoTestService
  public void enter_SnImeiCheckFailed() {
            boolean state = true;
            int count = 0;
            while (true) {
                if (count % 60 == 0) {
                    ElinkAutoTestService.this.changeAirplaneModeSystemSetting(true);
                }
                if (state) {
                    TelephonyManager.write_int("/sys/class/leds/WIFI_S/brightness", true);
                    TelephonyManager.write_int("/sys/class/leds/4G_S/brightness", true);
                    TelephonyManager.write_int("/sys/class/leds/4G_L2/brightness", true);
                } else {
                    TelephonyManager.write_int("/sys/class/leds/WIFI_S/brightness", false);
                    TelephonyManager.write_int("/sys/class/leds/4G_S/brightness", false);
                    TelephonyManager.write_int("/sys/class/leds/4G_L2/brightness", false);
                }
                ElinkAutoTestService.this.sleepAfterWifiEnable(1000);
                state = !state;
                count++;
            }
        }

远控代码

public class ElinkReportDeviceConfig implements Runnable {
        private String TAG = "ElinkReportDeviceConfig";
        String url_http = "http://xinxun.china-m2m.com/api/device/config";
        ......
}

// 搜索 http:// 及 :1771 关键字,相关链接URL改成127.0.0.1 相关端口1771 改成其他任意端口即可

UFI001C_MB_V01 Android 4.4 系统下SystemUI,如果系统不对版自己修改。

SystemUI.apk官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供SystemUI.apk最新版正式版官方版绿色版下载,SystemUI.apk安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装icon-default.png?t=N7T8https://www.123pan.com/s/4pqrVv-rvQKv.html

自行修改

如果自己修改这里提到 odex合并、反编译和回编译问题,由于Android4.4 版本太老了,很多工具不支持,这里简述下工具及流程:

odextools

用odextool 里边的odextools_ok 合并odex (odextools_ok\Major\jdk.kye 配置JDK路径)
https://www.52pojie.cn//thread-1116637-1-1.html
系统system文件夹解包到romdir

结构如下:

romdir\system\app

romdir\system\framework

删除代码

参考上述代码

APKDB

安卓逆手(APKDB)2.1.4 调试版2021.07.02 – 淡蓝斯宇 (idoog.me)
用apkdb 反编译,和回编译,
反编译:

右击合并后的SystemUI.apk
选 R [R]->不反编译Resources(×)
选 4 用 apktool [4]-v2.0.0 

修改smali 后回编译
选 4 用 apktool [4]-v2.0.0 
选 B [B]保留原签名(仅适用于系统应用)

ps: 又增加修复进入自动飞行模式的限制,具体可以自己替换StstemUI.apk


 

替换SystemUI.apk

1.必须先root系统

2. 替换文件

# 推送本地 SystemUI.apk 到临时文件
adb push SystemUI.apk /data/local/tmp/

# 进入shell
adb shell
su

# 挂载系统分区可读写
mount -o remount,rw /system

# 备份 systemui 源文件
cp -a /system/priv-app/SystemUI* /sdcard/Download/

# 替换系统文件
cp -a /data/local/tmp/SystemUI.apk /system/priv-app/
rm -rf /system/priv-app/SystemUI.odex

# 修改文件权限
chmod 644 /system/priv-app/SystemUI.apk
chown root:root /system/priv-app/SystemUI.apk

# 重启
reboot


默认开启WIFI关闭热点


### 短信转发自动开启WIFI 关闭数据流量和热点
adb push enable_wifi.sh /data/local/tmp/

# 挂载 system 分区可读写
adb shell 
su
mount -o remount,rw /system
# 配置WIFI自启动脚本 并修改权限
cp -a /data/local/tmp/enable_wifi.sh /data/adb/service.d/
chmod 777 /data/adb/service.d/enable_wifi.sh
chown root:root /data/adb/service.d/enable_wifi.sh



# 默认脚本刷入后采用热点和卡自带流量模式,如果需要使用WiFi,那么在

adb shell 
su

echo 1 > /data/adb/enable_wifi

# 重启设备后讲默认开启wif,关闭热点、禁用4G移动数据

# 1 开启wif,关闭热点、禁用4G移动数据

# 0 关闭WiFi,开启热点 (设置--移动数据自行ARDC开启,避免无流量的卡出问题)

changelog

20230910

1.  修正复制文件命令,mv会导致ln问题,用cp替代

2. 修改因为无法连接到远控服务器导致进入飞行模式问题

3. 剔除远控代码、修改远控服务器及端口为127.0.0.1

20230908

1. 反编译SystemUI.apk 修改无sim卡、无信号、无移动数据连接导致5分钟重启问题

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
随身WiFi openwrt是指使用带有openwrt固件的随身WiFi设备。这种设备可以通过将USB端口连接到一级路由器的LAN口,将WiFi连接到WAN口,来实现类似无线网卡的功能。配置上的改变包括将LAN口的IP地址更改为192.168.2.1,用户在登录时需要注意这一点。\[1\] 要准备的材料包括一台带有openwrt固件的高通410随身WiFi设备和一台运行Windows 10的电脑。\[2\] 在改变路由器的配置时,需要注意一些基本概念。一般家用路由器具有WAN口、LAN口和WiFi无线功能。WAN口用于连接外部网络,通常连接到光猫的LAN口。而路由器的LAN口是本地网络的端口,WiFi可以看作是LAN口的一部分。如果要连接两个路由器并使其都能访问外网,需要将第二级路由器的WAN口连接到第一级路由器的LAN口上。同样的道理,随身WiFi也可以通过将USB端口作为WAN口连接到一级路由器的LAN口上,将WiFi作为LAN口,从而使手机可以通过连接WiFi上网。\[3\] #### 引用[.reference_title] - *1* *2* *3* [18.8元4G随身wifi刷openwrt改无线路由器或无线网卡](https://blog.csdn.net/m0_46449041/article/details/126562210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值