向安卓手机发送AT指令

26
我想向安卓手机发送AT命令。
我知道SDK不支持此功能。
但有两种解决方案:
1.更改内核代码并发布新的Android固件(似乎很难!)
2.在USB (我认为蓝牙也是一样)上进行LoopBack。
关于第二个解决方案,当您使用USB电缆将手机连接到PC时,您会在设备管理器中看到一个GSM调制解调器,它可以帮助您向GSM调制解调器发送AT命令。
如果我们找到了在手机上进行LoopBack的解决方案,我们就可以向GSM Modem发送AT命令。
问题是:如何进行LoopBack,内核中的哪个tty文件可以帮助我们?

请查看以下链接:https://dev59.com/PWPVa4cB1Zd3GeqP2Re6#10314862 - user1356194
关于解决方案1,我想知道在开源Android中AT命令“管理器”位于哪个内核文件中? - Hernán Eche
1个回答

15

首先您需要对手机进行ROOT,然后在adb shell中执行以下命令:

su

echo -e "AT\r" > /dev/smd0

如果您想查看答案,请使用以下命令:

cat /dev/smd0

我已经在三星mini、cooper、s+上测试过此命令并且它可以正常工作。

如果您使用的是HTC(测试过HTC Rhyme),请尝试在adb shell中输入以下命令“radiooptions 13 AT”,如果您想要查看答案,请输入“logcat -b radio”。

对于其他设备,请尝试使用echo到/dev/smd0命令。

* 您可以通过使用Runtime.exec(需要su)在sdk java代码中使用此命令。


谢谢...它起作用了。但问题是只有AT\r命令有效,其他命令如atd123456789无效。 - M.Movaffagh
2
尝试输入ATD123456789;(在电话号码末尾添加分号),我已经测试过在三星手机上可以使用,我认为它适用于所有移动设备。 - rattisuk
您是正确的,atd123456789 是一个数据呼叫,不支持我检查过的手机。 谢谢您的答复和关注。 - M.Movaffagh
1
以上方法可行,但在AT命令之前使用cat /dev/smd0&更好,因为有时候cat命令会锁定设备,特别是当shell TERM使用CTS/DSR作为串行控制信号时。 - not2qubit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接