Ativando dispositivos de rede serial com o ModemManager

0

Ao ativar o ModemManager, não vejo meu FONA SIM808 com base em série na lista de modems disponíveis, embora eu possa fazê-lo funcionar com pppd .

Se eu iniciar o ModemManager com service stop ModemManager && ModemManager --debug , verifico os dispositivos seriais antigos ao pesquisar modems, mas para todos os dispositivos que vejo:

modem-manager: (tty/ttyO4): port's parent platform driver is not whitelisted

Olhando para o código-fonte, vejo que ele verifica o dispositivo para udev flag ID_MM_PLATFORM_DRIVER_PROBE . Se este sinalizador não existir, a porta serial não será escaneada. Ele também verifica o sinal ID_MM_CANDIDATE para ver se é uma porta suportada mais acima, então eu sei que é pelo menos capaz de ler isso.

Então, adicionei este sinalizador como uma nova regra em um novo arquivo /etc/udev/rules.d/78-mm-uart4-enable.rules

ACTION=="add", KERNEL=="ttyO4", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"

Após a reinicialização, vejo isso em udevadm info /dev/ttyO4

P: /devices/ocp.3/481a8000.serial/tty/ttyO4
N: ttyO4
E: DEVNAME=/dev/ttyO4
E: DEVPATH=/devices/ocp.3/481a8000.serial/tty/ttyO4
E: ID_MM_CANDIDATE=1
E: ID_MM_PLATFORM_DRIVER_PROBE=1
E: MAJOR=247
E: MINOR=4
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=30104

Mas ainda recebo o mesmo erro de modem-manager , apesar de claramente ter o sinalizador definido. Como faço para whitelist ttyO4 corretamente?

    
por CJxD 29.02.2016 / 21:22

1 resposta

1

No código-fonte, a primeira verificação de ID_MM_CANDIDATE é feita na porta (por exemplo, /dev/ttyO4 ). Depois disso, o ModemManager recuperará o dispositivo da plataforma física (a própria porta serial) que podemos ver como /devices/ocp.3/481a800.serial e, em seguida, verificará o sinal ID_MM_PLATFORM_DRIVER_PROBE .

Se, em vez disso, a regra udev for alterada para

ACTION=="add", KERNEL=="481a800.serial", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"

então o ModemManager irá ver corretamente o sinalizador no dispositivo pai .

# udevadm info /sys/devices/ocp.3/481a8000.serial
P: /devices/ocp.3/481a8000.serial
E: DEVPATH=/devices/ocp.3/481a8000.serial
E: DRIVER=omap_uart
E: ID_MM_PLATFORM_DRIVER_PROBE=1
E: MODALIAS=of:NserialT<NULL>Cti,omap3-uart
E: OF_COMPATIBLE_0=ti,omap3-uart
E: OF_COMPATIBLE_N=1
E: OF_FULLNAME=/ocp/serial@481a8000
E: OF_NAME=serial
E: SUBSYSTEM=platform
E: USEC_INITIALIZED=990701

O dispositivo agora aparece em mmcli -L e nmcli device status .

    
por CJxD 29.02.2016 / 21:22