close Warning: Can't synchronize with repository "(default)" (/common/SVN/wimax does not appear to be a Subversion repository.). Look in the Trac log for more information.

12. GENI WiMAX Mobile Stations

12.1 Linux PC with Intel WiMAX Modem Card

12.1.1 Wimax Driver Installation for Intel Corp. WiMAX Connection 2400m USB Card on Orbit Node or Similar Linux Laptop PC Platform

Follow these steps to install wimaxd and wimaxcu on 32-bit Ubuntu 12.04 distribution.

1) Load ubuntu-12-04-base-32bit.ndz onto a grid node with a wimax card

 grid> omf load -i ubuntu-12-04-base-32bit.ndz -t node4-1
 grid> omf tell -a on -t node4-1

2) ssh into the node

grid> ssh root@node4-1

3) Download the installation tar file

root@node4-1> wget

4) Uncompress and untar the file

root@node4-1> tar -zxvf Install_WiMAX_Tools.tar.gz

5) Change directory

root@node4-1> cd Install_WiMAX_Tools/

6) Load requires library files

root@node4-1> apt-get update
root@node4-1> apt-get install libnl1 libnl-dev libglib2.0-0 libglib2.0-dev build-essential pkg-config libglobus-openssl-module0 libglobus-openssl-module-dev libssl-dev

7) Run the install script and select 'y' for all prompts

root@node4-1> ./

8) Load wimax card driver into modules

root@node4-1> modprobe i2400m_usb

9) Check for wmx0 interface

root@node4-1> ifconfig -a

10) Run wimax daemon

root@node4-1> wimaxd -i wmx0 -b

11) Turn wimax radio on

root@node4-1> wimaxcu ron

12) Scan for wimax basestation

root@node4-1> wimaxcu scan

12.1.2 Intel 6250 WiMAX Modem Card

12.1.3 Installing Image

Samsung NC10 NetBook

The firmware, tools , network service and the patch were downloaded from LinuxWimax

  1. Compile a Linux Kernel to Version greater than 2.6.35 and reboot into that kernel.
  1. Install the i2400m firmware
    Download the i2400 firmware 1.5.0 version.
    Untar the source , cd to the directory and
      install -o root -g root -m 0644 *.sbcf /lib/firmware
  2. Install the Wimax Tools

First install libnl and libnl's development packages

   apt-get install libnl1 libnl-dev libglib2.0-0 libglib2.0-dev
   apt-get install build-essential pkg-config
   cd ~Download/wimax-tools-1.4.3 
   export I2400M=/lib/firmware/
   make install
  1. Build the libeap library
    To do that first install openssl libraries.
    apt-get install libglobus-openssl-module0 libglobus-openssl-module-dev libssl-dev 

Download the Supplicant from wpa-supplicant Untar and unzip the download

cd ~Downloads/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

Please do not forget to run ldconfig otherwise you will not be able to build the Wimax-Tools from Intel.

  1. Build the Intel-Wimax-Tools Untar and unzip the downloaded source and

cd ~Downloads/wimax-1.5.1

Copy the NDnSAgentConfig_forDriver.xml file to ./InfraStack/OSAgnostic/WiMax/Agents/NDnS/XML_Files or modify NSP_ID 51 in the file to look like

                                                <Text>GENI WiMAX Technical Support</Text>
                                                <Text>GENI Portal</Text>

Update the .bin files source files located at ./InfraStack/OSAgnostic/Product/AppSrvInfra/ with the GENI files

GENI Definition File

GENI Database File

Now configure the wimax service and install the service.

./configure --with-linux=/usr --with-libwimaxll=/usr --sysconfdir=/etc --localstatedir=/var --prefix=/usr --enable-instrument --with-wimax-db-bin=/var --with-ver-info-bin=/var
make install

This new configuration with the .bin enabled allows us now to modify the NDns parameters on the fly by modifying WiMAX_Def.bin and WiMAX_DB.bin files located in /var/lib/wimax directory.
You can edit the file and restart the wimaxd service to see the changes.

Connection and Scan Mode settings are set using the following commands

wimaxcu connectmode connect manual

wimaxcu connectmode scan semi

Instructions are Here

12.1.4 Downloading Complete Image

Based on Ubuntu 10.04 with compiled Kernel .35 and the Intel WiMAX driver source compiled on 8/25/2010 and with the GENI configuration file;

latest image for NC10!

12.1.5 Using the Service

  1. wimaxcu ron - Turn the Software Radio On
  1. wimaxcu plist - Check to See Geni Profile is Available
  1. wimaxcu scan wide - Scan all the available Base Stations
  1. wimaxcu connect network Geni - Connect to the GENI wimax station
  1. dhclient wmx0 - Obtain an IP address
  1. wimaxcu -i wmxX -b - Start the wimax service in background
  1. wimaxcu -i wmxX -k - Kill the wimax service

