Skip to main content
zerologszerologs
Back to Learn Hub
Symptom-first diagnostics

Reading your logs, starting from the symptom

20 symptoms a Zero owner actually reports, each traced from the log line to a conclusion: the message or channel that carries it, the one measurement that discriminates, what it means and what to do — with every published figure located by exact phrase in the indexed text of 46 official Zero manuals and cited to a document and a page confirmed by opening the PDF at it (11 distinct documents are cited). The uncomfortable half of the answer is stated as plainly as the rest: 5 of these 20 are invisible to every Zero log ever written, and a page that lets you go on searching a log for a wheel bearing is wasting your evening.

Last updated: August 8, 2026
~24 min read20 symptoms · 38 manual citations · 337 log files scanned

Your manual is the authority, and a dealer is the authority on diagnosis. Every published figure here is quoted from Zero’s own manuals with the document and page named, but this page cannot see your motorcycle. A Zero pack sits above 100 V and its terminals stay live with the bike switched off: nothing below authorises work on the high-voltage system, and an isolation fault in particular is a symptom to report, not one to chase with a multimeter.

TL;DR

  • Start from the symptom, then ask what the log can see. A Zero log is an excellent witness to the pack, the charger, the controller and the interlocks, and a complete blank on the belt, the bearings, the brakes, the 12 V rail and the dash. Of the 20 symptoms indexed below, 10 can be settled from the log, 5 are narrowed by it but need a physical measurement to close, and 5 have no log signal of any kind.
  • Cell balance is the single most useful battery number, and the bands on this page are the ones the product applies rather than a rule of thumb. The diagnosis engine treats 40 mV and below and 41–80 mV as normal and raises nothing; 81–120 mV is moderate cell imbalance — monitor over time; above 120 mV is significant cell imbalance — consider a balancing charge. Read the field the BMS reports as the spread itself, not the difference of two other readings, and judge on the average across a log rather than on the worst line.
  • The isolation message is the most valuable line in a Zero log and the one with no specification behind it. It appears in 94 of the 337 log files scanned for this page — 28% — and reports a resistance and a cell index. Not one of the 46 indexed Zero manuals publishes an isolation- or insulation-resistance figure, or discusses isolation and ohms on the same page, so the only calibration available is the distribution of real readings: median 43,656 Ω across 273 distinct non-zero readings, with 49 below 10 kΩ and only 7 below 1 kΩ.
  • The worked example follows one of those readings for four years. On a single 2016 FXS with two modules, the second module reports a few hundred ohms on the same cell index in download after download — 140 Ω in 2021, 888 Ω and 727 Ω in 2022 and 2023, 110 Ω in four consecutive downloads from March 2025 to February 2026 — while the first module reads in the thousands to tens of thousands. Persistence on one index in one module is what separates a defect from weather, and it is not a trend: the number goes down, up and down again.
  • Temperature symptoms are mostly the bike obeying published limits. Zero blocks charging below 0 °C and above a pack temperature of 50 °C (OM-SRF-MY20.pdf p.97), tapers charge current above 43 °C ambient (OM-SDS-MY18-AF.pdf p.116), and allows riding well beyond both. So a hot bike that still rides and refuses to charge is normal rather than broken, and the cool-down Zero quotes is around 30 minutes or less (OM-SDS-MY17-English-AH.pdf p.66). The per-platform limits and the two ends the community temperature table gets wrong are set out on the thermal-limits page rather than repeated here.
  • One thermal figure riders quote at each other is not a specification at all, and it changes how you read two log channels. Zero publishes no motor or controller temperature threshold anywhere in the 46 indexed manuals: it names the states — Motor Temperature Warning Stage 1 and Stage 2 on Gen2 (OM-SDS-MY15-English.pdf p.110), Motor High Temperature and Controller High Temperature on Gen3 — and gives no degrees for any of them. So the motor and controller channels can only be read as a curve against your own earlier rides, and the figures in circulation are one owner’s reading of one 2016 SR’s CAN bus.
  • Cold-weather range loss is documented, temporary and large. Zero states up to a 30% reduction at -1 °C ambient against 27 °C (OM-SDS-MY15-English.pdf p.119), which is enough to convince an owner their pack has died. The log tells you which it is: compare Wh/km on a route you have ridden before at both temperatures, and compare charge energy per SOC point across a whole year rather than across a season.
  • When the log has nothing, the manual has a number. Every log-blind symptom here ends in a measurement Zero publishes: belt tension in hertz for your own platform — the S/DS and X figure and the SR/F figure are different bands and using the wrong one leaves a Gen3 belt loose enough to ratchet — brake pad and disc minimum thickness, and wheel bearings as a scheduled inspection. A symptom with no log evidence is not a symptom with no evidence.
  • One piece of archive advice on this subject is dangerous and is corrected in place below rather than quietly dropped. The community page on charging faults recommends defeating the charger’s earth connection with a cheater plug or pliers to stop a GFCI tripping. Zero’s manuals say the opposite in two places, and the trip is a symptom to diagnose, not a nuisance to disable.

Start from the symptom, then ask what the log can see

Most log guides are organised by field: here is state of charge, here is cell voltage, here is temperature, go and look at them. That is a reference, and it is useless at the moment you need it, because you do not arrive with a field. You arrive with a symptom — the bike cut out in the rain, it will not charge, something clicks when you turn left — and one specific question: what does my own log say about this?

So the order on this page is fixed and it is the order a workshop uses. Name the symptom precisely. Establish whether any log channel observes it at all. Find the evidence if it does. Take the one measurement that separates the competing explanations. Only then decide what it means, and what to do.

The second step is the one everybody skips, and it is where the time goes. A Zero log is written by the Main Bike Board and the Battery Management System, and it records what those two boards can sense. They sense the high-voltage pack thoroughly, the controller and charger well, and the interlocks exactly. They do not sense sound, vibration, brake pressure, pad thickness, bearing play, tyre pressure or the state of the 12 V lighting circuit. No amount of scrolling will find a wheel bearing in a log, and knowing that in the first minute is worth more than any single field on this page.

The third thing worth saying before any numbers: change one thing at a time, and prefer a test that can come out either way. If you suspect the accessory charge port, unplug what is attached to it and re-download after a week — that is a test with a falsifiable expectation. Applying dielectric grease everywhere, fitting a new charger and changing the belt in the same weekend tells you nothing about any of them.

  1. 1Write the symptom down in one sentence, with the conditions attached: what you did, what happened, in what weather, at what state of charge.
  2. 2Look it up in the index below and read the observability column first. It tells you whether the log is a witness, a narrowing tool, or irrelevant.
  3. 3Pull the evidence the row names — the message text, or the channel over the right window. Note the numbers, not the impression.
  4. 4Take the discriminating measurement. Some are in the log; some need a wrench, a voltmeter or a tension gauge, and the row says which.
  5. 5Decide, act, and then re-download the log. A fix you cannot see in the next log is a fix you have not confirmed.

Which generation writes which log

Gen1 and Gen2 bikes — S, SR, DS, DSR, FX, FXS — write MBB and BMS logs of binary records: a message id plus its arguments, which the parser renders into the English strings quoted on this page. Gen3 bikes on the Cypher III platform — SR/F, SR/S, DSR/X — write a ring buffer instead, so the same event carries the same meaning and looks nothing like the same line. The one surprise, if you assume the older format is the readable one, is that it is the Gen3 ring buffer whose event records hold real firmware strings, and no Gen2 record does. /learn/log-anatomy publishes both with a per-line badge and the counts behind that claim. Error codes differ between the two as well; the dash-code numbers quoted here always name their generation.

What a Zero log records, and what it is blind to

Every symptom in the index below resolves to one of three answers, and it is worth seeing them laid out before the detail. Either a channel or a message carries the symptom, in which case the log settles it; or the log narrows the field without closing it; or nothing in the log observes it and the honest answer is to put the log down.

The channels a decoded Zero log actually holds are these: state of charge, pack voltage, battery current and power, four temperatures (battery, motor, controller, ambient), speed, odometer and trip distance, motor RPM, the highest and lowest cell voltage and the spread between them, charging state, fault codes with their text, and on Gen3 additionally the operational state and the charge and discharge power limits the pack is publishing. That is a rich picture of the electrical drivetrain and nothing at all about the chassis.

