Infinite Battery — LED codes & diagnostics Rev. 2026.09 · ← Back to overview

LED codes

Reading the four LEDs · Field & after-sales reference

Every Infinite Battery carries four LEDs. Most of the time they are simply a charge gauge in green. The rest of the time they are a diagnostic: which subsystem is in fault, how severe it is, and whether the pack can stay in service. This page is the full decoding table, exactly as the firmware drives it.

LED 1
LED 2
LED 3
LED 4
FIG. 1. LED 1 is the first of the strip and the one that always carries the most meaning — it is lit in every mode. LED 4 is the last. Fix the orientation of the pack before reading a code: reversed, a current fault reads as a temperature fault. Shown here: a pack charging above 75 %.
How to read

One pattern at a time, by priority

The firmware evaluates seven cases in a fixed order and displays the first one that applies. An OTA update hides everything else; a critical fault hides the charge gauge. So a pack showing green is not just charged — it is also free of every condition above.

Priority 1OTA updateBlue progress count while firmware is being fetched and flashed.
Priority 2Factory firmwareThe pack still runs the factory image, not a field firmware.
Priority 3AlertsRed — temperature, humidity or voltage alert raised by the pack or the backend.
Priority 4Temporary patternsShort-lived feedback triggered by an action: locate, unlock, forced discharge, tap.
Priority 5Critical faultPermanent failure — the pack must go back for repair.
Priority 6Error codeThe only readable code: LED 3 for current errors, LED 4 for temperature errors.
Priority 7Charge gaugeNo error — green, one LED per quarter of the state of charge. Breathing means charging.
Before allStartup statesWhat the LEDs show in the seconds after boot, before data is available.

Colors

Greencharge gauge — no error
Redalert, permanent fault, short circuit
Yellowover-current / over-temperature
Cyancharge over-current / under-temperature
BlueOTA update in progress
Whitelocate command, tap detected
Magentaconfig button — BLE unlocked
Pinkforced discharge · RGB 255,20,147
Dim orangefactory firmware · RGB 51,33,0
Whitebooting, data not ready · RGB 127,127,127
Offunlit

Patterns

Solidsteady, full brightness
Breathes1 s triangle pulse, off ↔ 50 % — charging only
Blinks2 s, 50 % duty, full brightness — not charging only
Fast blink500 ms period — critical / action
Breathing vs. blinking

Breathing only ever happens while charging: a 1 s triangle pulse between off and half brightness. Blinking only ever happens while not charging: 2 s period, 50 % duty, at full brightness. The two never coexist, so the animation alone tells you whether a charger is connected.

Priority 1

OTA update in progress

LED 1 is blue throughout; the following LEDs count the progress. Do not disconnect the pack while blue LEDs are counting up.

Table 1 · Firmware update
StepLED 1LED 2LED 3LED 4
Fetching the URL
Downloading the firmware
Success
Failure

A single blue LED after an update attempt means the update failed — the pack keeps its previous firmware and can be retried.

Priority 2

Factory firmware

The pack is running the factory image. It is not a fault, but the pack is not in its field configuration either — it should be provisioned before being shipped or put in service.

Table 2 · Factory mode
StateLEDsPattern
Factory mode
All four solid, dim orange · RGB(51, 33, 0) — a low-brightness amber, not black
Priority 3

Alerts

All four LEDs go red. The pattern separates the two severities: blinking is critical, solid is major. Alerts come either from the pack's own monitoring or from the level pushed by the backend.

Table 3 · Alert levels
LevelLEDsPattern
Critical
All four blinking red, 500 ms period
Major
All four solid red

Internal causes

In addition to the level sent by the backend, the pack raises these alerts on its own.

Table 4 · Alerts raised by the pack
CauseIdentifierLevel
BMS temperaturebms_temperatureCritical
Cell temperaturecells_temperatureCritical
Critical humiditycritical_humidityCritical
Temperature spread between cells—Major
Major humiditymajor_humidityMajor
Safety under-voltagesafety_under_voltageMajor
Voltage spread between cells—Major
Priority 4

Temporary patterns

These are feedback, not faults: each one is triggered by an action and clears on its own. If you see one, someone — or something — just did something to the pack.

Table 5 · Action feedback
TriggerLEDsPattern
"Flash lights" command
app / backend
All four blinking white, 500 ms — used to locate a pack in a rack
Config button pressed
All four blinking magenta, 500 ms — sensitive BLE actions are unlocked
Forced discharge
Pony only
All four solid pink · RGB(255, 20, 147)
Tap detected
Pony only
All four white
Priority 5

Critical fault — battery to be repaired

Solid red on all four LEDs, with no alert pending, means a permanent failure has been latched. The pack does not recover on its own: it goes back to a repair point.

Table 6 · Permanent failure
ConditionLEDsPattern
Permanent failure, or cell over-voltage
COV beyond the threshold + 50 mV
All four solid red

The permanent failures concerned: safety under-voltage (suv), copper deposition (cudep), charge FET fault (cfetf) or discharge FET fault (dfetf), and the BQ's internal faults (otpf, drmf, irmf, lfof, vssf, hwmx, cmdf).

