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 can0 interface:
    • 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).
Adapters that don't workAdapters with their own serial protocol, for example the Seeed USB-CAN Analyzer (CH340 chip, shows up as /dev/ttyUSB), don't show up as a CAN interface in Linux and can't be used by GridEon.

Step 1 · Connect the battery

The battery's PCS port (RJ45, the one towards the inverter) has these pins:

PinSignalTo the adapter
4CAN HCAN H
5CAN LCAN L
3 / 6GNDGND (recommended)
1 / 2RS485 B / Anot used
7 / 8WAKE− / 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.

Several ARK batteries in parallelThe batteries link to each other through LINK-IN / LINK-OUT, and the adapter goes to the PCS port of the first battery. CAN shows the whole system: common SOC, current and capacity, plus the number of batteries.

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.

Devices installed before 0.9.97On them, once, run the command below over SSH. It prepares the automatic start of the CAN adapter and the button in Settings. Updates from the interface can't do this step by themselves, because it needs administrator rights.
sudo bash /opt/grideon/current/scripts/install-system-control.sh

What 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.
Individual cellsThe ARK battery firmware doesn't send each cell's voltage, only the highest, the lowest and the average cell. On the RS485 port (pins 1–2) the battery doesn't answer.

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.
WarningWith the signal on, the battery enables its output: the battery voltage appears on the terminals. It is the only message GridEon sends on CAN. The BMS settings (limits, capacity) are not changed over CAN.

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.