Telit UC-864-G 3G GSM GPS module for GNU/Linux

This page contains information on using the Telit UC-864-G module with GNU/Linux

WARNING: READING THIS PAGE IS ENTIRELY YOUR OWN RESPONSIBILITY.
IF YOU ARE ONE OF THESE PEOPLE WHO CANNOT TAKE RESPONSIBILITY FOR THEIR
OWN ACTION OR INACTION, PLEASE CEASE AND DESIST FROM READING THIS PAGE.
BY CONTINUING, YOU AGREE BOTH IMPLICITLY AND EXPLICITLY THAT YOU ARE
ENTIRELY RESPONSIBLE FOR YOUR OWN LIFE AND DECISIONS AND ON NO ACCOUNT
HOLD ANYONE ELSE RESPONSIBLE FOR YOUR DECISIONS, ACTIONS, OR FAILURE TO
TAKE ACTION.
TO REPEAT: IF YOU DO NOT UNDERSTAND OR DO NOT AGREE TO TAKE RESPONSIBILITY
FOR YOUR OWN DECISIONS, ACTIONS OR FAILURE TO TAKE ACTION, YOU MUST CEASE
AND DESIST FROM READING THIS PAGE, EFFECTIVE IMMEDIATE.


Telit UC-864-G Features

The UC-864-G has the following features:

From a hardware perspective, it's pretty much a "phone-without-the-phone",
(and likely has an ARM Embedded SoC CPU) and so has, through the 80-pin
connector, around 20 GPIOs for general-purpose use, battery charging
circuitry built-in, alarm wake-up circuitry, RS232, USB 2.0, two analogue
audio circuits (one for a headset, one for "speaker" use) and more.

From a software perspective, Telit UC-864-G modems are absolutely fantastic:
absolutely everything is documented online on Telit's web site, without
requiring an NDA.  Application notes, software guidelines, full AT commands:
everything.  Worth noting is that Revision 8 of the firmware supports GSM 07.10
multiplexing, so if the USB 2.0 interface cannot be used, then at least
standard multi-channeling can be done on the RS232 interface instead.

Future Plans and Revisions of this Document

This page's aims are to provide links to software and advice on how
to use the full capabilites of the UC-864-G.  At present, the HBP/D
Project which aims to make use of this module is in an early stage.  As the
project progresses, this page will be updated to contain HOWTOs on
interacting with the GPS, Digital Voice and other features of the module.

Preparation

The first most critical thing to do is to download and read
the documentation.  Failure to do so may result in you blowing up an expensive
module that doesn't deserve maltreatment.  For the sections in this page
that involve direct use of the module: as the module isn't in a nice
pretty box, but you obtained it as-is, you will naturally have a background in
electronics or have sufficient intelligence to proceed only once you have
acquired a background in electronics.

The second thing you should do is obtain a UC/CC/GC 864 Interface Board
which is also available from Sequoia.  This board
is typically plugged in to the EV2K evaluation kit, but can also be powered
up and operated, in a pinch, without it (saving £400) but requiring a bit
more fiddling about.

NOTE: If you prefer to get the EV2K module, then, realistically, you
don't need to read this page, any further.  You can in fact simply
follow Telit's documentation.

Oh - you should also get an appropriate Antenna.  and a USB "B" cable.
and a valid SIM card.  and have a 3G HSDPA connection and configuration
pre-tested, with that same SIM card, in advance.  A Huawei K3565 or
other USB 3G modem is recommended: they're about £40 on a Pay-as-you-Go
arrangement.  (Vodafone's 3G modem credit doesn't expire, which is nice,
but you pay £15 for only 1Gb.  Three.co.uk you pay £15 for 3Gb but it
expires after one month.  Both work well with this wvdial
configuration.  Choose your poison carefully...)

Lastly: you should read this page thoroughly several times before
proceeding, and make your own decision as to whether to proceed or whether
to do a proper job, instead.  If nothing else, reading the page several
times will give you a good idea about what it is that you need to do, in
advance, so that you don't have the module powered up and then leave it
alone to go do some more reading.  This would be a bad idea.  Have the
sequence of events clearly and unambiguously laid out, in advance,
including any emergency precautions such as fire extinguishers, knowing
where the cat and any valuable personnel in the building are so that you
can grab them on your way out.