12.1.6 Enable debugging on the client

You can get enhanced debugging for the following parameters by increasing the verbosity level
echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_stack

echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_op_rfkill

echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_op_reset

echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_op_msg

echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table

echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_debugfs

12.2 Intel WiMAX Modem with USB Adaptor

12.2.1 Intel 6250 WiMAX Modem in USB Adaptor

12.2.2 PC Platforms

12.2.3 Installing Image

12.2.4 Manufacturing USB Adaptor

General Info

The WiMAX model USB adaptor is an 'open source' WINLAB designed board. This section provides links to the instructions and the files necessary to produce the board.
Please note that the instructions and files provided meet the specifications and requirements set by Advanced Circuits. If using another vendor please be aware that the tolerances may be different.

Files Needed

The following files are needed to make the board and attached to this page. Additionally the schematic is also provided as a reference.

  • - These files describe the physical board. All fabrication houses should accept the gerber file format.
    • USB_MPCIX.TOP & USB_MPCIX.BOT - Top and Bottom copper gerber files, respectively.
    • USB_MPCIX.SMT & USB_MPCIX.SMB - Top and bottom soldermask gerber files, respectively.
    • USB_MPCIX.SST - Top silkscreen gerber file.
    • USB_MPCIX_thruhole.tap - Drill list gerber file.
  • - These files describe the position of the components.
    • USB_MPCIX.AST - Assembly drawing of the board
    • USB_MPCIX.SPT - Top solderpaste gerber file, there is only components on the top side.
    • USB_MPCIX_BOM.xls - Bill of materials, provides links and vendors for parts being used.
    • USB_MPCIX_INSERT.TXT - mounting locations for the components on the board.

Fabrication and Population

The following set of instructions is specific to the production house WINLAB uses, Advanced Circuits. Other manufacturer may require additional information, however the process should be similar.
To have a board made the fabricated you must provide '' as it contains all the physical board information. Typically this can be sent directly to a sales representative for quoting. If you intend for the boards to be populated, some manufacturers (definitely Advanced Circuits) require minimum quantities and dimensions, so you may request for the board to be panelized to meet those conditions. WINLAB had them produced 4 boards to a panel to meet Advanced Circuit requirements. Some additional information that might be required is as follows:

Material Type: FR4
Material Thickness: 0.031"
Number of Layers: 2
First Dimension: 1.428"
Second Dimension: 2.668"
Finish Plating: LFSOLDER
Copper Outers: 1oz
Copper Inners: 0 oz
Solder Mask Sides Both
Solder Mask Type LPI
Solder Mask Color Green
Silkscreen Sides Top
Silkscreen Color White

