N900 USB networking
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 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 PC connectivity section in the Maemo SDK documentation also contains useful information.
Contents |
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:
auto usb0 iface usb0 inet static address 192.168.2.15 netmask 255.255.255.0 gateway 192.168.2.14
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
Starting USB network 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'.
Open a root shell in 'X Terminal' on the N900 and activate the interface by executing the following:
sudo gainroot ifup usb0
If all went well, no errors will be displayed. The command 'ifconfig usb0' will give the following output:
Nokia-N900-42-11:~# ifconfig usb0 usb0 Link encap:Ethernet HWaddr F2:50:8F:04:1D:8B inet addr:192.168.2.15 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1021 errors:0 dropped:0 overruns:0 frame:0 TX packets:2003 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:86091 (84.0 KiB) TX bytes:2556598 (2.4 MiB)
You should also be able to ping 192.168.2.15
Nokia-N900-42-11:~# ping 192.168.2.15 PING 192.168.2.15 (192.168.2.15): 56 data bytes 64 bytes from 192.168.2.15: seq=0 ttl=64 time=0.367 ms 64 bytes from 192.168.2.15: seq=1 ttl=64 time=0.214 ms ^C --- 192.168.2.15 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.214/0.290/0.367 ms
If you can not ping the outside world (for example: local network works but Google does not), check your routing tables.
/home/user # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 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 * 0.0.0.0 U 0 0 0 gprs0
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:
/home/user # route del default /home/user # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.2.0 * 255.255.255.0 U 0 0 0 usb0 default * 0.0.0.0 U 0 0 0 gprs0 /home/user # ping google.com PING google.com (74.125.45.103): 56 data bytes 64 bytes from 74.125.45.103: seq=0 ttl=51 time=257.081 ms 64 bytes from 74.125.45.103: seq=1 ttl=51 time=236.481 ms 64 bytes from 74.125.45.103: seq=2 ttl=51 time=256.226 ms ^C --- google.com ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 236.481/249.929/257.081 ms
Stopping USB network mode
This is optional. It is not necessary to stop the interface after unplugging the USB cable.
However, to stop the USB interface, unplug the USB cable and execute the following in 'X Terminal'
sudo gainroot ifdown usb0
Host USB Network Configuration
The Host configuration is detailed in the Maemo 4.x USB Networking wiki. Please refer to it for details.
FIXME, there is no usb host mode on n900
Automatic configuration with ubuntu 9.10
Note: this instructions should be fixed/improved:
Create the file in /etc/udev/rules.d/99-nokia-n900.rules and put in the following lines:
SUBSYSTEM=="net", ACTION=="add", ENV{ID_USB_DRIVER}=="cdc_ether", ENV{ID_MODEL}="N900__PC-Suite_Mode", ENV{ID_VENDOR}=="Nokia", NAME="n900" SUBSYSTEM=="net", ACTION=="add", ENV{ID_USB_DRIVER}=="cdc_phonet", ENV{ID_MODEL}="N900__PC-Suite_Mode", ENV{ID_VENDOR}=="Nokia", NAME="n900pn"
the edit /etc/network/interfaces and add:
auto n900 iface n900 inet static address 192.168.2.14 netmask 255.255.255.0 up iptables -A POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE up echo 1 > /proc/sys/net/ipv4/ip_forward down iptables -D POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE down echo 0 > /proc/sys/net/ipv4/ip_forward
finally you have to fix /etc/init/network-interface.conf, change the line:
stop on net-device-removed INTERFACE=$INTERFACE
with:
stop on net-device-remove INTERFACE=$INTERFACE
(Note the difference: net-device-removed)
You have to reload udev rules with:
udevadm control --reload_rules
Now put your usb cable in the pc and in the n900.
If all went fine:
- 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.
Using the usb networking for maemo apps
By default standard network apps works well with usb networking, while maemo specific apps not.
Install libicd-network-null from extras devel, and when usb networking is up pickup "Dummy network" from the connection manager.