USB-gLINK – Industrial Grade Open Source Hardware LTE cat 4 module for IoT with Navigation and LiPo battery support is in stock!


USB-gLINK is Open Source Hardware Industrial grade -25+85ºC LTE cat 4 module optimized for IoT applications with integrated LiPo Battery power supply charger and Navigation. USB-gLINK operate on all GSM frequencies with 2G 3G 4G/LTE protocols, so you can use it worldwide.

USB-gLINK will work with OLinuXino OSHW Linux Computers, Beaglebone and Raspberry Pi and any other PC running Windows, Linux or Android.

The LTE speed is 150Mbps downlink and 50Mbps uplink, but is backward-compatible with existing EDGE and GSM/GPRS networks. This allows USB-gLINK to connect to any existing 2G, 3G and 4G network.

Inside USB-gLINK there is build in navigation which supports: GPS, GLONASS, BeiDou/Compass, Galileo and QZSS.

The networking supported protocols are : TCP / UDP / PPP / FTP / HTTP / NTP / PING / QMI / NITZ / SMTP / MQTT / CMUX / HTTPS / FTPS / SMTPS / SSL / MMS / FILE.

USB-gLINK can operate on these bands: B1 / B2 / B3 / B4 / B5 / B7 / B8 / B12 / B13 / B18 / B19 / B20 / B25 / B26 / B28 / B38 / B39 / B40 / B41, which covers every mobile operator anywhere in the world. This allow your solution based on USB-gLINK to be sold globally without hardware changes.

There are number of carriers who already approved the module used in USB-gLINK: Deutsche Telekom (Europe), Verizon/AT&T/Sprint/U.S. Cellular/T-Mobile (North America), Telus/Rogers (Canada)

These regulatory are passed: GCF (Global), CE (Europe), FCC/PTCRB (North America), IC (Canada), Anatel (Brazil), IFETEL (Mexico), SRRC/CCC/NAL (China), KC (South Korea), NCC (Taiwan, China), JATE/TELEC (Japan), RCM (Australia & New Zealand), FAC (Russia), NBTC (Thailand), IMDA (Singapore), ICASA (South Africa)

MOD-GPS back in stock, now with new chipset, support both GPS and GLONASS, better sensitivity, better price


MOD-GPS is back in stock and got better. Now uses Ublox 7 chipset with 56 channel receiver, better sensitivity -162dBm, better voltage operation 2.7-5.0V. Less power consumption 38 mA typical and beside GPS it now supports also GLONASS standard.

comes with same magnet type antenna:


and now you can safely connect it to OLIMEXINO-328 (Arduino 5V board)!

GPS Logger with Google Maps viewer made with A13-OLinuXino and MOD-GPS


A13-OLinuXino-WIFI can connect directly to MOD-GPS via UEXT connector, also A13-OLinuXino-WIFI have LiPo battery connector and can charge Lithium Polymer batteries and work without external power supply just on battery.
This allow us to make very nice GPS logger demo with just A13-OLinuXino-WIFI + LiPo battery + MOD-GPS

The code is available at GitHub:

With detailed step by step instructions how to setup the board to work as logger and how to upload to Googlemaps your path.

You can see on the picture above how one of our developers came to work with his bike carrying A13-OLinuxino+MOD-GPS in his backpack :)

Connecting GPS to OLinuXino and RaspberryPI


MOD-GPS is very sensitive, low power GPS SirfStarIII module with UEXT connector and can be connected directly to any of our boards. It sends NMEA messages with 19200 bps.

To connect it to OLinuXino is very easy just plug it to UEXT connector, to connect to RaspberryPI you will need RPI-UEXT adapter.

The Project files are at GitHub:

MOD-GPS is with UART connection, as same UART is used in OLinuXino and RaspberryPI for console to work with MOD-GPS you should first disable the console and connect to OLinuXino or RaspberryPI via ssh.