If ordering through Advanced Circuits it is a good idea to run the design through the automated FreeDFM service. The design has already passed the check, but it also creates a quote matrix and populates any additional information on the board.
To have the board populated with parts send the additional zip file ( for quoting. The bill of materials (BOM) currently lists the right angle SMA header as not in use and 'do not install', if you wish to use it change that line in the BOM.

12.3 Configuring a Teltonika WiMAX USB Card to Ping Base station from an Ubuntu Host

12.3.1. Install Driver / Eject "CD-ROM"

When first inserted into a new computer, the Teltonika device is mounted as a CDROM. It will immediatly begin installing a driver on host machine. On Ubuntu this process is non-obvious; allow the computer to sit for 5 minutes after inserting the device to give the driver time to install.

After the time to install has passed, determine the device that the "CDROM" is associated with by running:

$ dmesg

Somewhere near the bottom of the messages should be a message that contains "Attached scsi CD-ROM [device]". This interface must be ejected so that the device can act as a wireless transmitter rather than a CD-ROM. In most instances the CD-ROM will be associated with either sr0 or sr1. Eject the device using the command:

$ eject [device]

After a few moments a notification about a new ethernet interface becoming available should appear. This is the interface that the computer will use to communicate with the wireless dongle.

In some cases after this initial setup was completed the computer would always recognize the device as an ethernet interface, and sometimes the CD-ROM device would need to be ejected each time. Reasons for this difference is unknown at the time of writing.

12.3.2. Update Firefox (or Google Chrome)

A web interface is provided to configure and interact with the dongle graphically. This webpage requires the most recent version of Adobe Flash. To update/download Firefox and the Flash plugin run:

# apt-get install firefox flashplugin-installer

NOTE: Adobe has announced that it will no longer support Flash for Linux, and so in the near future Firefox may have depreciated Flash support. In this even Google has commited to maintaining Flash for Linux in it's Chrome browser, and it can be used as a viable alternative to Firefox.

12.3.3. Connect to the WebUI

If the the Teltonika dongle is recognized as a wireless interface open up the WebUI in Firefox or Chrome by navigating to . If this IP address does not direct the browser to the WebUI then ask the previous user of the device for the new address, it is a configurable parameter and may be changed.

Login as an administrator by CTRL-SHIFT-Clicking the Teltonika banner at the top of the page. Login credentials are also configurable, but are most likely set to:
username: admin
password: genipass

Other passwords may be: admin OR EifAFKt8

12.3.4. Configure Device

The device can be configured to look for networks on a number of channels under the WiMAX→Channels tab. The GENI network has the profile:

Frequency (kHz): 2590000
Bandwidth: 10000
FFT: 1024

Other configuration parameters can be configured by altering the file, found under the Files tab of the WebUI.

WARNING: it is entirely possible to brick the dongle if parameters are altered in this file in a way that should not be.

It is fairly safe to alter the fields: ipaddr (IP address where the WebUI can be reached), netmask (Subnet mask that the device will operate on), dhcpdsip (DHCP server IP address), dhcpdeip (unknown meaning at time of writing, may be expected IP address from DHCP server).

12.3.5. Statically Set Device IP Address

Telnet to the device:

$ telnet [WebUI address] 700

The login credentials for the telnet session are:
username: admin
password: admin01

Within the telnet session run the following command to statically set the devices IP address:

# ifconfig icc0 [desired address] netmask [desired netmask]

This static address is not preserved when the Teltonika device is removed from the host machine, and it needs to be configured each time that the device is connected to the host.

After statically setting the IP address, you need to also set up the iptables rules to send traffic to and from the host device. An easy way to do this is to use the same script that the DHCP client uses for this purpose. Run the following commands within a telnet session on the Teltonika device:

# export interface=icc0
# export subnet=[desired subnet, e.g. 16,24]
# export ip=[desired address]
# /etc/udhcpc.script bound

If you are planning to use the WiMAX interface for the default route, not just for traffic on its own subnet, you should also add

# export router=[router IP]

before /etc/udhcpc.script bound.

12.3.6. More Information


12.4 Installing the Beceem Driver for Linux-Airspan BS Compatibility

An AWB US211 USB WiMAX adapter was used for this guide.

The following steps were completed successfully using Ubuntu 12.04 on and Both the nodes have a AWB US211 USB WiMAX adapter.

12.4.1. Install Linux

Install Ubuntu version 12.04 on the node. A Linux kernel of version of 2.6.38 or greater is required to install the drivers; to determine the current systems kernel version run:

# uname -r

If the kernel image needs to be updated then do the following:

# apt-get update
# apt-cache search linux-image | grep generic

This will provide a list of available kernel images for the running system. To install the linux image version 3.8.0-31:

# apt-get install linux-image-3.8.0-31-generic

Reboot the machine to load the new kernel:

# reboot

12.4.2. Resources

A WiMAX dongle with a Beceem chipset is required to use the driver to connect to a WiMAX network.

Files in the following tarball are required to install the driver: . 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
# 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-source-directory> linux
# popd

Note: <the linux-source-directory> should be suffixed with the kernel version.

12.4.3. 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.

12.4.4. 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-
# cd Sprint4GDeveloperPack-
# ./

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"

12.4.5. 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.

12.4.6. 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
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

12.4.7. 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:  Bcast:  Mask:
          inet6 addr: fe80::203:1dff:fe0c:7dd1/64 Scope:Link
          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:  Mask:
          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 netmask up

Now check eth2 interface.

# ifconfig eth2
eth2      Link encap:Ethernet  HWaddr b8:61:6f:0d:a0:6d
          inet addr:  Bcast:  Mask:
          inet6 addr: fe80::ba61:6fff:fe0d:a06d/64 Scope:Link
          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 (

# ping -c 5
PING ( 56(84) bytes of data.
64 bytes from icmp_req=1 ttl=254 time=61.7 ms
64 bytes from icmp_req=2 ttl=254 time=59.9 ms
64 bytes from icmp_req=3 ttl=254 time=57.9 ms
64 bytes from icmp_req=4 ttl=254 time=61.9 ms
64 bytes from icmp_req=5 ttl=254 time=60.9 ms

--- 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 eth2

View the routing table entries:

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         wmgw.outdoor.or         UG    0      0        0 eth2       *          U     0      0        0 eth1       *          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
Retrieving configuration...
Retrieving server list...
Testing from Rutgers University (
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
Last modified 6 years ago Last modified on Oct 16, 2014, 1:18:27 AM

Attachments (5)

Note: See TracWiki for help on using the wiki.