The blind spots are not oversights; they are the absence of a sensor. There is no microphone, no accelerometer feeding the log on a Gen2 bike, no brake pressure sensor, no pad-wear sensor, no bearing sensor, no tyre-pressure sensor, and no measurement of the 12 V rail. When an owner reports that the lights all died but the bike still rode, there is genuinely nothing in a Gen2 log to find: the DC-DC converter that feeds those lights does not report to the log at all.

Where a symptom can be settledLeft: the log is a witness. Right: no sensor reports, so the answer is a measurement at the bike.OBSERVED IN THE LOGNOT OBSERVED ANYWHEREHigh-voltage packsoc · voltage · current · powerIndividual cell groupscell min / max / spreadPack thermal statebattery_temp_cMotor and controllermotor_temp_c · controller_temp_c · rpmChargingis_charging · charge_cycles · charge_limit_kwRider interlockskickstand · run/stop · throttleChassis isolationohms + cell index, as message textFirmware healthhard fault · watchdog · self-testDrive beltno tension, tracking or wear channelWheel and steering bearingsno sensor of any kindBrakesno pressure, no pad thicknessTyresno pressure, no tread12 V lighting circuitDC-DC converter does not reportInstrument clusterflicker is not an eventSound and vibrationno microphone, no accelerometerSuspensionno travel or damping channelChannel inventory from the stored log-entry schema. Speed, odometer, throttle and RPM are Gen1/Gen2 only;bike state and the charge/discharge power limits are Gen3 only.
What a Zero log observes, and what it does not. Channel names on the left are the fields a decoded log entry actually carries. The right-hand column is not a list of things Zero forgot to log: it is a list of systems where no sensor reports to the Main Bike Board or the Battery Management System, which is why a symptom there can never be settled at a screen.
The channels a decoded log entry carries, and what each one can settle
ChannelUnitGenerationWhat it settles
State of charge%allRange complaints, estimator jumps, charge sessions that stop short
Pack voltageVallWhether an SOC change reflects energy or a re-estimate
Battery current / powerA / kWallRiding load, regen, charge rate, whether a session was a real charge
Battery temperature°CallRefusal to charge, cold range loss, thermal limits
Motor / controller temperature°CallPower reduction after hard riding — against your own baseline only
Ambient temperature°CallWhether a pack temperature is weather or self-heating
Speed / odometer / tripkm/h, kmGen1, Gen2Ride reconstruction; absent from the Gen3 ring buffer
Motor RPMrpmGen1, Gen2Whether a cutout came with the motor turning
Cell voltage min / max / spreadVallCell balance, deep discharge, why a charge stopped
Charging stateflagallWhether the bike thought it was charging
Fault code and its textcode + textallEverything in the error catalog
Bike stateRUN / CHRG / HIB …Gen3What the bike thought it was doing at that instant
Charge and discharge power limitskWGen3Whether a power drop was the pack derating by design

Field inventory taken from the log-entry schema this site stores, so it is what a report on this site can show you — not everything the boards internally know. A blank channel on your own report can mean the sensor was silent, the generation does not carry it, or the decoder does not read it yet.

An empty channel is not a zero reading

On a Gen3 bike most log records are written while the bike is asleep, and the electrical fields in those records are empty rather than zero. Reading them as zeros produces a chart full of dropouts and a diagnosis of a pack that keeps disconnecting. If a channel is blank across a whole state, suspect the state before you suspect the hardware.

The five checks worth running on every log

Before any symptom, there are five things worth reading on any log you download, because together they tell you whether the pack is healthy and whether anything has changed. These are the checks the diagnosis engine on this site runs itself, and the numbers below are read back out of that engine rather than remembered, so the page and the product cannot disagree.

1. Cell balance — the spread, not the difference

Cell balance is the most informative single number about a lithium pack, and the most commonly miscalculated. The BMS reports the spread itself: the highest cell minus the lowest cell, as its own field. It is not the difference between the pack reading and the open-circuit reading — subtract those two and you get a number several times too large, and frighten yourself about a perfectly healthy pack.

Judge on the average across a log rather than on the worst line, and on the trend across several charges rather than on any single log. Momentary spikes under hard acceleration and at very low state of charge are largely normal: the engine’s own note on a peak above 200 mV is that spikes can be normal under load.

The balancing mechanism matters for what you do next. The BMS balances at the top of a charge, so a pack that is never charged to full is never given the chance to balance. Zero’s own instruction after storage is to charge for at least 24 hours to restore optimal cell balance, and that is the right first move for a wide spread too (OM-XMX-MY19-04.pdf p.103).

The cell-balance bands this site’s diagnosis engine applies
Average spreadVerdictWhat the engine saysWhat to do
40 mV and belowNothing raisedexcellent/normalNothing. Cells are well matched.
41–80 mVNothing raisedwithin normal rangeNothing. A reading here is inside the normal band, not on the edge of one.
81–120 mVRaises a findingmoderate cell imbalance — monitor over timeRun a full 100% charge and re-check on the next log. Monitor the trend.
above 120 mVRaises a findingsignificant cell imbalance — consider a balancing chargeFull balancing charge, then re-check. If it does not improve across several full charges, ask a dealer to look at it.

Generated by sweeping app/services/diagnosis_rules.evaluate() one millivolt at a time and recording where its verdict changes, so these are the thresholds the product uses, not a restatement of them. Both healthy bands raise nothing on your report.

2. Temperature — compare against ambient, and against yourself

Temperature is only meaningful next to something else. A pack at 45 °C on a hot day after a fast charge is unremarkable; the same reading in a cold garage overnight is not. The three comparisons worth making are pack against ambient, motor against controller, and today against your own earlier rides on the same route.

A motor that warms quickly and then holds steady is doing what a motor does. A controller running hotter than the motor is worth a look at airflow around it. A pack more than about ten degrees above ambient while the bike is standing still is genuinely odd, because a resting pack has nothing to heat it.

The engine’s own bands for the hottest battery reading in a log: 48 °C and below — nothing raised; 49–55 °C — normal in summer/fast charging; above 55 °C — high battery temperature — avoid sustained high temps. The concern threshold, 55 °C, sits well below Zero’s own operating ceiling of 60 °C, and deliberately so: the point of the check is to notice a pack drifting warm across a season, not to duplicate a protection the BMS already enforces at the limit.

3. State of charge — does it behave like energy?

State of charge should fall smoothly as you ride, rise steadily as you charge, tick up a little under regen, and move together with pack voltage. Anything else is either the estimator correcting itself or a real problem, and pack voltage is what tells the two apart.

The arithmetic worth knowing on a 28-cell-series pack: full is about 117 V, because 28 cells at roughly 4.2 V each is 117.6 V. The highest reading in our own corpus is 116.7 V. So a bike that reports 100% at a pack voltage well below that has either a genuinely reduced pack or an estimator that has drifted, and a second full charge normally settles which.

Lowest cell voltage is the field that explains power loss near empty. Below 2,900 mV the engine raises deep discharge; between there and 3,099 mV it notes that a low reading can happen at very low state of charge and raises nothing. The pack protects its weakest cell rather than its average, which is why power backs off before the gauge reads zero.

4. Errors — read them by family, not by line

A log with error lines in it is normal. The error catalog on this site groups raw messages into 34 families precisely because the same condition is written a dozen different ways across firmware versions, and because a count is only interpretable against a family’s own baseline. Cell-board read retries appear in 172 of the 337 files scanned for this page, and CAN framing errors in 215. Neither number means most Zeros are faulty; it means those two families are ordinary background.

Contrast that with the rare ones. Firmware hard faults appear in 2 files and the high-voltage interlock loop in 10. A family that is rare in the corpus and present in your log is worth reading carefully; a family that is everywhere is worth counting instead.

The four categories in the table below are the ones the catalog uses, and the action column is the catalog’s, not a paraphrase. Each family renders at its own anchor on the error catalog page, so a family name here is a link.

