Title: GhostLink Description: GhostLink connects two ESP32 devices for remote control while maintaining continuous AP hosting URL: /latest/getting-started/dual-communication/ Version: latest Section: Getting Started Search index: /search-index.json # GhostLink > GhostLink connects two ESP32 devices for remote control while maintaining continuous AP hosting ## On this page - [Prerequisites](#prerequisites) - [Wiring](#wiring) - [Basic usage](#basic-usage) - [Changing pins](#changing-pins) - [Manual connection](#manual-connection) - [On-screen UI](#on-screen-ui) - [Troubleshooting](#troubleshooting) - [Use cases](#use-cases) - [Notes](#notes) - [Related tasks](#related-tasks) --- GhostLink connects two ESP32 devices over UART so one can host the access point while the other runs attacks. Wire them together, power them on, and they auto-discover and connect; send any GhostESP command from one device to the other, with no manual connection needed in most cases. ## Prerequisites - Two compatible ESP32 boards. - Three wires (TX, RX, GND) to connect them. - Both devices flashed with GhostESP firmware. ## Wiring Connect the devices with 3 wires: - TX of Device A → RX of Device B (GPIO 6 → GPIO 7 by default, 17 → 16 on base ESP32 models) - RX of Device A → TX of Device B (GPIO 7 → GPIO 6 by default, 16 → 17 on base ESP32 models) - GND → GND Both devices need power. ## Basic usage Once wired and powered on, devices automatically find each other: - commstatus - Check connection status - commsend <command> - Send any command to the other device; for example commsend scanap, commsend attack -d, commsend beaconspam -r, or commsend capture -probe - commdisconnect - Disconnect if needed ## Changing pins Default pins are TX: GPIO 6, RX: GPIO 7 (or 17 and 16 on base ESP32 models). To change them, run commsetpins <TX_PIN> <RX_PIN> (for example, commsetpins 4 5). Pin changes are saved and persist across reboots. You cannot change pins while connected. ## Manual connection If auto-connection fails, run commdiscovery to check discovery status, then commconnect ESP_A1B2C3 to connect to a specific device. Device names are auto-generated based on MAC address (format: ESP_XXXXXX). ## On-screen UI When connected, the GhostLink menu appears. It uses a split-view terminal: local logs on the left, remote responses on the right. Commands sent via the menu automatically open this view. ## Troubleshooting - Not connecting: Check wiring (TX→RX, RX→TX, GND connected). Make sure both devices are powered. Reboot them simultaneously and wait 30 seconds for discovery. Run commstatus to check. - Commands not working: Verify connection with commstatus. Use exact GhostESP command syntax. ## Use cases - Hidden device control: Hide one ESP32 and control it remotely with full functionality through the web interface. - Coordinated attacks: Both devices attack different targets simultaneously. - Continuous AP hosting: One device maintains the access point while the other performs intensive operations. ## Notes - Auto-discovery happens every 3 seconds. - Connection uses UART at 115,200 baud by default; Banshee build templates override this to 921,600 baud. - The device with the “larger” name becomes master, but commands can be sent from both directions. - Auto-reconnect is enabled; the connection will automatically restore if interrupted. ## Related tasks - [BLE Bridge](/latest/getting-started/ble-bridge/) - use one of these wired boards as a Bluetooth proxy to the Android companion app.