AtomGPS Wigler is a wardriving tool originally created by @lozaning. For use with the M5Stack Atom GPS kit, this tool is specifically designed for Wi-Fi network geolocation. LED status indicators are outlined below. Wigle compatible CSV files are written to SD.
- M5 AtomGPS
- SD card (Formatted FAT32)
- Arduino IDE or
Esptool.py
- Download this forked codebase:
git clone https://github.com/lukeswitz/AtomGPS_wigler.git cd AtomGPS_wigler/build
Method One: Esptool.py
1. Locate the device:
-
Linux
ls /dev/ttyUSB*
-
macOS:
ls /dev/cu.*
- Windows, check COM port in Device Manager.
2. Flash the firmware, partition and bootloader:
Warning
Ensure you have the latest version of esptool.py installed from the link above, or a known warning about header fields will display when flashing.
- Navigate to the build folder (if not already there).
- Flash using the following command inside the build folder or by specifying file paths:
esptool.py -p [YOUR_PORT] -b 1500000 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x1000 AtomGPS_wigler_v1_6.bootloader.bin 0x8000 AtomGPS_wigler_v1_6.partitions.bin 0x10000 AtomGPS_wigler_v1_6.bin
Method Two: Arduino IDE
1. Open the .ino file in Arduino IDE (or copy and paste it into a new sketch).
2. Add & Install ESP32 Boards:
- Open Arduino IDE.
- Go to
File > Preferences
. - Add
https://dl.espressif.com/dl/package_esp32_index.json
to "Additional Boards Manager URLs." - Click
OK
. - Navigate to
Tools > Board > Boards Manager
. - Search for "esp32" and search for "esp32 by Espressif Systems" and click
Install
3. Add the Required Libraries:
M5Atom
SD
SPI
TinyGPSPlus
WiFi
For example:
Library Manager
> searchM5Atom
. ClickInstall
.
4. Set Board: Tools > Board > esp32 > M5Atom
5. The default settings are as below:
6. Click Upload
FIRST: Create a plaintext file named config.txt
on the SD card.
The config.txt
file on the SD card can contain the following variables, each defined on a new line
-
speedBased
- Type: Boolean
- Default:
false
- Description: Determines if the scanning delay is based on the speed of the device.
- Values:
true
orfalse
- Example:
speedBased=true
-
scanDelay
- Type: Integer
- Default:
150
- Description: The delay in milliseconds between scans when
speedBased
isfalse
. - Values: Any positive integer
- Example:
scanDelay=1000
-
adaptiveScan
- Type: Boolean
- Default:
true
- Description: Enables adaptive scanning, adjusting the scan time based on the number of networks found.
- Values:
true
orfalse
- Example:
adaptiveScan=false
-
channels
- Type: Array of up to 14 Integers, with reuse possible.
- Default:
channels=1,2,3,4,5,6,7,8,9,10,11
- Description: A comma-separated list of WiFi channels to scan.
- Values: Any valid WiFi channel numbers (1-11 for most regions)
- Example:
channels=1,6,11,12,13,14
speedBased=false
scanDelay=250
adaptiveScan=true
channels=1,2,3,4,5,6,7,8,9,10,11
Note
- When speedBased is
true
it will overridescanDelay
. - Ensure there are no spaces.
- Only valid channels for your region should be included in the
channels
array to ensure compliance with local regulations. - Adjust the
scanDelay
value to balance between scan frequency and power consumption whenspeedBased
is set tofalse
.
After flashing, the device scans for Wi-Fi networks, using LEDs to display status. Configure with the SD config.txt file or use the defaults as described.
- RED blink if the SD card is missing/write error.
- PURPLE blink while waiting for a GPS fix.
- GREEN blink during scanning
- Press and hold the button during scanning to toggle the Green LED.
Bonus: Contribute to the wigle.net database. Or join the community and compete to find the most Wi-Fi networks.
Detailed review and instructions for beginners | Thanks to kampf for the writeup:
- January 11, 2024: "Wigle Me This" by zZq.org
Caution
Wardriving may not be legal in all locations. Please check local laws and obtain proper consent where necessary.