When I switched my desktop over to Mandriva Linux 2008 I knew it wouldn't be without some shortcomings. One of the most frustrating experiences I had was connecting my HTC Touch phone (a Windows Mobile 6 PDA phone) to my Linux box in order to synchronize it. I stumbled along the way, finding the not too apparent solution to my problem.
First of all, the reason why Mandriva couldn't connect to the device was some apparently faulty version of rndis_host driver that came along with the distribution. As a result, every time you upgrade the kernel, you'll have to follow these steps.
Start by grabbing the latest rndis_host driver's sources, from the SynCE site and save it to /usr/src
.
If you don't have the -devel package matching your kernel installed, do it so. If you're on a desktop computer, it will most probably be kernel-desktop-devel-latest
and on a laptop it's kernel-laptop-devel-latest
. You can install them either through the Mandiva Control Panel or from the command line, using urpmi, e.g. (as root) typing urpmi
kernel-desktop-devel-latest
Now open a console, become root and start typing:
cd /usr/src tar xvzf usb-rndis-lite-0.11.tar.gz cd usb-rndis-lite-0.11 make clean make make install cd /lib/modules/2.6.22.18-desktop-1mdv/ # (or whatever your kernel version is, you can figure out with uname -r) cd kernel/drivers/net/usb/ mv rndis_host.ko.gz rndis_host.ko.gz.bak depmod -ae
Now you have successfully installed the rndis driver. Just to be on the safe side, reboot.
After rebooting, you can type (as a root, in a console) :
modprobe rndis_host odccm -f -l 6
When you connect your device you'll see a lot of information flowing. If it prints only a single line, open up TCP ports 990 and 7438 on your firewall! Congratulations, you've got a connection!
Making connections start automatically
Make the file /etc/init.d/wm6 with the following contents:
# Created On : Sat Mar 01 17:18:10 2008 #--------------------------------------------------------------- # chkconfig: 5 50 30 # description: This startup script launches the WM6 support (odccm) #--------------------------------------------------------------- # ### BEGIN INIT INFO # Provides: odccm # Should-Start: $network harddrake haldaemon # Default-Start: 5 # Short-Description: Launches WM6 support # Description: This startup script launches the WM6 support (odccm) ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions ret=0 case $1 in start) modprobe rndis_host gprintf "Starting WM6 connectivity support: " odccm & success "WM6 Support" ret=$? echo if [ $ret = 0 ]; then touch /var/lock/subsys/wm6 fi ;; stop) gprintf "Stopping WM6 connectivity support: " killproc odccm< ret=$? if [ $ret = 0 ]; then success "WM6 support" rm -f /var/lock/subsys/wm6 else failure "WM6 support" fi echo ;; status) status odccm ;; reload) ;; restart) $0 stop sleep 5 $0 start ret=$? ;; *) gprintf "Usage: %sn" "$(basename $0) {start|stop|restart|status}" exit 0 ;; esac exit $ret # wm6 ends here
Then, from a root console, just type chkconfig --level 5 wm6
on to make the connection script load at boot. You can start it manually by typing service wm6 start
.