I'm sure there must be some way to do this, but I'm unable to figure out
how. I want MM to completely ignore the GPS NMEA port on the MC7455. I
want that port to be handled by gpsd. And having two daemons touching
the same port does feel a bit yucky. Besides, MM doesn't really deal
all that well with NMEA and sometimes crashes while running the AT
probe:
ModemManager[23206]: [1461673282.655968] [mm-port-serial-at.c:459]
debug_log(): (ttyUSB1): --> 'AT'
ModemManager[23206]: [1461673282.656840] [mm-port-serial-at.c:459]
debug_log(): (ttyUSB2): --> 'AT'
ModemManager[23206]: [1461673282.657650] [mm-port-serial-at.c:459]
debug_log(): (ttyUSB0): --> 'AT'
ModemManager[23206]: [1461673282.857504] [mm-port-serial-at.c:459]
debug_log(): (ttyUSB1): <--
'$GPGSV,3,1,09,01,18,016,,0610,19,285,,11,05,007,*4F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$GPGSV,3,2,09,12,34,224,,1314,17,317,,15,22,191,*48\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$GPGSV,3,3,09,17,45,077,*47\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$GPVTG,,T,,M,,N,,K,N*2C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$GPGSA,A,1,,,*1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$GPGGA,,0*66\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$GPRMC,,V,,N*53\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'
ModemManager[23206]: [1461673282.858055] [mm-serial-parsers.c:191]
mm_serial_parser_v1_parse(): Got response filtered in serial port: Not an AT
response
ModemManager[23206]: [1461673282.858341] [mm-port-probe-at.c:43]
mm_port_probe_response_processor_is_at(): Parsing AT got: 'Not an AT response'
ModemManager[23206]: [1461673282.858593] [mm-plugin-manager.c:519]
port_context_next(): [plugin manager] task 3,ttyUSB1: checking with plugin
'Generic'
ModemManager[23206]: [1461673282.858850] [mm-plugin.c:804]
mm_plugin_supports_port(): (Generic) [ttyUSB1] probe required: 'at, qcdm'
**
ERROR:mm-port-probe.c:1316:mm_port_probe_run: assertion failed:
(self->priv->task == NULL)
Aborted
So I tried setting ID_MM_PORT_IGNORE in the udev rule I use to assign
the port to gpsd:
SUBSYSTEM=="tty",ACTION=="add",ENV{ID_VENDOR_ID}=="1199",ATTRS{bInterfaceNumber}=="02",SYMLINK="gps%n",ENV{ID_MM_PORT_IGNORE}="1",RUN+="/usr/sbin/gpsdctl
add $devnode"
This does seem to work in the way that MM logs the port as 'ignored',
but only after going through full AT port probing:
Apr 26 13:56:34 nemi ModemManager[5861]: [1461671794.710192]
[mm-plugin-manager.c:599] port_context_run(): [plugin manager] task 7,ttyUSB1:
found '2' plugins to try
Apr 26 13:56:34 nemi ModemManager[5861]: [1461671794.710429]
[mm-plugin-manager.c:622] port_context_run(): [plugin manager] task 7,ttyUSB1:
will try with plugin 'Sierra'
Apr 26 13:56:34 nemi ModemManager[5861]: [1461671794.710655]
[mm-plugin-manager.c:622] port_context_run(): [plugin manager] task 7,ttyUSB1:
will try with plugin 'Generic'
Apr 26 13:56:34 nemi ModemManager[5861]: [1461671794.710903]