=== AWB US211 === [[TOC(WiMAX/cHardware*)]] AWB US211 is the USB WiMAX adapter with a Beceem chipset. ==== Driver Installation ==== The following steps were completed successfully using Ubuntu 12.04. Files in the following tarball are required to install the driver: http://wimax.orbit-lab.org/downloads/BeceemSource.tar.gz . The tarball is quite large (~150 MB) and may take a few minutes or more to download. Download the tarball and extract the files: {{{ # mkdir ~/Downloads # cd ~/Downloads # wget http://wimax.orbit-lab.org/downloads/BeceemSource.tar.gz # tar -xzf BeceemSource.tar.gz }}} The following packages must be installed via apt-get: {{{ # apt-get update # apt-get install libssl-dev linux-headers-$(uname -r) make patch unzip }}} It's most likely the linux header files are downloaded into the directory /usr/src. To check: {{{ # ls -ltr /usr/src total 8 drwxr-xr-x 24 root root 4096 May 13 11:36 linux-headers-3.8.0-31 drwxr-xr-x 7 root root 4096 May 13 11:36 linux-headers-3.8.0-31-generic }}} Download the source files for the linux kernel distribution into /usr/src and create a symlink to simplify installation when building the driver: {{{ # pushd /usr/src # apt-get source linux-image-$(uname -r) # ln -s linux # popd }}} Note: should be suffixed with the kernel version. ==== Install libeap Library ==== Patch and install the wpa_supplicant using the commands: {{{ # cd ~/Downloads/BeceemSource/ # tar -xzf wpa_supplicant-0.7.3.tar.gz # cd wpa_supplicant-0.7.3 # patch -p1 < ../wpa_supplicant-0.7.3-generate-libeap-peer.patch # make -C src/eap_peer # make -C src/eap_peer install }}} This library is required to install the wimaxd utility, and does not get installed properly by the script provided in the Sprint tarball. ==== Build the Driver and Load the Driver Module ==== Unpack the Sprint tarball and run the script. This will build and install the driver: {{{ # cd ~/Downloads/BeceemSource/ # tar -xzf Sprint4GDeveloperPack-1.6.1.2.2.tar.gz # cd Sprint4GDeveloperPack-1.6.1.2.2 # ./install.sh }}} The installer will prompt for various file paths, if the symlink was created in the previous step then the default choices should be correct. On some recent kernels, you will need to blacklist the `bcm_wimax` driver to prevent it from claiming the device on start up. {{{ # echo "blacklist bcm_wimax" > /etc/modprobe.d/blacklist-bcm-wimax.conf }}} Reboot the machine: {{{ # reboot }}} Once the machine comes back up again run the following command to add the new driver to the startup modules: {{{ # modprobe drxvi314 }}} Check if the module loaded correctly: {{{ # lsmod | grep drxvi314 drxvi314 309219 0 }}} Check if above driver registered properly with the system: {{{ # dmesg | grep usbbcm }}} This should output a line that includes " usbcore: registered new interface driver usbbcm" ==== Verify USB Dongle is Present in System and Configure Center Frequency ==== In a another terminal window, tail the syslog file. This will show the system messages for the wimax commands down below. This is for informational purpose. {{{ # tail -f /var/log/syslog }}} List the USB devices and verify if the Wimax adapter is present: {{{ # lsusb Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 003 Device 002: ID 198f:0220 Beceem Communications Inc. BCSM250 WiMAX Adapter Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub }}} One of the devices should include "Beceem Communications Inc." if the installation was successful. The Bus and Device number may be different. Copy the following files with the commands: {{{ # cp /usr/src/USB_350/Source/CSCM/BeceemCSCM/wimaxd.conf /etc # cp /lib/firmware/macxvi350.bin /lib/firmware/macxvi200.bin }}} Edit the new /etc/wimaxd.conf file as desired, the file is heavily commented and should be self explanatory. Make sure that the network's center frequency can be found in the CenterFrequencyMHz parameter of the config file, the GENI network center frequency (2590) is not one of the default frequencies. The firmware file is copied because the utilities expect that both the macxvi350.bin and macxvi200.bin will be present when utilities are run. ==== Start the Server and Connect ==== Start the wimax daemon: {{{ # wimaxd -c /etc/wimaxd.conf ********** CSCM Server Started ********** 05/13/14 10:24:11 }}} Use the connection utility to search for the base station and check for similar output: {{{ # wimaxc search Beceem CM Server Version 1.1.7.0 Network search returned 1 base station. Idx BSID Pre Freq BW RSSI CINR 0 01:01:44:51:db:00:00:01 0x00 2590.000 10.000 -56 31 }}} If networks are found then the installation is complete and the wimax interface will try to connect to a base station. The syslog file should show a similar output: {{{ May 13 10:24:27 localhost kernel: [ 260.814967] LinkControlResponseMessage:PHY_SYNC_ACHIVED May 13 10:24:34 localhost kernel: [ 268.573803] LinkControlResponseMessage:PHS Support Status Recieved In LinkUp Ack : 1 May 13 10:24:34 localhost kernel: [ 268.573806] May 13 10:24:35 localhost kernel: [ 269.186284] CmControlResponseMessage:### TID RECEIVED 35968 }}} ==== Configure and Test the Interface ==== Once connected the wimax dongle should come up as an ''eth'' interface. Match the dongle's MAC address to ''eth'' interface. In this example, the MAC address of the wimax dongle used is b8:61:6f:0d:a0:6d. To see a list of interfaces: {{{ # ifconfig -a eth0 Link encap:Ethernet HWaddr 00:03:1d:0c:7d:d0 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:20 Memory:f0700000-f0720000 eth1 Link encap:Ethernet HWaddr 00:03:1d:0c:7d:d1 inet addr:10.10.7.10 Bcast:10.10.255.255 Mask:255.255.0.0 inet6 addr: fe80::203:1dff:fe0c:7dd1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:710 errors:0 dropped:0 overruns:0 frame:0 TX packets:576 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:71675 (71.6 KB) TX bytes:92532 (92.5 KB) Interrupt:17 Memory:f0600000-f0620000 eth2 Link encap:Ethernet HWaddr b8:61:6f:0d:a0:6d BROADCAST MULTICAST MTU:1400 Metric:1 RX packets:35246 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11366 (11.3 KB) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:35 errors:0 dropped:0 overruns:0 frame:0 TX packets:35 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2590 (2.5 KB) TX bytes:2590 (2.5 KB) }}} The wimax dongle came up on ''eth2''. We'll configure this interface as working example: {{{ # ifconfig eth2 10.41.41.29 netmask 255.255.0.0 up }}} Now check ''eth2'' interface. {{{ # ifconfig eth2 eth2 Link encap:Ethernet HWaddr b8:61:6f:0d:a0:6d inet addr:10.41.41.29 Bcast:10.41.255.255 Mask:255.255.0.0 inet6 addr: fe80::ba61:6fff:fe0d:a06d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1 RX packets:41362 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:13174 (13.1 KB) TX bytes:168 (168.0 B) }}} Test the interface by pinging the gateway (10.41.0.1): {{{ # ping 10.41.0.1 -c 5 PING 10.41.0.1 (10.41.0.1) 56(84) bytes of data. 64 bytes from 10.41.0.1: icmp_req=1 ttl=254 time=61.7 ms 64 bytes from 10.41.0.1: icmp_req=2 ttl=254 time=59.9 ms 64 bytes from 10.41.0.1: icmp_req=3 ttl=254 time=57.9 ms 64 bytes from 10.41.0.1: icmp_req=4 ttl=254 time=61.9 ms 64 bytes from 10.41.0.1: icmp_req=5 ttl=254 time=60.9 ms --- 10.41.0.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 57.951/60.522/61.963/1.494 ms }}} To run a speed test via webservice, download ''speedtest-cli'' script: {{{ # apt-get install python-pip # pip install speedtest-cli # pip install speedtest-cli --upgrade }}} Update the routing table to ensure all traffic routed through the eth2 interface. First delete the default gateway: {{{ # route del default }}} Now set default gateway via eth2: {{{ # route add default gw 10.41.0.1 eth2 }}} View the routing table entries: {{{ # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default wmgw.outdoor.or 0.0.0.0 UG 0 0 0 eth2 10.10.0.0 * 255.255.0.0 U 0 0 0 eth1 10.41.0.0 * 255.255.0.0 U 0 0 0 eth2 }}} After the routing table has been updated, run the speedtest-cli script. The uplink and downlink speeds will be shown as measure by speedtest: {{{ root@node7-11:~# speedtest-cli --source 10.41.41.29 Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from Rutgers University (128.6.192.190)... Selecting best server based on ping... Hosted by Atlantic Metro (New York City, NY) [42.62 km]: 19.948 ms Testing download speed........................................ Download: 6.90 Mbits/s Testing upload speed.................................................. Upload: 0.81 Mbits/s }}}