Lors de l'activation de ModemManager, mon FONA SIM808 basé sur un port série ne figure pas dans la liste des modems disponibles, bien que je puisse le faire fonctionner avec pppd
.
Si je lance ModemManager avec service stop ModemManager && ModemManager --debug
, je constate qu'il balaye les périphériques série antérieurs lors de la recherche de modems, mais pour chaque périphérique affiché:
modem-manager: (tty/ttyO4): port's parent platform driver is not whitelisted
En regardant le code source, je vois qu'il vérifie le périphérique pour le drapeau udev
_ ID_MM_PLATFORM_DRIVER_PROBE
. Si cet indicateur n'existe pas, le port série ne sera pas analysé. Il vérifie également le drapeau ID_MM_CANDIDATE
pour voir s'il s'agit d'un port pris en charge plus haut, alors je sais qu'il est au moins capable de le lire.
J'ai donc ajouté cet indicateur en tant que nouvelle règle dans un nouveau fichier /etc/udev/rules.d/78-mm-uart4-enable.rules
ACTION=="add", KERNEL=="ttyO4", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"
Après le redémarrage, je vois ceci dans 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
Mais je reçois toujours la même erreur de modem-manager
même si le drapeau est clairement défini. Comment ajouter de la liste blanche ttyO4
correctement?
Dans le code source, la première vérification de ID_MM_CANDIDATE
est effectuée sur le port (c.-à-d. /dev/ttyO4
). Après cela, ModemManager récupérera le périphérique de la plate-forme physique (le port série lui-même) dont on peut voir qu'il est /devices/ocp.3/481a800.serial
, puis le vérifier pour l'indicateur ID_MM_PLATFORM_DRIVER_PROBE
.
Si à la place, la règle udev
est modifiée en
ACTION=="add", KERNEL=="481a800.serial", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"
alors ModemManager verra correctement l'indicateur sur le périphérique parent.
# 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
Le périphérique apparaît maintenant dans mmcli -L
et nmcli device status
.