Connecting to internet through your Reliance CDMA ZTE Modem in Ubuntu

| | 2 min read

One of our customers recently brought an Acer Aspire 3002NLC Laptop to install Ubuntu and to configure the laptop as a Samba server for his home networking. There was one more thing that he wanted to us to configure - that was internet through the Reliance Datacard. The card provided was ZTE MC315. Installing Ubuntu and configuring the rest of the applications were easy but the reliance datacard installation took some time. But once we figured it out, the steps involved were very simple.

When we inserted the card and check the debug messages we could see that the modem was detected and the driver was loaded successfully. But we were unable to dial and connect to the network. The card was working fine on the dual windows boot. Finally after twiddling through the suggestions given across different sites we figured out that we had to run

sudo setserial uart 16954
sudo setserial baud_base 38400

before trying to connect. Once we set these options for the serial port we ran sudo pppconfig which created the /etc/ppp/peers/reliance and /etc/chatscripts/reliance files which are given here for your reference.

# This optionfile was generated by pppconfig 2.3.17. 
# /etc/ppp/peers/reliance
#
hide-password 
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/reliance"
debug
/dev/ttyS3
115200
defaultroute
noipdefault 
#Your phone number as user
user "938xxxxxxx"
remotename reliance
ipparam reliance

usepeerdns
# This chatfile was generated by pppconfig 2.3.17.
# Please do not delete any of the comments.  Pppconfig needs them.
# /etc/chatscripts/reliance
# ispauth PAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
'' ATZ
# ispnumber
OK-AT-OK "ATDT#777"
# ispconnect
CONNECT \d\c
# prelogin

# ispname
# isppassword
# postlogin

# end of pppconfig stuff

There was a small problem in that we had to run the setserial commands every time we rebooted the system. We solved this also by copying it to a script and then added it to the startup scripts by putting it in rc.local. If you cannot get your connection to work in the exact same way you can use the following troubleshooting tip - get the uart value from dmesg output and then play with the baud_base until you hit a baud_base where the thing works. If you still have problems use the comment form below to ask your questions and we will try to help you with it.