Solid red — which one?

Solid red is shared by a major alert (priority 3) and a permanent failure (priority 5). The two cannot be told apart on the LEDs alone: read the pack's event history in the portal to know whether it is recoverable or a repair.

Priority 6

Common errors — the real error code

This is the only case where the LEDs form a readable code. LED 1 red marks "error mode"; LED 3 carries current errors and LED 4 carries temperature errors, each one encoded by its colour in the two tables below.

Table 7 · Role of each LED in error mode
LEDShownMeaning
LED 1 Red — "error mode" marker, always lit
LED 2 Always off — unused. Voltage errors are either critical or filtered out
LED 3
Current errors — the colour says which one · see Table 8
LED 4
Temperature errors — the colour says which one · see Table 9

LED 3 — current errors

In priority order: the first condition that applies sets the color.

Table 8 · LED 3
ColorLEDMeaning
RedShort circuit in discharge (scd / scdl)
YellowOver-current in discharge (ocd1, ocd2 or ocd3)
CyanOver-current in charge (occ)
OffNo current error

LED 4 — temperature errors

Table 9 · LED 4
ColorLEDMeaning
CyanUnder-temperature (cutd or intut) — including when an over-temperature is present as well
YellowOver-temperature (cotd, intot or fot)
OffNo temperature error

Decoder

Pick what the pack is showing on LED 3 and LED 4 to read the code back.

LED 1 LED 2 LED 3 LED 4

Deliberately masked errors

Some conditions are filtered out before they ever reach the LEDs, because they describe normal use rather than a fault: cell under-voltage cuv (the battery is simply empty), cutc / cotc (pending charger detection), covl, and cell over-voltage cov below the threshold + 50 mV (the battery is simply full).

Priority 7

No error — charge gauge in green

The normal state. One LED per quarter of the state of charge, in green. The gauge behaves differently depending on whether the pack is charging, so the two cases are read from different tables.

The three rules

Breathing — a 1 s triangle pulse between off and 50 % brightness. It happens only while charging.

Blinking — 2 s period, 50 % duty cycle, full-brightness green. It happens only when not charging.

Any LED below the topmost lit one is always solid green.

While charging

The topmost lit LED breathes; the ones below it are solid green.

Table 10 · State of charge — charging
SOCLED 1LED 2LED 3LED 4
≤ 25 % breathes
25 – 50 % breathes
50 – 75 % breathes
75 – 90 % breathes
≥ 90 %
standard
≥ 90 %
Pony
breathes

On the standard scale the first step is split into two bands (≤ 0 % and 0 – 25 %), but both breathe on LED 1 while charging. The two scales only diverge at the top: at ≥ 90 % a standard pack is fully solid, a Pony keeps breathing on LED 4.

Not charging — standard scale

Nothing breathes. Blinking marks a flat battery.

Table 11 · State of charge — not charging, standard
SOCLED 1LED 2LED 3LED 4
≤ 0 % blinks
0 – 25 %
25 – 50 %
50 – 75 %
≥ 75 %

Not charging — Pony scale

Each step has a "low" zone where the topmost LED blinks instead of being solid.

Table 12 · State of charge — not charging, Pony
SOCLED 1LED 2LED 3LED 4
≤ 25 % blinks
25 – 30 %
30 – 50 % blinks
50 – 55 %
55 – 75 % blinks
75 – 80 %
80 – 90 % blinks
≥ 90 %
Reading the two scales apart

A blinking LED in the middle of the strip — LED 2, 3 or 4 — only exists on the Pony scale, and always means the pack has just entered that step. On the standard scale, blinking only ever appears on LED 1, and only at 0 %.

Before all

Startup states

In the first moments after boot, the pack has no measurement to display yet. These three patterns say how far it got. Two of them are white — the pack drives RGB(127, 127, 127), which is simply white at half brightness, so do not expect a distinguishable grey in the field.

Table 13 · Boot
StateLEDsPattern
First 3 seconds after boot
All four show the default pattern below
No configuration loaded
All four blinking yellow, 2 s period — the pack needs to be provisioned
Config OK, BQ/SOC not ready
All four solid white at half brightness · RGB(127, 127, 127) — reads as plain white in the field
Field notes

Two things that surprise technicians

LED 2 is dark in error mode

In error mode LED 2 is explicitly unused, so a "current + temperature" code only ever uses three of the four LEDs. It is not a dead LED — the slot is free, and it is where voltage errors would go if they were ever surfaced.

Cyan means two different things

Cyan is over-current in charge on LED 3 and under-temperature on LED 4. The color alone is ambiguous — the position is what disambiguates it. Confirm which end of the strip is LED 1 before calling it, or the two faults swap.

Neither is a defect. Both are reasons to pin down the LED orientation in your own service documentation before training technicians on this table.

Support

A code you can't place?

Every pack also reports its state to the Infinite portal, with the full event history behind each LED pattern. If a pack shows something that isn't on this page, send us its serial number.

contact@gouach.com →