User Tools

Site Tools


wirover

The Wisconsin Wireless Rover (WiRover)

The Wisconsin Wireless Rover (WiRover) project implements a bandwidth aggregated wide-area wireless access technology for the Internet, especially suited for users on the move, often in vehicles. The goal is to exploit diversity to provide a reliable and high-quality Internet connection.

Prior Work

Details

Currently being worked on by Joshua Hare, Rob Madden, and Jordan Walker
Previously worked on by Ryan Pfeiffer, Nick Leaf, and Sharad Saha.

Gmail Account for getting mar status emails:

user: wisconsin.rover@gmail.com
pass: soekris;

Set up a dyndns.com account

  • username: wirover
  • password: soekris;

Install ddclient package on eeepc, set up for wirover1.dyndns.org.

Future boxes can be added by adding host wirover2, etc.

Hardware

WiNGS-Laptop-3

  • Acer TravelMate 4720
  • CSL Number: C025752
  • MAC address of (Hamachi) ethernet card: 7A:79:05:C2:E3:BD
  • MAC address of (Intel) wireless card: 00:1C:BF:64:CF:6C
  • Operating System: Windows XP

WiNGS-Laptop-4 (eeepc 900A)

  • User: wirover
  • Password: soekris;
  • CSL Number: C027507
  • MAC address of ethernet card: 00:23:54:30:97:39
  • MAC address of (Atheros) wireless card: 00:15:AF:EB:95:74
  • Operating System:
    • Description: Ubuntu 8.04.1
    • Codename: Hardy Heron

WiNGS-Laptop-5 (eeepc 900A)

  • User: wirover or wings
  • Password: soekris;
  • Model: EEEPC 900A
  • CSL Number: C027508
  • MAC address of ethernet card:
  • MAC address of (Atheros) wireless card:
  • Operating System:
    • Description: Ubuntu 8.04.1
    • Codename: Hardy Heron

WiNGS-Laptop-6 (eeepc 900A)

  • User: wirover
  • Password: soekris;
  • Model: EEEPC 900A
  • CSL Number: C027506
  • MAC address of ethernet card: 00:23:54:30:A4:6F
  • MAC address of (Atheros) wireless card:
  • Operating System:
    • Description: Ubuntu 9.10
    • Codename: Karmic Koala

WiNGS-Laptop-7 (lenovo S10)

  • User: wirover
  • Password: soekris;
  • Model: Lenovo S10
  • CSL Number: C030290
  • MAC address of ethernet card: 00:26:82:03:7a:4a
  • MAC address of (Atheros) wireless card:
  • Operating System:
    • Description: Ubuntu 9.10
    • Codename: Karmic Koala

Ubuntu EEEPC/Easy Peasy Configuration

  • Remove 'Ubiquity', 'netbook-launcher', 'maximus' from System/Preferences/Sessions/Startup Items
  • Power Management: When lid closes: Do Nothing
  • Power Management: When battery is critically low: Shutdown
  • Power Management: On AC power: Never shutdown
  • Power Management: On Battery: Shutdown after one hour

How to get project source

SVN Howto for MAR:

  • Corral SVN User: user: svn password: soekris;
  • Repositories exist at: corral.wail.wisc.edu:/home/svn/(project)
  • Projects include (mar/mar_per_conn_rr/wirover/bus_tracker/traffic)
  • You need to request access to corral.wail.wisc.edu to get source, or usre the 'svn' user to check stuff out.
  • Set your SVN_EDITOR variable in .bashrc or .cshrc to your favorite text editor:
    • export SVN_EDITOR=/usr/bin/vim
  • Modules Include:
          [rmadden@corral mar]$ svn ls file:///home/svn/mar OR svn ls svn+ssh://username@corral.wail.wisc.edu/home/svn/mar
          mar_eeepc/
          mar_linux/
          mar_soekris/
          [rmadden@corral wirover]$ svn ls file:///home/svn/wirover OR svn ls svn+ssh://username@corral.wail.wisc.edu/home/svn/wirover
          wicontroller/
          wigateway/
          wireless28:~ robmadden$ svn ls svn+ssh://svn@corral.wail.wisc.edu/home/svn/wiscosvn@corral.wail.wisc.edu's password: 
          wirover/

Checkout current version of WiRover System (checks out code for Gateway/Controller)

          svn co svn+ssh://svn@corral.wail.wisc.edu/home/svn/wisco/

