JFBMS32 User Manual

JFBMS32 User Manual

This guide explains how to install the firmware, connect, configure and test the JFBMS32, in the order you do it. It is written for users who are new to VESC Tool and battery-management systems.

Which guide do I need? Use this guide for the single-board JFBMS32 (3 to 32 cells). If your pack uses a JFBMS Master with Slave boards, use the JFBMS Master User Manual. If your Slaves connect directly to a controller running JF Link, use the JF Link User Manual.

Important Safety Information

WARNING: The JFBMS32 is intended for high-voltage lithium battery systems. Incorrect wiring or settings can cause electric shock, fire, battery damage, or serious injury.

  • Only work on the battery if you understand high-voltage battery safety.
  • Use suitable fuses, insulation, wiring, connectors, and protective equipment.
  • Never guess the order of the cell-balance wires. Incorrect balance wiring may damage the BMS.
  • Do not charge the battery until all cell voltages and temperatures are correct.

The firmware is still under active development. During initial use, closely monitor the battery system and report software bugs or unexpected behaviour to JetFleet.

1. What the JFBMS32 Does

The JFBMS32 is a complete charge-only smart BMS on one board. Two balancing ICs (BQ monitors) measure up to 16 cells each, so one board covers packs from 3 to 32 cells in series.

  • Monitors individual cell voltages and temperatures
  • Controls battery charging (the charge MOSFETs disconnect battery + from the charge port)
  • Balances cells
  • Measures charging current
  • Calculates battery percentage, Ah, and Wh
  • Communicates with VESC controllers over an isolated CAN bus
  • Supports Bluetooth and WiFi
  • Automatically enters sleep and shutdown modes

Important: the JFBMS32 is a charge-only BMS. Discharge current does not pass through it. Low-voltage and over-temperature protection while riding comes from your VESC controller reading the BMS data over CAN (see section 8).

2. What You Need

  • JFBMS32 with its XT30 connectors, balance leads and thermistors
  • Correct cell-balance wiring for your pack
  • Charger with an XT30 male connector
  • USB-C data cable
  • Computer with VESC Tool installed, and Google Chrome or Microsoft Edge for the firmware web flasher
  • Battery information: cell count, capacity in Ah, chemistry, and charging limits

Download VESC Tool from the official VESC Project website. Use a USB data cable, not a charge-only cable.

Which hardware version do I have?

Scan the QR code on the back of the board. It shows the batch. The two versions need different firmware files.

Batch Shows in VESC Tool as Differences Firmware files
B02 (current) JFBMS32v2 Hardware shutdown signal, conformal-coated PCB jfbms32_b02_..._app.bin
B01 JFBMS32v1 No hardware shutdown, PCB not coated jfbms32_b01_..._app.bin

3. Install the Latest Firmware (Do This First)

Install the latest firmware before you configure the board. Only a USB cable is needed for this step: USB powers the ESP32-C3 processor. The board is first erased, then programmed. Erasing is required, because programming alone keeps the old Lisp software and settings in memory, which can give wrong cell voltages, temperatures or protection behaviour with the new firmware. The firmware does not contain the Lisp software: install the JFBMS32 package in Step 3.

Erasing also resets all settings to the defaults. If you are updating a configured board, click Save XML on the JFBMS32 page in VESC Tool first, or write your settings down.

Download the Firmware (version 2026-11-05)

The bootloader and partition table are the same for both hardware versions; only the application file is different. Download the bootloader, the partition table and the application file for your hardware version. Never flash the B01 application on a B02 board or the other way round, and never flash JFBMS Master or Slave files on a JFBMS32.

Board Flash address File
B01 and B02 0x0 jfbms32_2026-11-05_bootloader.bin
B01 and B02 0x8000 jfbms32_2026-11-05_partition-table.bin
B02 0x20000 jfbms32_b02_2026-11-05_app.bin
B01 0x20000 jfbms32_b01_2026-11-05_app.bin

