Sparrow-WiFi: a graphical WiFi and Bluetooth analysis tool under the Linux platform

Category: Tag:

Tool overview

Sparrow-wifi is essentially a WiFi spectrum sensing tool for the next generation of 2.4GHz and 5GHz. It not only provides a GUI graphical user interface, but also has more comprehensive functions, which can replace Linux tools like inSSIDer and linssid. In its most complete usage scenario, Sparrow-wifi can integrate WiFi, software-defined radio (hackrf), advanced Bluetooth tools, traditional GPS (gpsd) and roaming GPS (mavlink) into one solution.

The tool is developed entirely using Python3 and is suitable for the following scenarios:

1. Basic WiFi SSID identification;

2. WiFi source capture;

3. 2.4GHz and 5GHz spectrum viewing;

4. Bluetooth recognition;

5. Bluetooth source capture;

6. iBeacon broadcasting;

7. Remote operation (via GUI);

8. It can be mounted to drones and supports Raspberry Pi;

9. The remote agent is based on JSON and can be integrated into other applications;

10. CSV and JSON data export/import;

11. Google map can be generated according to GPS coordinates;

Tool running screenshot
Sparrow-wifi main panel, perform basic WiFi scanning:

WiFi and Bluetooth tracking:

Tool installation
Sparrow-wifi uses Python3, qt5 and qtchart to build the UI interface. On the standard Debian-based platform, it already comes with Python3 and qt5. You only need to configure qtchart separately. Execute the following commands on Ubuntu and Kali Linux:

sudo apt-get install python3-pip gpsd gpsd-clients python3-tk python3-setuptools

sudo pip3 install QScintilla PyQtChart gps3 dronekit manuf python-dateutil numpy matplotlib

Of course, you can also use this tool in a Python virtual environment (virtualenv):

git clone

cd sparrow-wifi

virtualenv --python=python3 $HOME/sparrow

source $HOME/sparrow/bin/activate

pip3 install gps3 python-dateutil requests pyqt5 pyqtchart numpy matplotlib

sudo python3


Tool running
This tool needs to use the standard command line tool “iw” to perform WiFi scanning, so we need to use root privileges to run:

sudo ./


GPS communication
Sparrow-wifi provides standard GPS communication functions based on gpsd. We can use the following commands to perform a quick GPS test:

gpsd -D 2 -N /dev/ttyUSB0

Run Sparrow-wifi remote agent

Since the permissions required by the agent are the same as the running permissions of the GUI tool, we also need to use root permissions here:

sudo ./

In the default configuration, the proxy will listen on port 8020. We can also use the following commands to specify other ports:

sudo ./ --port=<myport>

Help menu
We can use the –help command to view the help menu and parameter options of Sparrow-wifi:

usage: [-h] [--port PORT] [--allowedips ALLOWEDIPS]

                           [--mavlinkgps MLINKGPS] [--sendannounce]

                           [--userpileds] [--recordinterface RECORDINTERFACE]

                           [--ignorecfg] [--cfgfile CFGFILE]

                           [--delaystart DELAYSTART]

Sparrow-wifi agent

optional arguments:

  -h, --help            show this help message and exit

  --port PORT           Port for HTTP server to listen on

  --allowedips ALLOWEDIPS

                        IP addresses allowed to connect to this agent. Default

                        is any. This can be a comma-separated list for

                        multiple IP addresses

  --mavlinkgps MLINKGPS

                        Use Mavlink (drone) for GPS. Options are: '3dr' for a

                        Solo, 'sitl' for local simulator, or full connection

                        string ('udp/tcp:<ip>:<port>' such as:


  --sendannounce        Send a UDP broadcast packet on the specified port to

                        announce presence

  --userpileds          Use RPi LEDs to signal state. Red=GPS


                        Green=Agent Running [On=Running, blinking=servicing

                        HTTP request]

  --recordinterface RECORDINTERFACE

                        Automatically start recording locally with the given

                        wireless interface (headless mode) in a recordings


  --ignorecfg           Don't load any config files (useful for overriding

                        and/or testing)

  --cfgfile CFGFILE     Use the specified config file rather than the default

                        sparrowwifiagent.cfg file

  --delaystart DELAYSTART

                        Wait <delaystart> seconds before initializing


Raspberry pie
We can use the following commands to install and build the tools on the Raspberry Pi:

sudo apt-get install libsqlite3-dev

cd /tmp


tar -zxvf Python-3.5.5.tgz

cd Python-3.5.5

./configure && make -j3 && sudo make install

After completion, install other dependent modules:

sudo pip3.5 install gps3 dronekit manuf python-dateutil

Next, directly use the following command to run the agent:

/usr/local/bin/python3.5 ./

/usr/local/bin/python3.5 ./ --mavlinkgps=3dr --recordinterface=wlan0

Project address:



There are no reviews yet.

Be the first to review “Sparrow-WiFi: a graphical WiFi and Bluetooth analysis tool under the Linux platform”

Your email address will not be published. Required fields are marked *