“phonet”类型的网络接口 – 它有什么用处?

“phonet”类型的网络接口 – 它有什么用处?

当我将诺基亚 6300 手机连接到 Linux 笔记本电脑时,它主要显示为串行端口设备 ( /dev/ttyACM0),我可以通过该设备与 建立 PPP 连接pppd。同一个 USB 设备还提供了一个名为usbpn0type 的神秘网络接口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 代码之类的东西。这需要一些研究。

相关内容