Sharp Zaurus 5600 (poodle) PPP <-> Cell Phone How-To

I picked up a Sharp Zaurus 5600 (poodle) a while back and was recently able to connect it to my Verizon LG vx8100 cell phone to dial into the PPP servers at work. If you’re not familiar with it, the Zaurus is an extremely hackable PDA that runs linux. It has a terminal with ssh and can run Firefox or pretty much any *nix application out there (including X-Windows). I can now drop the Zaurus, cell phone and a USB cable into my waterproof Simms camera bag, hike a couple miles up a creek and no longer have to worry about being paged for work and not being able to respond.


One of the requirements I had when picking out my current phone was to get one that supported the Bluetooth DUN (dial-up networking) profile. My intent was to use it as a modem over bluetooth with my laptop or the Zaurus since there’s no USB built into the Zaurus. While folks all over howardforums.com claim to have DUN working with the phone, I discovered the profile on the phone is simply broken and would not work for me. A (short) thread I posted with a plethora of details can be found in the bluez-users list archives. I’d love to hear from anyone who has a solution to this problem.

Before realizing there wasn’t any hope for the phone and bluetooth DUN, I’d already picked up a Belkin Compact Flash Bluetooth adapter. While I couldn’t use it to connect to the phone, it did work fine with ‘sdptool’ and ‘hciscan’ and discovered a surprising amount of devices when I tried it out in the Commons at UB.

With the bluetooth option gone, I really had just about given up hope. From time to time I’d do some online research into the issue, but never had any luck. But recently during one search, I stumbled upon an extremely promising card that didn’t exist when I’d originally started looking – the Ratoc USB 1.1 Host Adapter Compact Flash card. Much to my surprise, Ratoc even linked to an open source REX-CFU1 driver. Aside from device support, one of the first things that caught my eye was that the card only supplied up to 100mA of power across the bus. According to the USB spec, devices can request up to 500mA each (with limitations). The Wikipedia USB entry has additional information. I had no idea what type of power the phone drew. Fortunately the ‘lsusb’ comand in linux is able to display device power consumption:

$ sudo /sbin/lsusb -v | grep MaxPower

(I discovered this command in a very interesting Linux Weekly News article regarding the controversy that occured when 2.6.16 came out and changed the way it handled power allocation for devices on unpowered USB hubs.) ‘lsusb’ indicated the phone only drew a max of 100mA – things were looking good!

After I ordered the Ratoc card, I was able to get the REX-CFU1 module to work with a mass storage device with the OpenZaurus installation (2.4 kernel) I had at the time – but it wouldn’t work with the acm or even hid modules. Suddenly, things weren’t looking so good… I began to think I’d wasted a fair chunk of money on the card. Prior to buying the card, I had written to the author of the REX-CFU1 module inquiring about support for the acm module. I was too excited about the potential of the card to await his response before buying it, but he responded several weeks later (coincidently a mere day after I discovered the lack of support on my own):

I’ve heard that this USB device driver cannot work correctly on 5600
Zaurus for some devices about one year ago.

The person tried to install this USB device driver into 5600 Zaurus, and connect a GPS device, but it didn’t work.

On 760 Zaurus, many cell phones can be used, and it may work also on 5600 Zaurus with a little changes for this device driver, but to do this, you must have an environment of cross-compiling for ARM.

The URL below shows the device list worked on CFU1 and this driver. It is written in Japanese, but you may understand device names.

http://paipai.org/~humorum/zaurus/pukiwiki/index.php?ZaurusCfu1_test

I headed back to the OpenZaurus site for the first time in ages, and much to my surprise, the OpenZaurus 3.5.4.2-rc2 release came out in September of 2005 This included the 2.6 kernel for the poodle for the first time. (The SL-5×00 series has been around since ~2001.) The 2.6 tree also includes a driver for the REX-CFU1′s USB host chipset in the mainstream kernel (sl811_hcd.ko/sl811_cs.ko) – and this module works! Instructions for installing the latest OZ version are available from the OpenZaurus wiki. I opted to install the Opie image. After the OS was installed, it was also necessary to untar the OpenZaurus 3.5.4.2-rc modules tarball to / for the sl811, acm and prerequisites modules. Note: these modules are not part of the base OZ install. Once downloaded, update /lib/modules/2.6.17/modules.dep:

$ depmod -v

The boot time increased significantly after running depmod.

To make everything work on boot with no manual loading of modules, create the appropriate files in /etc/modutils/ with a list of modules to load:

$ cat /etc/modutils/ppp.conf
alias /dev/ppp ppp_generic
alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate

$ cat /etc/modutils/ppp.confp

ppp_generic
ppp_async
ppp_synctty
bsd_comp
ppp_deflate

$ cat /etc/modutils/modem.conf

alias usbdevfs usbcore
sl811-hcd
sl811_cs
alias char-major-166-* cdc-acm
slhc

$ cat /etc/modutils/modem
usbcore
sl811-hcd
sl811_cs
cdc-acm
slhc

I grabbed the ppp.conf file from another machine of mine and chose to the name modem.conf arbitrarily for the other modules. The version of module-init-tools shipped with OS 3.5.4.2-rc is 3.2.2-r1. No matter what I did, I have to have both sets of files or the modules wouldn’t automatically load. No other Debian based distros that I’ve seen require this.

Once all files in /etc/modutils/ are in place, update /etc/modules.conf:

$ /usr/sbin/update-modules

After a reboot, all the modules should be loaded. Verify this with ‘lsmod’ or by looking in /proc/modules.

From this point out, all that has to be setup is PPP. I had no luck setting up a connection with the graphical ‘Network Settings’ too, but was able to manually set it up with chatscripts by following the PPP how-to. If you’ve gotten this far, as long as you use /dev/ttyACM0 as your modem device, you should be all set. But my college math books used to say… “proof is left as an exercise for the reader“.

Leave a Reply

You must be logged in to post a comment.