我有一项工作要调查是否可以通过 ADB shell 将 AT 命令发送到 android 设备。到目前为止,我试图回显 AT 命令,但它会将它们作为普通字符串传递。任何帮助请任何人。
5 回答
请试试这个:
echo -e "AT+CFUN=?\r\n" > /dev/ttyUSB0
在您的手机上,不一定要调用串行线ttyUSB0
。如果这不起作用或不可用,请检查/dev/
目录的其他条目。
所以它也可能是/dev/ttyGS0
或/dev/SMD0
(如@Sani 发现的那样)。
如需更多信息,请查看本指南
笔记:
也可能有电话不响应任何串行(tty)
设备上的 AT 命令。
我刚刚在三星 Galaxy S4 上尝试了自己的程序,但没有任何成功。
adb shell
是的,您也可以从...运行 AT 命令
prerequsite :-
1. rooted android phone
2. you are aware of the port that RIL use for i/o operation.
3. to check which port is being used by RIl use `getprop rild.libargs`
要从 ADB 运行 AT 命令,请使用:
echo -c "AT\r\n" > /dev/smd11
PS: smd11 是 RIL 使用的端口。这因设备而异。
还要从 android 应用程序运行 AT 命令检查本教程
http://tech-papers.org/executing-at-commands-android-application/
在哪里呼应他们?在 Android 中,您与 rild(无线电接口层)守护进程对话,后者又与专有库对话,后者将命令发送到实际硬件。查看 rild 源代码以获取详细信息。如果符合您的需要,您可能会编写一个与 rild 对话并通过 adb shell 执行它的命令行程序。
为了找出使用哪个端口:您可以检查
# cat /proc/tty/drivers
用于logcat -b radio | grep dev
查看收音机正在使用的 tty。
一种以上的组合。我们让它在 Pixel 4 XL 上使用 2 个终端。
我们做了一个:
cat /dev/smd7
在另一个:
echo "AT\r" > /dev/smd7
输出显示在第一个终端
笔记:
- 必须是root!
- 没有一个发现机制对我们有用,所以我们盲目地调用 smdX,直到我们得到“AT\r”的响应。
- echo 会自动添加一个 \n,所以添加它是多余的。