The jerry-rigged method of starting up the UC-864-G

It has to be said that only the desperate, the foolhardy and those who like
running on cliff-edges in thunderstorms should attempt to reproduce these
results.  You proceed ENTIRELY AT YOUR OWN RISK.

Obtain three 1.5 volt AA batteries (DO NOT USE NI-CADs, NI-Mh etc. they have
different voltages), some wire and some sellotape.  Please note: what
you should be doing is using a special regulated DC power supply.
Tape the three batteries together (or, get a battery holder!), and, ensuring
that the wires are clearly marked +ve and -ve, and separated so that they don't
short the battery, tape only one of the wires onto the end of the
battery of three cells, leaving the other end nearby but taped up so
that it can't accidentally touch the end of the battery.  You should
be soldering the wires via a switch.  You should be completely
ignoring these instructions and doing a proper job, but you are, of course,
a person who takes full responsibility for their actions, and are proceeding
at your own initiative.

READ CAREFULLY the Telit UC-864 Hardware User Guide.
Read section 5.1 "Powering on" and Section 4.1 "Pin OUT", with extreme
care and attention.  Read section 5.6.1.2 which says "Module needs 3.8 volts".
Note and take responsibility for the fact that 3 times 1.5v is not 3.8v

READ CAREFULLY the Telit EVK2 UC-864-E Interface Board Guide.
Read it fully with extreme care and attention.  Re-read section 2.7 and
Section 3.

Note that Pins 1-4 are "VBATT"; that Pins 5-8 are "GND", and Pin 15 is "ON/OFF".
This is on the Interface board "CON103" connector which, if you are looking
at the board in the same orientation as shown in Sections 1.3 and 2 of
the Interface Board guide, you can identify as being the 40-pin connector
on the RIGHT.  (Note: It is entirely YOUR responsibility to
confirm all this information).

So, basically, it would appear that the following procedure should
result in power-up and operation of the module:

That's the theory: how does it work in practice?  Actually... quite well!
It's just that normally you're supposed to use proper equipment...

So: ignoring that, and carrying on, push the wire that you marked and
designated as "+ve" into any of PIN 1-4 of "CON103" on the Interface
Board.  You can tell PIN 1 because it's marked with an arrow on both
sides of the PCB.  DO double-check and triple-check what you are
doing, here.  Get into the habit of speaking out loud, counting even from
"1", confirming that you come up with the right number and the right pin,
each time, even when connecting to "PIN 1".

MAKE SURE when doing this that the other wire is not flapping
freely; that it cannot touch anything on the PCB; that it is NOT
connected to the battery or PSU; best of all that it is TAPED UP.

BEFORE PROCEEDING, glance, re-glance, double-check and triple-check
the pin-out diagram in the documentation.

In order to keep the wires as far apart, to ensure that they don't
short-circuit, PIN 1 or 2 is recommended for the "+ve" wire.  Note that
really, all four pins should be connected, which you can do by
soldering on an extra three bits of wire, or by obtaining some proper
pin-connectors from an electronics components store.  If you feel more
comfortable doing that: do it, don't mess about.  

Check that the wire went firmly into the socket: if there are any strands
loose, take the wire out, and either solder it or otherwise ensure
that the strands go in.  Repeat the procedure if necessary.

Next: double-check that the other end is disconnected from the
battery, and cannot in any way accidentally connect.  You are about to
connect the wire designated as "-ve" to the PCB. double and triple check 
that you are connecting it to PIN 5-8 of "CON103", by re-reading, twice,
the pin-out diagram in the documentation.

Ideally, again: you should be connecting all four pins to GND, but should
you choose to connect only one, make sure it is PIN 7 or 8, to ensure that
the wire is as far away from the "+ve" one.  Again, check it is secure and
that no stray strands are flapping about.

Next, you should get some tape and wrap it around the connector and the
wires.  What you are looking to achieve is to have tape on both
sides of the two wires, so that there is clearly-delineated air-gap
between any bare copper, and that there is zero chance of a short circuit.
You can, with practice, just use one piece of tape to separate the wires
and also secure them to the board, but if you prefer, actually place two
separate pieces of tape in between the wires, one around each.

