# ESP8266 WiFi Module

The ESP8266 and its clones are low-cost and readily available Wi-Fi modules with full TCP/IP stack and microcontroller capability. They can be used with any Pixhawk series controller.

ESP8266 is the *defacto* default WiFi module for use with [Pixracer](../flight_controller/pixracer.md) (and is usually bundled with it).

# Where to Buy

The ESP8266 module is readily available from a number of suppliers. A few vendors are listed below.

Most modules support 3.3 V input (only), while some flight controllers (e.g. Pixhawk 4) output at 5V (you will need to check compatibility and step down the voltage if needed).

Modules that accept 3.3V supply:

Modules that accept 5.0V supply:

# Pixhawk/PX4 Setup & Configuration

TIP

You may first need to update the radio with PX4-compatible ESP8266 firmware (see below). The manufacture instructions should explain if this is needed.

Connect your ESP8266 to your Pixhawk-series flight controller (e.g. Pixracer) on any free UART.

Connect the flight controller to your ground station via USB (as WiFi is not yet fully set up).

Using QGroundControl:

Once you have configured the flight controller serial port used for connecting to the radio, you can remove the physical USB connection between the ground station and the vehicle.

# Connect via ESP8266 to QGC

The module exposes a WiFi hotspot that your ground station computer can use to connect to the vehicle.

Note

The settings for the ESP8266 hotspot should be provided with the board (e.g. typically printed on the reverse side of the board or on the packaging).

A common factory network setting is:

  • SSID: PixRacer
  • Password: pixracer
  • WiFi Channel: 11
  • UART speed: 921600

Other modules may use settings like this:

  • SSID: IFFRC_xxxxxxxx
  • Password: 12345678
  • IP: 192.168.4.1
  • Port: 6789 (TCP)

Examples of boards from AlphaUILink and DOITING are shown below:

AlphaUAVLink - Back AlphaUAVLink - Front DOITING EPS 12F - Back DOITING EPS 12F - Front

On your wifi-enabled QGroundControl ground station computer/tablet, find and connect to the open wireless network for your ESP8266. On a Windows computer the connection settings for a network with name Pixracer and default password pixracer point will look like this:

Windows Network Setup: Connection Windows Network Setup: Security

QGroundControl will automatically connect to the vehicle when the ground station computer is attached to a WiFi access point named "Pixracer".

If you're using a module with any other WiFi name you will need to manually set up the QGroundControl WiFi connection, as shown in the following section.

# Configure QGC with non-standard WiFi connections

QGroundControl will automatically connect to the vehicle when the ground station computer is attached to the "Pixracer" WiFi access point. For any other access point name you will need to manually create a custom comm link:

  1. Go to Application Settings > Comm Links (opens new window)
  2. Add new connection with appropriate settings.
  3. Select the new connection, and click Connect.
  4. The vehicle should now connect

# Verify

You should now see HUD movement on your QGC computer via wireless link and be able to view the summary panel for the ESP8266 WiFi Bridge (as shown below).

QGC Summary showing Wifi Bridge

TIP

If you have any problem connecting, see QGC Installation/Configuration Problems (opens new window).

# ESP8266 Flashing/Firmware (Advanced)

ESP8266 modules from different manufacturers may not have appropriate ESP8266 firmware pre-installed. The instructions below explain how to update radios with the correct version.

# Pre Built Binaries

MavLink ESP8266 Firmware V 1.2.2 (opens new window)

# Build From Sources

The firmware repository (opens new window) contains instructions and all the tools needed for building and flashing the ESP8266 firmware.

# Updating the Firmware OTA

If you have firmware 1.0.4 or greater installed, you can do the update using the ESP's Over The Air Update feature. Just connect to its AP WiFi link and browse to: http://192.168.4.1/update. You can then select the firmware file you downloaded above and upload it to the WiFi Module.

TIP

This is the easiest way to update firmware!

# Flashing the ESP8266 Firmware

Before flashing, make sure you boot the ESP8266 in Flash Mode as described below. If you cloned the MavESP8266 (opens new window) repository, you can build and flash the firmware using the provided PlatformIO (opens new window) tools and environment. If you downloaded the pre-built firmware above, download the esptool (opens new window) utility and use the command line below:

esptool.py --baud 921600 --port /dev/your_serial_port write_flash 0x00000 firmware_xxxxx.bin

Where:

  • firmware_xxxxx.bin is the firmware you downloaded above
  • your_serial_port is the name of the serial port where the ESP8266 is connected to (/dev/cu.usbmodem for example)

# Wiring for Flashing the Firmware

WARNING

Most ESP8266 modules support 3.3 volts (only), while some flight controllers (e.g. Pixhawk 4) output at 5V. Check compatibility and step down the voltage if needed.

There are various methods for setting the ESP8266 into Flash Mode but not all USB/UART adapters provide all the necessary pins for automatic mode switching. In order to boot the ESP8266 in Flash Mode, the GPIO-0 pin must be set low (GND) and the CH_PD pin must be set high (VCC). This is what my own setup looks like:

esp8266 flashing rig

I built a cable where RX, TX, VCC, and GND are properly wired directly from the FTDI adapter to the ESP8266. From the ESP8266, I left two wires connected to GPIO-0 and CH_PD free so I can boot it either normally or in flash mode by connecting them to GND and VCC respectively.

# ESP8266 (ESP-01) Pinout

esp8266 wifi module pinout

# Flashing Diagram using an FTDI USB/UART Adapter

esp8266 flashing