Step 1: Erase the JFBMS32 (ESP web flasher)

  1. Connect the JFBMS32 with USB-C. Close VESC Tool, or disconnect it including the ESP Programmer, so it does not hold the USB port.
  2. Open espressif.github.io/esptool-js in Chrome or Edge. Click Connect, select the USB JTAG/serial debug unit port and click Connect in the pop-up.
  3. Check that the page shows Connected to device: ESP32-C3.
  4. Click Erase Flash and wait for Chip erase completed successfully in the console (about 15 to 30 seconds).
  5. Click Disconnect. Leave the USB cable connected. The erased board has no firmware until Step 2 is finished.

Step 1: check the chip (ESP32-C3), then click Erase Flash
Step 1: check the chip (ESP32-C3), then click Erase Flash

Step 1 finished: Chip erase completed successfully
Step 1 finished: Chip erase completed successfully

Step 2: Program the JFBMS32 (VESC Tool)

  1. Open VESC Tool and select ESP Programmer (bottom of the left menu).
  2. Select the JFBMS32 COM port and click the Connect icon (the right plug icon). The bar must show Connected to ESP32C3.
  3. Open the Custom tab and select the three files: Bootloader, Partition Table and the Application for your hardware version.
  4. Click Flash using USB and wait until the bar shows Flash verified (about one minute).
  5. Click the Disconnect icon (the left plug icon) and unplug the USB cable.

Step 2: VESC Tool ESP Programmer with the JFBMS32 B02 files selected
Step 2: VESC Tool ESP Programmer with the JFBMS32 B02 files selected

Step 2 finished: Flash verified
Step 2 finished: Flash verified

Step 3: Install the JFBMS32 Package (VESC Tool)

The firmware does not contain the BMS software. Download jfbms32_2.1.0.vescpkg and install it. USB alone is enough for this step. Installing the package keeps the board settings.

  1. Connect the board with USB. In VESC Tool open Connection, select its port and click Connect.
  2. Open VESC Packages and the Load Custom tab.
  3. Click the folder icon and select jfbms32_2.1.0.vescpkg. The package description and Build Info appear.
  4. Click Install and wait until VESC Tool reconnects (about 15 seconds).
  5. Open Welcome & Wizards. The APPUI tab shows JFBMS32 Package and the package version.

Steps 2 to 4: VESC Packages, Load Custom, select jfbms32_2.1.0.vescpkg and click Install
Steps 2 to 4: VESC Packages, Load Custom, select jfbms32_2.1.0.vescpkg and click Install

Step 5: the APPUI tab shows the installed JFBMS32 package
Step 5: the APPUI tab shows the installed JFBMS32 package

After installing the package, wake the board with the charger as described in section 5. If VESC Tool later shows no cell voltages, use Terminal > Reboot once, so the Lisp software starts.

4. How the JFBMS32 Is Connected

The board has an XT30 male battery port, an XT30 female charger port, a 4-pin CAN connector (5V, CAN_H, CAN_L, GND), four 2-pin thermistor ports (TS1 to TS4), the balance-lead connectors and a USB-C port.

Find the diagram for your cell count below. Each one shows the charger, battery, CAN, thermistor and balance connections, and how the cells are split between the two balancing ICs.

Wiring example: 4S pack
Wiring example: 4S pack

Wiring example: 16S pack, all cells on one balancing IC
Wiring example: 16S pack, all cells on one balancing IC

Wiring example: 18S pack
Wiring example: 18S pack

Wiring example: 20S pack
Wiring example: 20S pack

Wiring example: 28S pack
Wiring example: 28S pack

Wiring example: 29S pack
Wiring example: 29S pack

Wiring example: 30S pack
Wiring example: 30S pack

Wiring example: 31S pack
Wiring example: 31S pack

Wiring example: 32S pack, 16 cells on each balancing IC
Wiring example: 32S pack, 16 cells on each balancing IC

Balance Wire Connection

