This page explains how to connect your Replciant phone to the Internet via an USB connection to a computer connected to the Internet.
Two scripts are necessary: one to run on the host computer and one to run on the device.
Here's the script to run on the computer. Copy the following text to a file named "run_pc.sh" (or any other name, you just need to keep the same name along the process):
#!/bin/sh # Replicant USB Networking # ======================== # # Copyright (C) 2011 Paul Kocialkowski, GPLv3+ # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. IPTABLES_CLEAN_RULES=true USB_IFACE="usb0" INTERNET_IFACE="eth0" USB_IFACE_IP="192.168.4.200" # Clean iptables rules iptables_rules_clean () { if [ $IPTABLES_CLEAN_RULES = false ] then return fi iptables --flush iptables --table nat --flush iptables --delete-chain iptables --table nat --delete-chain } # Inject iptables forwarding rules iptables_forward_rules_apply () { iptables --table nat --append POSTROUTING --out-interface $INTERNET_IFACE -j MASQUERADE iptables --append FORWARD --in-interface $USB_IFACE -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward } # Configure network link usb_networking_configure () { ifconfig $USB_IFACE up ifconfig $USB_IFACE $USB_IFACE_IP } usb_networking_disable () { ifconfig $USB_IFACE down echo 0 > /proc/sys/net/ipv4/ip_forward } case $1 in "start") echo "Starting Replicant USB Networking" iptables_rules_clean usb_networking_configure iptables_forward_rules_apply ;; "stop") echo "Stopping Replicant USB Networking" usb_networking_disable iptables_rules_clean ;; *) echo "Usage: sh $0 {start|stop}" ;; esac
Then, set this file executable:
h3. Replicant USB Networking - Device Here's the script to run on the device. Copy the following text to a file named "run_dev.sh" (or any other name, you just need to keep the same name along the process): <pre> #!/system/bin/sh # Replicant USB Networking # ======================== # # Copyright (C) 2011 Paul Kocialkowski, GPLv3+ # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # Enable USB Networking USB_IFACE="usb0" USB_IFACE_IP="192.168.4.202" GATEWAY_IP="192.168.4.200" DNS1_IP="8.8.8.8" usb_networking_enable () { echo 1 > /sys/class/usb_composite/rndis/enable ifconfig usb0 up } usb_networking_configure () { ifconfig $USB_IFACE $USB_IFACE_IP route add default gw $GATEWAY_IP dev $USB_IFACE setprop net.dns1 $DNS1_IP # setprop net.dns1 $( cat /system/etc/resolv.conf | sed -e "s|.*#.*||" -e "s|^.*nameserver \(.*\)$|\1|g" | grep -v "^$" | head -n 1 ) } usb_networking_disable () { echo 0 > /sys/class/usb_composite/rndis/enable ifconfig usb0 down } case $1 in "start") echo "Starting Replicant USB Networking" usb_networking_enable usb_networking_configure ;; "stop") echo "Stopping Replicant USB Networking" usb_networking_disable ;; *) echo "Usage: sh $0 {start|stop}" ;; esac </pre> <pre> <pre> h3. Using the scripts Now both scripts are in place. You should now: <pre> <pre> Note that if you use [[NetworkManager]], it could notice a new network interface and try to configure it: you should disconnect this interface on [[NetworkManager]] before you run the second script. Now everything is in place. If no error is shown, it should now be working. You can try to ping some website on the device. If It doesn't work, try to run again each script, running the configuration one more time can't do any worse. h4. Getting back to normal If you want to disable Replicant USB Networking, you have to: <pre> <pre> h3. Customizing the scripts The variables at the beginning of each script can be customized for your usage: h4. run_pc.sh <pre> <pre> <pre> <pre> h4. run_dev.sh <pre> <pre> <pre> <pre>