Editing N900 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 to enable Networking on the [[Nokia N900|N900]] via [[USB]], '''to share your PC's internet to N900 via USB'''. The first part describes how to configure the N900. The second part describes how to configure various PC platforms to share internet. This article is based on the [[USB networking|Maemo 4.x USB networking article]]. It is also possible to use the N900 as a [[N900 USB router|USB router]], to share N900 internet to PC.
+
This page describes how to enable Networking on the [[N900]] via [[USB]]. The first part describes how to configure the Nokia N900 as a USB pluggable network device. The second part describes how to configure various platforms to use the Nokia N900 as a network device. This article is based on the Maemo 4.x [http://wiki.maemo.org/USB_networking wiki] for configuring USB networking.
-
You might want to use the N900 as a USB network device to log into your N900 remotely, or to transfer data from your N900 to another computer, in a situation where wifi or Bluetooth are not an option. If you wish to connect your N900 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.
+
You might want to use the N900 as a USB network device to log into your N900 remotely, or to transfer data from your N900 to another computer, in a situation where wifi or bluetooth are not an option. If you wish to connect your N900 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.
== N900 USB network configuration ==
== N900 USB network configuration ==
-
 
+
There is a default USB network interface configuration on Nokia N900. In the file /etc/network/interfaces, you should see a section which looks like this:
-
If you are going to use windows as your host, the configuration needed on your N900 are a little different, so skip directly to the "Starting USB network mode with Windows" Part.
+
-
 
+
-
There is a default USB network interface configuration on Nokia N900. In the file <code>/etc/network/interfaces</code>, you should see a section which looks like this:
+
<pre>
<pre>
auto usb0
auto usb0
Line 19: Line 16:
       up route del default
       up route del default
       up route add default gw  192.168.2.14
       up route add default gw  192.168.2.14
-
Also you can add the following lines to set the nameserver (dnsmasq will automatically change <code>/etc/resolve.conf</code>)
 
-
      dns-nameservers 8.8.8.8 8.8.4.4
 
and
and
       up run-standalone.sh dbus-send --type=method_call --system --dest=com.nokia.icd /com/nokia/icd com.nokia.icd.connect string:DUMMY uint32:0
       up run-standalone.sh dbus-send --type=method_call --system --dest=com.nokia.icd /com/nokia/icd com.nokia.icd.connect string:DUMMY uint32:0
Line 26: Line 21:
       down run-standalone.sh dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui com.nokia.icd_ui.disconnect boolean:true
       down run-standalone.sh dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui com.nokia.icd_ui.disconnect boolean:true
-
to properly set/reset the connection manager on connection/disconnection, especially if you have set up a DUMMY network as decribed later.
+
to properly set/reset the connection manager on connection/disconnection
 +
especially if you have set up a DUMMY network as decribed later.
-
With this default configuration, the N900 USB interface will have the IP address 192.168.2.15, and the remote end will have the IP address 192.168.2.14. By default, the USB network interface on the N900 is configured. You need to install the package usb-network-modules.  
+
With this default configuration, the N900 USB interface will have the IP address 192.168.2.15, and the remote end will have the IP address 192.168.2.14.
 +
By default, the USB network interface on the N900 is configured.
 +
You need to install the package usb-network-modules.  
=== Starting USB network mode ===
=== Starting USB network mode ===
-
 
-
First, set up the host (the computer at the other end of the USB connection, not the N900) to have an IP address of the gateway --in our case here, it's 192.168.2.14.  For a typical Linux computer, one might use the command "ifconfig usb0 192.168.2.14" (add "sudo" to the beginning of that command if necessary).  There may be other ways to do it for various versions of operating systems.
 
-
 
Plug one end of the USB cable on the host and the other end into the N900. The N900 will bring up the mode-selection dialog. Select 'PC Suite mode'.
Plug one end of the USB cable on the host and the other end into the N900. The N900 will bring up the mode-selection dialog. Select 'PC Suite mode'.
Line 41: Line 36:
-
Open a [[root access|root shell]] in [[terminal|X Terminal]] on the N900 and activate the interface by executing the following:
+
Open a root shell in 'X Terminal' on the N900 and activate the interface by executing the following:
<pre>
<pre>
sudo gainroot
sudo gainroot
Line 71: Line 66:
</pre>
</pre>
-
To automatically setup usb0 when entering PC suite mode edit the file <code>/etc/default/usbnetwork</code> and set the variable <code>USBNETWORK_ENABLE</code>.
+
----
 +
To automatically setup usb0 when entering PC suite mode change the last few lines
 +
of /usr/sbin/pcsuite-enable.sh by adding the "ifup usb0" line.
<pre>
<pre>
-
# Automatically enable USB network when PC Suite mode is active (default disabled)
+
logger "$0: sent SIGUSR1 to syncd"
-
USBNETWORK_ENABLE=1
+
ifup usb0
 +
exit 0
</pre>
</pre>
-
In fact if you want to use the `Mail to exchange' feature to synchronize mail, calendar or contacts with an exchange server (such as Google mail) the 'PC suite mode' might block the exchange. So do not use it when connected in that mode, instead choose the 'charging only' mode instead. This
+
And, to automatically down your usb0 interface when leaving PC suite mode, add to /usr/sbin/pcsuite-disable.sh
-
mode can be achieved by choosing neither of the offers in the above menu. Simply tap above the menu to close it. This 'charging only' mode still gives you the usb0 interface provided that you initialized it
+
<pre>
-
once through the 'PC suite mode'.
+
ifdown usb0
 +
exit 0
 +
</pre>
 +
 
 +
In fact if you want to use the `Mail to exchange' feature to
 +
synchronize mail, calendar or contacts with an exchange server (such as  
 +
google mail) the
 +
`PC suite mode' might block the exchange. So don't use it when
 +
connected in that mode, choose the `charging only' mode instead. This
 +
mode can be achieved but choosing neither of the offers in the above
 +
menu. Simply tap above the menu to close it. This `charging only' mode
 +
still gives you the usb0 interface provided that you initialized it
 +
once through the `PC suite mode'.
 +
 
 +
----
 +
 
 +
 
 +
 
If you can not ping the outside world (for example: local network works but Google does not), check your routing tables.
If you can not ping the outside world (for example: local network works but Google does not), check your routing tables.
-
<pre>
+
<pre>/home/user # route
-
/home/user # route
+
Kernel IP routing table
Kernel IP routing table
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
192.168.2.0    *              255.255.255.0  U    0      0        0 usb0
192.168.2.0    *              255.255.255.0  U    0      0        0 usb0
default        192.168.2.14    0.0.0.0        UG    0      0        0 usb0
default        192.168.2.14    0.0.0.0        UG    0      0        0 usb0
-
default        *              0.0.0.0        U    0      0        0 gprs0
+
default        *              0.0.0.0        U    0      0        0 gprs0</pre>
-
</pre>
+
If you have a situation like above where the cell network's packets are at a lower default priority, you might have to run the following to fix it:
If you have a situation like above where the cell network's packets are at a lower default priority, you might have to run the following to fix it:
-
<pre>
+
<pre>/home/user # route del default
-
/home/user # route del default
+
/home/user # route
/home/user # route
Kernel IP routing table
Kernel IP routing table
Line 108: Line 120:
--- google.com ping statistics ---
--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
3 packets transmitted, 3 packets received, 0% packet loss
-
round-trip min/avg/max = 236.481/249.929/257.081 ms
+
round-trip min/avg/max = 236.481/249.929/257.081 ms</pre>
-
</pre>
+
-
If after having fixed the routing table you still are not able to ping the outside world try to add a nameserver to <code>/etc/resolv.conf</code>
+
If after having fixed the routing table you still are not able to ping
 +
the outside world try to add a nameserver to /etc/resolv.conf
  nameserver 127.0.0.1
  nameserver 127.0.0.1
Line 119: Line 131:
=== Stopping USB network mode ===
=== Stopping USB network mode ===
-
 
This is optional. It is not necessary to stop the interface after unplugging the USB cable.  
This is optional. It is not necessary to stop the interface after unplugging the USB cable.  
Line 127: Line 138:
ifdown usb0
ifdown usb0
</pre>
</pre>
-
 
-
=== Starting USB network mode with Windows ===
 
-
 
-
To use the USB network mode alongside with a Windows host, you must use [[MADDE]]. MADDE will not work with just changing the configuration in the <code>/etc/network/interfaces</code> file. Different modification are needed:
 
-
 
-
<ol>
 
-
<li>
 
-
Install MADDE package (actually MADDE for Windows is not required, but just files '''maemo_usbnet.inf''' and '''maemo_usbnet.cat''' for installation network device '''Linux USB Ethernet/RNDIS Gadget''').
 
-
</li>
 
-
<li>
 
-
Add the following lines to <code>/usr/sbin/pcsuite-enable.sh</code> (Do not forget to change the ip address so it matches the one configured on your host's usb port.) (pcsuite-enable.sh is called by the ke-recv which handles memory card mounting, USB mass storage logic, and some other things, based on HAL.)
 
-
<pre>
 
-
run-standalone.sh dbus-send --type=method_call --system --dest=com.nokia.icd /com/nokia/icd com.nokia.icd.connect string:DUMMY uint32:0
 
-
route del default
 
-
route add default gw 192.168.2.14
 
-
</pre>
 
-
so it looks like this :
 
-
<source lang="bash">
 
-
if [ $RC != 0 ]; then
 
-
    logger "$0: failed to install g_nokia"
 
-
    run-standalone.sh dbus-send --type=method_call --system --dest=com.nokia.icd /com/nokia/icd com.nokia.icd.connect string:DUMMY uint32:0
 
-
    route del default
 
-
    route add default gw 192.168.2.14
 
-
    exit 1
 
-
else
 
-
    sleep 2
 
-
fi
 
-
</source>
 
-
</li>
 
-
<li>
 
-
Add the following lines to <code>/usr/sbin/pcsuite-disable.sh</code> (Don't forget to change the ip...)
 
-
<pre>
 
-
ifdown usb0
 
-
run-standalone.sh dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui com.nokia.icd_ui.disconnect boolean:true
 
-
route del default netmask 0.0.0.0 gw 192.168.2.14
 
-
</pre>
 
-
So it looks like this:
 
-
<pre>
 
-
logger "$0: do nothing to pass USB certs"
 
-
ifdown usb0
 
-
run-standalone.sh dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui com.nokia.icd_ui.disconnect boolean:true
 
-
route del default netmask 0.0.0.0 gw 192.168.2.14
 
-
exit 0
 
-
</pre>
 
-
</li>
 
-
<li>
 
-
This will cause the dummy network to connect when USB networking is used, right after you press the "PC Suite" button in the popup that comes after connecting the USB cable. This will only work if you got MADDE installed and configured for "Windows network". Also, a route will be added to your host machine, with Windows it is very easy to share connections. You should now have network connectivity to your PC + Internet.
 
-
</li>
 
-
<li>Once you disconnect the USB cable, the dummy network will disconnect and the route will be deleted.
 
-
</li>
 
-
<li>
 
-
Add a DNS server of your choice to <code>/etc/resolv.conf</code>, for example:
 
-
<pre>
 
-
nameserver 8.8.8.8
 
-
nameserver 8.8.4.4
 
-
</pre>
 
-
</li>
 
-
</ol>
 
-
 
-
Windows 7 (and probably Vista) have firewall setups based network location. This means you might run into problems trying to connect to services on your Windows boxen, because by default N900 USB Network adapter isn't known to Windows as a proper type of NDIS device. This causes Windows to put connections made over USB into "unidentified connections" category and apply Public Location firewall rules to it. Now of course you could poke all the holes into your Public firewall profile and make it look like Swiss cheese, but fortunately some VirtualBox people ran into the same thing with their loopback adapter and [http://forums.virtualbox.org/viewtopic.php?p=73167#p73167 solved it for us]:
 
-
# open Registry Editor
 
-
# browse to <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}</code> (all network adapters are stored here)
 
-
# find your N900 USB adapter sub-key, it says the adapter name somewhere in key
 
-
# add <code>DWORD</code> key <code>*NdisDeviceType</code> with a value 1
 
-
Now your USB connection is considered part of Private firewall profile. Stay safe and go buy Swiss cheese in supermarket instead.
 
=== Fixing the MAC address ===
=== Fixing the MAC address ===
By default, the N900 sets a random MAC address for the USB interface every time you reboot.
By default, the N900 sets a random MAC address for the USB interface every time you reboot.
-
This makes some operating systems (Mac OS X) detect a new device whenever you connect the N900
+
This makes some operating systems (MacOSX) detect a new device whenever you connect the N900
and ask you to configure the network interface. The solutions is to set a fixed MAC address
and ask you to configure the network interface. The solutions is to set a fixed MAC address
<pre>
<pre>
Line 205: Line 151:
== Host USB Network Configuration ==
== Host USB Network Configuration ==
 +
The Host configuration is detailed in the Maemo 4.x [http://wiki.maemo.org/USB_networking#Host_USB_Network_Configuration USB Networking wiki]. Please refer to it for details.
-
The PC Host configuration is detailed in the [[USB networking#Host_USB_Network_Configuration|Maemo 4.x  USB Networking article]]. Please refer to it for details.
+
''FIXME, there is no usb host mode on n900''
-
 
+
-
=== Host configuration on Debian Lenny ===
+
== Host configuration on Debian Lenny ==
Create the file in /etc/udev/rules.d/99-nokia-n900.rules and put in the following lines:  
Create the file in /etc/udev/rules.d/99-nokia-n900.rules and put in the following lines:  
Line 215: Line 161:
  #SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900p"
  #SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900p"
-
The second rule is commented out as it is not needed for usb networking.
+
Note that the udev configuration above may not work in Debian squeeze. This rule renames either the usb network interface (usb0) or the usb phone net interface (usbpn0) to interface called n900. Since the two rules above are identical, the choice is made seemingly at random. Making the rules more accurate by adding a DEVPATH key helps:
-
A different approach uses a DEVPATH key:
+
  SUBSYSTEM=="net", ACTION=="add", DEVPATH=="/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.8/net/usb0", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900"
  SUBSYSTEM=="net", ACTION=="add", DEVPATH=="/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.8/net/usb0", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900"
  SUBSYSTEM=="net", ACTION=="add", DEVPATH=="/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/net/usbpn0", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900p"
  SUBSYSTEM=="net", ACTION=="add", DEVPATH=="/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/net/usbpn0", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900p"
-
Your DEVPATH may be different though, depending on which USB port is used on the host computer etc, so to make this work reliably you have to use always
+
Your DEVPATH may be different though, depending on which USB port is used on the host computer etc. You can use  
-
the same usb port.
+
-
 
+
-
You can use  
+
  udevadm monitor --kernel
  udevadm monitor --kernel
while plugging in the N900 to see what is the correct path.
while plugging in the N900 to see what is the correct path.
-
 
-
Newer kernels/udev versions seem to be confused to seeing both <code>usb0</code> and <code>usbpn0</code> devices. Luckily DEVPATH accepts wildcards, so you may want to try something like:
 
-
SUBSYSTEM=="net", ACTION=="add", DEVPATH=="*/net/usb[0-9]", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer} =="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900"
 
After adding the udev rules, you have to reload them with:
After adding the udev rules, you have to reload them with:
  udevadm control --reload-rules
  udevadm control --reload-rules
-
Then edit <code>/etc/network/interfaces</code> and add:
+
Then edit /etc/network/interfaces and add:
<pre>
<pre>
allow-hotplug n900
allow-hotplug n900
Line 249: Line 188:
</pre>
</pre>
-
Now put your USB cable in the PC and in the N900 and on the host. To check that everything is set up properly you can run:
+
Now put your usb cable in the pc and in the n900 and on the host.
 +
To check that everything is set up properly you can run:
  ifconfig n900
  ifconfig n900
-
=== Automatic configuration with Ubuntu 12.04 ===
+
== Automatic configuration with ubuntu 9.10 ==
-
 
+
-
Create the file /etc/udev/rules.d/nokia-n900.rules and add this (single) line:
+
-
<pre>
+
-
ACTION=="add", DRIVERS=="usb", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="usb0", RUN+="/sbin/ifup usb0"
+
-
</pre>
+
-
 
+
-
NetworkManager must be told to ignore usb0.  Use ifconfig to get the MAC address of usb0, and add these lines to /etc/NetworkManager/NetworkManager.conf:
+
-
<pre>
+
-
[keyfile]
+
-
unmanaged-devices=mac:XX:XX:XX:XX:XX:XX # replace X's with usb0 MAC address
+
-
</pre>
+
-
 
+
-
Add the following lines to /etc/network/interfaces:
+
-
<pre>
+
-
# N900 on usb0
+
-
allow-hotplug usb0
+
-
iface usb0 inet static
+
-
  address 192.168.2.14 
+
-
  netmask 255.255.255.0
+
-
</pre>
+
-
 
+
-
Restart the affected services:
+
-
<pre>
+
-
sudo service udev restart
+
-
sudo service network-manager restart
+
-
</pre>
+
-
 
+
-
Now when you connect the N900 via USB and select PC Suite Mode, usb0 will be up and configured.
+
-
 
+
-
=== Automatic configuration with Ubuntu 9.10/10.04/11.10 ===
+
-
 
+
Note: this instructions should be fixed/improved:
Note: this instructions should be fixed/improved:
Line 291: Line 200:
  SUBSYSTEM=="net", ACTION=="add", ENV{ID_USB_DRIVER}=="cdc_phonet", ENV{ID_MODEL}="N900__PC-Suite_Mode", ENV{ID_VENDOR}=="Nokia", NAME="n900pn"
  SUBSYSTEM=="net", ACTION=="add", ENV{ID_USB_DRIVER}=="cdc_phonet", ENV{ID_MODEL}="N900__PC-Suite_Mode", ENV{ID_VENDOR}=="Nokia", NAME="n900pn"
-
Then edit <code>/etc/network/interfaces</code> and add:
+
Then edit /etc/network/interfaces and add:
<pre>
<pre>
auto n900
auto n900
Line 303: Line 212:
</pre>
</pre>
-
<strong>For Ubuntu 11.10</strong>, put these lines to /etc/udev/rules.d/99-nokia-n900.rules
+
finally you have to fix /etc/init/network-interface.conf, change the line:
-
<pre>
+
-
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="usb0", RUN+="/sbin/ifconfig usb0 192.168.2.14 up", RUN+="/sbin/iptables -A POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE"
+
-
</pre>
+
-
and don't modify <code>/etc/network/interfaces</code> in the way above, because you will make the boot slow with the message "waiting for network configuration". But for forwarding you should add to <code>/etc/sysctl.conf</code>
+
-
<pre>
+
-
net.ipv4.ip_forward=1
+
-
</pre>
+
-
 
+
-
The Network Manager on Ubuntu 11.10 won't auto detect this <code>usb0</code> interface, you will have to check it via <code>ping</code> or via Network Tools.
+
-
 
+
-
<strong>For Ubuntu 11.04</strong>, just plug the USB cable in, with already-configured N900,the Network Manager will auto handle <code>usb0</code> interface.
+
-
 
+
-
<strong>For Ubuntu 9.10 (NOT 10.04)</strong> you have to fix <code>/etc/init/network-interface.conf</code>, change the line:
+
  stop on net-device-removed INTERFACE=$INTERFACE
  stop on net-device-removed INTERFACE=$INTERFACE
with:
with:
Line 322: Line 218:
(Note the difference: net-device-remove'''d''')
(Note the difference: net-device-remove'''d''')
-
<strong>For all versions:</strong> You have to reload udev rules with:
+
 
 +
You have to reload udev rules with:
  udevadm control --reload-rules
  udevadm control --reload-rules
-
You have to restart NetworkManager so it re-reads the interfaces file (otherwise it'll clobber your network device):
+
Now put your usb cable in the pc and in the n900.
-
sudo /etc/init.d/network-manager restart
+
-
or
+
-
sudo service network-manager restart
+
-
 
+
-
Now put your USB cable in the PC and in the N900.
+
If you are unable to autoconnect through the networking applet, you may need to manually bring up the interface:
If you are unable to autoconnect through the networking applet, you may need to manually bring up the interface:
Line 336: Line 228:
If all went fine:
If all went fine:
-
* you should see with <code>ifconfig -a</code> two new network interfaces, n900 and n900pn, the first one configured with the proper ip address 192.168.2.15, and should be able to ping the N900.
+
* you should see with ifconfig -a two new network interfaces, n900 and n900pn, the first one configured with the proper ip address 192.168.2.15, and should be able to ping the n900.
-
* the N900 should be able to use the PC internet connection immediately.
+
-
=== Host configuration on Archlinux via netcfg ===
+
* the n900 should be able to use the pc internet connection immediately.
-
You will need to add the following lines into <code>/etc/network.d/N900</code>:
+
== Windows XP ==
-
 
+
Windows XP USB networking does not work out of the box, but the old 770 workaround still works.
-
<pre>
+
-
CONNECTION='ethernet'
+
-
DESCRIPTION='Nokia n900 maemo USB passthrough network'
+
-
INTERFACE='usb0'
+
-
IP='static'
+
-
ADDR='192.168.2.14'
+
-
# GATEWAY='192.168.2.14'
+
-
# DNS=('192.168.2.14')
+
-
# PRE_UP='  << script loading of main module(s)! >>'
+
-
POST_UP='
+
-
        echo 1 > /proc/sys/net/ipv4/ip_forward &&
+
-
        iptables -A POSTROUTING -t nat -s 192.168.2.0/24 -j MASQUERADE &&
+
-
        iptables -I INPUT -s 192.168.2.15 -j ACCEPT &&
+
-
        iptables -P FORWARD ACCEPT'
+
-
POST_DOWN='
+
-
        echo 0 > /proc/sys/net/ipv4/ip_forward &&
+
-
        iptables -F &&
+
-
        iptables -t nat -F &&
+
-
        echo ":: Unloading cdc_ether" &&
+
-
        modprobe -r cdc_ether &&
+
-
        echo ":: Unloading cdc_phonet" &&
+
-
        modprobe -r cdc_phonet &&
+
-
        echo ":: Unloading usbnet" &&
+
-
        modprobe -r usbnet &&
+
-
        echo ":: Unloading phonet" &&
+
-
        modprobe -r phonet &&
+
-
        echo ":: Unloading cdc_acm" &&
+
-
        modprobe -r cdc_acm'
+
-
</pre>
+
-
 
+
-
You need to also add these to udev if you are also using udev. Normally they go into <code>/etc/udev.d/rules/</code>:
+
-
 
+
-
SUBSYSTEM=="net", ACTION=="add", ENV{ID_USB_DRIVER}=="cdc_ether", ENV{ID_MODEL}="N900__PC-Suite_Mode", ENV{ID_VENDOR}=="Nokia", NAME="usb0"
+
-
SUBSYSTEM=="net", ACTION=="add", ENV{ID_USB_DRIVER}=="cdc_phonet", ENV{ID_MODEL}="N900__PC-Suite_Mode", ENV{ID_VENDOR}=="Nokia", NAME="usb1"
+
-
 
+
-
Of course your entire configuration does not exactly have to be like this, it is only a rough guide.
+
-
 
+
-
If you don't use netcfg, you can have the udev rule directly configure the interface with e.g. <code>/etc/udev/rules.d/99-nokia-n900.rules</code>:
+
-
 
+
-
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="01c8", ATTRS{manufacturer}=="Nokia", ATTRS{product}=="N900 (PC-Suite Mode)", NAME="n900", RUN+="/sbin/ifconfig n900 192.168.2.14"
+
-
 
+
-
This may even work with multiple USB devices connected, because it's matching on the vendor and product IDs rather than the interface name.
+
-
 
+
-
=== Windows ===
+
-
 
+
-
Windows USB networking does not work out of the box, but the old 770 workaround still works.
+
So follow these steps:
So follow these steps:
-
# install the [[MADDE|Mad Developer]] application on N900 and start it and press "'''Usb Networking'''" -> "'''Windows Network'''" -> "'''Close'''".
+
* install the Mad Developer application and start it.
-
# Press button "'''Edit'''" and enter following '''IP Address:''' 192.168.2.15, '''Netmask:''' 255.255.255.0, '''Peer IP:''' 192.168.2.14. and then press "'''Configure'''" (this address will be used for the SCP client as well).
+
* click on "Manage Usb" and then on "Load g_ether"
-
# For Windows OS download [http://tablets-dev.nokia.com/MADDE.php install-madde-0.6.72.exe]. Open file with '''7-Zip''' and extract somewhere (best to the desktop) files "'''maemo_usbnet.inf'''" and "'''maemo_usbnet.cat'''"
+
* plug the device into the USB port. Windows will ask you to name a device driver for the RNDIS gadget. Select a device driver by hand and choose the linux.inf from the [[USB_networking]] page.
-
# Connect your N900 via USB and choose '''PC Suite mode'''.  
+
* open a terminal on the N900 and get root e.g. via "sudo gainroot". Type "ifconfig usb0 192.168.0.1"
-
# PC will obtain drivers for new network device, just point it to the downloaded files. This will install network device "'''Linux USB Ethernet/RNDIS Gadget'''"
+
* Now windows should display the network as connected. Set the PC ip address in the windows connections dialog.
-
# Set for "Linux USB Ethernet/RNDIS Gadget" IP address '''192.168.2.14'''.  
+
* Now you should be able to ping the device but not the other way round as Windows still filters the traffic. However everything else should work, e.g. MADDE
-
# For Vista / Windows7 open "'''Network and Sharing center'''" and select "'''Manage network connections'''" (left menu) --> right click on network device which have internet access and choose "'''Properties'''" --> select '''tab "Sharing"''' --> check box "'''Allow other devices to connect...'''" --> under "'''Home networking connection'''" select the network connection (Local Area Connection n#) which is dedicated to "Linux USB Ethernet/RNDIS Gadget".  
+
-
# When you have finished USB Networking, to retrieve default state of N900 press in Mad Developer: "'''Usb Networking'''" -> "'''Unix Network'''" -> "'''Close'''".
+
-
=== Mac OS X ===
+
== Mac OS X ==
-
OS X will detect a new network interface and ask you to configure it. Choose DHCP with manual address and set the IP address to 192.168.2.14
+
OS X will detect a new network interface and ask you to configure it.
 +
Choose DHCP with manual address and set the IP address to 192.168.2.14
-
To use the Internet connection of your Mac via USB networking make sure to enable System Preferences -> Sharing -> Internet sharing for the N900 interface [http://docs.info.apple.com/article.html?path=Mac/10.5/en/8156.html Howto]
+
To use the Internet connection of your Mac via USB networking
 +
make sure to enable System Preferences -> Sharing -> Internet sharing for the N900 interface
 +
[http://docs.info.apple.com/article.html?path=Mac/10.5/en/8156.html Howto]
-
== One-time Quick & Dirty Connection ==
+
== Using the usb networking for maemo apps ==
-
 
+
By default standard network apps works well with usb networking, while maemo specific apps not.
-
If you just need a one-time connection quickly, with no need to edit configuration files or set things up for automatic detection/connection, then as an alternative to the above, the following has worked for this user (kwtm).  Make sure "usb-network-modules" and "rootsh" are installed (via Applications Manager or equivalent).
+
-
 
+
-
<ol>
+
-
<li>
+
-
connect the N900 to the Other Computer via USB cable, and select "PC Suite mode" when asked.
+
-
</li>
+
-
<li>
+
-
open a terminal on the N900 and type:
+
-
<pre>
+
-
sudo gainroot
+
-
ifconfig usb0 192.168.2.15
+
-
ifconfig usb0 up
+
-
</pre>
+
-
</li>
+
-
<li>
+
-
on your Other Computer, open a terminal and type the following for Ubuntu; modify appropriately for other computers:
+
-
<pre>
+
-
sudo ifconfig usb0 192.168.2.14
+
-
sudo ifconfig usb0 up
+
-
ssh -l user -v 192.168.2.15
+
-
</pre>
+
-
</li>
+
-
</ol>
+
-
 
+
-
That is all. You should now be connected via terminal to your N900.  Whatever you type on your Other Computer, it will be as if you are typing on the N900 itself in a terminal. Non-Ubuntu Linux computers might not use the "sudo" command, so you will have to gain root another way.  One possibility that will probably work is to use the "su" command first, allowing you to omit "sudo" on the above commands:
+
-
su  # (And then enter the root password when asked)
+
-
ifconfig usb0 192.168.2.14
+
-
ifconfig usb0 up
+
-
exit # (This stops the root mode)
+
-
ssh -l user -v 192.168.2.15
+
-
[I have no idea what to do for Windows computers.  Perhaps someone can post the equivalent commands?]
+
-
 
+
-
== Using USB networking for Maemo applications ==
+
-
 
+
-
By default, standard network applications works well with USB networking, while Maemo-specific applications do not.
+
-
 
+
-
Install <code>libicd-network-dummy</code> from Fremantle Nokia-binaries repository or better <code>libicd-network-null</code> from [[extras-devel]], and when USB networking is up pickup "Dummy network" from the connection manager. One way to do it:
+
-
apt-get install libicd-network-dummy
+
-
  or
+
-
apt-get install libicd-network-null
+
 +
Install libicd-network-dummy from Fremantle Nokia-binaries repository or better libicd-network-null from extras-devel, and when
 +
usb networking is up pickup "Dummy network" from the connection manager.
If the dummy network does not show up in the network manager you could run
If the dummy network does not show up in the network manager you could run
the following commands in xterm:
the following commands in xterm:
Line 456: Line 264:
  gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/autoconnect false
  gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/autoconnect false
-
 
-
If connect automatically is used with "Any Connection", the phone will also use Dummy Network, which is not good. To prevent this, you need to run the following command :
 
-
gconftool -s /system/osso/connectivity/network_type/auto_connect -t list --list-type string "[WLAN_INFRA,GPRS]"
 
-
Keep in mind the above command will get overwritten if you change the value via UI. (If you choose any / wifi / gprs, and you will want to go back to "wifi or gprs" you will have to do the CLI thing again.
 
Then restart icd2:
Then restart icd2:

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)