The JFBMS32 has two balancing ICs. Each IC supports 3 to 16 cells.

  • Packs up to 16 cells: connect all balance wires to one IC.
  • Packs with more than 16 cells (up to 32): split the balance wires between both ICs. Example: for a 20-cell pack, connect 10 cells to each IC. An even split is recommended for better balancing and heat distribution.
  • Unused balance pins: if fewer than 16 cells are connected to an IC, short the unused pins to the last connected cell voltage.
  • When both ICs are used, the top cell of the lower IC is also the ground of the upper IC and the supply of the lower IC (red wire in the 32S example).

Warning: always double-check the balance-wire order with a multimeter before plugging the leads into the BMS.

Thermistor Connection

  • Supports up to four thermistors (NTC 10 kΩ, Beta 3435 K, included).
  • Plug the thermistors into TS1 to TS4, starting with TS1. Set Temperature Sensors to the number you connected (section 6).
  • Place the thermistors on key cells or inside the pack.

Battery, Charger and CAN

  • Battery: connect the battery XT30 (female) to the BMS battery port (XT30 male). Check polarity: a reverse connection may damage the BMS.
  • Charger: connect the charger XT30 (male) to the BMS charger port (XT30 female). Check polarity before plugging in.
  • CAN (strongly recommended): connect the CAN cable to a VESC controller that provides 5 V on its CAN port. CAN sends the BMS data to the controller, and the 5 V wakes the BMS from sleep when the controller switches on. If you do not need CAN data, connect at least 5 V and GND.

Why 5 V and GND on CAN matter: without them, the BMS relies only on the charger port to wake. On a vehicle the pack voltage can fluctuate a lot (motor current, regenerative braking). These fluctuations can couple into the charger port while the BMS is asleep and wake only half of it: the lower balancing IC wakes, the upper one does not. The BMS then beeps (one long beep followed by short beeps) until a charger is plugged in. With 5 V and GND connected, the BMS wakes reliably with the controller.

Connection Order

  1. Thermistors.
  2. Balance leads (checked with a multimeter).
  3. Battery XT30.
  4. CAN cable, if used.
  5. Charger, to wake the board (section 5).

5. First Start (Waking the JFBMS32)

After the battery is connected, the BMS may stay in sleep or shutdown mode. Wake it with the charger: plug in the charger and wait a few seconds. Two short beeps mean the BMS has started.

  • Charger (recommended): wakes the processor and both balancing ICs, from sleep and from shutdown.
  • USB-C: powers only the processor. The balancing ICs stay asleep, so cell voltages are not measured. Use USB for firmware and settings, then wake the board with the charger.
  • 5 V on the CAN port (controller switched on): wakes the BMS from sleep only, not from shutdown.

Connect to VESC Tool

  1. Connect USB-C, open VESC Tool and go to Connection.
  2. Select the JFBMS32 port and click Connect (the right plug icon). Bluetooth LE also works once the board is awake.
  3. Device (JFBMS32v2) (or JFBMS32v1) appears under CAN-Devices, and a JFBMS32 page appears in the left menu.

Connecting to the JFBMS32 over USB
Connecting to the JFBMS32 over USB

6. JFBMS32 Settings

All settings are on the JFBMS32 page in VESC Tool. Change a value, then click Write. For basic setup you only need the General, Charging, Balancing and Sleep and Shutdown tabs. Leave the other tabs unchanged unless JetFleet support asks you to change them. Click the ? icon next to any setting for a detailed description.

Set the cell count first. The defaults are for a 32S Li-ion pack (16 + 16 cells). With a different pack the cell voltages are wrong until the cell count matches the wiring.

The screenshots below show the factory defaults.

General

Setting What it means Default
Cells on Lower BQ (IC1) Series cells wired to the first (lower) IC, 3 to 16 16
Cells on Upper BQ (IC2) Series cells wired to the second IC. 0 if unused, otherwise 3 to 16. Total cells = IC1 + IC2 16
Battery Capacity Usable capacity of the complete pack in Ah (parallel cells add capacity, series cells do not) 10 Ah
Use Coulomb Counting for SOC True: battery % from measured current and capacity. False: from the lowest cell voltage False
Minimum Counter Current Currents at or below this are not added to the Ah/Wh counters 0.3 A
Cell Voltage Empty / Full Lowest-cell voltages used as 0 % and 100 % for voltage-based battery % 3.10 / 4.20 V
Voltage SOC Smoothing Smoothing of the voltage-based battery %. Lower is steadier 10
Temperature Sensors Number of thermistors connected to TS1 to TS4 (0 to 4). 0 disables cell-temperature protection 1
NTC Resistance / NTC Beta Thermistor data. Keep these for the included thermistors 10k / 3435

