Discussion:
[Synce-devel] SynCE kernel driver and MPx220 smartphone
Zdenek Koprivik
2007-09-07 09:41:27 UTC
Permalink
Hello,
I'm trying to connect my Motorola MPx220 smartphone (WM2003 SE) with Gentoo (2.6.21-gentoo-r3) and I've got a few problems.

The ipaq driver from synce svn does not compile with my kernel as there is no "max_flip_cnt" variable in tty struct in kernels >2.6.17.
I tryied to solved this by using this part of code from the 2.6.21 kernel driver:
if (tty && urb->actual_length) {
tty_buffer_request_room(tty, urb->actual_length);
tty_insert_flip_string(tty, data, urb->actual_length);
tty_flip_buffer_push(tty);
bytes_in += urb->actual_length;
}

Now it compiles but it does the same as the kernel driver from 2.6.21.
With both drivers I get this:

in dmesg:
/home/koprajs/kernel-2.6-driver/ipaq.c: ipaq_read_bulk_callback - nonzero read bulk status received: -2

in /proc/bus/usb/devices:
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 2
P: Vendor=22b8 ProdID=4224 Rev= 0.00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ipaq
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

If I try insmod ./ipaq.ko ttyUSB=1 with the SynCE driver I get unhandled kernel null pointer error.

Any suggestions? I've seen some /proc/bus/usb/devices from other users with MPx220 and it seems there are at least 3 diffrent versions (maybe caused by diffrent ROMs?). Does that mean that my phone is not supported by the ipaq driver yet? Or is there a problem with the newer kernels?

Thank you for any help.
KOPRajs
David Eriksson
2007-09-11 19:20:57 UTC
Permalink
Post by Zdenek Koprivik
Hello,
I'm trying to connect my Motorola MPx220 smartphone (WM2003 SE) with Gentoo (2.6.21-gentoo-r3) and I've got a few problems.
The ipaq driver from synce svn does not compile with my kernel as there is no "max_flip_cnt" variable in tty struct in kernels >2.6.17.
if (tty && urb->actual_length) {
tty_buffer_request_room(tty, urb->actual_length);
tty_insert_flip_string(tty, data, urb->actual_length);
tty_flip_buffer_push(tty);
bytes_in += urb->actual_length;
}
Now it compiles but it does the same as the kernel driver from 2.6.21.
/home/koprajs/kernel-2.6-driver/ipaq.c: ipaq_read_bulk_callback - nonzero read bulk status received: -2
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 2
P: Vendor=22b8 ProdID=4224 Rev= 0.00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ipaq
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
If I try insmod ./ipaq.ko ttyUSB=1 with the SynCE driver I get unhandled kernel null pointer error.
Any suggestions? I've seen some /proc/bus/usb/devices from other users with MPx220 and it seems there are at least 3 diffrent versions (maybe caused by diffrent ROMs?). Does that mean that my phone is not supported by the ipaq driver yet? Or is there a problem with the newer kernels?
I suggest that all MPx220 owners get together and do some kernel
hacking! :-)

