USBnetworkingWinXP
This HOWTO was inspired by the USB networking with Debian Howto, but self-contained.
HOWTO: Set up USB networking with Windows (2000 and XP)
Tested with IT2006 (official release)
Seems to work even better (regarding unplugging and plugging in again)
Table Of Contents
MoinMoinWiki Macro: TableOfContents
Introduction
This document describes how you can set up USB networking between your host machine running under Windows (XP & 2000 tested) and the Nokia 770.
As my USB-ports on my Linux-box are still USB 1, but I wanted to transfer a huge amount of data, I figured out, how to use my Windows machine instead - this is definitely useful, as I can even use my PC at work together with "WinSCP" in order to transfer files onto my ext2 partition of my Nokia's MMC card, etc.
Requirements
If you use Windows 2000, you will need to download the RNDIS drivers from http://www.microsoft.com/whdc/device/network/NDIS/rndis.mspx. Windows XP already contains the needed .sys files.
Download the file
Nokia770 USB Ethernet RNDIS.inf
from here or here It will instruct Windows XP that its built-in RNDIS driver is appropriate for Linux USB networking devices, and the Nokia 770 as such.
This file is my updated/improved version of linux.inf
from gumstix. The original version did not work with the current download for Windows 2000 from above.
I tried these 3 .inf files on a Windows2000 (5.00.2195 SP3) plateform, but none of them reconized the N770 (the list of drivers stays blank after selecting the directory where the .inf and .sys files are)... any ideas ?
- ...and of course, as usual, i.e. need to be root / have xterm on the Nokia 770.
Setting up your environment on Nokia 770
For convenience, I placed the following script /etc/init.d/usbnet
on my Nokia:
#! /bin/sh # # Startup script for USBnet (networking, instead of USB Mass Storage behaviour) # Author: Michael Mlivoncic PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=usbnet DESC="USB Networking for Nokia 770" INITFILE=/etc/init.d/$NAME case "$1" in start) USBNET="`lsmod | grep g_ether`" if [ "$USBNET" = "" ] then echo "entering Ethernet via USB mode (g_ether)..." insmod /mnt/initfs/lib/modules/current/g_ether.ko echo "waiting, then starting up the usb0.." sleep 1 /sbin/ifup usb0 else echo "already in Ethernet-via-USB mode..." echo "try ping 192.168.2.15" fi ;; stop) echo "switching back to USB Mass Storage mode..." echo "removing module g_ether" /sbin/ifdown usb0 sleep 2 rmmod g_ether ;; *) printf "Usage: $INITFILE {start|stop}\n" >&2 exit 1 ;; esac exit 0
Definitely, there is some room for improvement, but it can be used as a startup script or - as I currently do - manually:
sudo /etc/init.d/usbnet start activates the USB-networking while
sudo /etc/init.d/usbnet stop deactivates, i.e. switches back to USB mass storage device mode.
While switching, it is important to have USB disconnected! Otherwise the kernel modules will be blocked.
I found that the usb0 configuration was already there in the SE2005 image on my Nokia. Check /etc/network/interfaces
.
Otherwise, you need to configure the network on the device by adding the following lines to /etc/network/interfaces
on the 770 and comment out or delete the existing usb0-entry:
iface usb0 inet static address 192.168.2.15 netmask 255.255.255.0 broadcast 192.168.2.255 up route add default gw 192.168.2.14
I.e. on the windows side, the USB cable will be 192.168.2.14
, the Nokia's side will be 192.168.2.15
.
Feel free to change that as you like.
Preparing the Windows host
When you connect the Nokia to the PC, it will look for a suitable driver.
As opposed to the USB mass device mode, Windows will not find a suitable driver by default.
Actually, Windows XP comes with built-in support for so called RNDIS devices, but it does not
know that the N770 will act as such.
Therefore, we need to instruct it to do so: In the driver dialog, choose that you will provide
the driver's location.
Point it to the directory where you previously downloaded the Nokia770 USB Ethernet RNDIS.inf
(or linux.inf
) file.
It will show you a driver called Linux USB Ethernet/RNDIS Gadget.
Install it.
additional step for Windows 2000
As mentioned before, Windows 2000 lacks of the basic driver files. So, first unpack RNDIS-USB-Kit_05.exe
you have downloaded above (266kB from July 2005).
You only need to copy rndismpy.sys
(30 KB) and usb8023y.sys
(14 KB) from
RNDIS USB kit 2005\Drivers\x86fre\sys files
to a folder of your choice, e.g. c:\Drivers\Nokia770_RNDIS
.
Add Nokia770 USB Ethernet RNDIS.inf
to the same folder; this will complete your driver set.
As with Windows XP, now just install it from the Device Manager dialog.
A new network card with this name will become visible afterwards. I assume, you know or can figure out how to set up this network adapter. Minimally, set its IP-address to static 192.168.2.14. Optionally activate ICS (Internet Connection Sharing) on your network adapter to share the outside world with your little Nokia.
Testing the connection
To test the connection, you can either type ping 192.168.2.15 on your PC or vice versa, ping 192.168.2.14 in the xterm.
For troubleshooting, use ifconfig -a and route to verify on the Nokia, ipconfig /all and route print.
Known issues
As opposed to connecting with a Debian host, I realize some problems when unplugging and replugging
the USB cable between the two devices - Windows will indicate a code 10-error indicating that
the device could not start properly. The problem seems to be actually on the Nokia side - as rebooting
the device helps. So, make sure to first initialize g_ether
, then connect the cable and
enjoy networking.
Probably some background service on the N770 interferes with unloading/loading sequence of g_ether and g_mass_storage. i.e. some task mounts/unmounts MMC card when plugging in USB.
- I would highly appreciate any comments on this - Does re-connecting USB work for you? Seems to work fine with XP together with IT2006.
- Does anyone know a fix for this?
Final remarks
I have my Nokia 770 now for almost a week. A impressive little Linux box. I like the BT networking as it consumes less battery than WLAN. Now, It is even a USB network card (or even a USB to BT and WLAN dongle). Many of the Howtos here were very useful (especially Swap device, BT networking, BT OBEX,...) So, hope you enjoy my contribution and do not hesitate to add some stuff.
A few ideas about how to use this feature: I already have OpenSSH on the Nokia. So, if the PC has WinSCP installed, you can browse the Filesystem or copy files to the MMC card (other than the first partition, as it is automatically deactivated when USB is plugged in; however you can re-mount it with
mount /media/mmc1
).
As I mentioned at the beginning, my PC has the faster USB interface. Now, when I'm connected, I can backup the whole root-fs to my Linux box with maximum performance.
rsync -avzxlrP <del>delete </del>inplace --numeric-ids / 192.168.8.4:/Nokia770_Backup
Why am I backuping everything? If I ever screw it up again (before SE2006), I hope to be able to use the trick from http://maemo.org/maemowiki/ModifyingRootImage and flash my backup back onto the device.
I will let you guys know ;-)
Windows 98 and ME
Any chance that these OSes might support USB networking?
Since the first thing I would do with a computer of mine that ran these OSes was to get rid of them I'm talking about other people's computers, and I need to be sure I won't break anything. So I'm not gonna try out stuff myself.
Questions about these procedures
I tried to get this working with Windows XP, but I couldn't figure a few things out.
1. Do we need to download both .INF files, the Nokia770%20USB%20Ethernet%20RNDIS.inf and the linux.inf?
If we only need to download the Nokia770%20USB%20Ethernet%20RNDIS.inf, then maybe correct the line that says:
Point it to the directory where you previously downloaded the linux.inf
file.
* No, one is enough, it states above that it is an updaed/improved version...
2 . So if we have already plugged in our 770 into XP, and it recognized it as a drive, do we need to remove the driver software that makes it appear as a USB drive, and replace it with the USBNet drivers?
* No, windows will assume it is a different device, so no conflict with the update/storage/network drivers for the Nokia770.
* However, as stated above: you have to insmod
the kernel module on the N770 before you connect the cable!
3 . When I try to do the above, I get an error stating that the driver I am trying to choose doesn't have anything to do with my hardware. * Make sure you have activated USB networking on the Nokia side correctly. I'm also using 2006OS Beta if that makes a difference *Haven't tried with the Beta, but with the official release from 06/30/2006.