War Pi 2.0 – Pi2 (Start Here)

As a long-time Kismet user, but new to Raspberry Pi, I was interested to see if anyone else had run Kismet on a Raspberry Pi.  I discovered a paper written for SANS about using Kismet on a Raspberry Pi Model B, and set out to use those instructions to build my own, only for the Pi 2 Model B.  The Pi 2 Model B is an update to the original Model B platform that brings a lot more processing power to the table.  Using only 50mA more power than a 1st generation Model B, the Pi 2 Model B uses a quad core processor at 900Mhz complemented by 1GB of RAM.  The original Model B utilized a single core processor with 512MB RAM.  This makes the Pi 2 Model B a much more capable device, and should be able to handle the improvements and new features being made to the Kismet package.

I was pleasantly surprised to discover that the Kismet package was being updated – the original paper covered the installation of version 2013-03-R1b.  This paper covers the building and installation of kismet-2016-01-R1.

Original War Pi paper:
War Pi, written by Scott Christie, scottochristie@gmail.com

What follows is meant to augment the original paper, and document only what is necessary to get the casual user up and running.  The user is responsible for any additional research into setting up the Pi 2 Model B with installation of the OS.


  • Raspberry Pi 2 Model B (also known as Pi 2)
  • 2016-02-26-raspbian-jessie-lite installed to microSD (>8GB)
  • SSH access to the freshly installed OS
  • Internet access for Pi to download updates
  • USB GPS (GlobalSat BU353S4)
  • USB Wireless adapter, capable of promiscuous mode (TP-Link WN-722N 802.11 b/g/n)
    or (Alfa AWUS051NH v2 802.11 a/b/g/n)
  • Battery power source (2A or better preferred – Alfa needs the extra)


Prior to downloading and installing Kismet, there are some dependencies that have to be met.  Make sure to update the environment before adding the additional packages.

# sudo apt-get update
# sudo apt-get upgrade

Now install the following packages that are dependencies for Kismet:

# sudo apt-get install gpsd
# sudo apt-get install libncurses5 libncurses5-dev
# sudo apt-get install libnl1 libnl-dev
# sudo apt-get install libpcap-dev libpcap0.8 libpcap0.8-dev

I recommend adding the following packages:

# sudo apt-get install gpsd-clients

The following command will download the most recent Wireshark IEEE OUI file for Kismet to correlate detected MACs to manufacturers.  This step is optional.
# wget -O manuf “https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blob_plain;f=manuf”
# sudo cp manuf /etc/.

Download and Extract Kismet

The version used for this build was Kismet 2016-01-R1.
# wget https://www.kismetwireless.net/code/kismet-2016-01-R1.tar.xz

Note: If you get SSL errors using wget, add  ‘–no-check-certificate’.

Once downloaded, extract the files, then navigate into the new directory that was created.
# sudo tar –xf kismet-2016-01-R1.tar.xz
# cd kismet-2016-01-R1

Compile and Install Kismet

Kismet follows the standard build process, first you run the configuration script.  You may receive some warnings, but if all dependencies are met, then proceed to compile.  Compiling takes some time, and you will see warnings, mostly about unused variables. No need for concern unless Kismet does not work later, then you can go back and review the warnings, and check in at the Kismet forums or IRC to see if anyone else has a similar issue.
# sudo ./configure
# sudo make dep
# sudo make
# sudo make install

Configure Kismet

Kismet must be configured to use the correct GPS, wireless adapter, and store logs.  Configuration is done in the kismet.conf file that is in /usr/local/etc. (NOT /etc)

# cd /usr/local/etc
# sudo vi kismet.conf
(or use the editor of your choice)

The following are the parameters I modified, all other fields were left to default:


Configure GPSD
GPSD must be configured to address the GPS device, and to automatically start up when booting.

Connect the USB GPS.  Confirm that the system recognizes it.
# dmesg | grep ttyUSB0
This command should display something like: “usb 1-1.5: pl2303 converter now attached to ttyUSB0”  This confirms the serial driver for the USB GPS is in place.

Edit the GPSD startup file in /etc/default.
# cd /etc/default
# sudo vi gpsd

The following are the parameters I modified, all other fields were left to default:


NOTE: if your GPS is connected to a different device name, substitute it as needed. The following command must be run every time the /etc/default/gpsd file is modified or updated.
# sudo dpkg-reconfigure gpsd

Leave the GPS plugged in, and reboot.

Confirm GPSD Functionality

After rebooting, GPSD should start automatically.  To confirm it started:

# ps ax | grep gpsd

826 ?        S<s    1:06 /usr/sbin/gpsd -N /dev/ttyUSB0   <<< Confirms GPSD is running
911 pts/0    S+     0:00 grep --color=auto gpsd          

In order to test the GPS, running cgps will start an ncurses interface that displays GPS data as it comes in.  To exit cgps, type ‘q’.
# sudo cgps

Configure Wireless Adapter
There is no real configuration of the adapter necessary.  A confirmation that the adapter is installed and functioning is necessary, however.  We are looking for wlan0, since we set our capture source to that in the kismet.conf file.
# iwconfig

This will display all wireless adapters. Confirm wlan0 is shown.

wlan0     IEEE 802.11bgn  ESSID:off/any
Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm
Retry short limit:7   RTS thr:off   Fragment thr:off
Power Management:off

Confirm Kismet Functionality


Create the log file directory.
# sudo mkdir /home/pi/kismet
# sudo chmod 777 /home/pi/kismet