Checkout modules over ssh:

          svn co svn+ssh://username@corral.wail.wisc.edu/home/svn/(project)/(module)
          wireless28:~ robmadden$ svn co svn+ssh://svn@corral.wail.wisc.edu/home/svn/dotfiles
          wireless28:~ robmadden$ svn co svn+ssh://svn@corral.wail.wisc.edu/home/svn/wirover
          wireless28:~ robmadden$ svn co svn+ssh://svn@corral.wail.wisc.edu/home/svn/wisco
          wireless28:~ robmadden$ svn co svn+ssh://svn@corral.wail.wisc.edu/home/svn/wisco/wirover
          wireless28:~ robmadden$ svn co svn+ssh://svn@corral.wail.wisc.edu/home/svn/wisco/wirover/data
          wireless28:~ robmadden$ svn co svn+ssh://svn@corral.wail.wisc.edu/home/svn/wisco/wirover/demo
          wireless28:~ robmadden$ svn co svn+ssh://svn@corral.wail.wisc.edu/home/svn/wirover_k

Checkout the bus tracker over ssh:

          svn co svn+ssh://username@corral.wail.wisc.edu/home/svn/bus_tracker

How to make a branch over ssh:

          svn copy svn+ssh://username@corral.wail.wisc.edu/home/svn/mar/mar_eeepc/(copy_from) svn+ssh://username@corral.wail.wisc.edu/home/svn/mar/mar_eeepc/branches/(branch_name)

How to make a tag over ssh:

          svn copy svn+ssh://svn@corral.wail.wisc.edu/home/svn/wisco/wirover/ svn+ssh://svn@corral.wail.wisc.edu/home/svn/wisco/tags/wirover-0.1 -m "Tagging the 0.1 releaes of the 'wirover' project."

Bus Tracker Details

  • Setup Instructions
  • Install ant, apt-get install ant
  • Install librxtx-java
  • Install Java SE non-blocking API
  • Ant build all on the client
  • Run client.jar on client, server.jar on server. Note, mysql DB must be setup correctly on server, copy server.jar to the server

General Setup/Linksys DD-WRT Setup/DHCP and DNS on WiGateway

Because the routing cache is maintained by the kernel separately from the routing tables, manipulating the routing tables may not have an immediate effect on the kernel's choice of path for a given packet. To avoid a non-deterministic lag between the time that a new route is entered into the kernel routing tables and the time that a new lookup in those route tables is performed, use ip route flush cache. Once the route cache has been emptied, new route lookups (if not by a packet, then manually with ip route get) will result in a new lookup to the kernel routing tables.

BIOS Changes

  • Disable Wireless Network Card

OpenWRT Settings (backed up in svn as config/dd-wrt-config.bin):

Administration Tab

  • Management
    • Router Management
      • Router Username: wirover
      • Router Password: soekris;
    • Web Access
      • Protocol: HTTPS
    • Remote Access
      • Web GUI Management: Enable
      • Use HTTPS
      • Web GUI Port: 8080
  • WOL
    • Wake-on-Lan
      • MAC Address/Hostname: (00:23:54:30:A4:6F/C027506)
      • MAC Address/Hostname: (00:23:54:30:97:39/C027507)
      • MAC Address/Hostname: (/C027508)
      • Net Broadcast: 255.255.255.255
    • Automatic Wake-on-Lan
      • Automatic Wake on Lan: Enable
      • Interval: 15 Seconds
      • Host Name: 255.255.255.255
      • Interval: 60 Seconds

Setup Tab

  • WAN Setup
    • WAN Connection Type
      • Connection Type: Disabled
    • Optional Settings
      • MTU: Manual (highest possible calculated MTU)
  • Network Setup Section
    • Router Setup
      • Local IP Address: 192.168.2.1
      • Subnet Mask: 255.255.255.0
      • Gateway: (IP of WiGateway) 192.168.2.2
      • Local DNS: (IP of WiGateway) 192.168.2.2
    • Network Address Server Settings (DHCP)
      • DHCP Type: Forwarder
      • DHCP Server: 192.168.2.2

Wireless Tab

  • Wireless Physical Interface wl0
    • Access Point Mode
    • ESSID: WiGateway

Services Tab

  • Static Leases
  • Add the laptop that will be connected to the AP with IP 192.168.2.2

NAT/QoS Tab

  • Enable Buswatch Port Forwarding 9000-9999 to 80 on Buswatch IP (192.168.2.149)

On ubuntu machine:

cat enabled > /sys/class/net/eth0/device/power/wakeup

Add ethernet card driver to MODULES_WHITELIST in /etc/default/acpi-support

Write 'wol_setup' script : ethtool -s (interface) wol g

Modify scripts in /etc/acpi/suspend.d

I started out with a fresh install of ubuntu 9.04 on a HP desktop machine.

  • installed wireshark
  • installed subversion (svn)
  • sudo apt-get install madwifi-tools (for wlanconfig…setting up an AP)
  • sudo apt-get install vim

