Getting Telstra Turbo 3G Card aka Sierra Wireless AC875 Going in Linux (Ubuntu 6.06)

Written by James McDonald

July 25, 2007

Update: On Ubuntu 7.04 simply plug the card in and it is automatically detected. Use the normal network manager application to create a ‘dialup’ connection using /dev/ttyUSB0 as the device. The only weird thing is that you don’t need a username and password for the dialup connection you only have to add a bogus username so the application will save the connection.

I wrote this blog entry while connected to the internet via the Telstra 3G Turbo Card so you can say that it works.

The hardware was a Compaq nx7000 laptop.

I downloaded the ppp scripts from http://www.sierrawireless.com/faq/ShowFAQ.aspx?ID=601

I didn’t compile the sierra driver because I’m on Ubuntu 6.06 and the kernel(2.6.15-28-386) was older than what the above suggested(2.6.18 or newer).

This is roughly what I did

Prior to doing anything in Linux I removed the Security PIN code from the SIM card in Windows using the Watcher program and also made note of the APN which was “telstra.pcpack” however in the end I didn’t use it for the connection (it’s commented out in the gsm_chat script)

  1. Plug card in
  2. Issue lsusb command to identify it
  3. Bus 005 Device 002: ID 1199:6820 Sierra Wireless, Inc.

  4. Issue lsusb -v to grab idVendor and idProduct values
  5. idVendor 0x1199 Sierra Wireless, Inc.
    idProduct 0x6820

  6. create a /etc/turbocard.sh /etc/turbocard.sh script with the following contents
  7. #!/bin/sh
    /sbin/modprobe -r usbserial
    /sbin/modprobe usbserial vendor=0x1199 product=0x6820

  8. googled for a udev script udev script and save it in /etc/udev/rules.d as 51-3g-datacards.rules change it to have the correct vendor and product ids
  9. # Rules for hotplugging Cardbus 3G datacards
    SUBSYSTEM=="usb", SYSFS{idVendor}=="1199", SYSFS{idProduct}=="6820", RUN="/etc/turbocard.sh"
    KERNEL=="ttyUSB0", SYMLINK="modem", GROUP="dialout", MODE="0660"
    KERNEL=="ttyUSB2", GROUP="dialout" MODE="0660"

  10. If the above is setup properly you should be able to plug the card in and then run wvdialconf create and it will detect the modem.
  11. You can test for correct module loading with lsmod | grep usb you should see something like
    usbserial 31336 3
    usbhid 39904 0
    usbcore 130820 6 usbserial,ohci_hcd,usbhid,ehci_hcd,uhci_hcd

  12. Untar the ppp-scripts into /etc and mark ip-up.local and ip-down.local executeable using chmod +x
  13. edit the gsm scripts gsm script gsm chat script
  14. to bringe the connection up run pppd call gsm in a terminal with root privileges
  15. To stop the connection either CTRL+C in the terminal you started the connection in or run pkill pppd

If you do not want to have a terminal open with pppd running in it comment the “-detach” option in /etc/ppp/peer/gsm when you run “pppd call gsm” it will background itself and you can shut the terminal. Obviously you then need to kill pppd using kill or pkill pppd

When the connection goes down the 3G light on the modem goes red(I think), when the connection is active the light is blue(I think)

Problems:
Could not determine remote IP address: defaulting to 10.64.64.64 \
not replacing existing default route via 192.168.1.254

If you have an eth0 or other connection that is the default route the pppd script wont add a seemingly bogus default route of 10.64.64.64.

Workaround

With the pppd connection up delete the default LAN route manually:
route del default
and then add a default route to the wireless card:
route add default ppp0

Sample of what it should look like
route -n
Kernel IP routeing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.64.64.64 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0

/etc/resolv.conf isn’t updated with the correct info from the connection
Even though the downloaded pppd scripts contain the correct /etc/ppp/ip-up.local scripts with code to copy the /etc/ppp/resolv.conf contents to /etc/resolv.conf the scripts aren’t compatible with the Debian / Ubuntu world:

Script /etc/ppp/ip-up started (pid 7277)
Script /etc/ppp/ip-up finished (pid 7277), status = 0x1

The fix

edit /etc/ppp/ip-up.local and change the top code block from

if [ $# -eq 0 ]; then
exit 1
fi

to

if [ "$PPP_IFACE" = "" ]; then
exit 1
fi

and change the code to check for $PPP_IFACE instead of $1

if [ $PPP_IFACE = ppp0 ]; then
if [ -e /var/run/ppp/resolv.conf ]; then

Note: You will have to make a corresponding change to /etc/ppp/ip-down.local too

A workaround is simple manually copy /etc/ppp/resolv.conf /etc/resolv.conf whenever you bring the connection up.

cp /etc/resolv.conf /etc/resolv.conf.orig
cat /etc/ppp/resolv.conf > /etc/resolv.conf

Remember you may have to set it back to the orig one after you finish with the WWAN connection

Stopping and restarting the connection
If you kill the connection and then immediately restart sometimes the connection fails to restart. I found waiting a few moments usually allows it to work again.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.

You May Also Like…