Display, throttle and error codes: how to read your dashboard and what the errors mean on popular decks

The display, the throttle lever and the brake levers are the only channel the e-scooter has for talking to the rider. When a triangle blinks with code “E2” or “14”, the Google query usually flies off without context and without the official manual at hand. This section is about how the user-facing interface works on popular families (Xiaomi, Ninebot, the EY3 ecosystem of Dualtron / Kaabo / Currus, Apollo, Inmotion), how the three throttle types and cruise control behave, and which actually-meaningful error codes each vendor surfaces. It complements the technical section Controllers, BMS, power electronics, which describes what happens “below the display”.

Display types

Xiaomi M365 / M365 Pro / 4-series: four-digit LCD

The base M365 (2017) has a single-symbol 7-segment block that shows only battery level (one of four bars) and the current mode. The M365 PRO (2019) and the later Mi Electric Scooter Pro 2 / 3 / 4 / 4 Pro carry a four-digit LCD with much richer readouts: speed (big numeral), battery percentage, mode glyph (Eco / D / S), icons for headlight, Bluetooth, lock and brake events, and a single “!” mark for error codes.

A Xiaomi-ecosystem quirk: the error code is a two-digit number (10, 11, 14, 21, 24…) — but on the old M365 without LCD digits, it is delivered as a series of blinks / audible beeps: long = first digit, short = second. “Two long + six short = error 26” (Electrazoom). On LCD models the number is printed directly in the speed field.

Mi Home / Xiaomi Home app (iOS, Android) pairs over Bluetooth and gives three things: (1) deeper error readout with a text description instead of just a digit; (2) Cruise Control toggle (off by default); (3) KERS calibration, regen strength regulator, tire-diameter calibration (Xiaomi Mi support, ScooterHacking Mi guide).

Segway-Ninebot ES / Max G30 / GT-series: LCD with ER codes

Ninebot uses its own LCD chip with a field for two-digit ER codes (no “E” prefix — just the number). Structurally this is the same format as Xiaomi, but the controller logic differs: Ninebot’s controller groups errors into 10-x (communication), 11-13 (motor phase currents A/B/C), 14-15 (input peripherals — throttle and brake), 16 (motor temperature), 18-19 (controller and supply), 21-24 (battery, BMS, hall sensors), 26-27 (controller firmware and hardware) (EScooterHut, Levy Electric).

The Segway-Ninebot app provides the same trio: textual decoding of the code, Cruise Control toggle, KERS-strength selection and unit choice (km/h / mph).

EY3 LCD on Dualtron / Kaabo / Currus / Speedway

EY3 (sometimes labelled “Color EY3” — there is a colour OLED revision) is a standalone Minimotors product, Mi-independent, fitted in Dualtron (every model), Kaabo (Mantis, Wolf), Currus NF / Panther, Speedway 5 and other high-power decks (Rider Guide EY3). It is a trigger-throttle module with an integrated screen and three buttons (Power, Mode, Gear).

EY3 simultaneously shows speed, ODO / TRIP, battery voltage (V, not %), current draw (A), mode (1/2/3), p-settings (programmable parameters P0–PD: max-power, torque, KERS, wheel inches, auto-off timeout). A long Mode press (3–5 s) opens the p-settings menu; the Gear button cycles values (Rider Guide EY3, Wee-Bot Dualtron LCD guide).

EY3 error codes are single-digit (1–6), described below.

Apollo TFT / IPX LCD

Apollo Scooters use their own design: a monochrome LCD on City / Air, a full-colour TFT on Phantom / Pro / Ghost. The Apollo format is prefix E + digit (E1, E2, E3, E4, E5, E7). It is not the “Xiaomi-style” long/short blink — the code is printed directly in the message field. Apollo has its own app with firmware and an error log (Apollo Support — error codes).

Inmotion: E01–E16 with prefix

Inmotion (S1, RS, Climber, Air, Air Pro) surfaces faults as a three-character “E0x” code numbered 01–16, covering controller, motor, battery, brake, throttle, display, overheat and fall-detection (Inmotion Zendesk, Green220 — Inmotion guide).

Three throttle types: trigger, thumb, twist

The accelerator type directly affects long-ride fatigue, control off-road, and compatibility with winter gloves.