To setup the madwifi driver

  • switch out of ath5k driver to ath_pci
  • system → administration → hardware drivers
  • choose to switch to the “other” wireless driver
  • check /etc/modprobe.d/madwifi.conf to make sure ath5k was blacklisted
  • actually could never get the madwifi driver to work properly in ap mode

Setup DNSmasq for the AP:

Setup the linksys AP for now

  • found error where dhcp should have been forwarded instead of server
  • user: wirover pass: soekris;

Then setup no_proxy per connection striping.

  • need to remember to do a `modprobe tun`
  • also have to have two routes for the NAT to work
  • additional routes for multiple interfaces must be such that they don't conflict

General Setup/Linksys DD-WRT Setup/DHCP and DNS on Linksys Box

/etc/resolv.conf

  • nameserver 208.67.222.222
  • nameserver 208.67.220.220

OpenWRT Settings (backed up in svn as config/dd-wrt-config.bin):

Administration Tab

  • Management
    • Router Management
      • Router Username: wirover
      • Router Password: soekris;
    • Web Access
      • Protocol: HTTPS
    • Remote Access
      • Web GUI Management: Enable
      • Use HTTPS
      • Web GUI Port: 8080
  • WOL
    • Wake-on-Lan
      • MAC Address/Hostname: (00:23:54:30:A4:6F/C027506)
      • MAC Address/Hostname: (00:23:54:30:97:39/C027507)
      • MAC Address/Hostname: (/C027508)
      • Net Broadcast: 255.255.255.255
    • Automatic Wake-on-Lan
      • Automatic Wake on Lan: Enable
      • Interval: 15 Seconds
      • Host Name: 255.255.255.255
      • Interval: 60 Seconds

Setup Tab

  • WAN Setup
    • WAN Connection Type
      • Connection Type: Disabled
    • Optional Settings
      • MTU: Manual (highest possible calculated MTU)
  • Network Setup Section
    • Router Setup
      • Local IP Address: 192.168.2.1
      • Subnet Mask: 255.255.255.0
      • Gateway: (IP of WiGateway) 192.168.2.2
    • Network Address Server Settings (DHCP)
      • DHCP Type: Server
      • All checkboxes checked.

Wireless Tab

  • Wireless Physical Interface wl0
    • Access Point Mode
    • ESSID: WiGateway

NAT/QoS Tab

  • Enable Buswatch Port Forwarding 9000-9999 to 80 on Buswatch IP (192.168.2.149)

Setup the linksys AP for now

  • found error where dhcp should have been forwarded instead of server
  • user: wirover pass: soekris;

BusWatch Setup

  • Default IP: 192.168.0.200
  • Default Port: 80
  • Static IP: 192.168.2.149
  • Static Port: 80

MAR ('mar_eeepc') Details (Original MAR)

From Nick Leaf

MAR has two “ends,” so to speak. The inward-facing end is the NAT and wireless AP. On the MAR laptop, this function is taken care of by the internal wifi interface. MAR captures all packets on this interface. The outward-facing end is one or more EVDO cards. MAR captures all packets on either interface, though it mostly only deals with the network and transport layers.

Most of the action takes place in mar_msg.c, in the process_outbound_pkt and process_inbound_pkt functions. Outbound packets are those heading from clients on the AP to the EVDO network, and inbound packets are those heading towards the AP clients. UDP (except for DNS packets on port 53) and ICMP traffic is blocked; only TCP traffic is passed.

Every time process_outbound_pkt receives a SYN from an AP client on a connection that does not already exist, it creates entries in the hashtables for that connection. See lines 387-453 in mar_msg.c. There are two tables, one for outbound packets and one for inbound packets. The key for the outbound hashtable key is computed from the AP client's IP, the AP client's port, and the destination server's IP and port. The inbound hashtable key is computed from the server's IP and port, and the EVDO interface's IP and port.

Video Stream Setup

  • install video driver linux-uvc
sudo apt-get install uvc
  • install VideoLAN Client (VLC)
sudo apt-get install vlc
sudo wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list && sudo apt-get -q update && sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring && sudo apt-get -q update
  • run apt-get update
sudo apt-get update
sudo apt-get purge ffmpeg x264 libx264-dev
sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libx11-dev libxvidcore4-dev zlib1g-dev
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default
cd ..
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "3:0.svn`date +%Y%m%d`-12ubuntu3" --default

Netlink sockets will send notifications from the kernel to the user space of links going up and down, changes to IP addresses, and changes to routes. It can also be used to add and remove routes.

wirover.txt · Last modified: 2010/03/18 15:24 by rmadden