当我将诺基亚 6300 手机连接到 Linux 笔记本电脑时,它主要显示为串行端口设备 ( /dev/ttyACM0
),我可以通过该设备与 建立 PPP 连接pppd
。同一个 USB 设备还提供了一个名为usbpn0
type 的神秘网络接口phonet
,由名为 的驱动程序模块提供服务cdc_phonet
:
$ ip addr show dev usbpn0
35: usbpn0: <POINTOPOINT,NOARP> mtu 65541 qdisc noop state DOWN group default qlen 3
link/phonet 1b peer 00
family 35 ???/0 scope link
$ readlink /sys/class/net/usbpn0/device/driver
../../../../../../bus/usb/drivers/cdc_phonet
有一个内核文档文件关于这种类型的接口,但是并没有解释太多;只是它是诺基亚调制解调器的某种基于数据包的接口,没有任何解释数据包应该包含什么。
这个网络接口是什么?它是干什么用的?如果可以的话,我该如何使用它?
答案1
Phonet 是智能服务接口的链路/传输层(ISI),这是一种与诺基亚手机使用的蜂窝调制解调器进行通信的协议。从某种意义上说,ISI/Phonet 可以作为 AT 命令集和/或 OBEX 的替代方案:通过使用预先分配的号码访问各种“电话资源”,可以以不同的方式驱动调制解调器,例如:
- 拨打语音电话(
PN_CALL
,0x01;PN_MODEM_CALL
,0xc9) - 发送和接收 SMS 消息(
PN_SMS
,0x02) - 配置呼叫限制和呼叫转移,并发送USSD代码(
PN_SS
,0x06) - 解锁 SIM 卡并访问电话簿(
PN_SIM
, 0x09) - 检查网络状态和信号强度(
PN_NETWORK
,0x0a;PN_MODEM_NETWORK
,0xc8) - 检查调制解调器的标识符,例如序列号和 IMEI(
PN_PHONE_INFO
、0x1b;PN_MODEM_INFO
、0xc5) - 访问智能卡功能(
PN_UICC
,0x8c)
我什至看到有人四处询问PN_FILE_MANAGER
通过(0x65)资源访问智能手机的文件系统,但发现没有执行此操作的工作代码。据我所知,ISI/Phonet 无法承载 IP 流量:仍然必须通过串行链路上的 PPP 来连接到移动网络。
Phonet 客户端的实现位于奥福诺项目,特别是在isimodem
司机。一些代码也可以在自由智能手机网的聚宝盆项目,在modem_nokia_isi
司机。后一个项目使用了oFono的部分isimodem
驱动程序来构建一个独立的库,libisi
。 Wireshark 还包含解剖者对于这个协议。
答案2
当我将一部特别旧的手机连接到我的 Linux 笔记本电脑时......
看起来那部旧手机是诺基亚的,并且它可以充当调制解调器。
Phonet 协议系列的完整文档可以在这里找到:
https://www.kernel.org/doc/Documentation/networking/phonet.txt
通过这种接口可以传输什么样的数据
我想你可以用一些终端仿真器(如 Minicom 或 Telix)连接它,并与它交换原始 AT 命令,就像过去的调制解调器一样。也许制作一些使用 dbus-send 的 shell 脚本来处理 USSD 代码之类的东西。这需要一些研究。