TypeHow it worksBrandsProsCons
Trigger / Finger (lever)Spring-loaded lever-trigger under the index finger on the front of the handlebarApollo, Minimotors / Dualtron, Kaabo, Currus, NamiMost precise control; stable over bumps (vertical hits don’t transfer); EY3 module already includes the displayIndex-finger fatigue on long rides; worse compatibility with thick winter gloves
Thumb / Paddle (paddle under the thumb)Flat paddle on the top of the right grip, pressed down by the thumbXiaomi M365 / Pro / 4-series, Ninebot ES / Max G30 / GT, NIU, many entry-levelLess finger fatigue; better with gloves; ergonomic for riders with arthritis / carpal tunnelMore sensitive to vertical hits (a pothole makes the thumb push harder involuntarily); less precise
Twist / Full-twist (rotating grip)Twist the whole right grip toward you, motorcycle-styleEMOVE Cruiser, some Wolf King GT models, SpeedwayFamiliar to motorcyclists; intuitive by feelTougher for beginners (hard to hold a steady speed); strains the wrist on long rides; can accidentally rotate when switching hands

Aggregated from Apollo throttle guide, Rider Guide throttles, Varla — thumb vs trigger.

Throttle-module IP rating. Apollo notes that roughly 53% of thumb-throttle models carry a declared IP rating versus ~20% of trigger-throttle models (Apollo throttle guide) — this is because thumb-throttle units more often ship on entry-level decks where IP54 certification is a competitive selling point. Higher-end trigger decks often compensate with a separate controller IP rating (see IP protection).

Cruise control: activation condition, exit, limits

Cruise control is a function that locks the throttle in the position the rider held it for N seconds at a stable speed, then the scooter keeps going on its own without pressing the accelerator.

Typical activation mechanic (aggregated from Nanrobot, Levy Electric — what is cruise control, CitizenSide):

  1. Accelerate to the desired speed.
  2. Hold the throttle steady for 5–8 seconds (firmware-dependent: Xiaomi — 5 s, Ninebot — 6 s, EY3 / Apollo — 5 s).
  3. A beep sounds and/or a dedicated icon appears on the display (on EY3 — code “1” with a triangle).
  4. You can release the throttle — the scooter keeps the speed.

Exit from cruise control — three ways, any one of them disables the function immediately:

  1. Press any brake lever (front or rear) — the main and safest exit.
  2. Press the throttle again and release — some firmwares treat this as “overwrite the speed”, others as “exit”.
  3. Power / Mode button (on some models, not universal).

Cruise is off by default on Xiaomi M365 / Pro / 4-series and Ninebot Max G30 / GT — and must be deliberately enabled in the Mi Home / Segway-Ninebot app (Xiaomi Mi support, Levy — how to turn off cruise). EY3 / Apollo / Inmotion ship with cruise active out of the box.

Safety limits (Levy — understanding cruise, Gyroor): don’t use in traffic, on wet surfaces, on steep descents (a fixed speed becomes uncontrollable downhill), or with thick gloves — brake reaction lags. If cruise engages accidentally (this is the most common complaint on Xiaomi), it’s easy to disable in the app settings.

Speed modes / Eco-Standard-Sport

Most modern decks offer three modes tied to a power and max-speed limit:

  • Eco / mode 1: 30–50% power, ~15 km/h, aggressive KERS. Purpose — maximum range (sometimes +30–40%), gentle riding in the rain.
  • Standard / D / mode 2: 60–80% power, ~20–25 km/h (on 250 W EU models capped at 20 exactly). The default urban mode.
  • Sport / S / mode 3: 100% power and max-speed (25 km/h EU, 32 km/h UK trials, 45+ km/h elsewhere). Often with a more aggressive acceleration curve.

Switching — a short press of Mode / Power. On EY3, the Gear button (the current mode shows as “1”, “2” or “3” next to the speed).

Eco doesn’t lock the motor on a hill. If Eco is on but the deck struggles on a climb, the controller still delivers the power needed to maintain speed, up to the cap. This isn’t a bug — it’s by design (Rider Guide EY3).

Error codes: Xiaomi M365 / M365 Pro / 4-series

Codes above 9 are two-digit. If an old M365 without LCD digits transmits the code via blinks, count: long blink = tens, short = ones. On LCD models the code is printed directly.

