ModemManager CPU usage increaases to 100% following --location-enable-gps-nmea when using a Telit modem
mmcli version 1.20.0 (installed via apt) and using a Telit LE910 modem.
Enabled gps-nmea in the modem
mmcli -m 0 --location-enable-gps-nmea
then observed ModemManager CPU usage gradually creep up to 100% over an hour or so. I swapped the modem out for a Quectel one and there was no problem.
strace log with the Telit modem:
recvfrom(11, "\1^\0\200\20\1\4\346\t&\0R\0\1O\0$GPRMC,031713.00,A,4331.309420,S,17238.867345,E,0.0,10.9,150623,22.1,E,A,V*52\r\n", 2048, 0, NULL, NULL) = 95
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 27445) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1J\0\200\20\1\4\347\t&\0>\0\1;\0$GPGSA,A,3,04,07,08,09,14,16,20,27,30,,,,0.8,0.6,0.6,1*23\r\n", 2048, 0, NULL, NULL) = 75
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 27413) = 1 ([{fd=13, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
read(13, "$GPGSV,4,1,15,04,38,011,31,05,03,209,38,07,59,230,49,08,51,047,47,1*65\r\n$GPGSV,4,2,15,09,62,327,45,14,07,299,35,16,28,126,37,18,,,24,1*59\r\n$GPGSV,4,3,15,20,06,234,27,25,,,28,27,45,105,52,28,,,28,1*69\r\n$GPGSV,4,4,15,29,,,28,30,27,246,42,46,,,35,1*55\r\n$GPGGA,031714.00,4331.309424,S,17238.867345,E,1,09,0.6,21.9,M,11.0,M,,*4D\r\n$GPGLL,4331.309424,S,17238.867345,E,031714.00,A,A*7D\r\n$GPVTG,10.9,T,348.8,M,0.0,N,0.0,K,A*1C\r\n$GPRMC,031714.00,A,4331.309424,S,17238.867345,E,0.0,10.9,150623,22.1,E,A,V*51\r\n$GPGSA,A,3,04,07,08,09,14,16,20,27,30,,,,0.8,0.6,0.6,1*23\r\n", 2048) = 557
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 26661) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\2\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 26660) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1W\0\200\20\1\4\350\t&\0K\0\1H\0$GPGSV,4,1,15,04,38,011,31,05,03,209,38,07,59,230,49,08,51,047,47,1*65\r\n", 2048, 0, NULL, NULL) = 88
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 26645) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1R\0\200\20\1\4\351\t&\0F\0\1C\0$GPGSV,4,2,15,09,62,327,45,14,07,299,35,16,28,126,37,18,,,24,1*59\r\n", 2048, 0, NULL, NULL) = 83
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 26613) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1M\0\200\20\1\4\352\t&\0A\0\1>\0$GPGSV,4,3,15,20,06,234,27,25,,,28,27,45,105,52,28,,,28,1*69\r\n", 2048, 0, NULL, NULL) = 78
strace log with the quectel modem:
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\0011\0\200\6\1\4\0\0\1\0%\0\20\"\0$GPVTG,,T,0.0,M,0.0,N,0.0,K,A*0D\r\n", 2048, 0, NULL, NULL) = 50
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 13649) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1R\0\200\6\1\4\0\0\1\0F\0\20C\0$GPRMC,033642.0,A,4331.305647,S,17238.866924,E,0.0,,301003,,,A*52\r\n", 2048, 0, NULL, NULL) = 83
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 13647) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1F\0\200\6\1\4\0\0\1\0:\0\0207\0$GPGSA,A,2,05,07,08,14,16,20,27,30,,,,,1.4,1.1,0.8*32\r\n", 2048, 0, NULL, NULL) = 71
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 13645) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1P\0\200\6\1\4\0\0\1\0D\0\20A\0$GPGSV,3,1,11,05,04,216,31,06,,,25,07,68,220,44,08,57,061,50*4D\r\n", 2048, 0, NULL, NULL) = 81
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 2 ([{fd=4, revents=POLLIN}, {fd=11, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1P\0\200\6\1\4\0\0\1\0D\0\20A\0$GPGSV,3,2,11,14,14,295,33,16,21,123,32,17,,,25,20,04,243,30*42\r\n", 2048, 0, NULL, NULL) = 81
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 12668) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1C\0\200\6\1\4\0\0\1\0007\0\0204\0$GPGSV,3,3,11,22,,,26,27,41,116,44,30,35,241,40*7D\r\n", 2048, 0, NULL, NULL) = 68
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 12665) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\1Y\0\200\6\1\4\0\0\1\0M\0\20J\0$GPGGA,033643.0,4331.305645,S,17238.866919,E,1,08,1.1,17.6,M,11.0,M,,*7A\r\n", 2048, 0, NULL, NULL) = 90
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 12663) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
recvfrom(11, "\0011\0\200\6\1\4\0\0\1\0%\0\20\"\0$GPVTG,,T,0.0,M,0.0,N,0.0,K,A*0D\r\n", 2048, 0, NULL, NULL) = 50
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 0) = 1 ([{fd=4, revents=POLLIN}])
read(4, "\4\0\0\0\0\0\0\0", 16) = 8
poll([{fd=4, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 6, 12661) = 1 ([{fd=11, revents=POLLIN}])
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
write(4, "\1\0\0\0\0\0\0\0", 8) = 8
So perhaps there is a clue in that there is read() calls to the device when the telit modem is used, but not with the quectel modem.