GPS data EM7345 on Linux

how can I get the GPS/GLONAS data under Linux?
I only see 2 devices ttyAC0 and cdc-wdm0.
cdc-wdm0 is the pure binary part of MBIM.
on ttyAC0 there I can send AT commands.

Thanks, for any help.


You can use “Position Determination Service Sample Application”, to set and get GPS service state. Please refer the below link for more info….

which driver are you using to connect the module to Linux?


That will not work since this is for Qualcomm based devices only. EM7345 is Intel based. As I understand the Linux support of the EM7345 is very poor.

Hi Rex,
I use the kernel 3.17.6 and the following kernel modules:
I have read the pdf, on page 10, the supported usb id’s are listed.
But the EM7345 are shown as 0x1199 0xa001, witch are not listed as supported,

Hi kirma919,
as far as I know, it is based on an Intel® XMM™ 7160 and the GPS/Glonas part comes from the CG1960.
But I can’t find any documentation about it.

Some news about it,
the AT command 's are:
AT+XLCSLSR=1,1,1, every second an value
AT+XLCSLSR=1,1, only one value
AT+XLSRSTOP=0,ID stop it.
The ID is delivert from the command before.

Is it possible to get more data about AT+XLCSLSR command on the em7345?

I can visually find the lat/lon data from the response (3rd and 4th column), and sometimes something that looks like altitude, but am curious about the other numbers in the reply.

Where can we get the complete at reference guide for the EM7345? Even googling for “XLCSLSR” only finds data from random forums, nothing official with the complete command references.

Very old thread I know. But ran into this yesterday trying to get GPS working on an EM7345. ModemManager has support for this module, but only since a ~year or so. Still wont work out of the box on Debian Bullseye, but it works if you install modemmanager from bullseye-backports.

For those who just want to enable NMEA output on ttyACM0, I checked the modemmanager sourcecode and this is how they do it:

 *    transport_protocol:  2 (invalid) or 1 (supl)
 *    pos_mode:            3 (standalone), 1 (msb) or 2 (msa)
 *    client_id:           <empty>
 *    client_id_type:      <empty>
 *    mlc_number:          <empty>
 *    mlc_number_type:     <empty>
 *    interval:            1 (seconds)
 *    service_type_id:     <empty>
 *    pseudonym_indicator: <empty>
 *    loc_response_type:   1 (NMEA strings)
 *    nmea_mask:           118 (01110110: GGA,GSA,GSV,RMC,VTG)
 *    gnss_type:           0 (GPS or GLONASS)
g_assert (priv->gps_port);
cmd = g_strdup_printf ("AT+XLCSLSR=%u,%u,,,,,1,,,1,118,0", transport_protocol, pos_mode);