以编程方式重启无线电

时间:2013-09-06 03:32:09

标签: android modem reboot cellular-network

我的Android手机的收音机因为一些与网络相关的问题而无声地死机。 在Nexus 4上,它显示空三角形,好像在这个区域没有可用的服务。在其他手机上它甚至没有这样做。看起来信号很好。

无论如何,在收音机无声无息地死亡之后,没有电话/短信/数据在任何方向通过。 我从系统获得的唯一提示是当信号死亡且未连接wifi时发出的android.net.conn.CONNECTIVITY_CHANGE广播。

解决问题的唯一方法是重启手机。

最后我的问题

有人知道如何通过代码完全重启收音机吗?

我的意思是,它是在单独的CPU上运行的单独映像。必须有一种方法可以重新启动它而无需重新启动手机。 也许有一些东西,我可以进入Android ROM。我在这里运行CM并很乐意(再次)修补它。

我尝试通过按下dailer上的*#*#4636#*#*并停止收音机并再次启动来启动系统应用程序来修复它。但它根本没有帮助。

我最近创建了一个应用程序,每次连接更改时都会检查无线电。它显示了一个简单的通知告诉我,我应该重新启动手机。 [1]

转载的问题:

  • LG Nexus 4
  • Samsung ACE 2
  • 多个Apple iPhone 4 *

未转载的问题:

  • Apple iPhone 5

所有手机都在Dialog.lk网络中运行。

[1] https://github.com/felixb/network-checker

2 个答案:

答案 0 :(得分:2)

在root设备上,可以为作为用户无线电运行的所有进程发出pkill命令。我在Oneplus 3上对此进行了测试。系统似乎立即重启服务:

pkill -u radio

答案 1 :(得分:1)

是的,这是可能的,但是如果不深入了解存在多个版本的调制解调器通信代码,将难以在设备上执行,甚至这将取决于系统是否允许您甚至执行通信设备

我所知道的唯一一个你可以完全操控设备的是高通公司(高通公司是大多数设备的标准配置,但三星在某些情况下使用过VIA,这是一个完全不同的怪物,甚至还是另一个芯片组或两个存在),但是为了能够执行你对Qualcomm芯片组的要求,以下必须如此:

  1. 设备必须是root。
  2. 应用程序必须具有root访问权限。
  3. 系统ROM必须能够将蜂窝无线电设备置于调制解调器诊断模式。
  4. 设备必须具有相应的权限才能允许访问。
  5. 此时,大多数人会将他们的计算机连接到他们的设备,并使用QPST,CDMAWare或QXDM操纵蜂窝无线电。这些用户可用的选项包括从操纵蜂窝用户数据到重新启动蜂窝调制解调器的所有内容。

    但是,这是事情变得棘手的地方,你需要能够从设备端访问它,这取决于设备,操作系统和它的配置...可能很难做到

    此外,您的应用程序必须能够使用上述应用程序进行通信的特殊协议与蜂窝无线电通信,这需要您熟悉该规范。高通诊断协议的白皮书如果你看起来足够难以在网上流传。

    同样在不那么酷的一面,如果您的应用程序可以访问无线电...任何其他有根应用程序也是如此(如果您没有正确设置设备权限,甚至是非root用户)从而启用胭脂应用程序更改收音机配置数据的能力甚至可能会破坏您的设备(我见过人们使用上面提到的应用程序)。

    所以我的答案是肯定的,你可以做到,但是:

    • 根据您可能无法使用的设备,您应该准备好学习和开发所需的工具来执行您想要做的事情
    • 不存在快速入门指南
    • 请记住,您知道您的设备可能因编码错误或胭脂应用程序而被砖砌。
    • 正如您在设备菜单中所做的那样重新启动无线电可能无法解决您的问题,您可能仍需要重新启动设备

    我的建议是使用更简单的方法,并在当前应用程序中包含一个自动重启的计时器,它更安全,不会破坏你的设备,你也不必成为一名细胞工程师,想出如何实现它。

    您的计时器可能会在收音机死机时开始倒计时,并为您提供一个选项,以便在您执行某些重要操作时停止重启,否则会重新启动您的设备,当您拨打电话或拨打电话时,所有设备都已就绪检查你的电子邮件。

    希望我能够提供帮助,即使我知道这不是你想要的答案。

    旁注,如果您可以从外部应用程序劫持Android的系统配置菜单,您可能会使用Android中使用的相同方法来操纵无线电状态...但您已经发现在此方法中重新启动无线电无助于您情况。此外,Android旨在防止此类操作,以防止恶意应用程序超越其他应用程序和系统的UI。