BlackWire is a portable RF survey tool built with an Arduino UNO R4 WiFi and DFRobot LCD Keypad Shield.
It can scan nearby Wi-Fi networks, monitor signal strength, analyze channels, scan BLE devices, save network information, and provide a local web dashboard.
BlackWire is intended for authorized security research, network administration, RF experimentation, and education.
Scans nearby networks and displays:
Up to 30 networks can be stored in the active scan cache.
Select a network and monitor it for about 60 seconds.
Displays:
Analyzes Wi-Fi channel usage and recommends between:
1
6
11
It shows network count, strongest RSSI, and the recommended channel.
Automatically scans the area every:
30 seconds
60 seconds
5 minutes
After each scan, BlackWire reports the total and newly discovered networks.
BLE support can be enabled with:
#define ENABLE_BLE
The scanner can display:
Up to 20 BLE devices are stored.
BlackWire can save discovered networks to EEPROM.
Maximum:
150 networks
Stored data includes:
The data can be viewed from the dashboard or deleted from the device.
BlackWire can create its own Wi-Fi access point and host a local web interface.
Default settings:
SSID: BlackWire-AP
Password: survey1234
The dashboard provides:
The LCD displays the dashboard's IP address.
The dashboard can export scan results containing:
SSID
Channel
RSSI
Signal Quality
Encryption
File name:
blackwire_scan.csv
BlackWire also includes a small Space-Invaders-style game for the 16×2 LCD.
Features include:
Because apparently an RF scanner needed entertainment.
Required:
The LCD shield provides the 16×2 display and physical buttons.
| Button | Function |
|---|---|
| UP | Move up |
| DOWN | Move down |
| LEFT | Back / Cancel |
| RIGHT | Move right |
| SELECT | Select / Confirm |
The exact function depends on the current menu.
LCD:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
Keypad input:
A0
Approximate button values:
| Input | Button |
|---|---|
< 60 | RIGHT |
< 200 | UP |
< 400 | DOWN |
< 600 | LEFT |
< 800 | SELECT |
>= 800 | NONE |
Menu input uses approximately 200 ms debounce.
BlackWire uses the Arduino ecosystem and supports:
Arduino UNO R4 WiFi
Libraries:
#include <Arduino.h>
#include <WiFiS3.h>
#include <EEPROM.h>
#include <LiquidCrystal.h>
#include <ArduinoBLE.h>
ArduinoBLE is only needed when BLE is enabled.
Install the Arduino IDE.
Install the Arduino UNO R4 board package through the Board Manager.
Select:
Arduino UNO R4 WiFi
Connect the LCD shield to the UNO R4 WiFi and connect the Arduino to your computer using USB-C.
Open:
BlackWire.ino
in Arduino IDE.
Add:
#define ENABLE_BLE
to enable BLE scanning.
Select the correct Arduino port and upload the firmware.
After startup, BlackWire displays:
BLACKWIRE v6.1
RF SURVEY TOOL
Saved network information is then loaded from EEPROM.
SCAN NETWORKS
SIGNAL TRACKER
BLE SCAN
CHANNEL ADVISE
AUTO SCAN
WEB DASHBOARD
SYSTEM INFO
CLEAR DATA
PLAY GAME
Use the LCD keypad to navigate.
Selecting WEB DASHBOARD starts the BlackWire Wi-Fi access point.
Default:
BlackWire-AP
The HTTP server runs on:
Port 80
The LCD shows the device IP address.
Connect to the BlackWire access point and open that IP address in a browser.
/scan
/zone
/chanmap
/ble
/sysinfo
/clear
/csv
The dashboard refreshes approximately every 30 seconds.
BlackWire uses EEPROM to store network information.
Basic layout:
[0-1] Network count
[2-3] Reserved
[4+] Network records
Each record contains:
32 bytes SSID
1 byte NULL terminator
1 byte Encryption type
Maximum:
150 networks
Serial debugging runs at:
9600 baud
Output categories include:
[BW]
[BW-TRACK]
[BW-CHAN]
[BW-BLE]
[BW-GAME]
[BW-SYS]
[BW-WEB]
Useful for debugging and development.
Important settings are near the top of the source code.
#define FW_VERSION "v6.1"
#define AP_SSID "BlackWire-AP"
#define AP_PASS "survey1234"
constexpr int MAX_KNOWN = 150;
constexpr int MAX_SCAN = 30;
constexpr int MAX_BLE = 20;
#define ENABLE_BLE
BlackWire should only be used on networks and wireless environments where you have permission to scan or test.
The default AP password is:
survey1234
Change it before using BlackWire in an environment where other people could access the device.
Saved network information is not encrypted.
Do not use the EEPROM as secure storage.
The dashboard does not use authentication.
Treat it as a local trusted interface and do not expose it directly to the Internet.
BlackWire/
├── README.md
├── LICENSE
└── BlackWire.ino
BlackWire is licensed under the:
GNU General Public License v3.0 (GPLv3)
See the LICENSE file for the full license.
GPLv3 allows the software to be used, studied, modified, and redistributed under its license terms.
BlackWire uses Arduino libraries including:
Each library is subject to its own license.
Developed by Arduino.
Provides the main microcontroller and wireless hardware.
Developed by DFRobot.
Provides the 16×2 LCD and keypad interface.
BlackWire is intended for:
Only scan or test wireless networks and devices when you have appropriate authorization.
Piper Lovejoy - Mr.PMOSH
BlackWire v6.1
5 commits
C++
100.0%
BlackWire is a portable RF survey tool built with an Arduino UNO R4 WiFi and DFRobot LCD Keypad Shield.
It can scan nearby Wi-Fi networks, monitor signal strength, analyze channels, scan BLE devices, save network information, and provide a local web dashboard.
BlackWire is intended for authorized security research, network administration, RF experimentation, and education.
Scans nearby networks and displays:
Up to 30 networks can be stored in the active scan cache.
Select a network and monitor it for about 60 seconds.
Displays:
Analyzes Wi-Fi channel usage and recommends between:
1
6
11
It shows network count, strongest RSSI, and the recommended channel.
Automatically scans the area every:
30 seconds
60 seconds
5 minutes
After each scan, BlackWire reports the total and newly discovered networks.
BLE support can be enabled with:
#define ENABLE_BLE
The scanner can display:
Up to 20 BLE devices are stored.
BlackWire can save discovered networks to EEPROM.
Maximum:
150 networks
Stored data includes:
The data can be viewed from the dashboard or deleted from the device.
BlackWire can create its own Wi-Fi access point and host a local web interface.
Default settings:
SSID: BlackWire-AP
Password: survey1234
The dashboard provides:
The LCD displays the dashboard's IP address.
The dashboard can export scan results containing:
SSID
Channel
RSSI
Signal Quality
Encryption
File name:
blackwire_scan.csv
BlackWire also includes a small Space-Invaders-style game for the 16×2 LCD.
Features include:
Because apparently an RF scanner needed entertainment.
Required:
The LCD shield provides the 16×2 display and physical buttons.
| Button | Function |
|---|---|
| UP | Move up |
| DOWN | Move down |
| LEFT | Back / Cancel |
| RIGHT | Move right |
| SELECT | Select / Confirm |
The exact function depends on the current menu.
LCD:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
Keypad input:
A0
Approximate button values:
| Input | Button |
|---|---|
< 60 | RIGHT |
< 200 | UP |
< 400 | DOWN |
< 600 | LEFT |
< 800 | SELECT |
>= 800 | NONE |
Menu input uses approximately 200 ms debounce.
BlackWire uses the Arduino ecosystem and supports:
Arduino UNO R4 WiFi
Libraries:
#include <Arduino.h>
#include <WiFiS3.h>
#include <EEPROM.h>
#include <LiquidCrystal.h>
#include <ArduinoBLE.h>
ArduinoBLE is only needed when BLE is enabled.
Install the Arduino IDE.
Install the Arduino UNO R4 board package through the Board Manager.
Select:
Arduino UNO R4 WiFi
Connect the LCD shield to the UNO R4 WiFi and connect the Arduino to your computer using USB-C.
Open:
BlackWire.ino
in Arduino IDE.
Add:
#define ENABLE_BLE
to enable BLE scanning.
Select the correct Arduino port and upload the firmware.
After startup, BlackWire displays:
BLACKWIRE v6.1
RF SURVEY TOOL
Saved network information is then loaded from EEPROM.
SCAN NETWORKS
SIGNAL TRACKER
BLE SCAN
CHANNEL ADVISE
AUTO SCAN
WEB DASHBOARD
SYSTEM INFO
CLEAR DATA
PLAY GAME
Use the LCD keypad to navigate.
Selecting WEB DASHBOARD starts the BlackWire Wi-Fi access point.
Default:
BlackWire-AP
The HTTP server runs on:
Port 80
The LCD shows the device IP address.
Connect to the BlackWire access point and open that IP address in a browser.
/scan
/zone
/chanmap
/ble
/sysinfo
/clear
/csv
The dashboard refreshes approximately every 30 seconds.
BlackWire uses EEPROM to store network information.
Basic layout:
[0-1] Network count
[2-3] Reserved
[4+] Network records
Each record contains:
32 bytes SSID
1 byte NULL terminator
1 byte Encryption type
Maximum:
150 networks
Serial debugging runs at:
9600 baud
Output categories include:
[BW]
[BW-TRACK]
[BW-CHAN]
[BW-BLE]
[BW-GAME]
[BW-SYS]
[BW-WEB]
Useful for debugging and development.
Important settings are near the top of the source code.
#define FW_VERSION "v6.1"
#define AP_SSID "BlackWire-AP"
#define AP_PASS "survey1234"
constexpr int MAX_KNOWN = 150;
constexpr int MAX_SCAN = 30;
constexpr int MAX_BLE = 20;
#define ENABLE_BLE
BlackWire should only be used on networks and wireless environments where you have permission to scan or test.
The default AP password is:
survey1234
Change it before using BlackWire in an environment where other people could access the device.
Saved network information is not encrypted.
Do not use the EEPROM as secure storage.
The dashboard does not use authentication.
Treat it as a local trusted interface and do not expose it directly to the Internet.
BlackWire/
├── README.md
├── LICENSE
└── BlackWire.ino
BlackWire is licensed under the:
GNU General Public License v3.0 (GPLv3)
See the LICENSE file for the full license.
GPLv3 allows the software to be used, studied, modified, and redistributed under its license terms.
BlackWire uses Arduino libraries including:
Each library is subject to its own license.
Developed by Arduino.
Provides the main microcontroller and wireless hardware.
Developed by DFRobot.
Provides the 16×2 LCD and keypad interface.
BlackWire is intended for:
Only scan or test wireless networks and devices when you have appropriate authorization.
Piper Lovejoy - Mr.PMOSH
BlackWire v6.1
5 commits
C++
100.0%