How often each message family turns up in the scanned corpus
FamilyHow it reads in the logFilesOccurrences
Chassis isolation eventChassis Isolation Event: N ohms to cell M94 of 337779
Cell voltage spread exceededMax allowed voltage difference / voltage difference is63 of 3376,067
Cell over-voltage protectionCOV fault24 of 3371,003
Cell-board read/CRC failurePL536 read attempts failed / CRC fault172 of 33711,293
Module would not connectModule did not connect / cannot connect module58 of 3371,428
Precharge / contactor sequencePrecharge decay / contactor closed86 of 3371,375
Charge state-machine faultState machine charge fault98 of 3371,338
CAN framing errorACK / BIT0 / BIT1 / STUFF / FORM error215 of 33711,340
Sevcon controller eventSevcon cutout / restart (Gen2 only)128 of 33742,508
Kickstand interlockKickstand / side stand48 of 3373,237
Throttle interlock or rangeThrottle disable / out of range55 of 3373,296
HV interlock loopHVIL open10 of 3371,003
Watchdog resetWDT timeout / watchdog10 of 33711
Firmware hard faultHard fault exception2 of 3374

Byte-level scan for the literal message text across 337 real log files. "Files" is how many downloaded logs contain the text at all, and it is the meaningful column. "Occurrences" is NOT an event count: a Zero log download is cumulative, so one event reappears in every later download from the same bike, and a bike whose owner downloads often is over-represented. The corpus is also overwhelmingly Gen2 — 23 of the 24 identifiable vehicles, against 1 Gen3 — so nothing in this table is evidence about how often anything happens on an SR/F, SR/S or DSR/X.

5. Riding pattern — read amps as power, and compare with yourself

Battery current in isolation says very little, because the same current is a different fraction of every bike’s capability. At a pack voltage around 105 V, 80 A is about 8 kW: near the continuous rating of an FX, and an unremarkable cruise on a 40 kW SR/F. Across four real logs — a 2016 FXS, a 2023 FXE, a 2023 S and a 2022 DSR — the 95th percentile of battery current sat between 38 and 68 A while peaks reached 297 to 361 A on every one of them. Peaks that look alarming are normal; sustained current is what raises temperatures and costs range.

Efficiency is the number to watch, and it is best read against your own history. Derived from Zero’s own rated ranges the whole line-up sits between 32 and 55 Wh/km in the city and 59 and 104 Wh/km on the highway, so a figure in the forties is normal rather than a symptom. Expect real rides to cost a little more than the rated figure. What matters is a change against your own baseline on a route you have ridden before.

Regen shows up as sustained negative current, and lots of it means hills or an aggressive regen setting rather than a fault. One caveat that catches people: regen cannot push energy into a full pack, so a downhill start from 100% produces a pulsing engagement rather than smooth braking. That is protection, not a failing regen system.

The symptom index

20 symptoms, split by whether the log can settle them. Each row names the evidence to pull, the one measurement that discriminates between the competing explanations, what the answer means and what to do about it. Where a row cites a figure, the figure is Zero’s and the section further down this page gives the manual and the page it came from.

The split is the point. A reader who knows in the first minute that their symptom is in the second table has been given the most valuable thing this page has: permission to stop reading a log and go and measure something.

Symptoms the log can settle or narrow (15 of 20)
SymptomWhat you noticeLog → measure → means → do
Cutout in the wetPower cuts out while riding, in rain or shortly after a wash (Electrical)In the log: Chassis Isolation Event lines carrying a resistance and a cell index; on the report, the Chassis / HV isolation family · dash codes Gen2 20 / 28 / 29 · Gen3 43 (lights the CEL). Measure: The ohms figure, which cell index it names, and whether it recurs in the next download after the bike has dried. Means: Reduced insulation between the high-voltage system and the chassis. Weather-driven if it clears when dry; a defect if the same cell index keeps reporting a few hundred ohms. Do: Dry the accessory charge port and its boot, dielectric-grease the connectors it names, re-download after a dry week. Persistent low readings are a dealer job.
Hot, will not chargeWill not start charging after a fast ride or on a hot day (Thermal)In the log: Battery temperature at the moment you plugged in, and a charging session that never appears in the timeline. Measure: Pack temperature against 50 °C, not ambient temperature. Means: By design. Zero blocks charging above a pack temperature of 50 °C, and a pack can be over it with cool air around the bike. Do: Wait. Zero puts the cool-down at around 30 minutes or less.
Charge stops shortCharge stops before 100%, or the last few percent never arrive (Charging)In the log: Charge state-machine fault lines, cell over-voltage events, and the highest cell voltage at the moment the charge stopped. Measure: Cell spread and highest cell at the cut. A pack that stops with one cell at its ceiling and a wide spread is imbalanced, not short of capacity. Means: Zero documents the BMS cutting the charge when one or more cells reach maximum voltage. That is protection working; the question is why one cell got there first. Do: Leave it on the charger for a full balancing charge — Zero specifies at least 24 hours to restore optimal cell balance — then re-check the spread.
FX wall cord deadFX or FXS charges from an external charger but not from its own wall cord (Charging, log narrows only)In the log: No on-board charging session at all in the log, while quick-charge sessions are present and normal. Measure: The on-board Charge Fuse behind the side inspection panel. Means: The X platform has two charge fuses, not one: an in-line accessory-charge fuse that is dealer-only, and a separate cartridge for the on-board charger. Do: The on-board charge fuse is the user-replaceable one. The in-line accessory fuse is explicitly a dealer item in the manual.
Winter range lossRange fell sharply and it is cold (Thermal)In the log: Minimum battery temperature per ride, and Wh/km for the same route in warm and cold weather. Measure: Your own Wh/km on a route you have ridden before, at both temperatures. Means: Zero states up to a 30% temporary range reduction at -1 °C ambient against 27 °C. It is reversible and it is not degradation. Do: Nothing to fix. Do not confuse it with capacity loss, which shows up as a lower charge-energy-per-SOC-point across a whole year.
Power fades when hotPower and top speed drop after hard riding (Thermal, log narrows only)In the log: Motor and controller temperature channels, and on Gen3 the discharge power limit the pack is publishing · dash codes Gen2 2 / 3 motor, 4 / 5 controller · Gen3 41 motor, 57 controller. Measure: Your own temperature curve on a hard ride against a gentle one. There is no published threshold to compare against. Means: The controller reduces phase current as the motor heats. Zero names the states — Motor Temperature Warning Stage 1 and Stage 2 on Gen2, Motor High Temperature on Gen3 — and publishes no temperature for either. Do: Ride gently until the temperatures fall. Treat any circulating threshold figure as one owner’s CAN-bus reading, because that is what it is.
Power fades near emptyPower drops away at low state of charge (Battery / BMS)In the log: Lowest cell voltage at the moment power was cut, alongside SOC. Measure: Lowest cell voltage. Below 2900 mV the diagnosis engine raises deep discharge. Means: The pack protects its weakest cell, not its average. A bike with fewer modules hits this earlier because each cell group carries more of the load. Do: Charge immediately, and stop planning rides that end there. If the cut arrives at a much higher SOC than it used to, that is a real change worth a dealer.
Dash flickerDash flickers or shows the wrong indicator lamps in the wet (Electrical, log narrows only)In the log: Usually nothing. Look for a CAN framing flood or a CIB communication timeout in the same ride before treating it as cosmetic. Measure: CAN error count for that ride against a dry one. Thousands in a single ride is not noise. Means: A wet Gen2 dash is a known and harmless behaviour that clears on drying. A CAN flood in the same window is a different fault that happens to look the same. Do: Let it dry. Dielectric grease on the dash connectors and the enclosure seal. Never pressure-wash the dash.
One click, not twoOne contactor click at key-on instead of two, on a bike with two packs (Battery / BMS)In the log: Cannot-connect-module lines from the MBB, and a log from one board where you expect two · dash codes Gen2 56 Monolith Not Connected · 57 Module Did Not Connect · Gen3 33 / 34. Measure: Range and capacity on the dash against what the bike normally shows. A missing pack is a large, obvious shortfall. Means: One module never joined the power bus. Every module has its own contactor, so two modules mean two clicks. Do: Dealer. Do not keep riding on the assumption that a pack that did not connect will reconnect.
Will not moveBike will not move and the dash shows no obvious fault (Controls)In the log: Kickstand, run/stop and throttle interlock messages — the log records which one held the bike · dash codes Gen2 39 throttle · 44 kill switch · 45 kickstand. Measure: Which interlock is named in the last few seconds before you tried to ride. Means: An interlock, not a fault. Zero gives all three their own dash codes and all three have a rider-side fix. Do: Raise the kickstand, set the run/stop switch to run, release the throttle and key off and on.
SOC jump at key-onState of charge jumps when the bike is keyed on (Battery / BMS)In the log: A discontinuity in SOC across a gap with no charging session in it, and the cell voltages either side of the gap. Measure: Whether pack voltage moved with the SOC. If SOC jumped and voltage did not, the estimator moved, not the energy. Means: The BMS re-estimates SOC from voltage and coulomb counting. A jump after a long rest is the estimator correcting itself. Do: A single jump is not a fault. Repeated jumps of the same size, or SOC that no longer tracks voltage, is worth a dealer.
CAN error floodThe report lists thousands of CAN errors (Electrical)In the log: ACK, BIT0, BIT1, STUFF and FORM error lines. Measure: Count per ride, and whether the count collapses when an accessory is unplugged. Means: Small counts are ordinary bus noise, especially at power-up. A flood concentrated in one ride points at a loose connector or a failing node. Do: Check accessory wiring and connector seating first. It is the cheapest hypothesis and the commonest cause.
Spontaneous shutdownThe bike shut itself down and restarted for no visible reason (Electrical)In the log: Firmware hard fault, watchdog timer reset, critical error shutdown. Measure: Whether it happened once or repeats, and what the last message before it was. Means: A board reset itself. Genuinely rare: hard faults appear in 2 of the 337 log files scanned for this page. Do: Record the date and hand the log to a dealer. There is nothing an owner can do with this one.
GFCI trips chargingThe breaker or GFCI outlet trips while charging (Charging, log narrows only)In the log: A charging session that ends early and repeatedly, with no BMS fault to explain it. Measure: Whether it also trips on a different circuit with nothing else on it. Means: The on-board charger can upset a residual-current device, especially sharing a circuit with another load. Zero expects this to happen. Do: Move to a dedicated grounded circuit. Zero asks you to check SOC every 30 days precisely because a trip can go unnoticed.
Rear vibrationVibration from the rear after a tyre change (Chassis, log narrows only)In the log: No vibration channel. The log can rule the motor and controller in or out through their own fault messages. Measure: Wheel balance first, then play at the wheel and swingarm, then belt alignment, then front sprocket and motor mount play. Means: Most often the wheel was not rebalanced. The alternatives are all mechanical and all measurable. Do: Work down that list in that order, changing one thing at a time. Whoever fitted the tyre should have balanced it.