In OLinuXino you should do this:

#vi /etc/inittab
Comment the line: “T0:23:respawn:/sbin/getty -L -a root ttyS0 115200 vt102”
Save the file and reboot.
!!!Before rebooting you should have working SSH

in RaspberryPi you should do the same but there the console UART name is ttyAMA0

After the reboot login with ssh and connect MOD-GPS to OLinuXino or RaspberryPI, then compile and run it:

#make clean
#./MOD-GPS --tty:"/dev/ttyXXX"

for OLinuXino ttyXXX is ttyS0 for RaspberryPi ttyXXX is ttyAMA0

if everything is OK you should see this picture:


congratulations now you have GPS to your linux board 🙂

STELLARIS-UEXT adapter for Stellaris launch pad in stock


STELLARIS-UEXT is Texas Instruments Stellaris Launchpad to UEXT adapter.

We have prepared demo code for MOD-GSM, MOD-MP3, MOD-GPS, MOD-TC, MOD-SMB380, MOD-IRDA, MOD-LCD3310 so you can interface these modules from your Stellaris Launchpad.

As Stellaris MCU have two SPI, I2C and UARTs we made the adapter with two separate UEXT connectors so you can connect two independant UEXT modules to it. Each UEXT have power up/down control with MOSFET so you can power up and down UEXT modules connected.

Freeday Dree board Quiz issue #15 prize is MOD-GPS


MOD-GPS is low cost UEXT module which add GPS tracking to all of our boards with UEXT.

MOD-GPS is based on high sensitive SirfStar4 technology and locks to 12 satelites allowing preciese location tracking.

We have examples for using MOD-GPS with many of our boards including Duinomite BASIC computers.

You have chance to win this module if you participate in our Quiz.
Today at 17.00 o’clock our local Bulgarian time (GMT+3) we will post on Twitter our question.
You have one hour to reply to our tweet with the correct answer.
At 18.00 o’clock we will count the correct answers and ask to generate random number in range then anнounce the winner and ship the board by airmail next Monday.

Good luck!



PIC32-PINGUINO is Arduino like board which works with Pinguino IDE.

Several new demo examples are uploaded on our web

1. MOD-GPS demo example with our GPS module

2. MOD-CC2450 demo example with our low energy Bluetooth module (still not released on our web 🙂 )

3. SHIELD-EKG-EMG demo example how to interface this shield to Pinguino and measure pulse and muscle activity

4. MOD-MP3-X demo example how to play MP3 files with Pinguino

5. Sending and receiving calls and SMS with MOD-GSM and Pinguino

6. Connecting to Bluetooth enabled devices with MOD-BT and Pinguino

7. Interfacing MOD-ZIGBEE-PIR with Pinguino

8. MOD-RTC real time clock interfacing with Pinguino

9. Reading 13.56Mhz RFID tags with Pinguino and MOD-RFID1365-BOX

all examples have readme.txt inside which explains the functionality

How to use GPS with DuinoMite


This article is publishing with the help of my friend Mick Gulovsen who edited it and helped me translating it from it’s original Bulgarian-English to Queen’s English 🙂

Global Positioning System (GPS) is a satellite based global navigation system that provides location and time information in all weather, anywhere on (or near) Earth, where there is an unobstructed line of sight to four or more GPS satellites.

You can read more about how GPS was created and how it works in Wikipedia.

Also some theory is available in this web site:

It’s very easy to use GPS with DuinoMite using Olimex’s UEXT GPS module ‘MOD-GPS’ which interfaces using DuinoMite’s UEXT connector.

MOD-GPS is based on the SiRF StarIII chipset which provides high precision, low power and high sensitivity, so MOD-GPS is even able to lock onto satellites inside buildings.

MOD-GPS output is via serial 19200 bps 8bits,1 stop bit, No Parity.

It is easy to access MOD-GPS data with DuinoMite using MMBasic, for example, you can view MODGPS output using this small program:

10 OPEN “COM3:19200” AS #5
20 PRINT INPUT$(1,#5);
30 GOTO 20

Running this code will generate something like this:


This will continue forever, each message starts with $Gpxxx then some data separated with “,” and ends with *xx which is the checksum in Hex.

Some messages contain several ,,, i.e. empty parameters.

When the GPS receiver is started for the very first time or after it was moved any distance without being powered the GPS receiver will have lost connection to some satellites, it takes time to lock onto them again (called `cold start time’ and is usually about 1 minute).

If you are inside a building or the signal is weak due to other obstacles the GPS receiver may not lock to some satellites at all, MOD-GPS can lock onto 12 satellites, but even 4 are enough to calculate it’s correct location.

There are 4 types of messages which MOD-GPS sends:


These messages are in NMEA0183 format and the prefix $GP means that the message is ordinated from the GPS receiver. has an explanation of the different NMEA messages.

RMC – Recommended Minimum Essential GPS Data.


let’s decode our message:

$GPRMC – message ID
192840.000 – 19:28:40 UTC time stamp
A – Status A=active or V=Void
4208.3343,N – Plovdiv Latitude 42 deg 08.3343′ N
02445.0342,E – Longitude 24 deg 45.0342′ E
0.00 – Speed over the ground in knots
37.14 – Track angle in degrees True
211111 – Date – 11th of November 2011
(empty field) – Magnetic Variation
(empty field) – Magnetic Variation direction
*51 – The checksum data, always begins with *

With this message we get information about time, date, our location and our speed, the speed is calculated very precisely and you can even calibrate your car or motorcycle speedometer with the value read by the GPS, as the car’s mechanical speedometers usually have about +-5% error.

This immediately leads me to an interesting project: Car performance logger. Having the change of speed of your car and the time, you can calculate the acceleration, and if you know the weight of your car you can also calculate the moment power as P=A*m i.e. you can monitor and log exactly how much horsepower or kw are used when your car accelerates.

GGA – Essential 3D Location Fix Data.

Let’s decode our message:

$GPGGA – Global Positioning System Fix Data
192839.000 – Fix taken at 19:28:39 UTC
4208.3343,N – Latitude 42 deg 08.3343′ N
02445.0342,E – Longitude 24 deg 45.0342′ E
1 – Fix quality: 0 = invalid
1 = GPS fix (SPS)
2 = DGPS fix
3 = PPS fix
4 = Real Time Kinematic
5 = Float RTK
6 = estimated (dead reckoning) (2.3 feature)
7 = Manual input mode
8 = Simulation mode
07 – Number of satellites being tracked
1.5 – Horizontal dilution of position
171.8,M – Altitude, Meters, above mean sea level
37.1,M -Height of geoid (mean sea level) above WGS84 ellipsoid
(empty field) – time in seconds since last DGPS update
(empty field) – DGPS station ID number
*56 – the checksum data, always begins with *

GSA – GPS DOP and active satellites.

This sentence provides details on the nature of the fix. It includes the number of the satellites being used in the current fix and the DOP.
DOP (dilution of precision) is an indication of the effect of satellite geometry on the accuracy of the fix.
It is a unit-less number where smaller is better. For 3D fixes using 4 satellites a 1.0 would be considered to be a perfect number, however for multi-satellite fixes it is possible to see numbers below 1.0. There are differences in the way the PRN’s (Pseudorandom Noise) are presented which can affect the ability of some programs to display this data. For example, in the example shown below there are 5 satellites in the solution and the null fields are scattered indicating that the almanac would show satellites in the null positions that are not being used as part of this solution. Other receivers might output all of the satellites used at the beginning of the sentence with the null fields stacked up at the end.
This difference accounts for some satellite display programs sometimes, not being able to display the satellites being tracked. Some units may show all satellites that have ephemeris data without regard to their use as part of the solution but this is non-standard.


let’s decode our message :

$GPGSA – Satellite status message
A – Auto selection of 2D or 3D fix (M = manual)
3 – 3D fix – values include: 1 = no fix
2 = 2D fix
3 = 3D fix
07,23,20,10,13,08,04 – PRNs of satellites used for fix (space for 12)
3.1 – PDOP (dilution of precision)
1.5 – Horizontal dilution of precision (HDOP)
2.7 – Vertical dilution of precision (VDOP)
*3A – the checksum data, always begins with *

GSV – Satellites in View

Shows data about the satellites that the unit might be able to find based on its viewing mask and almanac data. It also shows current ability to track this data. Note that one GSV sentence only can provide data for up to 4 satellites and thus there may need to be 3 sentences for the full information.
It is reasonable for the GSV sentence to contain more satellites than GGA might indicate since GSV may include satellites that are not used as part of the solution. It is not a requirement that the GSV sentences appear in sequence.
To avoid overloading the data bandwidth some receivers may place the various sentences in different samples since each sentence identifies which one it is.
The field called SNR (Signal to Noise Ratio) in the NMEA standard is often referred to as signal strength. SNR is an indirect but more useful value than raw signal strength.
It can range from 0 to 99 and has units of dB according to the NMEA standard, but the various manufacturers send different ranges of numbers with different starting numbers so the values themselves cannot necessarily be used to evaluate different units.
The range of working values in a given GPS will usually show a difference of about 25 to 35 between the lowest and highest values, however 0 is a special case and may be shown on satellites that are in view but not being tracked.


$GPGSV – Satellites in view
3 – Number of sentences for full data
1 – sentence 1 of 3
11 – Number of satellites in view
13 – Satellite PRN number
72 – Elevation, degrees
323 – Azimuth, degrees
37 – SNR – higher is better
(for up to 4 satellites per sentence)
*78 – the checksum data, always begins with *
The three messages contain the info for all 12 satellites.


The following code reads RMC message and extract the time, date, latitude, longitude

10 CLS
30 OPEN “COM3:19200” AS #5 ‘open UEXT UART at COM3
40 IF NOT EOF(#5) THEN 60 ‘if something is received
50 GOTO 40
60 C$=INPUT$(1,#5) ‘get character
70 IF C$ = CHR$(10) THEN 100 ‘until LF is received
80 MSG$=MSG$+C$ ‘store in MSG$
90 GOTO 40
100 ‘LOCATE 0,100: ? MSG$ ‘used for debug
110 IF LEFT$(MSG$,6) = “$GPRMC” THEN 140 ‘wait for RMC message
120 MSG$=””
130 GOTO 40
140 LOCATE 0,100: PRINT MSG$ ‘RMC message received
150 LOCATE 0,20: PRINT “UTC TIME: “;
160 A$ = MID$(MSG$,INSTR(MSG$,”,”)+1)
170 PRINT MID$(A$,1,2);”:”;MID$(A$,3,2);”.”;MID$(A$,5,2)
180 GOSUB 500
190 GOSUB 500
200 LATITUDE$ = LEFT$(A$,INSTR(A$,”,”)-1)
220 GOSUB 500
230 NS$ = LEFT$(A$,1)
250 GOSUB 500
260 LONGITUDE$ = LEFT$(A$,INSTR(A$,”,”)-1)
280 GOSUB 500
290 EW$ = LEFT$(A$,1)
310 GOSUB 500
320 SP$ = LEFT$(A$,INSTR(A$,”,”)-1)
340 GOSUB 500
330 GOSUB 500
340 LOCATE 0,30: PRINT “UTC DATE: “;
350 PRINT MID$(A$,1,2);”-“;MID$(A$,3,2);”-20″;MID$(A$,5,2)
360 GOTO 120
500 A$ = MID$(A$,INSTR(A$,”,”)+1) ‘skip to next ‘,’