= WiMAX Tutorial 1: Basic Operations = [[TOC(Tutorials/WiMAX/*, depth=2)]] == Prerequisites == This tutorial series assumes you have an [http://www.orbit-lab.org/userManagement/register ORBIT account], have [https://www.orbit-lab.org/schedule/ scheduled a session] on the ORBIT test bed, are familiar with [http://en.wikipedia.org/wiki/Secure_Shell SSH]'ing [http://www.orbit-lab.org/wiki/Tutorial/HelloWorld#a4.RunningtheHelloWorldexperiment into the test bed itself, and are familiar with the basics of running ORBIT experiments]. If you have not done these things yet, you may wish to do so before taking a look at this slightly more advanced experiment. If you are unfamiliar with or are entirely new to ORBIT, you may wish to start [http://www.orbit-lab.org/ here]. == Difficulty == This tutorial requires only basic knowledge of Unix commands, SSH, WiMAX, and ORBIT. ---- = Experiment: Successfully Image and Ping Nodes = ---- == Getting Started == First, SSH into the test bed you plan on using for the experiment. For this experiment, we use ORBIT's Sandbox 4. {{{ ssh @console.sb4.orbit-lab.org }}} [[Image(ssh.png)]] === About the Base Station === WiMAX (related to and derived from !WiFi) works by sending all data traffic through an [http://en.wikipedia.org/wiki/Wireless_access_point Access Point] called a Base Station. This is similar to how a cell phone connects to a cell tower. In fact, at one point WiMAX was used to provide mobile internet connectivity to cell phones! However, the WiMAX base station at WINLAB is special in that its operation settings can be changed to meet the needs of an experiment. This is good, because it permits tweaking of settings to conduct research. However, it also means that latest person to run experiments may have left the base station with settings that will make conducting experiments difficult. First, tell the base station to use default settings, and then reset it. === Interacting with the Base Station === The base station receives instructions from [http://en.wikipedia.org/wiki/GET_(HTTP)#Request_methods "http get requests"] sent from the corresponding sandbox. For example, consider {{{ wget -qO- http://wimaxrf:5052/wimaxrf/bs/default }}} "wget" is the command to send an http request; "-qO-" gives options for outputting the result of the request to the screen; "cons-wm-01" is the name of the base station; "5052" is the port number; "//wimaxrf/bs/default" is the command to load the default base station settings. == Restoring the Base Station to Defaults == To restore the base station to defaults, run the following commands: {{{ wget -qO- http://wimaxrf:5052/wimaxrf/bs/default wget -qO- http://wimaxrf:5052/wimaxrf/bs/restart }}} After issuing the restart command, the base station will be unavailable for 2 minutes. Do not be alarmed if the base station returns what appears to be the following error message: {{{ Failed: 'Exception in snmp_set 'host 10.3.0.3 not responding'' }}} This is normal. It simply means that the base station has gone offline (while rebooting). [[Image(reset.png)]] ---- == Loading a Default Image == Much like it is recommended to reset the base station to default settings, it is also recommended to load up a "clean" disk image. This helps avoid conflicts with previous user settings. It can also save time manually setting up frequently-used properties. {{{ omf-5.3 load -i wmx-tutorial.ndz -t node1-4.sb4.orbit-lab.org,node1-6.sb4.orbit-lab.org }}} You should assume that this command is whitespace-sensitive (do not include any spaces between the node names and the commas). [[Image(pxe1.png)]] [[Image(pxe2.png)]] This process may take a few minutes. When it is complete, confirm the installation by SSH'ing into the nodes and checking that the settings loaded correctly. === Manually Confirming Settings === SSH into the nodes, one at a time, to confirm that the settings loaded correctly. {{{ ssh root@node1-4 }}} If you get a message that says, {{{ The authenticity of host 'node1-4 (10.14.1.4)' can't be established. RSA key fingerprint is 62:ee:bf:75:50:84:f3:e8:86:f3:e5:e0:75:f0:3a:1a. Are you sure you want to continue connecting (yes/no)? }}} answer {{{ yes }}} If this works, proceed to the next section. If not, here is some error-checking advice. If you receive an error message like {{{ ssh: connect to host node1-4.sb4.orbit-lab.org port 22: No route to host }}} it may mean that your node is off after the imaging process. If so, you should turn it on by running the following command: {{{ omf-5.3 tell -a on -t node1-4.sb4.orbit-lab.org,node1-6.sb4.orbit-lab.org }}} Sometimes nodes also 'hiccup' after imaging, and will deny connections. This can be worked around by turning the affected nodes off and back on as follows: {{{ omf-5.3 tell -a offh -t node1-4.sb4.orbit-lab.org,node1-6.sb4.orbit-lab.org }}} {{{ omf-5.3 tell -a on -t node1-4.sb4.orbit-lab.org,node1-6.sb4.orbit-lab.org }}} ---- If you have successfully logged into a node with SSH, you will see the following prompt: {{{ root@node1-4:~# }}} Check that the drivers loaded correctly using the ''lsmod'' command. The WiMAX drivers on this testbed are of the i2400 family. {{{ lsmod lsmod | grep i2400m_usb }}} [[Image(lsmod.png)]] [[Image(lsmodgrep.png)]] If they aren't loaded, put them up manually: {{{ modprobe i2400m_usb }}} The WiMAX daemon service should load automatically. Check that it is running by simply calling it: {{{ wimaxd }}} The output should be: {{{ Enter Command: q - Quit AppSrv t - Trace ReInit (ReLoads Registry Values) u - uplink(Apdo uplink event h - Help d - Toggle driver messages to display - debug & internal only Another instance of wimax (pid 681) is already running!. Shutting down... }}} === Connect to the WiMAX Network === Next, use the WiMAX Configuration Utility (''wimaxcu'') to connect to the WiMAX network: {{{ wimaxcu ron wimaxcu connect network 51 }}} [[Image(wimaxcu.png)]] === Assign an IP Address === By this point, the drivers are loaded, and the network is connected. However, the WiMAX card hasn't been given an IP address yet. Below is the recommended IP address for node 4 on sandbox 4. (Alternate IP addresses are allowed, but require additional configuration at other stages of an experiment.) {{{ ifconfig ifconfig wmx0 10.41.14.4 netmask 255.255.0.0 up ifconfig }}} [[Image(ifconfig.png)]] Note that the ''wmx0'' network card now has an IP address. ---- == Repeat for Other Nodes == For the sake of brevity, we will not repeat the previous process at length for the other nodes. However, we will give sample instructions for node 6, and elaborate on some general rules. {{{ ssh root@node1-6 # will take to another screen lsmod | grep i2400 modprobe i2400m_usb # only if needed wimaxcu ron wimaxcu connect network 51 ifconfig wmx0 10.41.14.6 netmask 255.255.0.0 up }}} === Recommended Settings for IP Addresses === For most of the sandboxes on ORBIT, the rule of thumb for assigning IP addresses is: {{{ 10.41.1X.Y }}} Where 10.41 is the hostname, X is the sandbox number, and Y is the node number (e.g., node1-4 has Y=4). On the "outdoor" testbed, the rule is {{{ 10.41.40+X.Y }}} and on the "grid" testbed, the rule is {{{ 10.41.100+X.Y }}} where X and Y are the node coordinates (e.g., node1-4 has X=1, Y=4). ---- == Testing Connection == Repeat the previous steps for other nodes. To test the connection between two nodes, use the ''ping'' utility, which sends packets at an IP address and checks for confirmation of receipt. Assuming that nodes 4 and 6 have already been connected: {{{ ssh root@node1-6 ping 10.41.14.4 }}} [[Image(ping.png)]] ---- = Continuing Onwards = [http://www.orbit-lab.org/wiki/Tutorials/WiMAX/Tutorial2 Tutorial Part 2] ---- == Troubleshooting Connectivity Problems == * '''If you cannot run ''wimaxcu ron'' after loading the modules correctly:''' In order to use the WiMAX Configuration Utility, the WiMAX daemon needs to be running. Usually, the daemon initializes when the modules are loaded. However, occasionally they do not load. Always check that they are loaded by issuing ''"wimaxd"''. * '''If you can run ''wimaxcu ron'' and can assign an IP address but cannot ping the other node(s):''' Usually, this is due to a problem at either the network or physical layers, but unfortunately, it's difficult to readily know which offhand. Due to the different functions of sandbox 4, which contains both an RF Attenuator Matrix, and a programmable base station, it can sometimes be necessary to confirm both are at the desired settings before proceeding. However, the more serious networking problems both can cause cannot be quick-fixed by resetting the stations. They must be manually troubleshot. Below are some suggestions. '''Base Station IP's''': Sometimes a previous experimenter has given the base station a different set of IP addresses to permit connectivity than the recommended defaults. When this happens, the base station will reject connections from the 'foreign' nodes. Some commands of interest are below. They follow standard base station command and syntax conventions. {{{ wget -qO- http://wimaxrf:5052/wimaxrf/datapath/clients/list wget -qO- http://wimaxrf:5052/wimaxrf/datapath/clients/add... wget -qO- http://wimaxrf:5052/wimaxrf/datapath/clients/delete... }}} '''RF Attenuater Matrix Couplings''': Unique to sandbox 4, there is a hardware attenuator matrix which can physically weaken signals between the nodes of the test bed. Previous experimenters' values will be left on the matrix, and if they happened to set the matrix to a very high level of attenuation, it's likely that the affected nodes will be too attenuated to successfully transmit signals. Below are the conventions currently used to check and change the modulation between any pair of nodes. {{{ wget -qO- http://internal2dmz.orbit-lab.org:5052/instr/status wget -qO- http://internal2dmz.orbit-lab.org:5052/instr/get?portA=X\&portB=Y wget -qO- http://internal2dmz.orbit-lab.org:5052/instr/set?portA=X\&portB=Y\&att=0 }}} ----