OPEN BETAOpenDrift v1.0.8 supports Waveshare AMOLED V1/V2; deprecated Round firmware remains at v1.0.7c.Install the latest firmware

Hardware connection reference

Match the firmware.
Match the wiring.

Select the Waveshare board, AMOLED PCB revision, and receiver protocol first. V1 and V2 firmware is not interchangeable, and V2 reserves GPIO 17/18 for onboard interrupt signals.

01 - Select the exact build

Identify the AMOLED PCB before wiring.

V1 and V2 firmware is not interchangeable.V1 has its version silkscreen at the top of the PCB. V2 has it on the right side beside the pin headers. OpenDrift's original AMOLED build is V1.
WAVESHARE AMOLED V1

AMOLED V1

LCD_CS is GPIO 9. OpenDrift uses GPIO 15–18 for PWM or CRSF wiring.

View pinouts
WAVESHARE AMOLED V2

AMOLED V2

LCD_CS is GPIO 46. OpenDrift uses GPIO 1/2 and 15/16 to avoid the new onboard GPIO 17/18 interrupt connections.

View pinouts
DEPRECATED / COMPATIBILITY

Waveshare Round

v1.0.7c provides synchronized physical endpoints and controller behavior for existing round builds. AMOLED remains the primary development target.

Install compatibility firmware

02 - Standard receiver PWM

AMOLED V1 and V2 use different output pins.

Waveshare AMOLED V1 - PWM

V1 PWM wiring

GPIO 15 reads steering, GPIO 16 reads throttle, GPIO 17 drives the steering servo, and GPIO 18 is switched from the System page or web configurator.

ConnectionGPIODirectionPurpose
Servo in / receiver steering15Into OpenDriftDriver steering input
Throttle in / receiver throttle16Into OpenDriftThrottle sensing and blackbox logging
Servo out / steering servo17Out of OpenDriftSelectable 250/333 Hz stabilized steering command
Receiver gain signal18Into OpenDriftWhen GPIO 18 mode is Gain Input
ESC throttle signal18Out of OpenDriftInstead available when GPIO 18 mode is Throttle Out
Want throttle input and receiver gain adjustment together?GPIO 18 can only be Gain Input or Throttle Out. Leave it in Gain Input mode and split the receiver throttle signal to both GPIO 16 and the ESC instead of plugging the ESC directly into OpenDrift.

Waveshare AMOLED V2 - PWM

V2 PWM wiring

GPIO 17/18 are reserved by the revised Waveshare board. OpenDrift moves servo output to GPIO 1 and the switchable gain/throttle connection to GPIO 2.

ConnectionGPIODirectionPurpose
Servo in / receiver steering15Into OpenDriftDriver steering input
Throttle in / receiver throttle16Into OpenDriftThrottle sensing and blackbox logging
Servo out / steering servo1Out of OpenDriftSelectable 250/333 Hz stabilized steering command
Receiver gain signal2Into OpenDriftWhen GPIO 2 mode is Gain Input
ESC throttle signal2Out of OpenDriftInstead available when GPIO 2 mode is Throttle Out
Do not connect OpenDrift signals to GPIO 17 or 18 on V2.V2 adds IMU_INT2 on GPIO 17 and TP_INT on GPIO 18. Driving those pins externally can corrupt signals or cause electrical contention.

03 - Full-duplex CRSF

CRSF moves from GPIO 17/18 to GPIO 1/2 on V2.

The receiver UART lines cross: receiver TX connects to OpenDrift RX, and receiver RX connects to OpenDrift TX. The Servo In and Throttle In labels describe where the servo and ESC plug in; those two GPIOs are electrical outputs from OpenDrift.

Waveshare AMOLED V1 CRSF
ConnectionGPIODirectionPurpose
Servo in / steering servo connector15Out of OpenDriftSelectable 250/333 Hz stabilized steering command
Throttle in / ESC connector16Out of OpenDrift50 Hz throttle output with active-neutral failsafe
CRSF RX / receiver TX17Into OpenDriftChannel and link frames at 420 kbaud
CRSF TX / receiver RX18Out of OpenDriftParameter telemetry and EdgeTX setting writes
Receiver TX→ GPIO 17
Receiver RX← GPIO 18
Channel 1Steering
Channel 2Throttle
Channel 3Gyro gain
Waveshare AMOLED V2 CRSF
ConnectionGPIODirectionPurpose
Steering servo connector15Out of OpenDriftSelectable 250/333 Hz stabilized steering command
ESC connector16Out of OpenDrift50 Hz throttle output with active-neutral failsafe
CRSF RX / receiver TX1Into OpenDriftChannel and link frames at 420 kbaud
CRSF TX / receiver RX2Out of OpenDriftParameter telemetry and EdgeTX setting writes
V2 receiver TX→ GPIO 1
V2 receiver RX← GPIO 2
Channel 1Steering
Channel 2Throttle
Channel 3Gyro gain
Bench-test failsafe before installing the pinion.Throttle must remain neutral until a valid link holds neutral for 500 ms. Turning off the transmitter must immediately center steering and command neutral throttle.

04 - CRSF accessory outputs

Put any CRSF channel on a spare GPIO.

Open the OpenDrift WiFi configurator and use Auxiliary Channel Outputs to assign CRSF channel 1–16 independently to each available pin. This feature is available in AMOLED CRSF firmware only.

BoardAvailable GPIOsOutputSignal loss
Waveshare AMOLED V1 CRSF1–850 Hz receiver PWM1500 µs neutral
Waveshare AMOLED V2 CRSF3–850 Hz receiver PWM1500 µs neutral
GPIO is signal, not accessory power.ESP32-S3 outputs are 3.3 V logic. Power lights or accessory controllers from an appropriate external supply and connect its ground to OpenDrift ground. GPIO 1/2 remain reserved for the CRSF UART on AMOLED V2.

05 - Power and grounding

Regulate the supply before it reaches the ESP32.

Common ground

Receiver, OpenDrift, servo, ESC, and BEC grounds must be connected together.

External servo power

Power the steering servo from a suitable BEC or ESC receiver rail, never from an ESP32 GPIO.

DIY board power

The Waveshare ESP32-S3 board must receive regulated 5 V on its 5 V input. Never feed it directly from a 6 V or higher BEC.

Daughter-board power

The OpenDrift daughter boards under development include an onboard regulator, so a separate external 5 V regulator will not be required.

Receiver power

Use the receiver manufacturer's specified supply voltage. A SpeedyBee SB Nano should be fed from regulated 5 V.

GPIO voltage

The board power input accepts regulated 5 V, but ESP32-S3 signal pins use 3.3 V logic and are not 5 V tolerant. Never connect BEC power to GPIO 15-18.

Disconnect external power while flashing.Connect only the USB cable during browser installation. Reconnect receiver, servo, ESC signal, and vehicle power after flashing completes.
Servo-rate compatibility matters.OpenDrift defaults to 250 Hz. Select 333 Hz only when the servo manufacturer explicitly supports it, then restart the board.

Ready to connect

Verify the build name twice. Power it once.

Open firmware installer Open tuning guide