SynCE development nowadays (if any) concerns Windows Mobile 2005 and
newer, so you can unfortunately not expect any improvements to the ipaq
module... :-(

\David
David Eriksson
2007-09-13 17:35:17 UTC
Permalink
Post by Zdenek Koprivik
------------ Původní zpráva ------------
Předmět: Re: [Synce-devel] SynCE kernel driver and MPx220 smartphone
Datum: 11.9.2007 21:20:42
----------------------------------------
Post by Zdenek Koprivik
Hello,
I'm trying to connect my Motorola MPx220 smartphone (WM2003 SE) with Gentoo
(2.6.21-gentoo-r3) and I've got a few problems.
Post by Zdenek Koprivik
The ipaq driver from synce svn does not compile with my kernel as there is no
"max_flip_cnt" variable in tty struct in kernels >2.6.17.
Post by Zdenek Koprivik
I tryied to solved this by using this part of code from the 2.6.21 kernel
if (tty && urb->actual_length) {
tty_buffer_request_room(tty, urb->actual_length);
tty_insert_flip_string(tty, data, urb->actual_length);
tty_flip_buffer_push(tty);
bytes_in += urb->actual_length;
}
Now it compiles but it does the same as the kernel driver from 2.6.21.
/home/koprajs/kernel-2.6-driver/ipaq.c: ipaq_read_bulk_callback - nonzero read
bulk status received: -2
Post by Zdenek Koprivik
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 2
P: Vendor=22b8 ProdID=4224 Rev= 0.00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ipaq
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
If I try insmod ./ipaq.ko ttyUSB=1 with the SynCE driver I get unhandled
kernel null pointer error.
Post by Zdenek Koprivik
Any suggestions? I've seen some /proc/bus/usb/devices from other users with
MPx220 and it seems there are at least 3 diffrent versions (maybe caused by
diffrent ROMs?). Does that mean that my phone is not supported by the ipaq
driver yet? Or is there a problem with the newer kernels?
I suggest that all MPx220 owners get together and do some kernel
hacking! :-)
SynCE development nowadays (if any) concerns Windows Mobile 2005 and
newer, so you can unfortunately not expect any improvements to the ipaq
module... :-(
\David
Hello,
Edit your current kernel's /usr/src/linux/drivers/usb/serial/ipaq.c, find the "static int ipaq_startup(struct usb_serial *serial)" function (line 932 in 2.6.21 kernel) and replace the "return usb_reset_configuration (serial->dev);" with "return 0;".
That's it, now recompile the module and it should work with MS smartphones 2003 including MPx220.
I thought that should have been removed from the kernel? Oh well, nice
catch! :-)

\David
Post by Zdenek Koprivik
You can download already patched version of ipaq.c from attachment. It's for 2.6.21 but should work with newer kernel's too.
Enjoy, KOPRajs :-)
--
Zdenek Koprivik
2007-09-13 13:16:42 UTC
Permalink
------------ Pùvodní zpráva ------------
Pøedmìt: Re: [Synce-devel] SynCE kernel driver and MPx220 smartphone
Datum: 11.9.2007 21:20:42
----------------------------------------
Post by Zdenek Koprivik
Hello,
I'm trying to connect my Motorola MPx220 smartphone (WM2003 SE) with Gentoo
(2.6.21-gentoo-r3) and I've got a few problems.
Post by Zdenek Koprivik
The ipaq driver from synce svn does not compile with my kernel as there is no
"max_flip_cnt" variable in tty struct in kernels >2.6.17.
Post by Zdenek Koprivik
I tryied to solved this by using this part of code from the 2.6.21 kernel
if (tty && urb->actual_length) {
tty_buffer_request_room(tty, urb->actual_length);
tty_insert_flip_string(tty, data, urb->actual_length);
tty_flip_buffer_push(tty);
bytes_in += urb->actual_length;
}
Now it compiles but it does the same as the kernel driver from 2.6.21.
/home/koprajs/kernel-2.6-driver/ipaq.c: ipaq_read_bulk_callback - nonzero read
bulk status received: -2
Post by Zdenek Koprivik
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 2
P: Vendor=22b8 ProdID=4224 Rev= 0.00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ipaq
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
If I try insmod ./ipaq.ko ttyUSB=1 with the SynCE driver I get unhandled
kernel null pointer error.
Post by Zdenek Koprivik
Any suggestions? I've seen some /proc/bus/usb/devices from other users with
MPx220 and it seems there are at least 3 diffrent versions (maybe caused by
diffrent ROMs?). Does that mean that my phone is not supported by the ipaq
driver yet? Or is there a problem with the newer kernels?
I suggest that all MPx220 owners get together and do some kernel
hacking! :-)
SynCE development nowadays (if any) concerns Windows Mobile 2005 and
newer, so you can unfortunately not expect any improvements to the ipaq
module... :-(
\David
Hello,
I've finally got it working. Here is the solution:
Edit your current kernel's /usr/src/linux/drivers/usb/serial/ipaq.c, find the "static int ipaq_startup(struct usb_serial *serial)" function (line 932 in 2.6.21 kernel) and replace the "return usb_reset_configuration (serial->dev);" with "return 0;".
That's it, now recompile the module and it should work with MS smartphones 2003 including MPx220.

You can download already patched version of ipaq.c from attachment. It's for 2.6.21 but should work with newer kernel's too.

Enjoy, KOPRajs :-)

Loading...