"Log narrows only" means the log rules explanations in or out but cannot close the question — the discriminating measurement is physical. Dash codes name their generation because the numbering is different: Gen2 codes come from the S/DS and X platform troubleshooting tables, Gen3 codes from the Cypher III fault table. The chooser further down splits each row back into its five fields if you would rather read one symptom at a time.

Symptoms no Zero log observes (5 of 20)
SymptomWhat you noticeWhy the log is silent → measure → means → do
All lights deadBike rides normally but headlight, indicators and brake light are all dead (Electrical)Why the log is silent: Nothing on Gen2: no Zero log channel carries 12 V rail voltage or DC-DC converter state. Gen3 records a 12 V fault as a dash code. Measure instead: 12–14 V at the DC-DC converter output, with the bike keyed on. Means: The whole 12 V circuit is down — the DC-DC converter, its HV input fuse, its enable signal from the MBB, or a broken ground in the 12 V bundle. Do: Do not go looking for this in the log. It is a voltmeter job, and the input side is high voltage.
Wet drive groanA groan, buzz or howl from the drive in the wet that goes away when dry (Drive)Why the log is silent: Nothing. No Zero log carries an acoustic or vibration channel. Measure instead: Whether it survives a dry day. If it does, it is not this and you should measure belt tension. Means: A wet belt and motor resonate. It is a well-documented owner observation with no known damage mechanism. Do: Ride it dry. If you lubricate anything near the belt, nothing with petroleum distillates — they attack the belt.
Belt noise, dryBelt noise, rattle or a rhythmic slipping under torque, dry (Drive)Why the log is silent: Nothing directly. A ring-buffer bike may show odometer movement with no ride session, which is a decode artefact and not a drive fault. Measure instead: Belt tension in hertz for your platform, belt tracking on the rear sprocket, and the belt itself for exposed tensile cords and outside edge beveling. Means: Zero names the mechanism: too little tension lets the belt ratchet over the rear sprocket, which damages the tensile cords. Beveling on the belt edge means the sprockets are misaligned. Do: Tension to your own model year’s figure — the platforms differ — and re-check tracking. Motor mount torque is part of this.
Click or grind, corneringClick or snap when cornering, or grinding that changes with load (Chassis)Why the log is silent: Nothing. Wheel and steering-head bearings are invisible to every log. Measure instead: Play at the wheel against the swingarm, play at the swingarm against the frame, and whether the noise disappears with the wheel off the ground. Means: Bearings. Zero lists them as a maintenance-schedule inspection: check for smooth operation, replace if necessary. Do: Do not ride on a bearing you can feel. This is the one item on this page where the failure mode is sudden.
Brake squealBrake squeal, or a light grind you can hear while rolling (Chassis)Why the log is silent: Nothing. Brake pressure and pad wear are not logged. Measure instead: Pad thickness and disc thickness, both of which Zero specifies. Means: Squeal is resonance between pad and caliper and does not reduce braking. A light grind while rolling is pad-to-rotor contact and is normal. Do: Measure before you treat it as cosmetic. Below the published minimum it is not noise, it is wear.

Every row here ends in a number Zero publishes, and the section "When the log has nothing, the manual has a number" gives each of those figures with its manual and page. The absence of a log signal is not the absence of a specification — it is the difference between a diagnosis you do at a screen and one you do at the bike.

Describe the symptom the way the bike does

When you talk to a dealer, use the words the dash and the log use: the code number, the message text, the state of charge and the temperature at the time. "It cut out" starts a conversation; "it cut out at 63% in heavy rain and the log shows a chassis isolation event of a few hundred ohms on the same cell index three downloads running" starts a repair.

Worked example: one isolation reading, followed for four years

This is the section the old version of this page never had: a single symptom taken from a log line to a conclusion, with the measurements that got it there. The symptom is the commonest weather-linked complaint on an electric motorcycle — power cuts out in the rain — and the evidence is the line a Zero BMS writes when it measures reduced insulation to the chassis.

The message is a text line carrying two numbers: a resistance in ohms and a cell index. It appears in 94 of the 337 log files scanned for this page (28%), which is the first useful fact — an isolation event is common, not exotic, and finding one does not by itself mean anything is wrong.

The lines below are real message text from one bike’s BMS log, in file order, with the surrounding messages left in place so that the context is honest. The timestamps and the binary framing are omitted because they are not what this example turns on; nothing in the text has been edited.

Real BMS message text around a very low isolation reading, in file order
Chassis Isolation Event: 11 ohms to cell 0
Chassis Isolation Event: 5 ohms to cell 0
Chassis Isolation Event: 0 ohms to cell 0
DEBUG: CAN Receiving Syncs
DEBUG: CAN Link Is Down
DEBUG: Entered Idle State
SOC:5147,25720,5741,28700,80,79,80,0
Voltage Across Contactor: 40700mV (Okay)
HDCR = 0x000C204E,  HDSTAT = 0x00000000
Successfully Read Settings in 1 attempt(s)

Extracted verbatim from a 2019-module BMS log in the corpus. The readings of 0, 5 and 11 ohms all name cell index 0, and that is the first thing to be suspicious of rather than alarmed by: a genuine 5-ohm path from the high-voltage bus to the chassis would be a dead short, and the same file goes on to report a healthy contactor voltage and a normal idle state.

Step one: the number has no specification behind it

The instinct is to look up what resistance is acceptable. There is nothing to look up. Across the 46 official Zero manuals indexed for this site — owner and service manuals, model years 2014 to 2026 — the phrase "isolation resistance" appears zero times, "insulation resistance" zero times, and no page mentions isolation and ohms together at all. Zero publishes the fault states (Gen2 dash code 20 — BMS Low Isolation, Gen2 dash code 28 — BMS Isolation Fault, Gen2 dash code 29 — BMS Isolation Danger, all three in print since at least OM-SDS-MY15-English.pdf p.110) and no threshold for any of them.

