Windows Mobile 2003 ipaq Driver


From SynCE-Wiki

Windows Mobile 2003 Support: Installing SynCE, Connecting Your Device, Using SynCE, SynCE Utilities, Troubleshooting

For those running a kernel version prior to version 2.6.9, you must install this driver to get the ipaq kernel module.

Contents

Download Driver

Note: You must have your Kernel Headers installed to install this driver.

Through Subversion

The driver from Subversion is the newest, and should be used in favour of the SourceForge package. To download the driver, you must have Subversion installed, and execute:

svn co https://svn.sourceforge.net/svnroot/synce/branches/legacy/kernel-2.6-driver
cd kernel-2.6-driver/

SourceForge Package

If you are unable to download the driver through Subversion, download this file: kernel-2.6-driver.tar.gz

Un-tar the archive, and enter the directory:

tar zxf kernel-2.6-driver.tar.gz
cd kernel-2.6-driver/

Suse Users

Note: If you run Suse, you must follow these instructions. Everyone else can skip to the next section.

Suse users must install the kernel-syms package:

yast -i kernel-syms

and should make sure that all kernel-* packages are the same version. First, find your kernel version by executing:

uname -r

TODO: Is this correct?

This will give an output something like 2.6.5-7.95. Then execute the following, replacing KERNELVERSION with your kernel version you just found:

rpm -q kernel-default kernel-source kernel-syms
kernel-default-KERNELVERSION
kernel-source-KERNELVERSION
kernel-syms-KERNELVERSION

Subversion Driver

Note: Those who downloaded the Subversion version of the driver must follow these instructions. Those who downloaded the package can skip to the next section.

For those who downloaded the Subversion version of the driver, you must now select which version you want to install.

  1. Open up the file, Makefile in your favourite text editor.
  2. Make sure the line linking to your kernel source is correct. Most of the time, it will already be correct.
  3. If your kernel version is greater than 2.6.15:
    • Make sure the line containing VERSION = 2.6.15 is uncommented (remove all # characters at the very beginning of the line).
    • Make sure the line containing VERSION = 2.6.13.3 is commented (add a # to the very beginning of the line).
    but if your kernel version is less than or equal to 2.6.15:
    • Make sure the line containing VERSION = 2.6.13.3 is uncommented (remove all # characters at the very beginning of the line).
    • Make sure the line containing VERSION = 2.6.15 is commented (add a # to the very beginning of the line).
  4. Save the file, and exit your text editor.

Compile

Run the following command to compile the driver:

make

Troubleshooting

WARNING: Symbol version dump

If you get an error like this:

WARNING: Symbol version dump
/usr/src/linux-2.6.5-7.95-obj/i386/default/Module.symvers is missing, 
modules will have CONFIG_MODVERSIONS disabled.

then the instructions for Suse users above failed.

Can't find directory

If you get an error like this:

Can't find directory /usr/src/linux-2.6.10-5-686/drivers/usb/serial

then you either:

  1. haven't got your Kernel Headers installed
    or
  2. haven't specified the correct kernel source variable in the Makefile (for users who downloaded the Subversion driver). Go back up to that step, edit the file, and try again.

error: unknown field 'owner' & error: tty->flip.count

...
/home/jonny/kernel-2.6-driver/ipaq.c:555: error: unknown field 'owner' specified in initializer
...

Two changes in ipaq.c have to be done:

After the line

static struct usb_driver ipaq_driver = {

Replace line

.owner =        THIS_MODULE,

with

// .owner =        THIS_MODULE,

Replace line

if(tty->flip.count >= TTY_FLIPBUF_SIZE) {

with

if(tty->max_flip_cnt >= TTY_FLIPBUF_SIZE) {

Load Driver

First, remove the current ipaq kernel module. Run this as root:

rmmod ipaq

(Ignore the message ERROR: Module ipaq does not exist in /proc/modules)

Now load the new module (as root):

modprobe usbserial
insmod ./ipaq.ko

Test Driver

Go back to the Windows Mobile 2003 Support page and try and install your device for use with SynCE. If everything works as planned, then you can install the driver:

Install Driver

Execute, as root:

make install