> Thanks for going to all the trouble of testing out the phone > operation on your SuSE machine. I havn't had any breakthrough > yet, but your help has given me the confidence to persevere..
No problem -- I'm a software tester in Real Life (tm), so stuff like this bugs the crap out of me. I have a tendency to get a hold of a problem, and beat it into the ground sometimes, and this is one of those things that drives me absolutely crazy: inconsistent behaviour of software is _extremely_ annoying and frustrating - especially when _I'm_ the one with the "works for me" response, but I can't figure out what I did (if anything) to solve the problem. <sigh> Anyway... I'm not convinced that the problem's in the kernel. If it was, then anybody with the same kernel would run into the same problem(s)... ...and, following that logic, I started digging through the code for moto4lin, trying to see if there was anything spectacularly obvious that _might_ be causing the behaviour we're seeing. In so doing, I _think_ I _might_ have found a typo in moto_ui/p2kproc.cpp, on line 729... here's the function where that line appears: <snip> // Connect to phone. int P2kProc::drv_connect() { FUNC("drv_connect"); int ph=drv_findPhone(); if (ph==PHONE_NONE) RAISE("no phone") if (ph==PHONE_AT) drv_switchP2K(); int t; t=time(NULL); while ((time(NULL)-t<5) && (ph!=PHONE_P2K)) { usb_find_devices(); ph=drv_findPhone(); usleep(10000); } if (ph!=PHONE_P2K) return(-1); return(drv_openPhone()); } </snip> What's got me thinking there's a typo are the following two lines: if (ph==PHONE_NONE) RAISE("no phone") if (ph==PHONE_AT) drv_switchP2K(); This looks to me like if there's no phone, an error is spit out (to the terminal, if you started moto4lin from there), then it checks to see if the phone's in AT mode, and then it tries to switch it to P2K mode. The problem here is that the switch to P2K will never be reached, because there's a missing semi-colon at the end of the first line, which means that if there's no phone _and_ it's in AT mode, then it'll do the switch... which makes little to no sense to me, if I'm reading this correctly... ...it might be worth trying out, though, to see if adding a semi-colon here would help, so that it looks like this instead: if (ph==PHONE_NONE) RAISE("no phone"); if (ph==PHONE_AT) drv_switchP2K(); I checked out the current CVS version, using the instructions on the moto4lin website, and it looks as though this entire function's been rewritten (and moved to line 857-ish), and would work the way I'm thinking it should: if it doesn't find a phone, it prints an error; then it checks to see if it's an AT phone, and switches to P2K mode if it is... ...but - as I said before - I'm a software tester, not a developer... so it's entirely possible that I'm just jumping at shadows... <shrug> -- gentoo-user@gentoo.org mailing list