That absence is checked rather than assumed: the generator behind this page re-runs those three searches every time it runs and refuses to emit the claim if any of them starts matching. It is also the entire justification for what follows. With no specification, the only calibration available is what real bikes report.

Step two: calibrate against real readings

Parsing every isolation line in the corpus and deduplicating to distinct (resistance, cell index) values gives 273 non-zero readings. The median is 43,656 Ω. The tenth percentile is 5,543 Ω. 47 readings sit at or above 99 kΩ, which is where the field appears to stop counting — the highest value anywhere in the corpus is 99,929 Ω — so the top of the range should be read as "high" rather than as a measurement.

The tail is what matters diagnostically. Only 49 of the 273 readings are below 10 kΩ and only 7 are below 1 kΩ. So a reading in the tens of thousands is company for most of the corpus; a reading in the hundreds is company for almost nobody, and that is the strongest statement this data supports.

The cell index is informative too, with a caveat. Readings concentrate on the first four indexes — 207 of 273, 76% — and the highest index observed anywhere is 17 on a 28-group series, so the field is plainly an index into the series rather than a cell voltage. Index 0 is the one to distrust: it carries both of the two lowest readings in the whole corpus and six readings above 97 kΩ, which is not the behaviour of a real measurement on a real cell group. We tested whether index-0 readings cluster at the start of a file or next to the BMS start-up messages and they do not, so the honest position is that index 0 is unexplained rather than proven to be a placeholder.

Chassis isolation readings, 337 real log files273 distinct non-zero readings · median 43,656 Ω · lowest 5 Ω · highest 99,929 ΩNo Zero manual publishes a specification for this number. The distribution is the only calibration there is.21–100 Ω5100 Ω–1 kΩ141–5 kΩ285–10 kΩ5210–25 kΩ5925–50 kΩ6650–99 kΩ47≥ 99 kΩ< 1 kΩ: 7 readings, two motorcycles1–10 kΩ: 42 readings> 10 kΩ: 224, incl. 47 at the ceilingDeduplicated to distinct (resistance, cell index) values. A Zero log download is cumulative, socounting occurrences would count one event once per download rather than once.Cell index concentrates on the first four groups (207 of 273); index 0 is unexplained.
Where real chassis-isolation readings fall: 273 distinct non-zero (resistance, cell index) values from 94 of 337 log files, bucketed by decade because the readings span four of them. Every bar is a counted bucket emitted by the generator, which asserts that the eight sum back to 273 — none of them is interpolated from a percentile. No threshold line is drawn because Zero publishes no isolation- or insulation-resistance figure in any of its 46 indexed manuals, an absence re-checked on every run of the generator.

Step three: persistence separates a defect from the weather

Of the 7 sub-1-kΩ readings above zero, 5 sit on cell index 2 and all 5 come from one motorcycle: a 2016 FXS with two modules, whose second module reports a few hundred ohms on that index in download after download. 140 Ω appears in the downloads of November and December 2021 and January to March 2022. 888 Ω appears in April 2022, 727 Ω in June 2023, 306 Ω on the other module in October 2023, and 110 Ω in four consecutive downloads from March 2025 to February 2026. Over the same period the first module reads in the thousands to the tens of thousands.

The other 2 — 5 Ω and 11 Ω, the two lowest readings in the entire corpus — are on cell index 0 and come from a different bike, which is the second reason to distrust index 0. A genuine 5-ohm path from a 100 V bus to the chassis is a dead short, and the file that reports it goes on to report a healthy contactor voltage and a normal idle state. Do not read them as the worst two isolation faults in the corpus; read them as the field misbehaving.

Two things follow from the index-2 sequence, and they are the conclusion of the example. First, this is not weather. A moisture path that dries out does not report the same magnitude on the same index across four years of separate downloads, the last four of them spanning eleven months; something in that module has a persistent low-resistance path to the chassis. Second, it is not a degradation trend either — 140, then 888, then 727, then 110 goes down, up and down again — so anyone modelling it as a straight line to failure would be over-reading it.

The action that falls out is specific and it is not "clean the connectors". This is one module of two on a bike where each module has its own BMS and its own contactor, and the fault is localised to one of them. That is exactly the information a dealer needs and cannot get from the dash, which only ever showed a code. The rider-side steps — dry the accessory charge port, grease the vulnerable connectors, unplug anything attached to the port and re-test — are worth doing first because they are cheap and they are the common case, but a reading that survives them belongs to a workshop.

An isolation fault is a high-voltage symptom, not an inconvenience

Reduced isolation means the high-voltage system has a path towards the chassis you are sitting on. Zero’s Gen3 fault table sends code 43 straight to a dealer and lights the check-engine lamp, and some codes in that table put the bike into a permanent state of torque reduction until it is serviced. Nothing on this page authorises opening the pack or probing the high-voltage side: a Zero pack sits above 100 V, its terminals stay live with the bike off, and the service manual’s lockout procedure exists because of exactly that.

Thermal symptoms are usually the bike obeying a published limit

More thermal reports turn out to be documented behaviour than turn out to be faults, and the fastest way to tell is to compare the log against the limits Zero prints. Two of those limits answer most of the thermal symptoms in the index, so they are here; the full per-platform treatment — every operating range by model year, how derating actually behaves, and what the widely circulated community temperature table gets wrong at both ends — is its own page and is linked below.

Charging has the narrow window and it is the one riders meet: the pack will not charge below 0 °C or above 50 °C (OM-SRF-MY20.pdf p.97, in 21 of the indexed manuals). Riding is allowed much further, so the normal hot-day experience is a bike that still rides and refuses to charge. A pack can be over the charging limit internally with cool air around the bike, because what matters is pack temperature and not ambient — which is exactly why the log settles this symptom and a thermometer in the garage does not.

Between 43 °C ambient and the cut-off the charger tapers its current rather than stopping (OM-SDS-MY18-AF.pdf p.116), and that reads in a log as a session which takes far longer than usual at an unremarkable current — a pattern easily mistaken for a failing charger. Zero puts the wait for a pack too hot to charge at around 30 minutes or less (OM-SDS-MY17-English-AH.pdf p.66).

Cold is the other half. Zero states up to a 30% temporary range reduction at -1 °C ambient against 27 °C (OM-SDS-MY15-English.pdf p.119), which is more than enough to convince an owner their pack has died. The log distinguishes the two: a temporary cold loss shows as normal Wh/km again once the weather turns, while real capacity loss shows as a lower charge energy per state-of-charge point across a whole year.

No motor or controller temperature threshold is published anywhere

This matters for log reading specifically. Zero names the warning states and gives no degrees — Motor Temperature Warning Stage 1 and Stage 2 and the matching controller states on Gen2 (OM-SDS-MY15-English.pdf p.110), Motor High Temperature and Controller High Temperature on Gen3 — so there is no published number to compare your own motor or controller channel against. Read those two channels as a curve against your own earlier rides rather than against a threshold, and treat any circulating figure as one owner’s reading of one bike’s CAN bus, because that is its provenance.

The community temperature table is wrong at both ends

The archived limits table understates the cold restriction badly — it implies a floor of -30 °C, which is a cell storage figure rather than where a bike stops — and inverts the hot end, labelling 50–60 °C "operation prevented" when that band is inside the pack’s stated usable range. Both are set out against the manual pages on the thermal-limits page rather than repeated here: one correction stated once with its evidence is worth more than the same correction on two pages.

Charging symptoms, and the one piece of archive advice to ignore

Charging complaints split cleanly into four: it will not start, it stops short, it trips the house, or it takes far longer than it used to. The log distinguishes them, and three of the four have a documented explanation.

A charge that never starts is most often thermal — see the window above — and on an FX or FXS it has a second, cheaper explanation that the community reference misses entirely. The X platform carries two charge fuses, not one: an in-line accessory-charge fuse that the manual explicitly reserves to a dealer, and a separate cartridge for the on-board charger (OM-XMX-MY15-English.pdf p.102). An FX that quick-charges normally and will not take its own wall cord is pointing at the second one.

