Interface de rede do tipo 'phonet' - para que serve?

Oct 27 2020

Quando conecto meu celular Nokia 6300 ao laptop Linux, ele aparece principalmente como um dispositivo de porta serial ( /dev/ttyACM0) com o qual posso estabelecer uma conexão PPP pppd. O mesmo dispositivo USB também fornece uma interface de rede misteriosa chamada usbpn0de tipo phonet, servida por um módulo de driver chamado 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

Existe um arquivo de documentação do kernel sobre este tipo de interface, mas não explica muito; simplesmente que é algum tipo de interface baseada em pacotes para modems Nokia, sem qualquer explicação sobre o que os pacotes deveriam conter.

O que é essa interface de rede? Para que isso é usado? Como, se possível, posso usá-lo?

Respostas

2 Pourko Nov 02 2020 at 03:27

Quando eu conecto um celular particularmente antigo ao meu laptop Linux ...

Parece que aquele velho celular é um Nokia e está se oferecendo para funcionar como um modem.

A documentação completa para a família de protocolos Phonet pode ser encontrada aqui:

https://www.kernel.org/doc/Documentation/networking/phonet.txt

que tipo de dados podem ser transferidos através deste tipo de interface

Suponho que você poderia conectá-lo com algum emulador de terminal como Minicom ou Telix e trocar comandos AT brutos com ele, como com os modems dos velhos tempos. Talvez faça alguns scripts de shell que usam dbus-send para fazer todos os códigos USSD e outras coisas. Isso precisa de alguma pesquisa.

2 user3840170 Nov 13 2020 at 11:08

Phonet é a camada de link / transporte para Intelligent Service Interface ( ISI ), que é um protocolo para comunicação com um modem celular usado por telefones celulares Nokia. Em certo sentido, o ISI / Phonet serve como uma alternativa ao conjunto de comandos AT e / ou OBEX: ao acessar vários 'recursos Phonet' com números pré-atribuídos, pode-se conduzir o modem de diferentes maneiras, por exemplo para:

  • fazer chamadas de voz ( PN_CALL, 0x01;, PN_MODEM_CALL0xc9)
  • enviar e receber mensagens SMS ( PN_SMS, 0x02)
  • configurar bloqueio e encaminhamento de chamadas e enviar códigos USSD ( PN_SS, 0x06)
  • desbloquear o cartão SIM e acessar a lista telefônica ( PN_SIM, 0x09)
  • verifique o status da rede e a força do sinal ( PN_NETWORK, 0x0a;, PN_MODEM_NETWORK0xc8)
  • verifique os identificadores do modem, como número de série e IMEI ( PN_PHONE_INFO, 0x1b;, PN_MODEM_INFO0xc5)
  • acessar a funcionalidade de cartão inteligente ( PN_UICC, 0x8c)

Até vi alguém perguntando sobre como acessar o sistema de arquivos do smartphone por meio de um PN_FILE_MANAGERrecurso (0x65) , mas não encontrei nenhum código funcionando que faça isso. Até onde eu posso dizer, porém, o ISI / Phonet não pode transportar tráfego IP: a conexão com a rede móvel ainda precisa ser realizada via PPP através do link serial.

Uma implementação de um cliente Phonet é encontrada no projeto oFono , especificamente no isimodemdriver . Alguns códigos também podem ser encontrados no projeto Cornucopia do freesmartphone.org , no modem_nokia_isidriver . O último projeto usou partes do isimodemdriver do oFono para construir uma biblioteca independente libisi,. O Wireshark também contém um dissecador para este protocolo.