Bafang drive systems turn up on a huge number of bikes that never carried the Bafang name on the frame. That is why a two-digit number on the display sends so many riders down the wrong path: they look the number up in a table written for a different system, and end up buying a part that was never the problem.
This is the working table for the common two-digit Bafang codes, plus the two codes that most often get misread.
First, know which table applies to you
Two honest limits before the numbers. First, we did not find a manufacturer code table published per display model the way some display makers publish one. The list below is compiled from multiple independent sources that agree with each other, so treat it as a strong working reference rather than a document from the factory. If a printed manual came with your bike, that manual wins.
Second, and more important: some Bafang systems communicate over a closed CAN bus. On those bikes the diagnostics are locked and aftermarket parts generally cannot substitute in. The codes below apply to the open two-digit systems, not to the closed CAN platforms.
The codes
04 and 05 — throttle. The throttle is not returning to rest, or its signal is out of range. Unplug the throttle and try the bike. If the code clears, the throttle is the part.
06 — battery voltage low. Charge it, then measure at the discharge port rather than trusting the gauge.
07 — overvoltage protection. Check actual pack voltage, then reseat the connection and restart.
08 — motor hall signal. Reseat the motor connector and inspect it for moisture and corrosion. This is a connector problem far more often than a motor problem.
09 — motor phase wires. Inspect the main harness and any extension for a pinched or crushed section.
10 — over-temperature protection. Power down and let it cool.
11 and 12 — motor temperature sensor, and controller current sensor. Restart and retest. If the code returns consistently, it is a part.
21 — speed sensor. Check the spoke magnet position and its gap to the sensor.
25 — torque signal. Check the connection first, then read live values with the manufacturer service tool, then look at firmware, and only then replace the torque sensor.
30 — display to controller communication. Reseat the data cable and inspect where it passes the head tube, which is where cables get pinched by steering.
42 — discharge voltage too low under load. Charge to capacity and retest. In cold weather, let the pack warm up before judging it.
The two codes that break the pattern
Across a lot of other brands, 21, 25 and 30 belong to a shared code family with consistent meanings. Bafang is the standard counterexample for two of them: here 21 is a speed sensor fault and 25 is a torque signal error — different components from what those same numbers mean elsewhere. If you arrived at this page after reading a general code table, this is the detail that matters most. We wrote about that shared family and its exceptions in this guide to the 21 through 30 code family.
One place the sources disagree
Code 10 is worth flagging. Most sources describe it as motor over-temperature; at least one describes it as controller over-temperature. We have not been able to confirm which is correct across every system, so we are not going to pick one for you. The immediate action is the same either way — stop and let it cool — but do not buy a temperature sensor on the strength of this code alone.
Do the free checks first
Most of the codes above point at a connector, a magnet gap, or a pinched cable before they point at a component. Reseat connections, look for corrosion and crush damage, and retest. For a communication fault specifically, the usual order is display first, then controller, then harness — the display is the cheapest of the three to swap.
If you are chasing a phase or hall code, the wire colours and what they carry are covered in our guide to controller wiring colours.
When it really is a part
Once the free checks are done and the code stays, the diagnosis is usually narrowed to the sensor, the controller, or the display. Confirm the system you have before ordering, because the same number means different things on different platforms — as the APT display code table shows, a code numbered 07 is a hall fault there, while on this table 07 is an overvoltage condition. The number alone is never the whole answer.