A charge that stops short is usually the BMS doing its job. Zero’s own charger documentation says as much: the BMS cuts the charge because one or more cells have reached maximum voltage (OM-SDS-MY15-English.pdf p.63). The log tells you whether that is imbalance or capacity: look at the highest cell voltage and the spread at the moment the charge stopped. One cell at its ceiling with a wide spread is imbalance, and the first move is a long balancing charge rather than a new charger.

A charge that takes much longer than it used to, at a normal current, is either the hot-weather taper or a genuine change in pack capacity — and those are distinguished by comparing charge energy per state-of-charge point across a year, not across a season. The battery-health page does that calculation properly.

Wrong in the community archive: never defeat the charger’s earth

The archived charging-symptoms page recommends, when a residual-current outlet trips repeatedly, charging "without a ground connection" — either with a cheater plug or by breaking the earth pin off the cable with pliers. Zero says the opposite twice. Every owner manual instructs you to always connect the charger to a grounded outlet (OM-SDS-MY15-English.pdf p.59, in 22 of the indexed manuals), and the Gen3 mobile charging adapter carries an explicit warning against extension cords, power strips, splitters and grounding adapters (21MY_SRF_OM_-_English-05.pdf p.103). Zero also anticipates the trip and tells you what to do about it: because breakers and residual-current outlets can fault, check the bike’s state of charge every 30 days (OM-XMX-MY19-04.pdf p.103). A device that keeps tripping is reporting a leakage path — the same physical condition the isolation message reports — and removing the protective earth removes the protection, not the fault. Move the bike to a dedicated grounded circuit and, if it still trips, treat it as a symptom.

What the archive got right about charge cords

Not everything in the archive needed correcting. Its advice on a charging cord that gets hot or sticks in the socket is sound and matches the manuals: the cause is a deteriorated connection generating its own heat, so clean the motorcycle-side contacts, avoid bending the blades, watch the strain relief for cracks, and pull the moulded plug rather than the cable. Zero adds the part the archive leaves vague: if an extension cord is used at all it should be a grounded three-wire 12 AWG cord no longer than 7.6 m, and a fuse that melts repeatedly is an inspection, not a bigger fuse.

The wet-weather cluster: four symptoms, one cause

Four of the symptoms in the index share a single mechanism, and grouping them is more useful than treating them separately: a dash that flickers or shows the wrong lamps, a groan from the drive, isolation events in the log, and a power cutout in heavy rain or shortly after a wash. All four are moisture reaching somewhere it is not welcome, and three of the four are harmless.

The one that is not harmless is the cutout, and its usual location is specific enough to check in a minute: the accessory charging port’s signal pins. The port ships with a rubber boot, the circuit behind it is low voltage and not dangerous to inspect, and moisture on those pins can make the bike open its contactors while you are riding. Leaving the boot in place when the port is not in use, and greasing the connectors under the seat with dielectric grease, is the whole of the rider-side fix.

Prevention has one instruction and Zero puts it plainly: avoid spraying water of great force around the dash unit, charge port, power pack and controller (OM-SRF-MY20.pdf p.139, in 13 of the indexed manuals). A pressure washer defeats weatherproofing that is designed for rain, and the symptoms in this section are the receipt.

The order to work through, if you have all four at once, is worth stating because it is not obvious. Dry the bike thoroughly and re-download the log: the flicker and the groan should be gone and the isolation readings should have moved. If the isolation readings have not moved, you have separated the weather-driven part from a persistent one, which is precisely the discrimination the worked example above turns on.

  • Dash flicker in the wet: harmless, clears on drying. Dielectric grease on the connectors and around the enclosure seal reduces it.
  • Groan or howl from the drive in the wet: harmless, clears on drying. Nothing with petroleum distillates near the belt.
  • Isolation events in the log after rain: expected, and the reading is what matters. Compare against the distribution in the worked example, not against a threshold that does not exist.
  • Power cutout in the wet: check the accessory charge port boot first, then dry and grease, then re-test. A cutout that survives a dry week is not weather.

Losing power while riding is a safety event even when the cause is trivial

The circuit behind the accessory port is low voltage and inspecting it is not dangerous. Losing propulsion in traffic is. Treat a cutout as urgent even while you are working through the cheap explanations, and do not plan on riding it while you wait for a dry week to see whether it recurs.

When the log has nothing, the manual has a number

5 of the 20 symptoms in the index have no log evidence at all, and they are the ones owners spend the longest looking for. Sounds and feel dominate the list because an electric motorcycle is quiet: the chassis, brakes and suspension noises that a combustion engine masks are simply audible on a Zero, and a new owner has no baseline for them.

The useful move is to stop looking for a log signal and start taking a measurement, because every one of these has a published figure behind it. The table below is those figures, gathered here as the endpoint of a symptom rather than as a specification reference — the belt has its own deep dive and so do the fastener torques, both linked at the end of this section.

That warning is the mechanism behind the commonest drive complaint. Zero states that a lack of belt tension leads to ratcheting — the belt’s teeth sliding over the rear sprocket’s — which makes an unpleasant sound and can damage the carbon tensile cords (OM-SDS-MY15-English.pdf p.90). So belt noise is not cosmetic, and the first measurement is tension rather than a new belt.

The belt’s own inspection criteria are published too and they are diagnostic rather than cosmetic: exposed tensile cords under the tooth face or cracking at the base of the teeth means replace it, and outside edge beveling means the sprockets are misaligned (OM-SDS-MY15-English.pdf p.90 and OM-SDS-MY15-English.pdf p.90). A belt wearing on one edge is telling you about alignment, which on some bikes means motor mount torque.

The measurement to take when the log is silent
SymptomMeasurementPublished figureManual and page
Belt noise or ratcheting under torque — S / DS / SR / DSR and FX / FXSBelt tension, 11 mm belt42.5 Hz to 73.6 HzOM-SDS-MY17-English-AH.pdf p.92
Belt noise or ratcheting under torque — SR/F and SR/SBelt tension, 11 mm belt62 Hz to 82 HzOM-SRF-MY20.pdf p.128
Belt wearing on one edge, or noise that tension does not fixBelt condition and trackingReplace on exposed tensile cords or cracking at the tooth base; edge beveling indicates misaligned sprocketsOM-SDS-MY15-English.pdf p.90
Brake squeal, grinding, or a soft leverBrake pad thicknessReplace at 1.35 mm or less, both pads togetherOM-SDS-MY15-English.pdf p.87
Brake noise with plenty of pad leftBrake disc thicknessMinimum 3.50 mmOM-SDS-MY16-English-06.pdf p.84
Click or snap when cornering, grinding that varies with loadWheel bearing conditionScheduled inspection: check bearings for smooth operation, replace if necessary21MY_SDS_OM_-_English-04.pdf p.75

Located by exact phrase in the manual named, at a PDF page confirmed by opening it. The two belt bands are the reason this table exists: they are different specifications for the same 11 mm belt and the widely copied community table folds them into one, which under-tensions every Cypher III bike that follows it.

Take the belt figure from your own model year, never from a table that spans platforms

The two belt bands above are different specifications for the same 11 mm belt, and the widely copied community table folds them into one — which under-tensions every Cypher III bike that follows it, to the point where the belt can ratchet. The drive-belt page sets that correction out in full, along with the pitch and tooth-count errors in the same archived table and a note that this site’s own extracted specification sheet has a year-dimension defect of its own on the DS. If a belt figure anywhere disagrees with your manual, your manual is right.

A measurement you can take in five minutes beats an hour in the log

Belt tension needs a tension gauge or the Gates Carbon Drive phone app; pad and disc thickness need a vernier; bearing play needs nothing but hands and the wheel off the ground. All three are faster than reading a log, and all three produce a number you can compare against a published figure — which is more than the log can offer for any symptom in this section.

When to stop diagnosing, and what to hand over

There is a point where more log reading stops adding information, and recognising it saves both your evening and the dealer’s diagnostic time. It arrives when the evidence is consistent, the cheap explanations are eliminated, and the next step needs the high-voltage side opened.

What makes a good handover is not a hunch. It is the message text, the code number and the conditions: date and time, state of charge, ambient and pack temperature, what you were doing, and whether the same evidence appears in more than one download. Two downloads that both show the same reading are worth more than ten that show it once, because the persistence is the finding.

