Networking
The Comprehensive Alternative Networking Guide
A lot of the alternative networking methods on this wiki and in the forum have out-date information. This guide is for OS2008 Diablo. For more detailed information on a specific interface see the relevant wiki page or search the forums.
(FYI: to add a new page to the wiki just navigate to it http://wiki.maemo.org/your-new-page this was not obvious to me until I remembered how wikipedia is set up)
We will cover: built-in wifi (Managed), external USB wifi (r8187), ethernet (via USB), bluetooth PAN, usb networking, and forwarding traffic to a wired computer.
Contents |
Built-in wifi (Managed)
The built-in wireless card is pictured in detail here: http://talk.maemo.org/showthread.php?t=30032
This interface is wlan0 and uses the closed-source cx3110x driver. For the NITdroid project an open-source driver http://stlc45xx.garage.maemo.org was created. As it stands, the internal wifi chipset is not capable of injection with either of these drivers.
A useful utility is WifiInfo which shows signal strength, internal IP address, power savings toggle and a AP scan option.
External USB wifi (r8187)
This is the legacy drive for the RTL8187 chipset. The Alfa 500mW b/g usb adapter uses this as do knock-offs. The Alfa goes for about $35, while the knock-off is about $25.
You are going to need more power than the N810 can provide for itself. There are many ways to do this. EXAMPLES of power injection
Download and untar this archive containing the compiled drivers. For example, download here to Documents
# cd /home/user/MyDocs/.documents/ # tar -xvf rtl8187_diablo.tar # cd rtl8187/
Make script executable
# chmod a+x r8187-start
Script:
echo host > /sys/devices/platform/msusb_hdrc/mode insmod ieee80211_crypt-rtl.ko insmod ieee80211-rtl.ko insmod r8187.ko echo -n 1 > /sys/bus/usb/devices/1-1/bConfigurationValue
The first line tells the N810 to set the USB mode as host The next 3 lines insert the kernel modules in the right order. The last line is optional, if you have a proper powered hub comment it out, if you are using a y-cable or similar then this tells the N810 to ignore the lack of power messages and use the device anyway. No, this will not work if you do not have the full power requirements; it is merely for when you fulfill the power requirement and the device does not know it.
Plug the microusb end into your N810. A couple error message will pop up, these are normal and just ignore them."usb device not supported". then "Unable to connect, no file system available" (hit OK)
# lsusb (as root, else there will be no output) Bus 001 Device 012: ID 0bda:8187 Realtek Semiconductor Corp. Bus 001 Device 001: ID 0000:0000
if no output then you are not root. If the Realtek doesn't show up then try lsusb a few more times, if that doesn't work it means that the wifi card is not being supplied enough power. That is the tricky part regarding external (also card chipset must be supported) usb wifi cards.
Now time to execute the script
$ ./r8187-start
No output should show (if you run this too early, as in before the popup error messages then it might also have no output). If you have already run this script this session (haven't turned off N810 since) then it will state that it can't insert the kernel modules. If it states that "/sys/bus/usb/devices/1-1/bConfigurationValue" does not exist, it means it is not getting enough power. It might also state that if you have not plugged the cable in.
At this point let's see if everything works.
# bash # airmon-ng Interface Chipset Driver wlan0 Nokia 770 cx3110x wlan1 RTL8187 r8187
# airodump-ng wlan1
At this point we are not using aircrack-ng suite for nefarious use. We are using it because it's reliable and the built-in (and community created) tools are hard-coded for wlan0. A list of APs/routers should appear as it sees them. We are doing this in leu of a proper scanner (Connections and WifiInfo are hard-coded and iwlist scan wlan1 doesn't work for some reason)
connect to router
connect to AP/router
# iwconfig wlan1 essid MYNETWORKHERE
input key to open AP
# iwconfig wlan1 key off
check to see if associated with AP
# iwconfig wlan1
obtain IP address via DHCP (if obtaining leave fails, just run command again until it succeeds)
# /sbin/udhcpc -n -q -i wlan1
select DUMMY from Network connection dialog box and browse the web!
If browsing doesn't work, then check if you can ping IP
ping 4.2.2.2
If that works but ping google.com doesn't then DNS isn't working
nano /etc/resolv.conf
And make sure a line like this exists:
NAMESERVER 192.168.1.1
which should point to your router's admin page (default gateway).
nefarious use warning
while on the subject, instead of connecting to router, let's change the mode from Managed to Monitor (injection-capable)
# airmon start wlan1
Now run airodump to capture packets
# airodump-ng wlan1 -w savedfile
Choose a channel to increased efficiency
# airodump-ng wlan1 -w savedfile -c 6
Open a new terminal window or tab to run some attacks while airodump is running. First we test if injection is working. Not all routers are suseptable to packet injection, range is also a major factor. If at least one router gets over 0% then injection is in fact working correctly.
# aireplay wlan1 -9
Deauthenticate attack. The X's are the BSSID of the Access Point/Router
# aireplay wlan1 -0 0 -a XX:XX:XX:XX:XX:XX
Deauthenticate user with the c parameter.
# aireplay wlan1 -0 0 -a XX:XX:XX:XX:XX:XX -c XX:XX:XX:XX:XX:XX
Fake authentication.
# aireplay wlan1 -1 5 -a XX:XX:XX:XX:XX:XX
ARP attack. Takes awhile to start injecting packets. ARPs good, ACKs bad.
# aireplay wlan1 -3 -b XX:XX:XX:XX:XX:XX
Ethernet
Save the following .deb packages dbus-scripts and usbLAN to Documents.
# cd /home/user/MyDocs/.documents/ # dpkg -i dbus-scripts_1.0.3_armel.deb # dpkg -i usbLAN_0.4.6_armel.deb
If you have a USB=>Ethernet dongle with the RTl8150 chipset, specifically the Linksys USB100M (ebay about $15 w/ shipping) then it should be plug and play. Plug ethernet cable into adapter dongle, dongle into USB OTG cable and OTG cable into N810. It should automatically connect to the dummy IAP "WIRED" and then "Unable to to connect, no file system available" should popup. At this point, you should be able to ping google.com and web browse.
Bluetooth PAN
On the host computer, install blueman. BlueMan. Not bluemon (installed by default). Reboot (or you could open a terminal and run blueman-applet).
- Blueman>Local Services>Network>
- Check "Group Network" and "Network Access Point (NAP)".
- Select dnsmasq, change IP address to 192.168.3.14.
- Check "Enable Routing (NAT)"
- Finally select "Let Blueman handle the network interfaces"
- Apply.
Pair tablet with computer.
- Select BT applet>Devices>New.
- Select your computing device and Pair.
- The computer will popup (sometimes minimized) asking for the passcode that the tablet provides. Make sure "trusted" is checked. If you SElinux installed it may ask if you want to always set as trusted, do so.
Go here and follow directions to install PC Connectivity Manager packages.
- Settings>Control Panel>PC-Connectivity Manager>Advanced
- Select [...] next to Environments>New>Name it bluetooth.
- Connection type>Bluetooth>Options select enable.
- Under "Bluetooth address" click Search to pair with your computer.
- Connection type>Bluetooth>Options select enable.
- Select [...] next to Environments>New>Name it bluetooth.
- Click Save>Basic (make sure Bluetooth is checked)>Apply.
- If you SElinux installed on your computer it may ask if you want to always set as trusted, do so.
- The BT icon/applet should now be blue.
Now open nano or your favorite text editor as root
# nano /etc/resolv.conf
and add the router's IP/gateway to the file on a new line
NAMESERVER 192.168.1.1
CTRL+X then y and enter
You should now be able to ping google.com
USB networking
Make sure you have the wonderful PC Connectivity Manager installed on the tablet.
- Main Menu>Settings>Control Panel>PC Connectivity Manager
- Advanced>
- Select Environments [...] and New and input USB
- Select USB Network>Options>drop-down next to Mass Storage change to Network
- Default values here will work, should be:
- IP adress 192.168.2.15
- Gateway 129.68.2.14
- Network Mask: 255.255.255.0
- Save>Apply
- Advanced>
Fedora
- System>Administration>Network>(Input root password)
- >New>Ethernet connection>Forward>Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget (usb0)
- >Forward>Select Statically set IP addresses>
- Address: 192.168.2.14
- Subnet mask: 255.255.255.0
- Default gateway address: 192.168.2.14
- Primary DNS: 209.18.47.61 (or 4.2.2.2 or whatever DNS server you like)
- Secondary DNS: 209.18.47.62
- >Forward>Apply
NetworkManager should now successfully connect to it (initially networkmanager should have seen the USB connection but fail at connecting)
From the tablet ping 192.168.2.14 if that works, then it's time to let the tablet open to the Internet
- System>Administration>Firewall>(Input root password)>
- Hit OK to warning dialog (actually it says Close)>Trusted Interfaces>
- Check usb0>Apply
Now you should be able to ping google.com from the tablet. If google.com can't be pinged try 4.2.2.2 to see if you picked a faulty DNS server.
XP & Debian-based (Ubuntu)
Follow directions USB_networking here
Vista
You are out of luck (AFAIK). RDNIS gadget drivers seem to be unsupported. Use adhoc instead, if the Windows driver for your laptop's card supports it.
Special Thanks to:
qwerty12, paulkoan, texrat, Patrik Flykt, the PC Connectivity team and everyone else involved.