Hacking MikroElektronika SmartG100 board and connecting to GPRS

I was testing a MikroElektronika SmartG100 board and was facing some issues to get its serial line working.

“Fortunately” many people suffered from same issue before me:


If you read all the threads, the conclusion is: “you need to supply an external 5V and GND in to connector CN2”. This is not for me!

Looking at SmartG100 schematic in the last pages of its manual I noticed there are two transistors BJTs for each signal (TXD, RXD, CTS and RTS) used as level shifter.

Then if I remove R5 I could connect my USB/Serial RXD pin to SmartG100 RXD signal, same apply to R14, removing it I could to connect USB/Serial CTS to it.

But for TXD I need to remove R10 and Q4 transistor and connect the USB Serial TXD pin to TXD signal. And same to RTS, removing R13 and Q6 I could to connect USB/Serial RTS pin to RTS signal.

Then I proceed!!! And the serial line worked and I can issue some commands in the minicom terminal:


Now, I could use wvdial to connect to the Internet!

Edit /etc/wvdial.conf:

$ vi /etc/wvdial.conf

[Dialer Defaults]
Phone =
Username =
Password =
New PPPD = yes

[Dialer tim]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+IFC=0,0
Init4 = AT+CGDCONT=1,"ip","tim.br"
Stupid Mode = 1
ISDN = 0
Phone = *99***1#
Ask Password = 0
Modem = /dev/ttyUSB0
Username = tim
Dial Command = ATD
Password = tim
Baud = 115200

Finally call wvdial to connect:

$ sudo wvdial tim
--> WvDial: Internet dialer version 1.61
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
--> Sending: AT+IFC=0,0
--> Sending: AT+CGDCONT=1,"ip","tim.br"
--> Modem initialized.
--> Sending: ATD*99***1#
--> Waiting for carrier.
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Fri Sep  4 18:24:42 2015
--> Pid of pppd: 11395
--> Using interface ppp0
--> local  IP address
--> remote IP address
--> primary   DNS address
--> secondary DNS address

P.S.: If you don’t want to use flow control, add “AT+IFC=0,0” to init strings, but wvdial source code needs to be modified because it uses flow control by default.

That’s all folks!