One structural point about Zero logs is worth knowing before you download anything for a dealer. The log is a ring buffer of finite size, so old evidence ages out. If something has just happened, download the log now rather than at the weekend, and keep the file — a fault you can show across three dated downloads is a different conversation from a fault you can show once.

  • An isolation reading that stays low after the bike has been dry for a week, or that names the same cell index across several downloads.
  • An average cell spread above 80 mV that does not come back after several full charges, and especially one that is growing download to download.
  • A module that did not connect, on any bike with more than one — the missing capacity is obvious and riding on it is not a plan.
  • Any firmware hard fault, watchdog reset or critical-error shutdown. There is no owner-side action for these.
  • Any bearing you can feel, and any brake measurement below the published minimum. These are the failure modes on this page that are sudden rather than gradual.
  • Anything at all on the high-voltage side. A Zero pack sits above 100 V and its terminals stay live with the bike switched off.

Nothing on this page authorises high-voltage work

Zero’s service manuals put the lockout procedure ahead of every high-voltage task, and it requires certified insulated gloves, a high-voltage safety hook, physical barricades and the removal of specific high-voltage fuses before anything is touched. That procedure is there because the risk is electrocution. The community archive’s own de-energise page gets the threshold wrong by a factor of six, which is a good reason to take the sequence from the service manual and nowhere else.

Find your symptom

The same 20 rows as the tables above, filtered. Search in whatever words you have — the effect (“cuts out in rain”) or the suspected cause (“fuse”, “bearing”, “isolation”) — because the search covers every column and not just the headline.

Each row leads with its observability, and that is the answer worth having first. 5 of these 20 symptoms have no log signal at all, and knowing that in the first minute is what stops an evening being spent scrolling for a wheel bearing.

20 of 20 symptoms · 10 the log settles · 5 it narrows · 5 it cannot see

Every figure, and where it came from

Each row below is a claim this page makes and the exact phrase that was located in Zero’s own manual text to support it. The generator behind this page fails rather than builds if any phrase stops matching, so a citation here cannot outlive the sentence it supports. “Manuals” is how many of the 46 indexed documents contain the phrase; the file and page cite the oldest model-year-2015-or-later hit, which is why several figures are shown against a manual much older than your bike — they have been in print unchanged for a decade.

The page number is a second, separate check. The text index stores the first page of a chunk that can span five pages, which is not the page the passage is printed on, so the generator extracts each candidate page from the PDF and cites the one that actually carries the phrase. All 38 citations below were confirmed that way on the run that produced this page.

Manual citations behind every published figure on this page
ClaimPhrase located in the manualManualsCited file and page
Pack operating range, MY2019 onward and all Gen3: -20 C to 60 C, BMS turns off the power controller outside itshould not be used outside of the range of -4°F to 140°F (-20°C to 60°C)12 of 4623_DSRX_OM_-_English_-_88-09970-AK.pdf · p.87
Pack operating range, MY2014-MY2018 S/DS/SR/DSR and FX: -5 C to 60 Cshould not be used outside of the range of 23°F to 140°F (-5°C to 60°C)10 of 46OM-SDS-MY15-English.pdf · p.56
The pack will not charge below 0 C or above 50 Cwill not charge at temperatures below 32°F (0°C) or above 122°F (50°C)21 of 46OM-SRF-MY20.pdf · p.97
Above 43 C the charger reduces charge current, lengthening the chargeIn hot temperatures greater than 110°F (43°C), the charger reduces its charge current16 of 46OM-SDS-MY18-AF.pdf · p.116
A pack too hot to charge is usually ready again in about 30 minutesshould cool off and begin taking a charge in around24 of 46OM-SDS-MY17-English-AH.pdf · p.66
Up to 30% temporary range loss at -1 C ambient against 27 Creduction in range of up to 30%15 of 46OM-SDS-MY15-English.pdf · p.119
The -1 C ambient reference point for the 30% figureat 30°F (-1°C) ambient34 of 46OM-SDS-MY15-English.pdf · p.119
-30 C is the cell manufacturer's absolute lowest discharge temperature, quoted in the storage sectionabsolute lowest discharge temperature prescribed by the cell manufacturer8 of 4621MY_SDS_OM_-_English-04.pdf · p.113
Always connect the charger to a grounded outletAlways connect the charger to a GROUNDED outlet22 of 46OM-SDS-MY15-English.pdf · p.59
Do not use grounding adapters with the Gen3 mobile charging adaptergrounding adapters, surge protectors11 of 4621MY_SRF_OM_-_English-05.pdf · p.103
Zero expects breaker and GFCI trips and asks for a 30-day SOC check, not a defeated groundDue to possible faults to circuit breakers and/or GFCI outlets23 of 46OM-XMX-MY19-04.pdf · p.103
Avoid high-force water around the dash, charge port, pack and controllerAvoid spraying water of great force around the13 of 46OM-SRF-MY20.pdf · p.139
Lack of belt tension causes ratcheting over the rear sprocket, and damages the tensile cordsLack of belt tension can lead to35 of 46OM-SDS-MY15-English.pdf · p.90
Exposed tensile cords or cracking at the tooth base means replace the beltexposed tensile cords38 of 46OM-SDS-MY15-English.pdf · p.90
Outside edge beveling on the belt indicates misaligned sprocketsoutside edge beveling38 of 46OM-SDS-MY15-English.pdf · p.90
11 mm belt, S/DS/SR/DSR and FX/FXS: 42.5 Hz to 73.6 Hz11 mm 42.5 Hz to 73.6 Hz16 of 46OM-SDS-MY17-English-AH.pdf · p.92
11 mm belt, SR/F and SR/S: 62 Hz to 82 Hz11 mm 62 Hz to 82 Hz9 of 46OM-SRF-MY20.pdf · p.128
Replace brake pads at 1.35 mm or lessReplace the brake pads if either pad36 of 46OM-SDS-MY15-English.pdf · p.87
Minimum brake disc thickness 3.50 mmThe minimum thickness is 0.14 in (3.50 mm)8 of 46OM-SDS-MY16-English-06.pdf · p.84
Wheel bearings are a maintenance-schedule item: check for smooth operationWheel Bearings Check bearings5 of 4621MY_SDS_OM_-_English-04.pdf · p.75
Charge for at least 24 hours to restore optimal cell balancecharge for at least 24 hours to ensure optimal cell balance is restored17 of 46OM-XMX-MY19-04.pdf · p.103
The BMS cuts the charge when one or more cells reach maximum voltageThe BMS is cutting off the charge because one or more cells have reached maximum voltage22 of 46OM-SDS-MY15-English.pdf · p.63
Gen2 dash code 20 — BMS Low Isolation20 BMS Low Isolation22 of 46OM-SDS-MY15-English.pdf · p.110
Gen2 dash code 28 — BMS Isolation Fault28 BMS Isolation Fault22 of 46OM-SDS-MY15-English.pdf · p.110
Gen2 dash code 29 — BMS Isolation Danger29 BMS Isolation Danger21 of 46OM-SDS-MY15-English.pdf · p.110
Gen3 dash code 43 — Isolation Fault, refer to dealer, lights the CELIsolation Fault Refer to dealer13 of 46OM-SRF-MY20.pdf · p.145
Gen2 dash code 39 — Throttle Out Of Range Disable39 Throttle Out Of Range Disable22 of 46OM-SDS-MY15-English.pdf · p.110
Gen2 dash code 44 — Kill Switch Disable44 Kill Switch Disable22 of 46OM-SDS-MY15-English.pdf · p.110
Gen2 dash code 45 — Kickstand Switch Disable45 Kickstand Switch Disable22 of 46OM-SDS-MY15-English.pdf · p.110
Gen2 warning flash 10 — Module Variance Too High10 Module Variance Too High19 of 46OM-SDS-MY16-English-06.pdf · p.101
Gen2 warning flash 4 — Precharge Fail4 Precharge Fail18 of 46OM-SDS-MY16-English-06.pdf · p.101
Gen2 warning flash 12 — Welded Contactor12 Welded Contactor19 of 46OM-SDS-MY16-English-06.pdf · p.102
Gen2 dash code 2 — Motor Temperature Warning Stage 1 (no threshold published)2 Motor Temperature Warning Stage 122 of 46OM-SDS-MY15-English.pdf · p.110
Gen3 dash code 41 — Motor High Temperature, performance reduced41 Motor High Temperature Performance will be reduced12 of 46OM-SRS-MY20.pdf · p.151
Gen3 dash code 55 — Battery Temperature High55 Battery Temperature High12 of 46OM-SRS-MY20.pdf · p.152
Gen3 dash code 29 — HVIL Open Fault, loose connection in the pack harness29 HVIL Open Fault13 of 46OM-SRF-MY20.pdf · p.145
Some Gen3 codes light the CEL and put the bike into permanent torque reductionpermanent state of torque reduction13 of 46OM-SRF-MY20.pdf · p.143
FX/FXS carry a separate user-replaceable on-board Charge FuseCharge Fuse (on-board)13 of 46OM-XMX-MY15-English.pdf · p.102