If at any time you feel that the wires have moved, become loose or insecure,
you should STOP, remove the wires and start again.  It is imperative
that a clean, secure connection is attained, to ensure smooth power supply,
especially if only one wire is used.  The purpose of having four pins is to
ensure that a single pin is not overloaded, due to the fact that there is
a limited amount of copper between the pin and the PCB.  Telit's engineers
went to the trouble of providing four pins, and you are ignoring their
experience and expertise at your own risk.

Once the two wires are secure and secured, the board needs to be turned
over so that you will be able to watch the LED, and also to gain access
to the "CON103" from the top, in order to "switch on".  You will also need
to arrange the power wires so that they do not come out, propping the board
up as necessary, whilst at the same time observing those anti-static
precautions that you've read all about.

For the "power on" phase, you will need to prepare a second short piece of
wire: anything will do, approximately 3in long is good.

Powering Up

This is your last chance to back out if you feel uncomfortable about proceeding.
You've taken the following steps, precautions, and accepted the consequences:


If you have done all that, then you are ready to attempt a power-up.

First: remove the tape that you put on the wire, close to the disconnected
battery terminal.  Scrunch the wire up into a ball, double and triple-check
that the wire does in fact lead to the right point on "CON103", and then,
ready with some sellotape to secure it, connect the wire.  Congratulations:
you've now applied power.

Nothing should have happened: this is a good sign.

Next, you will need to go through the "power-on" sequence, which you should
have read about in section 5.1 of the UC-864-G Hardware reference Guide needs
1 second of "shorting to ground", and have read in the Interface Board Guide
that that means connecting PIN 15 of "CON103" to any "GND" pin, for one second.
Looking carefully at Section 2.7 of the Interface Board Guide, pins 11 to 14
are all also "GND".

So - that's worth trying.  COUNT CAREFULLY from the PIN 1 marked with
an arrow.  Count OUT LOUD and do the same procedure three times, to
confirm that the correct pin is arrived at.  Use visual cues on the PCB to
verify.  Look closely at the TOP VIEW diagram in section 1.3 of the Interface
Board Guide: PIN 15 is the left-hand row, at the same height as the two holes
below the word "RESET".

Then, PIN 13 and PIN 14 being GND, directly above, you know that if you hold
a wire between PIN 15 and either of these two pins for one second, that should
indicate "power on".

So - using the USB connector to steady your hand, take several deep breaths,
confirm, check, double check and triple check what you are about to do, and
then, with extreme care so as not to touch anything else, hold one end
of the wire against PIN 15 and the other against any of 11, 12, 13 or 14,
for one second.  Count out loud, "Zero, One" and carefully disconnect.

You should be rewarded with the LED coming on, and flashing appropriately.
Section 2.4 of the Interface Board Guide shows how to interpret it.

Congratulations: the board is now powered on, and, like a runaway train,
there's no safe way to switch it off.

If you had decided wisely instead to do a decent job, you would have wired
up a switch instead, with proper pins, connecting it to the "CON103" properly,
and would be able to press and hold the switch to indicate "power off".

Advance Preparation for using the module

If you also disregarded the advice about connecting pins 1-4 to VBATT and
pins 5-8 to GND, and you actually make an HSDPA connection, you probably have
about five minutes before the pins become too hot to sustain power to the
board.  So - either go back and do a proper job, or accept the consequences.
If you haven't read this section yet, but are sitting there with the modem
powered on, wondering what to do, DISCONNECT THE BATTERY right now by
undoing the sellotape (or, cut ONE power wire ONLY, or, if you've
actually decided to do a decent job, press the "power" button that you sensibly
set up).

As you carefully read the Telit documentation in advance, you will be aware
of the consequences of not going through the "power off" procedure
(such as described in section 5.3 of the Hardware User Guide, and other
sections).  And, you will have accepted these consequences.

Before you began, you clearly noted that it said, above, that you should
have a pre-prepared and pre-tested 3G HSDPA configuration.  This wvdial
configuration works with vodafone or three, by issuing the command
"wvdial three" or "wvdial vodafone" appropriately.  But, you've pre-tested
all that, and have an appropriate application, already, because you followed
the advice to get a 3G USB modem already up-and-running.  And, so, you already
have a kernel greater than approximately 2.6.26 or so, which supports 3G USB
modems.

