[ Wardriving with Kismet and Your Android Phone's GPS ]
[ Overview |
What changed since 2015 |
What you need |
Step 1: the phone |
Step 2: gpsd on the laptop |
Step 3: Kismet |
Step 4: put it on a map |
Other ways to get GPS into Kismet |
When it doesn't work |
Keep it passive |
FAQ ]
[ Overview ]
In March 2015 I wrote up how to feed an Android phone's GPS into Kismet, so every network it logged landed on a map. That write-up is still one of the most-read pages on this site, and nearly everything in it has aged out. The phone app is gone, the mapping tool reads a log format Kismet no longer writes by default, and Kali's package names have moved on. This is the 2026 version. The original stays up for history. The idea hasn't changed. Kismet listens passively for Wi-Fi devices (and Bluetooth, and more), the phone tells it where you are, and afterward you turn the log into a map: phone GPS -> gpsdRelay -> USB tether -> gpsd -> Kismet -> map _________________________________________________ __________________10000000000011__________________ _______________10000000000000000001_______________ _____________00000000000000000000000______________ ____________00000111000000001111100001____________ __________10001_______10001_______10001___________ _________1000__________11___________000___________ _________0001_____101_______11______1000__________ _________000______101_______11______1000__________ ________10001___________1___________10001_________ ________100001_________101_________100001_________ ________10000001_____1000001_____10000001_________ _________0000000000000000000000000000000__________ _________1000000000001______100000000000__________ __________000000001____________100000001__________ ___________0000001______________1000001___________ ____________00000____10000001____00001____________ _____________0000__100000000000_1001____111_______ ______1________0000000000000000001_____00000______ _____00000________11000000000001____1000000011____ _____00000001_____________________100000000000____ ____0000000000001______________100000000000001____ ____000000000000000011_____110000111______________ _________________0100magikh0e0011__1______________ ___________11_1100000001___1100000000000000001____ ____0000000000000001___________110000000000000____ ____00000000000011_________________110000000011___ _____000000001_________________________1000001____ _____100001_______________________________1001____ _______11_________________________________________
[ What changed since 2015 ]
2015 2026 BlueNMEA on the phone gpsdRelay, from F-Droid adb port forward over USB USB tethering (adb still works, below) netxml logs one .kismet log file (SQLite) Giskismet to make KML kismetdb_to_kml, built in android-sdk, ia32-libs not needed at all ncurses UI a web UI on port 2501 WiFi Pineapple notes dropped; that model is long gone The biggest change is Kismet itself. Modern Kismet writes everything to a single kismetdb log and ships its own tools to turn it into KML or a WiGLE CSV, so the old Giskismet step is gone.
[ What you need ]
Laptop Kali, or any Linux with a current Kismet and gpsd.
Wi-Fi card one that does monitor mode. A USB adapter is best, so
the laptop keeps its own Wi-Fi.
Phone Android with GPS, running gpsdRelay.
Cable the phone's USB cable, for tethering.
Why tethering over USB, instead of the phone's Wi-Fi hotspot: Kismet puts the
Wi-Fi card into monitor mode, so the laptop can't use that same card to join
your hotspot. The cable gives the phone and laptop their own little network,
keeps your own hotspot out of the capture, and charges the phone while you
drive.
[ Step 1: the phone ]
1. Install gpsdRelay from F-Droid. It sends the phone's GPS to a gpsd server over UDP or TCP, and it's maintained (2.2 came out in October 2025). 2. Turn on location and give the phone a minute near a window or outside to get a fix. 3. Let gpsdRelay run in the background. It asks for background location; allow it, and turn off battery optimization for it, or the phone will put it to sleep mid-drive. 4. Plug the phone into the laptop and turn on USB tethering (Settings, Network, Hotspot and tethering on most phones). Leave gpsdRelay's destination for a moment; you need the laptop's address on the tether first.
[ Step 2: gpsd on the laptop ]
Install Kismet, gpsd and the gpsd test tools: sudo apt update sudo apt install kismet gpsd gpsd-clients Kali's Kismet is current. On other distros, check the version: Kismet's own install docs warn that some still ship the 2016 release, which predates the web UI. If the installer asks about installing the capture tools suid-root, say yes, then add yourself to the kismet group and log out and back in: sudo usermod -aG kismet $USER Find the laptop's address on the USB tether. It's the new interface that showed up when you turned tethering on, usually usb0 or enx-something: ip -4 addr Now point gpsdRelay at that address. Pick a port (I use 29470), set it to UDP, and start relaying. Stop the gpsd service your distro may have started, so it isn't holding the port, then run gpsd in the foreground listening for the phone. Use your own tether address in place of the example: sudo systemctl stop gpsd.socket gpsd.service sudo gpsd -N -n -D2 udp://192.168.42.10:29470 The udp:// feed tells gpsd to listen for NMEA datagrams on that address and port. Binding it to the tether address, not 0.0.0.0, keeps it off any other network the laptop is on. Check it in a second terminal before you go any further: cgps If cgps shows a latitude and longitude, the phone side is done.
[ Step 3: Kismet ]
Tell Kismet to use gpsd. Local changes go in the site override file, so an
update doesn't overwrite them:
echo 'gps=gpsd:host=localhost,port=2947,reconnect=true' | \
sudo tee -a /etc/kismet/kismet_site.conf
That's Kismet's gpsd GPS type; 2947 is gpsd's own port.
Start Kismet on your monitor-mode card (wlan1 here, use yours) from the
directory where you want the logs:
mkdir -p ~/wardrive && cd ~/wardrive
kismet -c wlan1
Open http://localhost:2501 in a browser. The first visit asks you to set a
username and password. Once you're in, the GPS indicator at the top should
show a fix, and networks start filling the device list.
Drive, walk or ride. When you're done, stop Kismet with Ctrl-C. The log is a
single file named like Kismet-20261105-18-30-00-1.kismet, in the directory
you started from.
[ Step 4: put it on a map ]
Kismet's log tools turn the .kismet file into something you can look at. On
Kali they're in the kismet-logtools package:
kismetdb_to_kml --in your-log.kismet --out wardrive.kml
kismetdb_to_wiglecsv --in your-log.kismet --out wardrive.csv
KML open it in Google Earth or QGIS. Every network shows up as a
point at the average of where Kismet heard it. That's what
Giskismet used to do. (kismetdb_to_kml docs)
CSV the WiGLE format. Upload it to WiGLE and your drive joins
the world map of Wi-Fi networks. (wiglecsv docs)
Before you share a map, take your home off it. kismetdb_to_kml's --exclude
option drops every record within a set distance of a location you give it,
so the networks around your house don't end up on a public map with your
name next to them.
[ Other ways to get GPS into Kismet ]
A USB GPS puck the most reliable option. Plug it in, gpsd finds it,
and the same gps=gpsd line works. No phone needed.
The 2015 way an app that serves NMEA over TCP, plus adb:
adb forward tcp:4352 tcp:4352
then Kismet's tcp GPS type reads it with no gpsd:
gps=tcp:host=localhost,port=4352
It still works if you find an app that serves NMEA;
BlueNMEA, the one I used, is gone.
The phone alone the WiGLE app on Android wardrives with no laptop
at all. It sees less than Kismet with a real card,
but it's the easiest start.
[ When it doesn't work ]
cgps shows no fix the phone has no fix yet (go outside), gpsdRelay
isn't sending (check the address and port), or
a firewall on the laptop is dropping the UDP.
gpsd: address in use the gpsd service is still running; stop both
gpsd.socket and gpsd.service.
No GPS in Kismet check the gps= line in kismet_site.conf and
that gpsd is still running.
Card won't open the suid helpers aren't installed, you aren't
in the kismet group yet (log out and back in),
or the card doesn't do monitor mode.
GPS stops mid-drive Android put gpsdRelay to sleep; turn off battery
optimization for it.
[ Keep it passive ]
Kismet listens; it doesn't connect to anything. Logging the beacons that networks broadcast is what WiGLE's whole map is built from. Connecting to networks you don't own, or capturing and cracking traffic without permission, is a different thing entirely, and it's not what this guide is for. Rules vary by country, and I'm not a lawyer. The .kismet log keeps packets by default, and on open networks that can include other people's traffic. If all you want is the map, keep data frame contents out of the log with a line in kismet_site.conf: dot11_content_filter_default=block The logging docs cover the rest of the filters. And strip your home location before you share anything.
[ FAQ ]
Does the 2015 BlueNMEA method still work? Not as written. BlueNMEA is gone from the app stores, Giskismet reads the old netxml logs modern Kismet doesn't write by default, and Kali's package names have changed. The idea is the same, though: a phone app feeds NMEA to gpsd or Kismet, and the log becomes a map. What replaced Giskismet for making Kismet maps? Kismet's own kismetdb_to_kml tool, which turns a .kismet log into KML for Google Earth or QGIS. kismetdb_to_wiglecsv makes a CSV you can upload to WiGLE. Why use USB tethering instead of the phone's Wi-Fi hotspot? Kismet puts the Wi-Fi card into monitor mode, so the laptop can't use that card to join the phone's hotspot at the same time. USB tethering gives the phone and laptop their own network over the cable, keeps your hotspot out of the capture, and charges the phone. Can Kismet read GPS from a phone without gpsd? Yes. Kismet's tcp GPS type reads a raw NMEA stream directly, for apps that serve NMEA over TCP. I use gpsd because it lets me check the fix with cgps and works with any app that relays to gpsd. Does Kismet need an internet connection? No. Kismet, gpsd and the phone's GPS all work with no internet at all. You only need it later if you upload to WiGLE. Is wardriving legal? Passively logging the beacons that networks broadcast is how WiGLE has mapped Wi-Fi for two decades, but I'm not a lawyer and rules vary by country. Connecting to networks you don't own, or capturing and cracking traffic without permission, is where you cross the line.
[ See Also ]
Kismet and Android GPS (2015) # the original write-up, kept for history
Flipper Zero ESP32 Wi-Fi # Wi-Fi recon from a pocket device
Off-Grid Communications # radios, mesh and a plan for outages
Kismet # the project, still going strong
gpsd # the GPS daemon
Guides (parent) # the rest of the write-ups
