Editing USB networking

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
This page describes how the maemo platform can be turned into a [[USB]] network device. The first part describes how to configure the Nokia tablet as a USB pluggable network device. The second part describes how to configure various platforms to use the Nokia tablet as a network device. This article is based loosely on the Maemo 3.x [http://maemo.org/development/documentation/manuals/3-x/howto_usb_networking_bora/ configuring USB networking HOWTO].
+
=UsbNetworking=
-
You might want to use the tablet as a USB network device to log into your tablet remotely, or to transfer data from your tablet to another computer, in a situation where wifi or bluetooth are not an option. If you wish to connect your tablet to a Linux machine over TCP/IP, the [http://maemo.org/development/documentation/pc_connectivity/ PC connectivity] section in the Maemo SDK documentation also contains useful information.
+
This page describes how the maemo platform can be turned into a USB network device. There are two parts to this document. The first part of this document describes how to configure the Nokia 770/n800 to be a USB plugable network device. The second part of this document describes how to configure various platforms to use the Nokia 770/n800 as a network device. These are the reasons that you may want to use Usb Networking with the Nokia 770/n800
-
'''WARNING'''
+
*Transfer data back and forth between the Nokia 770/n800 and a host computer.  
-
Currently there is a bug in the g_ether.ko driver of OS2008 (both 4.0.1 and 4.1) which prevents USB networking from working correctly with Windows machines (but not with Linux machines). See [https://bugs.maemo.org/show_bug.cgi?id=3243 bug #3243] for details. The bug was introduced somewhere between kernels 2.6.18 and 2.6.21, so Maemo versions based on 2.6.18 kernels (e.g. OS2007 and earlier) will work.
+
*Perform remote logins to the Nokia 770/n800 from a host computer.
 +
*Add a third connectivity tool to the existing WAN and BlueTooth support that the Nokia comes with out of the box.  
 +
*...  
 +
As with all usb hardware, driver software must installed on the host computer before the usb device is attached. Please make sure that your Nokia 770 is not connected to the computer while performing these steps.
-
== USB networking for N900 ==
+
=Page Status=
 +
/!\ Status: Early Draft: Some useful information.
-
Please visit [[N900 USB networking]].
+
=Part I -- Nokia 770/n800 USB Network Environment Configuration=
 +
http://m770cias.garage.maemo.org/images/usbnet/usbnet_concept_800.png
-
== Tablet USB network configuration ==
+
An usbnet concept image helps to see what the configuration will do. In normal circumstances, the USB Mass storage driver had control of the usb hardware. USBNet will displace the mass storage driver's control of the usb hardware with the g_ether network driver. Until the replacement occurs, the host computer will see the 770/n800 as just another mass storage device or an empty cable.
-
=== USB statusbar plugin ===
+
NOTE: After installing USB networking you should setup DUMMY access point to allow network access from www browser etc. http://maemo.org/maemowiki/DummyIAP
-
The [http://garage.maemo.org/projects/usb-otg-plugin/ usb-otg-plugin] applet lets you set up USB networking tablet-side, and switch between host and client mode. This is the easy way to do things and no other tablet-side configuration is required.
+
==Start and Stop Script==
-
 
+
For convenience, I placed the following script /etc/init.d/usbnet on my Nokia: In order to add this script to your device, you will need root access. Please see HowDoiBecomeRoot or the easier HowDoiBecomeRoot2 for information.
-
Alternatively you could try the usb networking applet found here:
+
-
  http://repository.maemo.org/extras-devel/pool/diablo/free/m/maemo-control/
+
-
 
+
-
=== Behind the scenes ===
+
-
 
+
-
In normal circumstances, the USB Mass storage driver had control of the USB hardware. USBNet allows the g_ether network driver to take control of the USB interface.
+
-
 
+
-
After installing USB networking, set up a dummy access point by running the following:
+
-
gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/type DUMMY
+
-
gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/name 'Dummy network'
+
-
gconftool-2 -s -t boolean /system/osso/connectivity/IAP/DUMMY/autoconnect true
+
-
 
+
-
You should see a "DEFAULT" connection appear in the connection manager.
+
-
 
+
-
'''WARNING'''
+
-
Currently there is a bug in Diablo that causes DUMMY connections not to show up in connection manager, a semi-official fix is outlined in [https://bugs.maemo.org/show_bug.cgi?id=3306#c23 bug #3306].
+
-
 
+
-
=== Starting and stopping USB network mode ===
+
-
 
+
-
To easily start & stop USB network mode, place the following script in /etc/init.d/usbnet on your tablet. To do this, you will need [[root access]] to the device.
+
-
 
+
-
While switching between modes by running the script, it is important to disconnect the USB cable.
+
<pre>
<pre>
Line 47: Line 30:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=usbnet
NAME=usbnet
-
DESC="USB Networking for Nokia Internet Tablets"
+
DESC="USB Networking for Nokia 770"
INITFILE=/etc/init.d/$NAME
INITFILE=/etc/init.d/$NAME
Line 59: Line 42:
         if [ "$USBNET" = "" ]
         if [ "$USBNET" = "" ]
         then
         then
-
           echo "Entering Ethernet via USB mode (g_ether)..."
+
           echo "entering Ethernet via USB mode (g_ether)..."
           insmod /mnt/initfs/lib/modules/$KERNEL_VERSION/g_ether.ko
           insmod /mnt/initfs/lib/modules/$KERNEL_VERSION/g_ether.ko
-
           echo "Waiting, then bringing up the usb0 interface.."
+
           echo "waiting, then starting up the usb0.."
           sleep 1
           sleep 1
           /sbin/ifup usb0
           /sbin/ifup usb0
         else
         else
-
           echo "Already in Ethernet-via-USB mode..."
+
           echo "already in Ethernet-via-USB mode..."
-
           echo "Try ping 192.168.2.15"
+
           echo "try ping 192.168.2.15"
         fi
         fi
         ;;
         ;;
Line 84: Line 67:
exit 0
exit 0
</pre>
</pre>
-
The script needs to have executable permissions, which you can give with
 
-
sudo chmod a+x /etc/init.d/usbnet
 
-
The script is quite basic, but can be run automatically at start-up, or manually using the command:
+
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|stop]
+
-
to activate or deactivate USB networking.
+
-
There is a default USB network interface configuration on Nokia N800 and 770 tablets. In the file /etc/network/interfaces, you should see a section which looks like this:
+
sudo /etc/init.d/usbnet start
-
<pre>
+
activates the USB-networking while
-
auto usb0
+
-
iface usb0 inet static
+
-
      address 192.168.2.15
+
-
      netmask 255.255.255.0
+
-
      gateway 192.168.2.14
+
-
</pre>
+
-
With this default configuration, the tablet interface will have the IP address 192.168.2.15, and the remote end will have the IP address 192.168.2.14.
+
sudo /etc/init.d/usbnet stop
 +
deactivates, i.e. switches back to USB mass storage device mode.
-
== Host USB Network Configuration ==
+
While switching, it is important to have USB disconnected! Otherwise the kernel modules will be blocked.
-
=== Windows ===
+
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:
-
====Requirements====
+
iface usb0 inet static
-
 
+
      address 192.168.2.15
-
* For Windows 2000, you will need to download [ RNDIS drivers] from Microsoft.
+
      netmask 255.255.255.0
-
* Download the file "Nokia770 USB Ethernet RNDIS.inf" from [http://homepage.hispeed.ch/mlivoncic/Nokia770%20USB%20Ethernet%20RNDIS.inf here] or [http://homepage.sunrise.ch/mysunrise/mlivoncic/Nokia770%20USB%20Ethernet%20RNDIS.inf here]. This allows to recognise that the RNDIS driver can be used with the Nokia device, and other Linux USB devices.
+
      broadcast 192.168.2.255
-
* [http://appcheck.net.temp.realssl.com/storage/Nokia900%20USB%20Ethernet%20RNDIS.inf Here] is an updated inf that should work on newer (32 or 64) bit Windows. It's not really tested much so please report results on the talk page!
+
      up route add default gw 192.168.2.14
-
* If you are using an N800, skip all the steps below which apply to the N770; the bora distribution supplies a control panel applet called "maemo-statusbar-usbnet". Once installed, the control panel "Maemo-DM" will allow you to change the function of the USB port from "MMC emulation" to a RNDIS emulation of a USB ethernet interface. You will also need to set the WinXP side's IP address to be fixed at 192.168.2.14.
+
-
 
+
-
==== Preparing the Windows host ====
+
-
 
+
-
On Windows 2000, dowload & unpack RNDIS-USB-Kit_05.exe [http://www.microsoft.com/whdc/device/network/NDIS/rndis.mspx on the Microsoft web site]. You 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.
+
-
 
+
-
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. Windows supports 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, 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.
+
-
A new network card with this name will become visible afterwards, which you can configure normally. Set the IP address to 192.168.2.14. Optionally activate ICS (Internet Connection Sharing) on your network adapter to share the outside world with your little Nokia.
+
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.
-
=== Linux ===
+
=Part II -- Host Platform USB Network Configuration=
 +
The Nokia 770/n800 configuration was the focus of part I of the USB Networking document. In part II our attention is turned to the configuration of various host computers.
-
==== Kernel Configuration ====
+
==Linux==
-
You should have the usbnet module available for your Linux kernel. On most distributions, this is the case by default. If this is not the case for your distribution, you will need to enable USB networking support in the kernel.
+
===Common Kernel Issues===
-
If you build your own kernel then you want 'CDC Ethernet support' in USB Network adaptors.
+
The focus of you Linux distribution will determine if you need to support this step or not. If the distro you use has a general purpose Linux kernel configured, then you may not need to worry about usbnet configuration support in the kernel.
<pre>
<pre>
Line 135: Line 101:
...
...
CONFIG_USB_USBNET=m
CONFIG_USB_USBNET=m
-
...
 
-
CONFIG_USB_NET_CDCETHER=m
 
-
...
 
</pre>
</pre>
-
==== NetworkManager based ====
+
The Linux usbnet configuration is show above.
-
A recent NetworkManager (at in least Fedora 12 and Ubuntu Karmic Koala) supports Ethernet USB gadgets out-of-the-box. However the 'auto usb0' entry that it creates amongst your connection list is configured for DHCP and the tablet will not provide that, so it will time out.
+
*Fedora You can locate this information by looking at the config* files in your grub /boot partition.
 +
*Debian
 +
*Ubuntu
 +
*Suse
 +
Fedora Core===
 +
===Debian===
 +
There is another howto located here: HowToSetUpUsbNetworkingDebian Note that this HOWTO recommends a different IP address configuration. If you don't want to change the config on the device you already setup, substitute 192.168.2.14 for 192.168.2.1 in the guide.
-
The easiest/cleanest way to get it to work is probably to create a new connection using the same MAC address as 'auto usb0' has, and then providing a fixed IP address: 192.168.2.14/255.255.255.0 for example, or change settings on the connection created by network-manager.
+
The Platform Document on USB Networking also describes a Debian PC setup.
-
 
+
-
==== Fedora ====
+
-
 
+
-
Older Fedora versions also supports Ethernet USB gadgets out-of-the-box. To configure the USB networking:
+
-
 
+
-
* Connect the tablet with g_ether.ko loaded to your Linux PC
+
-
* Open System -> Administrate -> Network (or run system-config-network from command line).
+
-
* Press the "New" button to create a new network interface. Select "Ethernet" network card type.
+
-
* On the next screen, select the "Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget (usb0)" or "Nokia Mobile Phones N900 (PC-Suite Mode)".
+
-
* Choose "Static IP address" and enter the IP address 192.168.2.15 for your PC, if you are using the default usb0 configuration on your tablet. Don't fill the gateway field on the Fedora side.
+
-
* Fill other settings (DNS etc) if you want to, then press "Finish".
+
-
 
+
-
Now reconnect the tablet to PC and the interface should automatically configure.
+
-
 
+
-
==== Debian ====
+
-
 
+
-
Ensure that the usbnet module is available to your kernel (try ''modprobe usbnet'', then ''lsmod'' to check).
+
-
 
+
-
Add the following to /etc/network/interfaces:
+
-
<pre>
+
-
allow-hotplug usb0
+
-
 
+
-
mapping hotplug
+
-
        script grep
+
-
        map usb0
+
-
 
+
-
iface usb0 inet static
+
-
      address 192.168.2.14
+
-
      netmask 255.255.255.0
+
-
      broadcast 192.168.2.255
+
-
      up iptables -I INPUT 1 -s 192.168.2.15 -j ACCEPT
+
-
</pre>
+
-
 
+
-
After plugging in the tablet, you can bring up the network interface with the command ''ifup usb0''.
+
-
 
+
-
==== Configuring the host as a gateway ====
+
-
If your host has no firewalling rules, you can set the gateway rules by modifying /etc/interfaces file.
+
-
 
+
-
<pre>
+
-
iface usb0 inet static
+
-
        address 192.168.2.14
+
-
        netmask 255.255.255.0
+
-
        up echo 1 > /proc/sys/net/ipv4/ip_forward
+
-
        up iptables -P FORWARD ACCEPT
+
-
        up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.2.0/24
+
-
        down echo 0 > /proc/sys/net/ipv4/ip_forward
+
-
        down iptables -t nat -F POSTROUTING
+
-
</pre>
+
-
Else add the necessary MASQUERADE rules to normal firewall rules.
+
-
 
+
-
If you get the following error:
+
-
<pre>
+
-
iptables v1.2.11: can't initialize iptables table `NAT': Table does not exist (do you need to insmod?)
+
-
Perhaps iptables or your kernel needs to be upgraded.
+
-
</pre>
+
-
You need verify that your kernel has the relevant iptables modules included, and hotplug or udev is set up properly on your computer.
+
-
 
+
-
==== Configuring the host as a bridge ====
+
-
Normally eth0 is on dhcp. This configuration allows my tablet to be on the same LAN as the rest of my boxes. You need the '''bridge''' module for 802.1d Ethernet Bridging installed.
+
-
 
+
-
iface br0 inet dhcp
+
-
          hostname ash
+
-
          pre-up  echo    "Adding ethernet bridge between LAN and PAN"
+
-
          pre-up  ifconfig eth0 0.0.0.0
+
-
          pre-up  brctl    addbr br3
+
-
          pre-up  brctl    setfd br3 0
+
-
          pre-up  brctl    stp br3 off
+
-
          pre-up  brctl    addif br3 eth0       
+
-
          pre-down echo    "Removing ethernet bridge between LAN and PAN"
+
-
          post-down brctl    delif br3 eth0
+
-
          post-down brctl    delbr br3
+
-
          post-down ifdown eth0
+
-
          post-down ifup eth0
+
-
 
+
-
I do
+
-
  ifup br0
+
-
 
+
-
And the tablet is then on the LAN.
+
-
 
+
-
==== Configuring the host firewall ====
+
-
 
+
-
If you have your Linux host configured with a strict firewall, you may need to modify your iptables to allow the tablet to access the internet over USB networking.
+
-
 
+
-
To allow access both to & from the tablet, the following iptables rules are required:
+
-
 
+
-
  iptables -A OUTPUT -o usb0 -j ACCEPT
+
-
  iptables -A INPUT -i usb0 -j ACCEPT
+
-
 
+
-
=== Testing the connection ===
+
-
To test the connection, you can either type ''ping 192.168.2.15'' on your PC or ''ping 192.168.2.14'' in an xterm on your tablet.
+
-
 
+
-
For troubleshooting, use ''ifconfig -a'' and ''route'' to verify on the Nokia and on a Linux or Unix PC, and ''ipconfig /all'' and ''route print'' on Windows.
+
-
 
+
-
=== Known issues ===
+
-
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 appears to be with the Nokia tablet, since after rebooting the device, networking works again. Remember to first initialize g_ether before plugging your tablet into the USB host.
+
-
 
+
-
This seems to be the case with Ubuntu too. Replugging causes following messages appear in the kernel log:
+
-
 
+
-
<pre>
+
-
[182104.412082] usb 3-1: new full speed USB device using uhci_hcd and address 29
+
-
[182104.824071] usb 3-1: device not accepting address 29, error -71
+
-
[182104.824100] hub 3-0:1.0: unable to enumerate USB device on port 1
+
-
</pre>
+
-
Rebooting the tablet seems to work.
+
==MS Windows==
 +
==Win 2000/XP===
 +
See instructions
-
=== Frequently asked questions ===
+
==ME/9x==
-
# 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?
+
Needs a different driver than above, currently appears to be unsupported.
-
#* No, windows registers the tablet in network mode as a different device.
+
-
#* However, as stated above: you have to insmod the kernel module on your tablet before you connect the cable!
+
-
# 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.
+
-
# My tablet can now talk to my XP machine, but how do I get out to the rest of the network?
+
-
#:First, set up a dummy access point, as described above, so that you can configure the network settings in connection manager for your usbnet connection. This will allow you to configure proxy server access. Secondly, install a proxy on your local machine. Examples include [http://www.proxomitron.info/ proxomitron] or [http://www.handcraftedsoftware.org/ freeproxy].
+
-
# How do I set up DNS once I have connected the tablet and the host?
+
-
#* Install and configure pdnsd on your host computer, and add nameserver 192.168.2.14 to the file /etc/resolv.conf on your tablet.
+
-
#* or configure the host as a gateway, and use the same DNS servers as your host (without messing up /etc/resolv.conf and the dnsmasq server):
+
-
#::echo "nameserver xxx.xxx.xxx.xxx" >> /tmp/resolv.conf.ppp0
+
-
#::where xxx.xxx.xxx.xxx is the dns server of the host (  as found in /etc/resolv.conf on the host linux box )
+
-
#::echo again the second address if required.
+
-
#::Don't forget to choose "dummy" from the wireless connection manager on the tablet and do 'ifup usb0' on the Linux box.
+
-
#How do I keep my SD memory cards from being unmounted?
+
-
#* Before you plug in the usb cable; open two xterminals and cd one to /media/mmc1 and the other to /media/mmc2 and leave them there. By keeping a foot in the door the cards are kept available ... the usbnet will still succeed.
+
-
[[Category:Users]]
+
=Other Notes=
-
[[Category:Wiki page of the day]]
+
It is possible to have the MMC cards available for local use on the device (but not available for the computer) while using USB Networking. See here: How_to_use_both_USB_networking_and_the_memory_card_at_the_same_time
-
[[Category:Connectivity]]
+
-
[[Category:USB]]
+
-
[[Category:Power users]]
+
=Attribution=
 +
=Michael Mlivoncic=, DrKludge

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)