Also, you should have either recompiled the Linux kernel's usbserial
module and hacked in the Telit UC-864-G vendor and product ID, or just
added this as the contents of /etc/modprobe.d/telit-3g:

install telit-3g modprobe usbserial debug=0xffff vendor=0x1bc7 product=0x1004

Note: Depending on what GNU/Linux Operating System you are using, you may need
to run the "update-modules" script or equivalent, to get the above modprobe
fragment into the "system".

If you already had usbserial loaded, you should unload it with "rmmod usbserial"
(you might have to do "rmmod option" first) and then trigger the special
loading options, above, with "modprobe telit-3g".

Having done this all, you should also have already connected the USB-B cable
up (J102), and you should already be aware that it says at the bottom of
Section 2.6, in small print, "The USB mini-AB connector is not available
at the moment" so you didn't go out and buy an AB cable, you got a USB-B
type instead.

Firing up a 3G connection

As you are an experienced GNU/Linux sysadmin, and you had already followed
the advice about getting a 3G USB modem and configuring it, this next part
should be an absolute breeze.  You can keep an eye on /var/log/messages
to double-check that, when the module powered up, four (4) USB Serial
devices appeared.  Typically these will be /dev/ttyUSB0 to /dev/ttyUSB3
and they should be exactly the same as when you plug that 3G USB
modem in.

Assuming that you actually see messages saying that the Telit modem is
operational, you can use wvdial to start a ppp connection.  Again, because
you have done this before (but with the 3G USB modem), you know which log
files to watch.

WARNING: unless you connected all four power pins on "CON103"
and all four GND pins, you only have a few minutes before the single pins
are unable to cope with the current load and become too hot.  This will
typically be only between two (2) to six (6) minutes, after which time
the module will likely become unstable and crash.

You should consider avoiding this by doing a proper job, and/or only allowing
the module to make a 3G connection for one or two minutes at a time.

Press Ctrl-C after you've rapidly carried out the tests you intended which
confirm that there is in fact a live connection to the Internet, and then
power down the module.

If you want to verify that everything's ok, power up the module and
repeat the test.  This will confirm for you that it wasn't a fluke:
it did actually work.

Clearing Up

Do not relax at this point: you now need to ensure that the module is
safely put away and disconnected from its Power supply.  Firstly, ensure
ESPECIALLY that the LEDs are not indicating that the module is still
talking to the 3G HSDPA Network (Section 2.4 of the Interface Board Guide).
You should have terminated pppd: you can if you want try "rmmod usbserial"
again, just to make sure.  "killall -9 pppd" as root should also be
considered.

You will have observed and read the instructions in Section 3 of the
Interface Board Guide, and you will follow the advice, there,
about power-on and power-off sequences.

If you are absolutely desperate, disconnect the USB cable, even if
it's still connected to the Internet.  That should kill the 3G connection.

Then, you should either press the power-off button that you created, or
go through the same procedure of connecting the wire across PIN 15 for
one second on "CON103".

Then, you can disconnect the power from the battery, by undoing the sellotape,
cutting ONE power wire ONLY or, if you were sensible, flicking
that power switch.  Stow the battery a safe distance from the module, and
make sure that the wires are secured where they will not touch anything.
Remember: the wires are still connected to the module at this point,
and so the module could be damaged by static if you do not take care.

So - you still cannot rest: you must now ensure that there is no accidental
chance that the power will re-connect by mistake.  The safest way to do that
is to waste some sellotape and disconnect the cable from the "CON103".
KEEP THE BATTERY AWAY FROM THE CABLE whilst messing about at the
board end.

Stow the board in its anti-static bag.

Now you can relax.

Celebrate!

Congratulations: you just successfully tested a very expensive 3G modem
with nothing more than bits of wire and sellotape.  Next time you decide
to read some random advice on the Internet, ignore it entirely and do a
proper job.

If you didn't get here, because you blew something up: tough.  You've
just successfully wasted a very expensive 3G modem.  Next time you decide
to read some random advice on the Internet, ignore it entirely and do a
proper job.

Either way, you learned a valuable lesson.

References