Scanmeter, WiFi Antenna Tuning Software for Linux
You may also take a look at the new Python 2.x based antenna pointing tool called Scanmeternm.py.
Although there are many great WiFi related programs available for Linux there isn’t a good antenna setup software like the Netstumbler in Windows. Of course, Linux has the all powerful Kismet and the simple to use Wavemon but neither is very useful when it comes to measuring 802.11 RF signal level and plotting a histogram. I build and test high gain WiFi antennas as a hobby and need a simple measuring tool so I wrote Scanmeter which is a bash script that measures signal strength and displays the wireless strength in a histogram [Fig. 1].
High gain antennas are directional by design. When pointing a directional antenna it is important to measure the WiFi signal level as we move the antenna. Even when you know the general direction of the access point, small azimuth angle, elevation and polarization corrections can produce big differences in signal amplitude.
This is especially true for distant WiFi access points. Imagine shining a laser pointer at a building several blocks away. A small movement of hand will move the laser dot in large sweeps. WiFi antennas are not as focused as a laser beam but when going for distance every dB counts so it is important to aim right.
Scanmeter features a continuously updating histogram. While you are adjusting the position of your high gain WiFi antenna the signal is plotted on screen live so you can find the “sweet spot” without guessing.
Download and Installation
I have tested Scanmeter in several different configurations. If none matches your hardware that’s OK. Pick the closest one and modify the script if necessary. [LINK]
- Dell Mini 9, Ubuntu 8.4 w/Broadcom card and wl driver (factory configuration)
- Dell Mini 9, Ubuntu 8.4 w/Intel 3945ABG card and iwl3945 driver
- Debian w/Broadcom PCMCIA card and b43 driver (2.6.32 trunk-686)
- Debian w/Broadcom PCMCIA card and b43 driver (older kernel)
If you’re new to bash scripts do this:
- Download and unpack the script to your /home/yourname directory.
- Open a terminal window and type:
cd /home/yourname chmod +x scanmeter
There are better places to save a bash script like /usr/local/bin for example. Look up a tutorial on saving and executing bash scripts for more information.
Scanmeter must be executed by the root user. This is done inside a terminal window:
- cd /home/yourname (navigate to the location of the script)
- sudo ./scanmeter [interface]
The default interface is wlan0 except for the Dell Mini 9 factory WiFi card version which defaults to eth1. Your WiFi card could also default to eth1 or another device name. To find out the device name of your wireless card execute:
If you saved the script in /usr/local/sbin or added the custom location path to the PATH environment variable (slightly advanced), your Scanmeter can be executed by typing:
sudo scanmeter [interface]
sudo ./scanmeter [interface]
Scanmeter is very self explanatory. Make sure you use all caps when typing in the BSSID (MAC Address). Press CTRL+C to exit the histogram. Pressing enter in the main menu prompt will restart scanning with the last entered BSSID.
Scanmeter parses the output of Linux command:
sudo iwlist interface scanning
The physical formatting of the iwlist command output depends on the wireless chipset, the driver and possibly the Linux distro. For this reason you may have to make minimal adjustments to the script to make it work.
Check out Pifimon which is a Perl script inspired by Scanmeter (and improved). If you improve scanmeter or make similar tools let me know please.
One thought on “WiFi Antenna Pointer Tool”
Hi Michael !thanks you for that goods article.I’m tring to make a SMS Gateway, i’ve a RaspberryPi 2, the same huawei modem as you, and i use gammu to handle Incoming SMSs, so i’m facing a problem: my gateway receive SMS for about 20 minutes before hanging,i mean modem always receive message but did not notify gammu.I want to switch to smstools,and i want to know if you have the same problem with SMSTools3?Thanks.(p.s: excuse my english if i make some fault, i’m not an english speaking)