General tab (factory defaults)
General tab (factory defaults)

Battery Chemistry

The default voltages are for standard Li-ion or Li-polymer cells. Do not use Li-ion settings for LiFePO₄ cells. For LiFePO₄ or another chemistry, use the limits from the cell manufacturer. As an example, these are the values on our 12S LiFePO₄ test pack:

Setting Li-ion (default) LiFePO₄ example
Cell Voltage Empty 3.10 V 2.80 V
Cell Voltage Full 4.20 V 3.60 V
Charge Start Voltage 4.05 V 3.35 V
Charge End Voltage 4.20 V 3.60 V
Charge Minimum Voltage 3.00 V 2.50 V
Balance Minimum Voltage 3.90 V 3.30 V
Low Voltage Shutdown 3.00 V 2.80 V

The JFBMS32 top-balances: it balances after a completed charge, when the cells are nearly full. Balancing at low voltage gives no benefit and can unbalance the cells, because cell voltages differ more in the middle of the charge curve. Set Balance Minimum Voltage close to full: about 3.90 V for Li-ion and 3.30 V for LiFePO₄.

The BMS rejects a Write if the voltages are out of order: Charge Start must not exceed Charge End, and Charge End and Balance Minimum must not exceed Cell Voltage Full. Change all the values first, then click Write once.

Charging

Setting What it means Default (Li-ion)
Charge Start Voltage A new charge may start only if the highest cell is below this. Leave room for the cells to relax after charging 4.05 V
Charge End Voltage Charging stops when the highest cell reaches this 4.20 V
Charge Minimum Voltage Charging is blocked if any cell is at or below this (damaged or deeply discharged cell) 3.00 V
Minimum / Maximum Cell Temperature for Charging Charging allowed only between these cell temperatures (needs thermistors) 0 / 45 °C
Maximum MOSFET Temperature for Charging Temperature limit of the charge MOSFETs on the board 85 °C
Min Charge Current 10 seconds after charging starts, charging stops if the current falls to or below this (charger finished, unplugged, or current limit reached). See section 7 0.5 A
Max Charge Current Charging is cut and a fault latched above this. Must not exceed Charge Overcurrent (OCC) 16 A

The charge current must not exceed the limit of the BMS, charger, cells, wiring, connectors, or cooling. The board can charge at up to 20 A continuous with the aluminium case. Without cooling it handles roughly 14 A, depending on ambient temperature and airflow. The Maximum MOSFET Temperature for Charging limit stops charging if the board gets too hot.

Charging tab (factory defaults)
Charging tab (factory defaults)

Balancing

Setting What it means Default
Balance Start Difference A cell this much above the lowest cell starts balancing 15 mV
Balance Stop Difference Balancing of a cell stops when it is within this of the lowest cell 8 mV
Balance Minimum Voltage No balancing while any cell is below this. Keep it close to full (top balancing) 3.90 V
Balance Maximum Current Balancing pauses while the pack current is above this. The current includes the charger current and the motor current your controller reports over CAN. If you ride off before balancing has finished, balancing is cancelled until the next completed charge, because cell voltages under load are not accurate enough to balance on 1 A
Max Balance Channels Cells balanced at the same time per IC. 0 disables balancing 5
Maximum Cell Temperature for Balancing Balancing pauses above this cell temperature 45 °C
Maximum BQ Temperature for Balancing Balancing pauses above this balancing-IC temperature 85 °C

Balancing tab (factory defaults)
Balancing tab (factory defaults)

Hardware Current Protection

These are fast protection trips inside the balancing IC, measured on the BMS current shunt (1 mΩ) in the charge path. They act within milliseconds, independently of the software limits. Changes apply automatically after Write (the balancing ICs reinitialise).

