Interface de rede do tipo 'phonet' - para que serve?
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
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.
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.