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.

- Wi-Fi network scanning

- Signal strength tracking

- 2.4 GHz channel analysis

- Automatic network scanning

- BLE device scanning

- EEPROM network storage

- Local web dashboard

- CSV scan export

- System information

- EEPROM data clearing

- Built-in LCD mini game

Scans nearby networks and displays:

- SSID

- Signal strength (RSSI)

- Signal quality

- Channel

- Encryption

- New network status

Up to 30 networks can be stored in the active scan cache.

Select a network and monitor it for about 60 seconds.

Displays:

- SSID

- RSSI

- Signal quality

- Signal history

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_BLEThe scanner can display:

- Device name

- Bluetooth address

- RSSI

Up to 20 BLE devices are stored.

BlackWire can save discovered networks to EEPROM.

Maximum:

150 networks

Stored data includes:

- SSID

- Encryption type

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:

- Wi-Fi scans

- Zone information

- Channel map

- BLE information

- System information

- Saved networks

- EEPROM clearing

- CSV export

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:

- Player ship

- Enemies

- Projectiles

- Levels

- Score

- Pause

- Increasing difficulty

Because apparently an RF scanner needed entertainment.

Required:

- Arduino UNO R4 WiFi

- DFRobot LCD Keypad Shield

- USB-C cable

The LCD shield provides the 16×2 display and physical buttons.

The exact function depends on the current menu.

LCD:

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);Keypad input:

A0

Approximate button values:

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_BLEto 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_BLEBlackWire 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:

- Arduino Core

- WiFiS3

- EEPROM

- LiquidCrystal

- ArduinoBLE

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:

- Network administration

- RF site surveys

- Security research

- Authorized penetration testing

- Wireless troubleshooting

- Education

- Embedded development

- RF experimentation

Only scan or test wireless networks and devices when you have appropriate authorization.

Piper Lovejoy - Mr.PMOSH

BlackWire v6.1