Setting What it protects Options Default
Charge Overcurrent (OCC) Current flowing into the pack through the charge port. A trip switches charging off and latches a charge fault 4 to 124 A, in 2 A steps. Set it at or above Max Charge Current 16 A
Discharge Overcurrent (OCD1) Current flowing out of the pack through the charge port (for example a fault on the charger side) 4 to 200 A, in 2 A steps 16 A
Short-circuit Threshold (SCD) Very high current, for example a short circuit at the charge port 10, 20, 40, 60, 80, 100, 125, 150, 175, 200, 250, 300, 350, 400, 450 or 500 mV. With the 1 mΩ shunt, mV equals amps: 40 mV trips at about 40 A, 200 mV at about 200 A 40 mV

A higher threshold tolerates larger current spikes but lets more current flow before the trip. Choose values that suit your charger, cells and wiring.

Hardware Current Protection tab (factory defaults)
Hardware Current Protection tab (factory defaults)

CAN and Bluetooth

  • CAN ID (default 3) must be different from every other device on the CAN bus. CAN Baud Rate (default 500K) must match your controller.
  • Bluetooth: Device Name (up to 8 characters) and Bluetooth Mode. Restart the BMS after changing Bluetooth settings.

CAN tab (factory defaults)
CAN tab (factory defaults)

7. Charging

Plug in the charger. Charging starts when the charger voltage is at least 0.7 V above the pack voltage and all cells and temperatures are inside the charging limits.

  • A rising three-tone beep means charging has started.
  • Charging stops when the highest cell reaches Charge End Voltage. Three short beeps mean charging is complete. Balancing may continue after charging.
  • Charging also stops when the charge current falls to or below Min Charge Current (checked from 10 seconds after charging starts). This happens when a CC/CV charger reaches its own voltage limit and the current tapers off. If the highest cell is already above Charge Start Voltage, the charge counts as complete (three short beeps, balancing follows). If not, charging stops without completing (status CHG_NO_CURRENT in VESC Tool): check that the charger voltage suits the pack and that the charger is working. Unplug and replug the charger to try again.
  • A falling three-tone beep means charging is blocked (a cell is too high or too low, a temperature is outside the limits, or a fault is latched). Connect VESC Tool to see the reason.
  • A new charge only starts when the highest cell is below Charge Start Voltage (default 4.05 V). Plugging a full pack back in will not restart charging.

8. Connect the VESC Controller

Low-voltage and over-temperature protection while riding comes from your VESC controller reading the BMS data over CAN. Connect the CAN cable, then in VESC Tool connect to the controller, open Motor Settings > BMS, select VESC BMS and click Write. Set the controller's BMS limits (for example the cell low-voltage and temperature limit modes) to match your pack.

9. Sleep and Shutdown

Setting What it means Default
Sleep Current Threshold Noise filter for the idle check: measured current at or below this counts as zero. Leave the default. The BMS goes to sleep when nothing keeps it awake: no charger, no USB or VESC Tool connection, no CAN activity or 5 V from the controller, and no balancing 0.3 A
Periodic Wake Interval While asleep, the BMS wakes this often to check the cells 12 hours
Block Sleep Mode True keeps the BMS awake. It switches to False automatically after about 1 hour of balanced idle operation True
Timed Shutdown After Sleep Full shutdown after this long asleep. 0 disables it 15 days
Low Voltage Shutdown Full shutdown when the BMS wakes from sleep and the lowest cell is at or below this. Must be below Charge Start Voltage 3.00 V (LiFePO₄: about 2.80 V)

Sleep and Shutdown tab (factory defaults)
Sleep and Shutdown tab (factory defaults)

Block Sleep Mode

New boards ship with Block Sleep Mode set to True so the BMS stays awake during setup. After setup, set it to False and click Write, or let the BMS clear it automatically after about an hour of balanced idle operation (four short beeps). The BMS then sleeps when idle and wakes when a charger is connected or the controller is switched on (5 V on CAN).

