OpenSolaris

  subsites   code review   repo   packages   bugs   defect   polls   planet
You are not signed in. Sign in or register.

OpenSolaris Project: Wireless Wide Area Network

View the leaders for this project
Project Observers

This project is developing Solaris support for the emerging WWAN technologies, including device drivers, configuration files and recipes for various devices.

usbsacm driver pre-release packages (comes standard with Solaris Nevada build 56 or later):

Devices reported to work:

  • Kyocera KPC650 (aka Passport 1xEV-DO)
  • Novatel V620 (Merlin)
  • Novatel S720
  • Novatel U720
  • Pantech PX-500

WWAN access using PPP and usbsacm driver

Background

Many WWAN modems are essentially USB modems. The standard for USB modems is called Communication Class Device Abstract Communication Model (CDC ACM). Popular PCMCIA WWAN modem cards, such as Novatel Merlin V620 and Kyocera KPC650, include an internal USB controller and a CDC ACM device - and can use the same drivers as the USB modems connected to the external USB ports.

The Solaris usbsacm driver, currently under development, supports devices compatible with CDC ACM. Standalone binaries are provided here until the driver is integrated in Solaris Nevada. The following instructions were verified with the Novatel V620 EV-DO modem card from Verizon, previously activated in the VZAccess software for Windows. A recent build of Solaris Nevada is recommended, but any release no older than Solaris 10 should work.

Installation

If using a PCMCIA card, install the latest cardbus driver. (Note, even though the cardbus driver was integrated in Solaris Nevada build 44, you should download and install this version; the driver in Nevada has a bug that can lock up your system).

Download the usbsacm driver package: i386 or sparc, unpack and install, e.g.:

pkgadd -d . SUNWuacm

Using your favorite text editor, append this line to /etc/iu.ap:

usbsacm -1 0 ldterm ttcompat

Reboot.

Configuration

Connect your modem device. After a few seconds, one or more devices numbered 0..N should appear in the /dev/term directory. At the software level, these devices behave just like serial ports, even though the data flows over USB. You can use any existing serial communication software like PPP or terminal emulators. If device does not appear in /dev/term, see the Troubleshooting section below.

These instruction assume /dev/evdo to be your device. Typically you'll need to create a symlink to /dev/term/0:

ln -s /dev/term/0 /dev/evdo

To configure PPP, you can use these files as a starting point:

  • evdo: put in /etc/ppp/peers directory
  • evdo-chat: put in /etc/ppp directory

Edit the "user" entry in the evdo file, e.g. Verizon users should replace 1234567890 with their phone number.

Now run:

pppd call evdo

and watch the output. If it fails, retry a couple times before starting troubleshooting. Successful PPP connection is accompanied with a message "Serial connection established." and ifconfig -a will show the sppp0 interface. You might need to copy /etc/ppp/resolv.conf to /etc/resolv.conf and /etc/nsswitch.dns to /etc/nsswitch.conf to get your name resolution right, or use something like inetmenu. The WWAN should be fully accessible after that.

Troubleshooting

Binding the driver to the device

If no device appears in /dev/term, run 'prtconf -D' and locate your modem device in the output, e.g.:

        pci1025,57, instance #0 (driver name: pcic)         <--- PCMCIA controller
            pcs, instance #0 (driver name: pcs)
            pci1033,35, instance #0 (driver name: ohci)     <--- internal USB controller
                device, instance #0 (driver name: usbsacm)  <--- modem device

If the "device" node does not show a driver name associated with it, you can try to bind the driver to it. To do this, locate your device again, this time in the 'prtconf -v' output (e.g. search for "device,"):

                device, instance #0
                    Driver properties:
                        name='pm-components' type=string items=3 dev=none
                            value='NAME= usbsacm0 Power' + '0=USB D3 State' + '3=USB D0 State'
                    Hardware properties:
                        name='driver-minor' type=int items=1
                            value=00000000
                        name='driver-major' type=int items=1
                            value=00000002
                        name='configuration#' type=int items=1
                            value=00000001
                        name='usb-product-name' type=string items=1
                            value='Novatel Wireless Merlin CDMA'
                        name='usb-vendor-name' type=string items=1
                            value='Novatel Wireless Inc.'
                        name='usb-release' type=int items=1
                            value=00000110
                        name='usb-num-configs' type=int items=1
                            value=00000001
                        name='usb-revision-id' type=int items=1
                            value=00000000
                        name='usb-product-id' type=int items=1
                            value=00001110
                        name='usb-vendor-id' type=int items=1
                            value=00001410
                        name='compatible' type=string items=3
                            value='usb1410,1110.0' + 'usb1410,1110' + 'usb,device'
                        name='reg' type=int items=1
                            value=00000001
                        name='assigned-address' type=int items=1
                            value=00000002

The 'compatible' property is what you are looking for. Choose one that looks like "usbXXX,YYY", where XXX is vendor ID and YYY is product ID. Run run the following command:

update_drv -i "usbXXX,YYY" usbsacm

After reboot 'prtconf -D' should show usbsacm driver next to the device. If not, the driver failed to attach, probably not recognizing the device as compatible.

Testing modem connection

A simple way to test your modem is to send it some simple commands using tip(1) or other terminal emulator:

# tip /dev/term/0
connected
atz
OK
ati
Manufacturer: NOVATEL WIRELESS INCORPORATED
Model: CDMA MERLIN V620
Revision: M6500C-BBIRD-40304.135  [MAR 11 2005 14:00:00]
ESN: 0x5B123456
+GCAP: +CIS707-A, CIS-856, +MS, +ES, +DS, +FCLASS

OK
at+csq
99, 99

OK
atdt#777
CONNECT

Characters in bold font are user input, the rest is modem output. at+csq shows signal strength on this particular modem. Dialing #777 usually gets you on the service provider's network - if the modem returns "NO CARRIER", it could mean weak signal or refused connection from the network.