Docs / Batteries / BMS
Growatt ARK / GBLI (CAN)
Growatt low-voltage batteries (ARK 2.5L-A1 and the GBLI series) talk over CAN. GridEon (from version 0.9.97) reads them through a CAN adapter, only listening to what the battery sends: SOC, voltage, current, capacity, highest and lowest cell, temperatures, limits, protections and alarms.
What you need
- A CAN adapter with a Linux driver, which shows up as the
can0interface:- gs_usb (candleLight) USB adapters: FLY-UTOC (Mellow), CANable / CANable 2.0 with candleLight firmware, Innomaker USB2CAN. They plug straight into a USB port, with no drivers to install;
- MCP2515 boards for the Raspberry Pi (for example the Waveshare RS485 CAN HAT), enabled in
config.txt.
- A network cable to the battery's PCS port (or an RJ45 with just the wires needed).
Step 1 · Connect the battery
The battery's PCS port (RJ45, the one towards the inverter) has these pins:
| Pin | Signal | To the adapter |
|---|---|---|
| 4 | CAN H | CAN H |
| 5 | CAN L | CAN L |
| 3 / 6 | GND | GND (recommended) |
| 1 / 2 | RS485 B / A | not used |
| 7 / 8 | WAKE− / WAKE+ | not used |
In a standard network cable, pins 4 and 5 are the blue (CAN H) and white-blue (CAN L) wires. The bus runs at 500 kbit/s. Each end of the bus needs a 120 Ω resistor; most adapters switch it on with a jumper or switch.
Step 2 · Plug in the adapter and set up the battery
Plug the CAN adapter into a USB port of the GridEon device. It starts by itself, at the Growatt battery speed.
In Settings → Battery, under Data source choose Growatt ARK / GBLI · CAN. Then:
- CAN interface: usually can0 (the first adapter);
- Speed: 500 kbit/s for Growatt batteries;
- below them you see the interface state: up, the speed, whether the bus is fine and how many messages came from the battery. If the interface is down, press Start / restart CAN.
Press Test reading: the battery serial, voltage and SOC appear. Then Save. GridEon brings the interface up again by itself if you unplug and replug the adapter.
sudo bash /opt/grideon/current/scripts/install-system-control.shWhat GridEon reads
- voltage, current, power, SOC (with decimals), SOH;
- remaining, full and nominal capacity, cycles;
- the highest and the lowest cell (with their numbers), the cell average, the imbalance in mV;
- highest and lowest temperature;
- the limits asked of the inverter (charge and discharge current, charge voltage) and the state: charge / discharge allowed or blocked, balancing;
- every BMS protection and alarm (over-current, over-voltage, under-voltage, temperatures, system error…);
- manufacturer, serial number, hardware and software versions.
The battery without a Growatt inverter
The battery expects a presence signal from the inverter. Without it, after a while it blocks charge and discharge, lights the red ALM LED and switches itself off after about 25 minutes.
- The battery is connected to a Growatt inverter: leave the option below off. GridEon only listens.
- The battery is used with another inverter or with no inverter on CAN: tick Keep the battery active. GridEon sends the same signal as a Growatt inverter; the battery leaves the alarm and allows charge and discharge.
Troubleshooting
- "Interface can0 doesn't exist": the adapter isn't plugged in or has no Linux driver (see the compatible adapters).
- The interface shows as down: press Start / restart CAN in Settings → Battery or plug the adapter in again.
- "The battery sends nothing": check CAN H on pin 4, CAN L on pin 5, the 120 Ω resistor and that the battery is on (POWER held for 3–8 seconds, until the LEDs light up).
- The ALM LED blinks red with no alarms in GridEon: the battery has no inverter on CAN; see the section above.