Claims that rest on an absence

Three statements on this page are of the form “Zero publishes no figure for this”. An absence is only citable if it is checked, and it is exactly the kind of claim that rots silently when a manual is added to the index — so each search below is re-run on every build and the generator refuses to emit the claim if it starts matching.

Searches that must return nothing, and what their absence licenses
Searched forHitsWhat the absence licenses
isolation resistance0No owner or service manual publishes an isolation-resistance figure
insulation resistance0Nor an insulation-resistance figure
megohm0Nor a megohm threshold of any kind
isolation + ohm0No manual page discusses isolation and ohms together, so the logged resistance has no published specification to be compared against

How to reproduce the corpus figures

Every corpus number on this page — the message-family census, and the 273 distinct isolation readings behind the histogram — comes from one script scanning 337 real MBB and BMS log files for literal message text. It emits the typed module this page interpolates, so a figure in the prose cannot disagree with a figure in a table.

python3 backend/scripts/gen_symptom_evidence.py --logs-dir /path/to/bins python3 backend/scripts/gen_symptom_evidence.py --check   # fails if the page is stale

The scan is aggregate-only: no VIN, filename or unaggregated message is emitted or published. Occurrence counts are reported but are deliberately not treated as event counts anywhere on this page, because a Zero log download is cumulative and one event reappears in every later download from the same motorcycle.

Frequently asked questions

What cell balance is normal on a Zero?

An average spread up to 80 mV is normal and raises nothing on your report: 40 mV and below is excellent/normal and 41–80 mV is within normal range. 81–120 mV is treated as moderate cell imbalance — monitor over time, and above 120 mV as significant cell imbalance — consider a balancing charge. Judge on the average across a log rather than the worst line, because momentary spikes under hard acceleration and at very low state of charge are largely normal, and judge on the trend across several charges rather than any single reading.

My log shows a chassis isolation event. How worried should I be?

It is common: the message appears in 94 of the 337 log files scanned for this page. What matters is the resistance and whether it persists. Across 273 distinct non-zero readings the median is 43,656 Ω, only 49 are below 10 kΩ and only 7 are below 1 kΩ. A high reading that appears after rain and is gone from the next download is weather. A few hundred ohms on the same cell index in download after download is a defect and belongs to a dealer. Zero publishes no acceptable figure, which is why this page publishes the distribution instead.

Why does my Zero refuse to charge after a fast ride?

Because the pack is above the charging limit. Zero blocks charging above a pack temperature of 50 °C and below 0 °C (OM-SRF-MY20.pdf p.97), and a pack that has just been discharged hard can be over that internally even when the air around the bike is cool. Above 43 °C ambient the charger tapers its current rather than stopping, which reads in a log as an unusually long session. Zero puts the wait for a hot pack at around 30 minutes or less. On an FX or FXS, if it still will not charge from the wall cord while quick charging works, check the on-board charge fuse — the X platform has two charge fuses and only one of them is user-replaceable.

What does the log say about belt noise, brake squeal or a wheel bearing?

Nothing at all, and that is the most useful thing this page can tell you about them. No Zero log carries sound, vibration, brake pressure, pad thickness or bearing condition, so time spent scrolling a log for any of them is wasted. Each one has a published measurement instead: belt tension in hertz for your own platform (the S/DS/X band and the SR/F band are different), brake pads at 1.35 mm and discs at 3.50 mm minimum, and wheel bearings as a scheduled inspection for smooth operation.

Is the -30 °C figure the temperature where a Zero stops working?

No, and treating it that way means riding on a margin that does not exist. -30 °C is the cell manufacturer’s absolute lowest discharge temperature and Zero quotes it in the winter-storage chapter (21MY_SDS_OM_-_English-04.pdf p.113). The operating chapter is far more restrictive: -5 °C to 60 °C for MY2016–MY2018 S, SR, DS and DSR (OM-SDS-MY15-English.pdf p.56) and -20 °C to 60 °C from MY2019 and on every Gen3 bike (23_DSRX_OM_-_English_-_88-09970-AK.pdf p.87), with the BMS switching off the power controller outside that range. The per-platform detail is on the thermal-limits page. Separately, expect up to 30% temporary range loss at -1 °C ambient against 27 °C — reversible, and not degradation.

The GFCI trips when I charge. Should I use a cheater plug?

No. Every Zero owner manual tells you to always connect the charger to a grounded outlet, and the Gen3 mobile charging adapter carries an explicit warning against grounding adapters. Zero also anticipates the trip and asks you to check state of charge every 30 days because breakers and residual-current outlets can fault. A device that keeps tripping is reporting a leakage path — physically the same kind of condition the isolation message reports — so move the bike to a dedicated grounded circuit, and if it still trips treat it as a symptom rather than removing the protection.

How much of this applies to an SR/F, SR/S or DSR/X?

The method and the manual figures apply fully — the thermal limits, the charging window, the belt and brake specifications are all quoted from Cypher III manuals where they differ. The corpus statistics do not: of the 24 identifiable vehicles in the scanned corpus, 23 are Gen2 and 1 is Gen3, so no frequency figure on this page is evidence about how often anything happens on a Gen3 bike. The dash-code numbers also differ between generations and are labelled accordingly throughout.

Where do the numbers on this page come from?

Every manual figure is located by exact phrase in the indexed text of 46 official Zero owner and service manuals by `backend/scripts/gen_symptom_evidence.py`, which also re-checks the three "the manuals do not publish this" claims and refuses to build if one of them starts matching. The page number is then resolved against the PDF rather than taken from the text index: the index stores the first page of a passage-sized chunk that can span five pages, so the generator extracts the candidate pages and cites the one the phrase is actually printed on — 38 of 38 citations confirmed that way on the last run. The corpus figures come from a byte-level scan of 337 real log files. The cell-balance and temperature bands are read back out of the live diagnosis engine by sweeping it, so the page documents what the product actually does. Nothing here is typed by hand twice.

Every published figure on this page was located by exact phrase in the indexed text of 46 official Zero owner and service manuals covering model years 2014 to 2026, and each is cited to the oldest model-year-2015-or-later manual carrying it — 11 distinct documents are cited, and several figures have been in print unchanged for a decade, which is why a citation may name a manual much older than your bike. Page numbers are PDF pages in the file named, not printed page numbers, and each one was confirmed by extracting that page from the PDF and finding the quoted phrase on it — a check independent of the text index that located the figure, and the reason a citation here can differ by a page or two from the same figure quoted elsewhere (38 of 38 confirmed). The corpus figures come from a byte-level scan of 337 real MBB and BMS log files (24 identifiable vehicles, 23 of them Gen2), reported as files-containing and distinct measured values because a Zero log download is cumulative and occurrence counts therefore over-count events; no VIN, filename or unaggregated message is published. The cell-balance, temperature and cell-voltage bands are read back out of this site’s own diagnosis engine by sweeping it. The community archive is used as a research lead and is cited where this page documents an error in it — it is linked to the Internet Archive because zeromanual.com stopped responding in March 2026. Where the archive and a manual disagreed, the manual won and the disagreement was left in place with the evidence that settled it. Everything regenerated 2026-08-08 by `backend/scripts/gen_symptom_evidence.py`.

This is an independent third-party guide, not affiliated with or endorsed by Zero Motorcycles, Inc. It is written to help you interpret your own diagnostic logs; your own model-year manual is the authority on every figure, and an authorised dealer is the authority on diagnosis and anything warranty-related. Nothing here is a substitute for a qualified technician and nothing here authorises work on the high-voltage system.