CodeMeaningMost likely causeAction
10Bluetooth (BLE) communication errorBLE module isn’t answering the controllerSpin: off–on; if it persists — replace the BLE board
11Calibration / power MOSFET errorCurrent calibration or power switchTry re-flashing firmware; otherwise the controller goes for replacement
12Current-sensor calibrationCurrent sensor driftedRe-flash; recalibrate
13Calibration / MOSFETSame as 11Same
14Throttle / brake input errorThrottle or brake sensor isn’t at zero at startupRelease throttle and brake at power-on; check throttle cable
15Throttle / brake errorSameSame
18Motor Hall sensor errorOne of the three motor hall sensors isn’t answeringInspect the motor plug; otherwise — replace the motor
21BMS communication errorCable between battery and controllerPower down, reseat the battery
22Bad BMS serial / passwordIncompatible or non-original batteryTry the original battery
23BMS abnormalSame plus deep discharge / overcurrentCharge fully; if it persists — BMS for diagnostics
24Wrong supply voltageVoltage outside expected range (aged battery, shock)Measure cells; battery or BMS for replacement
26Controller memory errorFirmware corruptedRe-flash via Mi Home or custom tool
27Controller password mismatchLike 26Same
28MOSFET errorPower switch is failingReplace controller
29ESC wrong serial / not activatedController not activated by the Mi systemMi Home → re-pair
31Program errorFirmwareRe-flash
35Wrong scooter serialPart mismatchCheck serials in Mi Home
36Battery temp sensor / overheatingBattery is hotLet it cool ≥1 hour
39Scooter temp abnormalMotor overheatedLet it cool; reduce load
40Main controller temp sensor / overheatingThe controller under the heat-sink is hotSame plus check the thermal paste

Sources: Electrazoom, Electric Scooters London, Fallman.tech, XiaomiTime.

Error codes: Segway-Ninebot Max G30 / ES / GT

CodeMeaningMost likely causeAction
10Dashboard communication errorLoose / water-damaged harness in the stemInspect stem harness, reseat
11Motor phase A current abnormalShort in phase A, damaged controller or motor wireInspect MOSFETs; motor cable
12Motor phase B current abnormalSame for phase BSame
13Motor phase C current abnormalSame for phase COften — controller replacement
14Throttle abnormalityThrottle damaged / pinched cableInspect throttle cable; replace if damaged
15Brake sensor faultBrake lever sensor drifted / over-tensioned cableLoosen the cable; make sure the lever returns to zero
16Motor temperature abnormalLong climb, overloadLet it cool before restart
18Controller faultOverheat, water, shortController replacement
19Battery voltage abnormalLoose battery cable; deep dischargeCheck the cable BEFORE assuming a dead battery
21Battery communication errorLike 19 + BMS protection triggerInspect the cable
23BMS communication errorCorrosion, poor contactClean the connectors
24Motor Hall sensor faultMotor wiring damaged / water ingressSometimes — motor replacement
26Firmware / flash memory abnormalInterrupted firmware updatePower-cycle; re-flash
27Controller hardware abnormalBurnt component, overheatController replacement

Sources: EScooterHut, Levy — Segway Max codes, Kickmotion.

Error codes: EY3 (Dualtron / Kaabo / Currus / Speedway)

EY3 displays a “!” triangle with a single-digit code above the battery indicator. Not every “code” is a real error: 1 and 3 are status signals.

CodeMeaningNatureAction
1Cruise control engagedNot an error — informerBrake to exit
2System errorInternal controller faultPower-cycle; otherwise — service
3Brake levers activatedNot an error — the sensor reports a pressed brakeRelease the levers; if it persists — check the cable isn’t over-tightened
4Motor / Hall sensor errorMotor cable or hall sensorInspect the motor plug; replace if damaged
5Throttle (accelerator) errorThrottle or the EY3 module itselfMake sure the throttle returns to zero; check the EY3 → controller plug
6Controller communication errorBetween the EY3 and the controllerUnplug-replug; verify the 5-pin cable is intact

Sources: Rider Guide EY3, Apollo — E3 explained.

Error codes: Apollo Scooters

Apollo (City, Air, Phantom, Pro, Ghost) uses its own numbering E1–E7. Codes 1–3 often trigger after removing and refitting the handlebar on foldable models — the harness in the stem can splay or get pinched.

CodeMeaningMost likely causeAction
E1Brake sensor circuitDamaged / pinched brake sensor cable (often after folding or a fall)Inspect brake-sensor connections
E2Throttle sensor circuitDamaged throttle cableInspect the throttle cable
E3Handlebar ↔ controller communicationConnection between the bar block and the controller lostTry power-cycle; check the stem harness
E4Motor power lossConnection drops during acceleration / after an impactMotor cable; controller for diagnostics
E5Battery / power issueDeep discharge or BMS undervoltage protectionCharge; check the BMS
E7Motor hall sensorOne of the motor hall sensors isn’t answeringSometimes — motor replacement

Source: Apollo Support — error codes and the detail pages for E1, E3, E7.

Error codes: Inmotion (S1, RS, Climber, Air, Air Pro)

