ChangeSet 1.893.4.1, 2002/12/24 10:23:21-08:00, ganesh@tuxtop.vxindia.veritas.com [PATCH] USB ipaq driver update The ActiveSync USB "protocol" seems to be the same for all WinCE devices seen so far. So it seems reasonable to pre-emptively support all devices which work with ActiveSync. diff -Nru a/Documentation/Configure.help b/Documentation/Configure.help --- a/Documentation/Configure.help Mon Jan 6 11:31:06 2003 +++ b/Documentation/Configure.help Mon Jan 6 11:31:07 2003 @@ -14010,10 +14010,10 @@ The module will be called visor.o. If you want to compile it as a module, say M here and read . -USB Compaq iPAQ Driver +USB PocketPC PDA Driver CONFIG_USB_SERIAL_IPAQ - Say Y here if you want to connect to your Compaq iPAQ, HP Jornada 548/568 - or Casio EM500 running Windows CE 3.0 or PocketPC 2002 using a USB + Say Y here if you want to connect to your Compaq iPAQ, HP Jornada, + or any other PDA running Windows CE 3.0 or PocketPC 2002 using a USB cradle/cable. For information on using the driver, read . diff -Nru a/Documentation/usb/usb-serial.txt b/Documentation/usb/usb-serial.txt --- a/Documentation/usb/usb-serial.txt Mon Jan 6 11:31:06 2003 +++ b/Documentation/usb/usb-serial.txt Mon Jan 6 11:31:06 2003 @@ -95,27 +95,27 @@ Kroah-Hartman at greg@kroah.com -Compaq iPAQ, HP Jornada and Casio EM500 driver +PocketPC PDA Driver - This driver can be used to connect to Compaq iPAQ, HP Jornada and Casio EM500 - PDAs running Windows CE 3.0 or PocketPC 2002 using a USB cable/cradle. - It's very likely that every device supported by ActiveSync USB works with this - driver. The driver supports the Compaq iPAQ, Jornada 548/568 and the Casio - EM500 out of the box. For others, please use module parameters to specify - the product and vendor id. e.g. modprobe ipaq vendor=0x3f0 product=0x1125 + This driver can be used to connect to Compaq iPAQ, HP Jornada, Casio EM500 + and other PDAs running Windows CE 3.0 or PocketPC 2002 using a USB + cable/cradle. + Most devices supported by ActiveSync are supported out of the box. + For others, please use module parameters to specify the product and vendor + id. e.g. modprobe ipaq vendor=0x3f0 product=0x1125 The driver presents a serial interface (usually on /dev/ttyUSB0) over - which one may run ppp and establish a TCP/IP link to the iPAQ. Once this + which one may run ppp and establish a TCP/IP link to the PDA. Once this is done, you can transfer files, backup, download email etc. The most - significant advantage of using USB is speed - you can get 73 to 113 - kbytes/sec for download/upload to the iPAQ. + significant advantage of using USB is speed - I can get 73 to 113 + kbytes/sec for download/upload to my iPAQ. This driver is only one of a set of components required to utilize the USB connection. Please visit http://synce.sourceforge.net which contains the necessary packages and a simple step-by-step howto. Once connected, you can use Win CE programs like ftpView, Pocket Outlook - from the iPAQ and xcerdisp, synce utilities from the Linux side. + from the PDA and xcerdisp, synce utilities from the Linux side. To use Pocket IE, follow the instructions given at http://www.tekguru.co.uk/EM500/usbtonet.htm to achieve the same thing @@ -130,8 +130,18 @@ If it doesn't work for some reason, load both the usbserial and ipaq module with the module parameter "debug" set to 1 and examine the system log. - You can also try soft-resetting your iPAQ before attempting a connection. + You can also try soft-resetting your PDA before attempting a connection. + Other functionality may be possible depending on your PDA. According to + Wes Cilldhaire , with the Toshiba E570, + ...if you boot into the bootloader (hold down the power when hitting the + reset button, continuing to hold onto the power until the bootloader screen + is displayed), then put it in the cradle with the ipaq driver loaded, open + a terminal on /dev/ttyUSB0, it gives you a "USB Reflash" terminal, which can + be used to flash the ROM, as well as the microP code.. so much for needing + Toshiba's $350 serial cable for flashing!! :D + NOTE: This has NOT been tested. Use at your own risk. + For any questions or problems with the driver, please contact Ganesh Varadarajan diff -Nru a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c --- a/drivers/usb/serial/ipaq.c Mon Jan 6 11:31:06 2003 +++ b/drivers/usb/serial/ipaq.c Mon Jan 6 11:31:06 2003 @@ -9,6 +9,10 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * + * (12/12/2002) ganesh + * Added support for practically all devices supported by ActiveSync + * on Windows. Thanks to Wes Cilldhaire . + * * (26/11/2002) ganesh * Added insmod options to specify product and vendor id. * Use modprobe ipaq vendor=0xfoo product=0xbar @@ -68,9 +72,9 @@ * Version Information */ -#define DRIVER_VERSION "v0.4" +#define DRIVER_VERSION "v0.5" #define DRIVER_AUTHOR "Ganesh Varadarajan " -#define DRIVER_DESC "USB Compaq iPAQ, HP Jornada, Casio EM500 driver" +#define DRIVER_DESC "USB PocketPC PDA driver" static int product, vendor; @@ -94,10 +98,36 @@ static struct usb_device_id ipaq_id_table [] = { /* The first entry is a placeholder for the insmod-specified device */ { USB_DEVICE(COMPAQ_VENDOR_ID, COMPAQ_IPAQ_ID) }, + { USB_DEVICE(ASKEY_VENDOR_ID, ASKEY_PRODUCT_ID) }, + { USB_DEVICE(BCOM_VENDOR_ID, BCOM_0065_ID) }, + { USB_DEVICE(BCOM_VENDOR_ID, BCOM_0066_ID) }, + { USB_DEVICE(BCOM_VENDOR_ID, BCOM_0067_ID) }, + { USB_DEVICE(CASIO_VENDOR_ID, CASIO_2001_ID) }, + { USB_DEVICE(CASIO_VENDOR_ID, CASIO_EM500_ID) }, { USB_DEVICE(COMPAQ_VENDOR_ID, COMPAQ_IPAQ_ID) }, + { USB_DEVICE(COMPAQ_VENDOR_ID, COMPAQ_0032_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_JORNADA_548_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_JORNADA_568_ID) }, - { USB_DEVICE(CASIO_VENDOR_ID, CASIO_EM500_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_2016_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_2116_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_2216_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_3016_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_3116_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_3216_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_4016_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_4116_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_4216_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_5016_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_5116_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_5216_ID) }, + { USB_DEVICE(LINKUP_VENDOR_ID, LINKUP_PRODUCT_ID) }, + { USB_DEVICE(MICROSOFT_VENDOR_ID, MICROSOFT_00CE_ID) }, + { USB_DEVICE(PORTATEC_VENDOR_ID, PORTATEC_PRODUCT_ID) }, + { USB_DEVICE(SAGEM_VENDOR_ID, SAGEM_WIRELESS_ID) }, + { USB_DEVICE(SOCKET_VENDOR_ID, SOCKET_PRODUCT_ID) }, + { USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_PRODUCT_ID) }, + { USB_DEVICE(HTC_VENDOR_ID, HTC_PRODUCT_ID) }, + { USB_DEVICE(NEC_VENDOR_ID, NEC_PRODUCT_ID) }, { } /* Terminating entry */ }; @@ -106,7 +136,7 @@ /* All of the device info needed for the Compaq iPAQ */ struct usb_serial_device_type ipaq_device = { .owner = THIS_MODULE, - .name = "Compaq iPAQ", + .name = "PocketPC PDA", .id_table = ipaq_id_table, .num_interrupt_in = NUM_DONT_CARE, .num_bulk_in = 1, diff -Nru a/drivers/usb/serial/ipaq.h b/drivers/usb/serial/ipaq.h --- a/drivers/usb/serial/ipaq.h Mon Jan 6 11:31:06 2003 +++ b/drivers/usb/serial/ipaq.h Mon Jan 6 11:31:06 2003 @@ -9,22 +9,66 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * - * */ #ifndef __LINUX_USB_SERIAL_IPAQ_H #define __LINUX_USB_SERIAL_IPAQ_H +#define ASKEY_VENDOR_ID 0x1690 +#define ASKEY_PRODUCT_ID 0x0601 + +#define BCOM_VENDOR_ID 0x0960 +#define BCOM_0065_ID 0x0065 +#define BCOM_0066_ID 0x0066 +#define BCOM_0067_ID 0x0067 + +#define CASIO_VENDOR_ID 0x07cf +#define CASIO_2001_ID 0x2001 +#define CASIO_EM500_ID 0x2002 #define COMPAQ_VENDOR_ID 0x049f #define COMPAQ_IPAQ_ID 0x0003 +#define COMPAQ_0032_ID 0x0032 #define HP_VENDOR_ID 0x03f0 #define HP_JORNADA_548_ID 0x1016 #define HP_JORNADA_568_ID 0x1116 +#define HP_2016_ID 0x2016 +#define HP_2116_ID 0x2116 +#define HP_2216_ID 0x2216 +#define HP_3016_ID 0x3016 +#define HP_3116_ID 0x3116 +#define HP_3216_ID 0x3216 +#define HP_4016_ID 0x4016 +#define HP_4116_ID 0x4116 +#define HP_4216_ID 0x4216 +#define HP_5016_ID 0x5016 +#define HP_5116_ID 0x5116 +#define HP_5216_ID 0x5216 + +#define LINKUP_VENDOR_ID 0x094b +#define LINKUP_PRODUCT_ID 0x0001 + +#define MICROSOFT_VENDOR_ID 0x045e +#define MICROSOFT_00CE_ID 0x00ce + +#define PORTATEC_VENDOR_ID 0x0961 +#define PORTATEC_PRODUCT_ID 0x0010 + +#define SAGEM_VENDOR_ID 0x5e04 +#define SAGEM_WIRELESS_ID 0xce00 + +#define SOCKET_VENDOR_ID 0x0104 +#define SOCKET_PRODUCT_ID 0x00be -#define CASIO_VENDOR_ID 0x07cf -#define CASIO_EM500_ID 0x2002 +#define TOSHIBA_VENDOR_ID 0x0930 +#define TOSHIBA_PRODUCT_ID 0x0700 + +#define HTC_VENDOR_ID 0x0bb4 +#define HTC_PRODUCT_ID 0x00ce + +#define NEC_VENDOR_ID 0x0409 +#define NEC_PRODUCT_ID 0x00d5 /* * Since we can't queue our bulk write urbs (don't know why - it just @@ -41,8 +85,7 @@ * * The value of PACKET_SIZE was empirically determined by * checking the maximum write sizes sent down by the ppp ldisc. - * URBDATA_QUEUE_MAX is set to 64K, which is the maximum TCP window size - * supported by the iPAQ. + * URBDATA_QUEUE_MAX is set to 64K, which is the maximum TCP window size. */ struct ipaq_packet {