Sierra Wireless AirCard 555 on OS X

This page details how I managed to get my Verizon 1xRTT service working with an AirCard 555 on a Powerbook G4 running OS X. Unfortunately, I am no longer maintaing this driver, as I have upgraded to the AirPrime 5220, i.e., Verizon's 1xEV-DO card. For an AirPrime driver check out the page John Bellardo put together. Because I no longer own a 555 card, I'm afraid I cannot provide any support or guarantees. If you're interested in that, I understand Stretched Out Software is happy to take your money.

If you're interested in stepping up to EVDO, you can find all sorts of information, including OS X compatible hardware, here.

Step 0: Activate the AirCard

My card came pre-activated. I don't know how to activate the card, but I'd imagine you'll need to pop it into a Windows box for this.

Step 1: Download/compile a driver

The AirCard contains a 16550 UART, which Apple supplies a driver for. Unfortunately, the card does not normally identify itself as a serial port. To get around that, I hacked up the Apple driver to replace the card's CIS data with serial port CIS information I found on the net.

You can download pre-built binaries for both Jaguar and Panther 10.3.0-2 or 10.3.4-6. After downloading and unpacking the file, proceed to Step 2. The Jaguar binary was compiled for OS X 10.2.8; I don't know if it will work with other versions.

If you prefer, you can follow the simple directions below to build your own from source with the supplied patch. If you haven't done so already, you'll need to install the OS X Developer tools. In particular, you're going to need Apple's Project Builder to compile the driver.

Jaguar: Download the Apple16x50Serial-10.6 driver source from Apple and apply this patch. To do so, run the patch command from the parent directory of the source code.

% patch -p0 < aircard555.patch
patching file Apple16X50Serial/Apple16X50PCCard.cpp
patching file Apple16X50Serial/Apple16X50Serial.pbproj/project.pbxproj

Panther (10.3.0-2): Download the Apple16x50Serial-13 driver source from Apple and apply this patch instead.

% patch -p0 < aircard555-panther.patch
patching file Apple16X50Serial/Apple16X50PCCard.cpp
patching file Apple16X50Serial/Apple16X50Serial.pbproj/project.pbxproj

Panther (10.3.4-6): (Thanks to David LaPorte) Download the Apple16x50Serial-16 driver source from Apple and apply this patch.

Using Project Builder, build the Apple16X50PCCard target. If all goes well, you should have a directory called Apple16X50PCCard.kext in the build subdirectory. This is your new driver.

Step 2: Install the driver

Once you've got the driver (Apple15X50PCCard.kext), you can load it using kextload:
% sudo chown -R root.wheel Apple16X50PCCard.kext
% sudo kextload Apple16X50PCCard.kext
You'll probably want the driver to load automatically, so you'll need to move the Apple16X50PCCard.kext directory into /System/Library/Extensions.

Warning:This will overwrite your current PCMCIA serial card driver. If you need to use a normal PCMCIA serial card, you shouldn't do this; if you want it to load automatically, you'll need to change the name of the driver. This takes more work than I wanted to deal with.

% sudo mv Apple16X50PCCard.kext /System/Library/Extensions
You'll also need to rebuild the kext Cache:
% sudo rm /System/Library/Extensions.kextcache
% sudo kextcache -k /System/Library/Extensions
To be safe, you should probably reboot at this point. Once this stage is complete, the driver should load automatically. Here's what shows up in my /var/log/system.log:
Jul 13 15:31:47 kimball mach_kernel: IOPCCard16Device: binding socket 0 function 0 to card services.
Jul 13 15:31:47 kimball mach_kernel: IOPCCard16Device::matchPropertyTable entered.
Jul 13 15:31:47 kimball mach_kernel: IOPCCard16Device::matchPropertyTable didn't find a match.
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0::probe(0x389fa00)
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0: Card Vendor is "Sierra Wireless"
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0: Card Name is "AirCard 555"
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0::start(0x389fa00)
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0::setPowerState() setting power state to on
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0::goOnLine() Stopped=false OffLine=true
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0: replacing CIS info (len=122)...
Jul 13 15:31:47 kimball mach_kernel: succeeded!
Jul 13 15:31:47 kimball mach_kernel: IOPCCard notice: PCCardExpert3: GetNextTuple: No more items
Jul 13 15:31:47 kimball mach_kernel: IOPCCard info:   IOPCCard16Enabler::configure using index 0x20: Vcc 5.0, irq 255, io 0x03f8-0x03ff
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0::start() IO window=0 physical=0xf20003f8 virtual=0x1e8763f8 length=8 width=16, attributes=0
Jul 13 15:31:47 kimball mach_kernel: Apple16X50PCCard0: Identified Modem in PCCard Socket=0
Jul 13 15:31:47 kimball mach_kernel: Apple16X50UARTSync0: Detected 16550AF/C/CF FIFO=16 MaxBaud=115200
As you can see, OS X is successfully fooled into recognizing the AirCard as a PCMCIA Modem. It should now show up as a "PC Card Modem" in the system modem lists.

Step 3: Configure Internet Connect

Now you just need to configure the modem as you would any other. First, download this modem script (a slightly modified version of the standard Verizon 1xRTT script) and put it in /Library/Modem Scripts.
% sudo mv Sierra\ Wireless\ 555 /Library/Modem\ Scripts
Open System Preferences->Network and select a new location (Verizon 1xRTT, say). In the Modem tab, select "Sierra Wireless 555". In the PPP tab, enter your phone number, account name, and password. There are many suggestions for what to use here on the Net, but I found the following work for me (my service is Verizon Express Network):

Phone Number: #777
Account Name: xxxxxxxxxx@vzw3g.com (Your phone number)
Password: vzw

Everything else can be left untouched. Once those are set up, you should be able to select connect and be on your way!


June 10, 2004 -- Alex C. Snoeren (snoeren@cs.ucsd.edu)