Ericsson F3507g Mobile Broadband Module

From ThinkWiki
Revision as of 01:43, 18 November 2008 by Newhren (Talk | contribs)
Jump to: navigation, search

Even though Ericsson claims that their F3507g MiniPCIe WWAN/GPS card is compartible with Linux, they do not provide any information how to make this card work. Here are some basics:

  • the card will not work without inserted SIM, even the GPS function. If you want to use just GPS, any SIM would work, even if it is not attached to any active account with any GSM provider.
  • the card provides USB interface, and is recognized by cdc_acm kernel module
  • it registers three pseudo-TTY's, in my case /dev/ttyACM0, /dev/ttyACM1 and /dev/ttyACM2
  • the card is controlled by sending AT-commands to one of it's pseudo-TTY's
  • it applears that all three TTY's are identical. So, for example, we can use /dev/ttyACM0 for broadband 3G, /dev/ttyACM1 for controlling the card via AT-commands, and /dev/ttyACM2 for GPS, or in any other order.

Activating the card

Before the card can be used, you have to activate it. It is done by sending

AT+CFUN=1

to /dev/ttyACM1. The responce should be

OK

You can do it with any terminal terminal program like "minicom", or using "cu" in "expect" script as here. But we are not done yet. If you SIM is protected by a PIN-code, we may have to unlock it. This is done by sending

AT+CPIN="YOUR-PIN"

to /dev/ttyACM1. If your SIM is not protected by a PIN-code, or it is configured not to requre one on connecting to the network, the last command is not necessary. Anyway, your card is not active until it responds with

+PACSP0

Don't try to do anything until you see it.

Turning the card off

To put the card into energy-saving mode (this is the default), you can send

AT+CFUN=4

to /dev/ttyACM1. To remove all power from the card, send

AT+CFUN=0

to /dev/ttyACM1. Be carefull with the last command. It turns the card completely off, and it will no longer accept any AT-commands before the hard reset (which can be done either by rebooting the computer, or physically removing the power from the card).

Using the card as a wireless modem

Once the card is active, we can use it to connect to 3G network in the same way as any GPRS modem. For example to connect to AT&T Wireless network, your wvdial.conf would have to be something like this

[Dialer att]
Modem = /dev/ttyACM0
Init1 = AT+CGDCONT=1,"IP","proxy"
Stupid mode = 1
phone= *99#
Username = *
Password = *

Using the card as GPSr

Once the card is active, we can use it to get GPS info via NMEA protocol. First, you have to configure the a few NMEA options. It is done by sending

AT*E2GPSCTL=X,Y,Z

to /dev/ttyACM1. Here

  • X can be 0 (NMEA stream turned off) or 1 (NMEA stream turned on)
  • Y can be an integer form 1 to 60, and sets the frequency of how often the card emit the NMEA sentences
  • Z can be 0 (DGPS is turned off) or 1 (DGPS is turned on)

so, to configure the GPSr to update every 5 seconds, and turn DGPS on, you would send

AT*E2GPSCTL=1,5,1

to /dev/ttyACM1. Once the GPSr is configured, we can get the NMEA stream on /dev/ttyACM2 by sending

AT*E2GPSNPD

to /dev/ttyACM2. Once you do that, /dev/ttyACM2 will no longer accept any new AT-commands. But you still can change the the behavior of the NMEA stream by sending the appropriate

AT*E2GPSCTL=X,Y,Z

to /dev/ttyACM1. Now you can read the NMEA stream by saying

cat /dev/ttyACM2

or better yet, start gpsd interface on /dev/ttyACM2.

Other thoughts

While "AT+CFUN=*" and "AT+CPIN=*" are pretty standard commands for wireless modems and are well-documented (e.g. here and here), it appears that the commands "AT*E2GPSCTL" and "AT*E2GPSNPD" are unique for Ericsson F3507g card. All credit for discovering them goes to N Z who left a comment in this thread. I imagine one could find them via a USB sniffer on a working Windows machine (or a Linux machine with Windows running in a virtual machine). Another way to get them it to try to look for "gps" string in Windows drivers. What is interesting, is that F3507g has a has a few other AT-commands with "GPS" substring (you can get all supported AT-commands by sending "AT*" to /dev/ttyACM1 after activating it with "AT+CFUN=1").

Models