Here it is, the kernel driver. If you are scared to death about getting a
system panic don't even attempt to use this!!!!!

It should build with a simple make. I don't recommend a "make install" yet.
Use it with "insmod ./blackberry.ko". Remove it with "rmmod ./blackberry.ko".
When a blackberry is plugged in, that it recognizes, a /dev/bbdesktop device
node will be created. This can be used the same way as a serial or bluetooth
device with XmBlackBerry, "./XmBlackBerry -device /dev/bbdesktop0".

There are a couple of parameters:
debug 0 is the default 9 is extremely verbose. 1 currently shows all of the
    usb packets.
num_devices defaults to 2. If you are going to use more than 2 blackberrys
    you need to increase this. If you want to use more than 2 without changing
    this you have to rmmod the module before the 3rd one can be used. This is
    so the first blackberry plugged in will always be /dev/bbdesktop0, the
    second /dev/bbdesktop1.

Everything seems to work well with my Fedora Core 4 system, some of the work
was done with CentOS 5.2, different tty driver API between these 2 :( I haven't
noticed any conflicts with bcharge, usb_storage, or anything else for that
matter. I've used it with everything in the identity.txt file, namely 6200,
7100, 8700, and 8800. It only does the "RIM Desktop" interface (okay, bad word,
since a bunch of stuff is on the same "usb interface" ... let's go with
protocol). The modem stuff should be a little simpler, but some use separate
endpoints, and some multiplex it with the desktop, and other, stuff.

The ip modem protocol, the one with separate endpoints, is working now. This
shows up as /dev/modem0.

The only outstanding issue is with password enabled devices. The serial
protocol prompts for the passwords on the device, the usb protocol handles
the password. Not sure how to handle this yet, linking the kernel module with
openssl isn't an option :(

Found out how to sha1 hash in the kernel, so passwords are now possible. To
do this I had to extend the serial protocol. There is now a new initialization
command, namely

0x40 0x00 0x50

and the UI should send back

0x40 0x00 0x50 password 0x00

Passwords on the modem device are currently impossible :( however once set
through the desktop device, the same one will be used. I haven't figured out
a good way to pass it through the modem device, yet.

The device password can now be set with the password module parameter.

A few more device files have popped up:
/dev/bbftp0
This connects to the DFTP server on the device. It looks to be like
an http/xml type of protocol. ../tools/ftp contains a _simple_ command line
program that uses this device. Type "list /" at the "==>" prompt.

/dev/bbloader0
This connects to the Rim JavaLoader protocol. Loads of neat things can be
done with this, some pretty destructive. Not all of the functions have been
worked out yet. ../tools/javaloader contains a command line program that
handles the functionality. ./javaloader --help will show what it can do.

/dev/caltask0
This one could turn out to be _real_ interesting. So far you can use it to
show the Software Product List on the device. This includes the MFI, MEP, VSM,
SFI, and others. If you don't know what these are, google can be your friend.
The VSM file is the Vendor Splach Media, which includes the image displayed
during power on/off, info about the vendor, and other stuff. In the 
javaloader directory are tools to split apart a VSM file and re-create one
of your own doing. javaloader can be used to upload the vsm file to the device,
however getting it to a mode that allows this is currently not possible with
these tools :( Again, google can be your freind.

Also included in the javaloader directory is a tool, ecode, to generate the
magic codes needed to enable the engineering screens of the Help Me! screen.