Shutdown

In shutdown the BMS draws almost no current (about 1 µA at 130 V on B02 boards). Only the charger wakes it from shutdown. The BMS also shuts down early to protect a stored pack: each time it wakes from sleep it checks the cells, and if the lowest cell is at or below Low Voltage Shutdown it shuts down fully. Fifteen short loud beeps mean the BMS is shutting down.

B01 boards have no hardware shutdown signal: they switch off the balancing ICs and put the processor into deep sleep instead.

10. First Test

  1. Wake the BMS with the charger and connect VESC Tool.
  2. Open BMS Data and enable BMS polling with the BMS icon in the right toolbar.
  3. Check that the number of cells matches your pack, every cell voltage is plausible, and the temperatures read room temperature.

BMS Data on our 12S LiFePO₄ test pack after charging (red bars are cells being balanced)
BMS Data on our 12S LiFePO₄ test pack after charging (red bars are cells being balanced)

Verify by Charging

Plug in the charger and watch BMS Data: Input Current should rise and the cell voltages should climb evenly. When the highest cell reaches Charge End Voltage, charging stops and balancing evens out the cells.

11. Troubleshooting

No cell voltages

Wake the BMS with the charger, not only USB: USB does not wake the balancing ICs. If voltages are still 0 right after a firmware update, use Terminal > Reboot in VESC Tool once.

Cell voltages are wrong, negative, or too many cells are shown

Set Cells on Lower BQ (IC1) and Cells on Upper BQ (IC2) to match the wiring and click Write. After a firmware update the cell count is back at the 16 + 16 default. Then check the balance wiring and that unused pins are shorted to the last cell.

Cell voltages are wrong or jump after a firmware update

The board was programmed without erasing first. Repeat section 3, including Step 1 (Erase).

Temperature fault

Check that Temperature Sensors matches the number of connected thermistors and that they are plugged in from TS1 upwards.

Temperatures read about -20 to -30 °C at room temperature

NTC Resistance does not match the thermistor. For the included thermistors use 10k and Beta 3435.

The battery discharges during storage

Block Sleep Mode is still True. Set it to False and click Write.

The BMS will not wake up

Plug in the charger. 5 V on CAN only wakes the BMS from sleep, not from shutdown.

One long beep followed by short beeps

A balancing IC is not responding. Plug in the charger: this wakes both ICs. If it happens on a parked vehicle without 5 V and GND on the CAN port, voltage fluctuations probably woke only the lower IC (section 4); connect 5 V and GND from the controller. Otherwise check the balance wiring, especially the connection to the top cell of each IC. If it continues, count the short beeps and contact support.

12. Audible Warnings

High tones mean OK or information; low tones mean something needs attention. Quiet beeps are informational; loud beeps are alarms.

Beep Meaning
Two short beeps (quiet) BMS started, or settings applied
Rising three tones (quiet) Charging started
Three short beeps (quiet) Charging complete
Falling three tones (quiet) Charging blocked
Two long low beeps (quiet) Charge fault latched (for example charge overcurrent)
Four short beeps (quiet) Block Sleep Mode switched off automatically
15 short beeps (loud) Shutting down
Five short beeps, repeating every 5 seconds (loud) Shutdown failed. The BMS tried to switch itself off completely (timed or low-voltage shutdown, section 9) twice, but the power stayed on. It stays awake and keeps beeping so the pack is not silently drained. Disconnect the charger and USB. If it keeps beeping, contact support
Three long beeps (loud, repeated at most every 30 s) Sleep failed. The pack was idle and the BMS tried to enter normal sleep, but a balancing IC did not accept the sleep command. The BMS stays awake and retries. Usually caused by a balance-wire or communication problem; if it repeats, check the balance wiring and contact support
One long beep, then 1 to 8 short beeps (loud) A balancing IC is not responding. The number of short beeps tells support which step failed

13. Contacting Support

If something does not work as described, contact JetFleet support. Include your hardware batch (B01 or B02), the firmware version, your pack's cell count and chemistry, a screenshot of BMS Data, and a description of any beeps.