GPS compatible modems.

Marc Murphy marcmltd at marcm.co.uk
Thu Dec 18 02:07:28 PST 2014


This is all working well with the MC7710 and the MU609.  I have an app to use the dbus i/f and enable/disable the modem and get NMEA traces.

I do see a difference in operation though between the Sierra and the Huawei.

In the app I have written I have a context that gets the modem info over dbus and configures it to give GPS;

		ctx->modem = mm_object_peek_modem (MM_OBJECT (modems->data));

		ctx->object = MM_OBJECT (modems->data);

		    ctx->modem_location = mm_object_get_modem_location (ctx->object);


		    if (mm_modem_get_state (mm_object_peek_modem (ctx->object)) < MM_MODEM_STATE_ENABLED) {
		        gboolean result;
		        g_printerr ("error: modem not enabled yet... lets try and enable it\n");

		        g_debug ("enabling modem...");
		        if(mm_modem_enable_sync (ctx->modem, NULL, &error))
			        g_debug ("enabled modem...");
		    }
		mm_modem_location_setup_sync (ctx->modem_location,
							 sources,
							 mm_modem_location_signals_location (ctx->modem_location),
							 NULL,
							 &error);

Once it is all  set up then I request the location 

    mm_modem_location_get_full_sync (ctx->modem_location,
                                     &location_3gpp,
                                     &location_gps_nmea,
                                     &location_gps_raw,
                                     &location_cdma_bs,
                                     NULL,
                                     &error);

And extract the NMEA trace I am interested in.

With the Sierra each 5 second poll of the location info I see the NMEA trace is updating as I can see the time increasing:
Took 9.000000 seconds to find modem
Took 1 seconds to enable modem
Got location $GPRMC,091806.0,A,XXXXXXXXXXXXXXXXXXXXXXX,,,A*44

Took 160 seconds to get lock
Got location $GPRMC,091811.0,A, XXXXXXXXXXXXXXXXXXXXXXX,,,A*40

Got location $GPRMC,091816.0,A, XXXXXXXXXXXXXXXXXXXXXXX,,,A*40

Got location $GPRMC,091821.0,A, XXXXXXXXXXXXXXXXXXXXXXX,,,A*47

With the Huawei each 5 second poll of the location info I see the NMEA trace is static:
error: modem not enabled yet... lets try and enable it
Took 21.500000 seconds to find modem
Took 1 seconds to enable modem
Got location $GPRMC,092239.0,A, XXXXXXXXXXXXXXXXXXXXXXX,,,A*7C

Took 55 seconds to get lock
Got location $GPRMC,092240.0,A, XXXXXXXXXXXXXXXXXXXXXXX,,,A*7C

Got location $GPRMC,092240.0,A, XXXXXXXXXXXXXXXXXXXXXXX,,,A*7C

Got location $GPRMC,092240.0,A, XXXXXXXXXXXXXXXXXXXXXXX,,,A*7C

If I keep killing and running the app it will update the location each time.  It is almost as if I have to kill the dbus context and start again for each fetch of location.... is this the way it is intended to be used or is there an issue here ?

Thanks
Marc

-----Original Message-----
From: Aleksander Morgado [mailto:aleksander at aleksander.es] 
Sent: 03 December 2014 07:42
To: Marc Murphy
Cc: Dan Williams; Yegor Yefremov; David McCullough; modemmanager-devel at lists.freedesktop.org
Subject: Re: GPS compatible modems.

On Tue, Dec 2, 2014 at 10:10 PM, Marc Murphy <marcmltd at marcm.co.uk> wrote:
> Thanks for the feedback, now to write the app to get the NMEA from the MM dbus instead of the ttyUSB.

For the Huawei MU609 you'll see that the modem also reports "unmanaged GPS" capabilities in ModemManager. That means that you can use ModemManager to just start/stop GPS, and still read NMEA traces yourself with another application through the TTY (i.e. ModemManager won't parse and expose NMEA traces).

The Sierra MC7710 could do this, but right now it defaults to use QMI for everything (i.e. no TTY with NMEA traces involved at all).

--
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list