Using the Sierra mc8755 WWAN card under linux
From Foomagic
The Sierra mc8755 is a mini-pcie card but is seen by the linux kernel as a serial device attached to the USB controller. In Australia, this card is locked to vodafone, and to other carriers in other countries. You can read about my unlocking experience here. Previous to recent kernels, you had to supply the usbserial driver with the vendor and product id of the card, and it would then be seen as /dev/ttyUSB0. Recent kernels, (I am not sure when the driver was added, and am too lazy to find out) have a sierra module which doesn't need any additional options at module load. If you dont have the sierra module, you can find your product id from lsusb, heres my output.
Bus 002 Device 005: ID 1199:6804 Sierra Wireless, Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x1199 Sierra Wireless, Inc. idProduct 0x6804 bcdDevice 0.01 iManufacturer 1 Sierra Wireless, Incorporated iProduct 2 Mini Card iSerial 0 bNumConfigurations 1 ---snip---
From that output, you can see the Vendor id is 1199 and product id is 6804, now we just have to feed that info to usbserial. Firstly unload the module and then give it the options above and you should see some output like this in dmesg
modprobe -r usbserial modprobe usbserial vendor=0x1199 product=0x6804 #dmesg output as follows usbcore: registered new interface driver usbserial drivers/usb/serial/usb-serial.c: USB Serial support registered for generic usbserial_generic 2-1:1.0: generic converter detected usb 2-1: generic converter now attached to ttyUSB0 usb 2-1: generic converter now attached to ttyUSB1 usb 2-1: generic converter now attached to ttyUSB2 usbcore: registered new interface driver usbserial_generic drivers/usb/serial/usb-serial.c: USB Serial Driver core
If you dont see it in lsusb or when you load the usbserial module, check to make sure its enabled in the bios. Another thing to check is that the card is enabled in /proc. If you have any thinkpad utilities installed, or have configured your thinkpad function keys, it may be disabled. The light for mine comes on as soon as the laptop boots (which is quite annoying) To enable or disable the card just do the following
#First make sure thinkpad-acpi is loaded modprobe thinkpad-acpi echo enable > /proc/acpi/ibm/wan echo disable > /proc/acpi/ibm/wan
You can cat that file to see if its enabled or disabled. Now that we have the modules loaded, and the card is seen by the kernel, its just a matter of using your favourite dialler to set up the connection and connect. I'll show my wvdial.conf in this page, but using pppconfig or any of the gui tools should be the same. running wvdialconfig should detect the modem and give similar output to the following.
pilsner:~# wvdialconf Editing `/etc/wvdial.conf'. Scanning your serial ports for a modem. Modem Port Scan<*1>: S0 S1 S2 S3 WvModem<*1>: Cannot get information for serial port. ttyUSB0<*1>: ATQ0 V1 E1 -- OK ttyUSB0<*1>: ATQ0 V1 E1 Z -- OK ttyUSB0<*1>: ATQ0 V1 E1 S0=0 -- OK ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK ttyUSB0<*1>: Modem Identifier: ATI -- Manufacturer: Sierra Wireless, Inc. ttyUSB0<*1>: Speed 9600: AT -- OK ttyUSB0<*1>: Max speed is 9600; that should be safe. ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK WvModem<*1>: Cannot get information for serial port. ttyUSB1<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud ttyUSB1<*1>: ATQ0 V1 E1 -- ~ ttyUSB1<*1>: failed with 9600 baud, next try: 9600 baud ttyUSB1<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up. WvModem<*1>: Cannot get information for serial port. ttyUSB2<*1>: ATQ0 V1 E1 -- OK ttyUSB2<*1>: ATQ0 V1 E1 Z -- OK ttyUSB2<*1>: ATQ0 V1 E1 S0=0 -- OK ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK ttyUSB2<*1>: Modem Identifier: ATI -- OK ttyUSB2<*1>: Speed 9600: AT -- OK ttyUSB2<*1>: Max speed is 9600; that should be safe. ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK Found a modem on /dev/ttyUSB0. Modem configuration written to /etc/wvdial.conf. ttyUSB0<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0" ttyUSB2<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
Now open up your wvdial.conf file and edit it and change a few things. This will be different depending on your providor of course (like APN and whether a username is needed) The following allows me to connect to the Telstra mobile network in Australia.
[Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,"IP","telstra.internet" Username = user Password = pass Phone = *99# New PPPD = yes Modem Type = Analog Modem Stupid Mode = 1 CarrierCheck = No Check DNS = 0 Auto DNS = 1 Dial Command = ATD Modem = /dev/ttyUSB0 ISDN = 0 Baud = 9600
(note, a username and password is not needed, but pppd will complain if the field is empty) And finally, running wvdial should give similar output to as below
pilsner:~# wvdial --> WvDial: Internet dialer version 1.56 --> Cannot get information for serial port. --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 OK --> Sending: AT+CGDCONT=1,"IP","telstra.internet" AT+CGDCONT=1,"IP","telstra.internet" OK --> Modem initialized. --> Sending: ATD*99# --> Waiting for carrier. ATD*99# CONNECT --> Carrier detected. Starting PPP immediately. --> Starting pppd at Thu Dec 13 21:01:21 2007 --> Pid of pppd: 7687 --> pppd: [06][08] --> Using interface ppp0 --> pppd: [06][08] --> pppd: [06][08] --> pppd: [06][08] --> pppd: [06][08] --> pppd: [06][08] --> pppd: [06][08] --> pppd: [06][08] --> pppd: [06][08] --> Authentication (CHAP) started --> pppd: [06][08] --> pppd: [06][08] --> pppd: [06][08] --> Authentication (CHAP) successful --> pppd: [06][08] --> pppd: [06][08] --> local IP address 10.237.169.3 --> pppd: [06][08] --> remote IP address 10.64.64.64 --> pppd: [06][08] --> primary DNS address 203.50.2.71 --> pppd: [06][08] --> secondary DNS address 139.130.4.4 --> pppd: [06][08] --> pppd: [06][08] --> Script /etc/ppp/ip-up run successful --> Default route Ok. --> Connected... Press Ctrl-C to disconnect
This card doesn't support HSDPA on the 850MHz band that telstra runs its NEXTG service on, so if you are outside a major area, you will get EDGE or gprs speeds. I was recently in a small country town and getting 20KB/S download speeds, which isn't too shabby, and certainly a lot more usable for web browsing than dialup. Apparently also, if you are using prepaid, you wont get HSPDA on the 2100MHz band in the major capitals either, but you need to ring telstra to put the codes on your service or something. This information is referenced from this article (see the bottom of the article) I need to confirm this myself, but I can confirm that I am only getting 24KB/s in Perth at the moment. Will ring telstra to get clarification on this.
Next job is to upgrade the card to an mc8775 so that I can get HSPDA on the 850MHz band. Have an unloacked AT&T sierra 875u in the post that I am hoping to rip the card out of and place in the thinkpad if the bios will let me. (A bit pessimistic on this one, but hopefully there is some sort of workaround)
Edit: The mc8775 from the 875U usb modem seems to be a little different than the standard mini-pcie cards, as the OS does not see it. I originally thought this was the bios causing this, but it appears its some sort of problem with the card. If you are thinking of buying on to put in your laptop, hold off a bit unless you know how to get the card to work.