Launch Kismet manually to confirm proper operation.  This is critical as it will confirm configuration and functionality of you USB GPS and wireless adapter.
# sudo kismet

Kismet should launch.
You will get a warning that you should not run as root. Select [ OK ].
You will get a prompt asking you to start the kismet server. Select [ Yes ] and then [ Start ].  You are now looking at the server console window.  Select [ Close Console Window ].  The Kismet Client interface will now be visible and functional.  Confirm that wireless access points are being detected, and that the GPS location is being reported.

Exit Kismet Client using ALT to activate the top menu, and then arrow down to select Quit.  When prompted to kill the kismet server, select [ Kill ].

Configure Kismet Startup

Similar to GPSD, we are going to configure Kismet to start automatically on bootup.  Unlike GPSD, there is no pre-existing file to configure so we will build one from scratch. (called ‘kismet’) This will also allow us to issue stop and start commands like other services.  We are also building in a 30 second startup delay to allow time for the GPS and wireless adapter to start.
# cd /etc/init.d
# sudo vi kismet

# Provides:              kismet
# Required-Start:     $all
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:         3 4 5
# Default-Stop:         0 1 6
# Short-Description:     Start kismet at boot time
# Description:         Starts kismet at boot time

case "$1" in
echo "Starting kismet"
/bin/sleep 30
/usr/local/bin/kismet_server --daemonize
echo "Stopping kismet"
killall kismet_server
echo "Usage: /etc/init.d/kismet start|stop"
exit 1

exit 0

Once the script has been saved, make it executable.
# sudo chmod +x kismet

Activate the script to start at the appropriate runlevels.
# sudo update-rc.d kismet defaults

Now you can stop and start the Kismet at will.  This is useful after a capture session to shut down the kismet server gracefully.
# sudo /etc/init.d/kismet stop

To start again, issue the start command.
# sudo /etc/init.d/kismet start

Verify Everything Works

REBOOT.  After rebooting, you should see log files being written to /home/pi/kismet.  Let it run for a few minutes to allow everything to sync up.

Using the Alfa AWUS051NH v2 instead of the TP-Link WN-722N

The Alfa AWUS051NH v2 requires extra power to operate.  In order to get the Pi 2 to provide that extra needed, you must modify the /boot/config.txt file by adding:


This will allow the Pi2 to provide 1.2A current to the USB ports.
You must use a battery power supply that is capable of delivering that amount of current.  I purchased the MoKo 9000mAh Portable Power Bank Battery Charger 2.4A Output from Amazon and it worked well.

Final Thoughts

The original War Pi paper instructions made edits to the /etc/rc.local file in order to launch the kismet server at startup.  This was a crude method that worked on the Pi Model B, but no longer works as the kismet server seemed to always start ahead of the wireless adapter, and left the kismet server in an error state with no capture source. While I am sure that Kismet would eventually recover, I decided to create a proper startup script, with the added benefit of the ability to properly start and stop the kismet server at will.

Another deviation in this paper is the use of the TP-Link WN-722N adapter.  Since this implementation was meant to run on battery power, I felt it was not necessary to use a high power card such as the Alfa.  The TP-Link is a much lower power card, and has suitable enough gain and sensitivity for most applications, but like the original paper, is limited to b/g/n.  It is also smaller and easier to carry.  In my experiments with the Alfa AWUS036NHA (b/g/n) and the Alfa AWUS051NHv2 (a/b/g/n), the USB circuit protection kicked in and prevented the adapter from operating.  The original Pi Model B did not have this protection so it is likely the author of the paper was lucky it did not damage his Pi Model B. I was able to research and find a work around for the Pi 2, and updated the instructions for using the Alfa AWUS051NHv2 (a/b/g/n) adapter.

Kismet as an application is improving, and many new features will be coming out in the coming year.  With the added processing power of the Pi 2, and additional USB ports, Kismet is hopefully going to gain some new capabilities, while still remaining a solid application for performing 802.11 surveys. Kismet drones functionality also looks attractive for low power, small packages as the Pi 2 as well.

Please feel free to send any critiques, additions, or your experiences with this write up to: birukun at teambsf dot com

Kismet Wireless website and forum

War Pi, Scott Christie, scottochristie@gmail.com


Raspberry Pi 2 Model B

Power protection ‘override’ (USE AT YOUR OWN RISK)


3 thoughts on “War Pi 2.0 – Pi2 (Start Here)”

  1. Hi. Thanks for these excellent revisions to the War Pi instructions. I am having some issues with gpsd on my setup. I’m running a Pi2 with the latest version of Jessie (march 2017). The service does not start on boot and reviewing the logs reveals some error messages such as: gpsd[700]: gpsd:ERROR: /dev/ttyUSB0: device activation failed. If I start gpsd manually or run a gpsd client the gps seems to work though. I have read of other folks having similar issues with Jessie – and I’ve tried a few different settings for /etd/default/gpsd to no avail. Do you know of any issues with the current version of Jessie that would prevent the gpsd service from running? It seems like there may be a race condition happening with the gps device. Any help is appreciated and the info you already provided is appreciated even more.

  2. …please disregard my previous comment. It is working now. Maybe the gps was just timing out trying to catch a signal on startup. I’m not sure why it is working now, but I should be able to work backwards and figure it out. Thanks again for your excellent guide.

  3. I am glad you got it to work. Let me know if it works well for you or if I need to make any corrections.
    I have not tested on the latest version of Jessie so I will look out for this issue when I update my rig.
    Happy Hunting!

Comments are closed.