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.
| Type | How it works | Brands | Pros | Cons |
|---|---|---|---|---|
| Trigger / Finger (lever) | Spring-loaded lever-trigger under the index finger on the front of the handlebar | Apollo, Minimotors / Dualtron, Kaabo, Currus, Nami | Most precise control; stable over bumps (vertical hits don’t transfer); EY3 module already includes the display | Index-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 thumb | Xiaomi M365 / Pro / 4-series, Ninebot ES / Max G30 / GT, NIU, many entry-level | Less finger fatigue; better with gloves; ergonomic for riders with arthritis / carpal tunnel | More 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-style | EMOVE Cruiser, some Wolf King GT models, Speedway | Familiar to motorcyclists; intuitive by feel | Tougher 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):
- Accelerate to the desired speed.
- Hold the throttle steady for 5–8 seconds (firmware-dependent: Xiaomi — 5 s, Ninebot — 6 s, EY3 / Apollo — 5 s).
- A beep sounds and/or a dedicated icon appears on the display (on EY3 — code “1” with a triangle).
- You can release the throttle — the scooter keeps the speed.
Exit from cruise control — three ways, any one of them disables the function immediately:
- Press any brake lever (front or rear) — the main and safest exit.
- Press the throttle again and release — some firmwares treat this as “overwrite the speed”, others as “exit”.
- 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.
| Code | Meaning | Most likely cause | Action |
|---|---|---|---|
| 10 | Bluetooth (BLE) communication error | BLE module isn’t answering the controller | Spin: off–on; if it persists — replace the BLE board |
| 11 | Calibration / power MOSFET error | Current calibration or power switch | Try re-flashing firmware; otherwise the controller goes for replacement |
| 12 | Current-sensor calibration | Current sensor drifted | Re-flash; recalibrate |
| 13 | Calibration / MOSFET | Same as 11 | Same |
| 14 | Throttle / brake input error | Throttle or brake sensor isn’t at zero at startup | Release throttle and brake at power-on; check throttle cable |
| 15 | Throttle / brake error | Same | Same |
| 18 | Motor Hall sensor error | One of the three motor hall sensors isn’t answering | Inspect the motor plug; otherwise — replace the motor |
| 21 | BMS communication error | Cable between battery and controller | Power down, reseat the battery |
| 22 | Bad BMS serial / password | Incompatible or non-original battery | Try the original battery |
| 23 | BMS abnormal | Same plus deep discharge / overcurrent | Charge fully; if it persists — BMS for diagnostics |
| 24 | Wrong supply voltage | Voltage outside expected range (aged battery, shock) | Measure cells; battery or BMS for replacement |
| 26 | Controller memory error | Firmware corrupted | Re-flash via Mi Home or custom tool |
| 27 | Controller password mismatch | Like 26 | Same |
| 28 | MOSFET error | Power switch is failing | Replace controller |
| 29 | ESC wrong serial / not activated | Controller not activated by the Mi system | Mi Home → re-pair |
| 31 | Program error | Firmware | Re-flash |
| 35 | Wrong scooter serial | Part mismatch | Check serials in Mi Home |
| 36 | Battery temp sensor / overheating | Battery is hot | Let it cool ≥1 hour |
| 39 | Scooter temp abnormal | Motor overheated | Let it cool; reduce load |
| 40 | Main controller temp sensor / overheating | The controller under the heat-sink is hot | Same plus check the thermal paste |
Sources: Electrazoom, Electric Scooters London, Fallman.tech, XiaomiTime.
Error codes: Segway-Ninebot Max G30 / ES / GT
| Code | Meaning | Most likely cause | Action |
|---|---|---|---|
| 10 | Dashboard communication error | Loose / water-damaged harness in the stem | Inspect stem harness, reseat |
| 11 | Motor phase A current abnormal | Short in phase A, damaged controller or motor wire | Inspect MOSFETs; motor cable |
| 12 | Motor phase B current abnormal | Same for phase B | Same |
| 13 | Motor phase C current abnormal | Same for phase C | Often — controller replacement |
| 14 | Throttle abnormality | Throttle damaged / pinched cable | Inspect throttle cable; replace if damaged |
| 15 | Brake sensor fault | Brake lever sensor drifted / over-tensioned cable | Loosen the cable; make sure the lever returns to zero |
| 16 | Motor temperature abnormal | Long climb, overload | Let it cool before restart |
| 18 | Controller fault | Overheat, water, short | Controller replacement |
| 19 | Battery voltage abnormal | Loose battery cable; deep discharge | Check the cable BEFORE assuming a dead battery |
| 21 | Battery communication error | Like 19 + BMS protection trigger | Inspect the cable |
| 23 | BMS communication error | Corrosion, poor contact | Clean the connectors |
| 24 | Motor Hall sensor fault | Motor wiring damaged / water ingress | Sometimes — motor replacement |
| 26 | Firmware / flash memory abnormal | Interrupted firmware update | Power-cycle; re-flash |
| 27 | Controller hardware abnormal | Burnt component, overheat | Controller 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.
| Code | Meaning | Nature | Action |
|---|---|---|---|
| 1 | Cruise control engaged | Not an error — informer | Brake to exit |
| 2 | System error | Internal controller fault | Power-cycle; otherwise — service |
| 3 | Brake levers activated | Not an error — the sensor reports a pressed brake | Release the levers; if it persists — check the cable isn’t over-tightened |
| 4 | Motor / Hall sensor error | Motor cable or hall sensor | Inspect the motor plug; replace if damaged |
| 5 | Throttle (accelerator) error | Throttle or the EY3 module itself | Make sure the throttle returns to zero; check the EY3 → controller plug |
| 6 | Controller communication error | Between the EY3 and the controller | Unplug-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.
| Code | Meaning | Most likely cause | Action |
|---|---|---|---|
| E1 | Brake sensor circuit | Damaged / pinched brake sensor cable (often after folding or a fall) | Inspect brake-sensor connections |
| E2 | Throttle sensor circuit | Damaged throttle cable | Inspect the throttle cable |
| E3 | Handlebar ↔ controller communication | Connection between the bar block and the controller lost | Try power-cycle; check the stem harness |
| E4 | Motor power loss | Connection drops during acceleration / after an impact | Motor cable; controller for diagnostics |
| E5 | Battery / power issue | Deep discharge or BMS undervoltage protection | Charge; check the BMS |
| E7 | Motor hall sensor | One of the motor hall sensors isn’t answering | Sometimes — motor replacement |
Source: Apollo Support — error codes and the detail pages for E1, E3, E7.
Error codes: Inmotion (S1, RS, Climber, Air, Air Pro)
| Code | Meaning | Cause / context |
|---|---|---|
| E01 | Controller failure | Internal controller fault |
| E02 | Motor failure | Motor, cable, hall sensor |
| E04 | Low battery | Battery flat |
| E05 | Battery overvoltage | Regen on a fully-charged battery during a long descent |
| E06 | Brake handle fault | Brake-lever sensor |
| E07 | Accelerator handle failure | Throttle |
| E09 | Display not receiving data from controller | Stem-display cable |
| E10 | Controller not receiving data from meter | Same channel, opposite direction |
| E11 | Motherboard overheating | Long climb |
| E12 | Motor overheating | Long climb / excessive load |
| E15 | Display hardware failure | The LCD itself |
| E16 | Fall detection triggered | The 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:
| Symptom | What it could be | What to check first |
|---|---|---|
| Throttle doesn’t respond but the display is alive | Throttle 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 time | Brake cable over-tensioned or sensor drifted | Let the lever return fully; loosen the cable |
| Sudden brief jerks on the move | Motor hall sensors (one of three drops out) | Loosen and reseat the motor plug; code 18 (Xiaomi) / 24 (Ninebot) / 4 (EY3) |
| Sporadic reboots during acceleration | BMS overcurrent protection (battery aging) | Avoid Sport mode; measure cells under load |
| Speed “drips” down after 5–10 min | Motor or controller overheat | Let it cool; often — poor airflow under the deck |
| Cruise engaged accidentally on a downhill | The throttle was steady for 5–8 s (the typical condition) | Disable cruise in the app |
| The scooter won’t power on with the Power button | Battery flat or blocked by low-voltage cut-off | Charge; on a BMS cut you need to “push” voltage from the charger |
| BLE pairing won’t go through | BLE module or firmware conflict | Mi 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:
- Power-cycle (off, wait 30 s, on) — fixes most transient errors (10, 21, 23 on Ninebot; 10, 21 on Xiaomi; 6 on EY3).
- Hold Power + Mode for 3–5 s (Xiaomi) — switches the unit km/h ↔ mph; does not reset errors. Don’t confuse.
- Mi Home / Segway-Ninebot app → settings → reset KERS / restore defaults — zeroes KERS calibration and wheel-diameter.
- 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
| Platform | Display numbering | App for full opcode | Default cruise | The most-feared code that isn’t actually a fault |
|---|---|---|---|---|
| Xiaomi M365 / Pro / 4 | 10–40 two-digit | Mi Home / Xiaomi Home | Off | 14 / 15 (throttle or brake not at zero at power-on) |
| Ninebot ES / Max G30 / GT | 10–27 no prefix | Segway-Ninebot | Off | 10 (BLE / dashboard re-sync) |
| Dualtron / Kaabo / Currus (EY3) | 1–6 single-digit | (No official one — Bluetooth tools are 3rd-party) | On | 1 (cruise engaged — informer) and 3 (brake pressed) |
| Apollo City / Air / Phantom / Pro / Ghost | E1–E7 | Apollo App | On | E1 (brake sensor after folding) |
| Inmotion S1 / RS / Climber / Air | E01–E16 | InMotion | On | E05 (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.