CodeMeaningCause / context
E01Controller failureInternal controller fault
E02Motor failureMotor, cable, hall sensor
E04Low batteryBattery flat
E05Battery overvoltageRegen on a fully-charged battery during a long descent
E06Brake handle faultBrake-lever sensor
E07Accelerator handle failureThrottle
E09Display not receiving data from controllerStem-display cable
E10Controller not receiving data from meterSame channel, opposite direction
E11Motherboard overheatingLong climb
E12Motor overheatingLong climb / excessive load
E15Display hardware failureThe LCD itself
E16Fall detection triggeredThe scooter has fallen; motor auto-locks

Quirk: errors 5, 6, 7, 11 and 12 can self-restart after a sufficient pause (usually hours) — this is a cool-down reset. Sources: Inmotion Zendesk, Green220.

On-the-go diagnostics: what a symptom means

Not every problem prints a code. Some sit in the behavior. Basic symptom-to-cause mapping that holds across platforms:

SymptomWhat it could beWhat to check first
Throttle doesn’t respond but the display is aliveThrottle sensor, throttle cable, or brake-pull (the controller locks the throttle while the brake is pulled)Are the brake levers at zero at power-on?
Reverse / brake lever reads “pressed” all the timeBrake cable over-tensioned or sensor driftedLet the lever return fully; loosen the cable
Sudden brief jerks on the moveMotor hall sensors (one of three drops out)Loosen and reseat the motor plug; code 18 (Xiaomi) / 24 (Ninebot) / 4 (EY3)
Sporadic reboots during accelerationBMS overcurrent protection (battery aging)Avoid Sport mode; measure cells under load
Speed “drips” down after 5–10 minMotor or controller overheatLet it cool; often — poor airflow under the deck
Cruise engaged accidentally on a downhillThe throttle was steady for 5–8 s (the typical condition)Disable cruise in the app
The scooter won’t power on with the Power buttonBattery flat or blocked by low-voltage cut-offCharge; on a BMS cut you need to “push” voltage from the charger
BLE pairing won’t go throughBLE module or firmware conflictMi Home → forget device → re-pair; occasionally a firmware rollback

Reset procedures: a safe soft-reset

There is no “hard reset” (as in a phone’s hold-button) on most scooters. Available methods:

  1. Power-cycle (off, wait 30 s, on) — fixes most transient errors (10, 21, 23 on Ninebot; 10, 21 on Xiaomi; 6 on EY3).
  2. Hold Power + Mode for 3–5 s (Xiaomi) — switches the unit km/h ↔ mph; does not reset errors. Don’t confuse.
  3. Mi Home / Segway-Ninebot app → settings → reset KERS / restore defaults — zeroes KERS calibration and wheel-diameter.
  4. Re-flash firmware via ScooterHacking Utility / Xiaomi CFW Builder (ScooterHacking Mi guide) — only when confident, voids the warranty.

What not to do: don’t disconnect the battery “under load” (while riding or with the controller on) — this can blow a MOSFET. Don’t “guess” by jumpering two connector pins that “look wrong” — every vendor wires their connectors differently.

When to take it to service

Self-diagnosis is safe while the scooter isn’t moving. When the symptom appears on the move (jerks at speed, falling into full-throttle without input, brake doesn’t bite, smoke / burning smell, hot controller-to-the-touch after a few minutes), it is a stop-condition, not a “we’ll look later”. Same for any code tied to MOSFET (Xiaomi 11, 13, 28), Motor Phase (Ninebot 11–13), Controller (Apollo E3/E4, EY3 6, Inmotion E01).

Before going in: write down the code and the circumstances (speed, hill, temperature, rain — was there any beforehand), photograph the display with the code. This shortens diagnostics because the mechanic doesn’t have to start with a full pre-screen.

Summary table: where to look first

PlatformDisplay numberingApp for full opcodeDefault cruiseThe most-feared code that isn’t actually a fault
Xiaomi M365 / Pro / 410–40 two-digitMi Home / Xiaomi HomeOff14 / 15 (throttle or brake not at zero at power-on)
Ninebot ES / Max G30 / GT10–27 no prefixSegway-NinebotOff10 (BLE / dashboard re-sync)
Dualtron / Kaabo / Currus (EY3)1–6 single-digit(No official one — Bluetooth tools are 3rd-party)On1 (cruise engaged — informer) and 3 (brake pressed)
Apollo City / Air / Phantom / Pro / GhostE1–E7Apollo AppOnE1 (brake sensor after folding)
Inmotion S1 / RS / Climber / AirE01–E16InMotionOnE05 (overvoltage when braking on a full battery)

For a deeper dive into the electronic architecture behind these codes — see Controllers, BMS, power electronics, and for brake lever sensors and fail-safes — Electric scooter brakes.