I'd like to share my experience with UP16S015, because I had
way too many non-obvious setup issues, and they're not documented well anywhere. What's even more confusing is that people mention UP16S015 "works", but somehow no one mentions these issues, as if issues during setup are not expected at all.
I hope this post saves someone a lot of time I spent figuring this out.
1) Electrical connections
After I connected the BMS to the cells as documented on the BMS Aliexpress page, I expected something to happen, but the BMS didn't show any signs of life at all. The known method of waking up a BMS by connecting a charger didn't help either.
Turns out I needed to add a switch that turns the BMS on. There's an undocumented connector RJ9 on the adapter board for that, with labels confusingly named K- and K+ even though polarity doesn't matter for a switch. The box only contains the other side of the connector with wires, but without the switch. So you either need to solder a switch to the wires yourself, or at least twist the wires together as a quick workaround.
2) Software
I tried all kinds of software for this BMS, mentioned in this thread and elsewhere.
- The only way I could change all advanced BMS parameters is through JBD-ES-UP-V1.22.3 (
"ESS - PC Software Download" button here). Reading the parameters works as is, and to write parameters you have to log in through the Account menu: login JBD8888, password 666888.
- I believe this software requires installing a serial port driver (CH343SER, at the bottom
here).
- Additional required hardware: I used the "
JBD UART box" adapter. Maybe RS485 interface would work too, but I didn't have the cables/adapters for it.
- I couldn't get either JBD Tools 20241226 or MJBD Tools V2.7-20230407 to read more parameters than just the basic cell voltage information (even after I entered the logins/passwords mentioned in this thread). Not sure if it's because UP16S015 is different from UP16S010 / UP16S008, or because some configuration has to be changed for it to work.
- I have the bluetooth/Wifi module for this BMS, but none of the bluetooth apps I found could control the advanced parameters of the BMS:
- The latest version of JBD Li-Ion Android app worked for me only after I created an account. This is the only app I could find that can connect to the BMS over Wifi (in addition to bluetooth). It also appears to have a firmware upgrade feature, but my BMS firmware was already up-to-date. Other than that, very few BMS parameters can be modified from this app. It's also a bit buggy - when it loses connection to the BMS, it doesn't notify you, and continues to give an impression that it successfully refreshes the data, even though the data is stale. Some of the "missing data" issues I had with this app were so persistent that only restarting the BMS with the physical on/off switch helped.
- Overkill Solar app on Android can read and edit some of the advanced parameters, but it appears it doesn't fully support this BMS model. Some parameters revert to their original values in the app after I re-read them, some others update to unexpectedly different values from what I set, so except for the basic information, I wouldn't trust what I set or see in this app unless you have another reliable way to verify the values (like the JBD-ES-UP-V1.22.3 app above).
- Old version 3.1.1026 of Xiaoxiang app on Android (
here in the "JBD Tools" section) can read cell voltages and appears to read even more advanced parameters, but when I go to its other screen meant for parameter changes, it crashes attempting to read the current values. I kind of like its interface that displays cell voltages in real time, so I use it sometimes, but I wouldn't trust it for anything more advanced, since this version is old enough to likely not support this BMS properly.
- The newest version of Xiaoxiang app on Android wasn't usable. I haven't tried to create an account though, not sure if that could help in any way.
3) Communications between the BMS and an inverter
Too many possible combinations make it too easy to get this wrong, so here's my setup that works with Victron:
- It's quite misleading that the CAN connector is RJ45, as if you could just use a regular ethernet cable. You can't - you need a special cable. I wanted to connect my BMS to Cerbo GX MK2, and Victron sells two types of cables, Type A and Type B. Figuring out which one is needed could be quite a challenge, but luckily the adapter board has text on it: pins 6 and 3 are GND, pin 5 is CAN-L, pin 4 is CAN-H, the rest are not connected. From there it's possible to figure out that the right type of cable for Victron is
Type A. I crimped one myself, since I had the right tools and a cable tester.
- As described in Victron documentation, when connecting this cable to Cerbo, you'd need to insert a terminator into the port next to it, unless you daisy-chain more devices. The terminator comes in the box with Cerbo. No terminator is needed on the BMS side.
- On the BMS side on the adapter board, I used the port labeled "CAN1".
- In the BMS settings, I set the CAN communication type to Victron (Pylontech also works)
- In Cerbo settings -> Services -> VE.CAN port 1 or 2, I set the CAN-bus profile to "CAN-bus BMS LV (500 kbit/s)"
- Errors in the VE.Can port -> "Network status" on Cerbo confusingly don't matter at all - even after everything is set up and works, it shows "ERROR-PASSIVE" or "ERROR-ACTIVE" to me, and from what I understood from Internet, apparently it's ok.
- Instead, the best way to confirm whether the BMS is connected is to go to the main menu on Cerbo - right away in the list of the devices there along with the inverter you should see the BMS as "UP16S015..." with some more digits. When you open that menu item, it shows total voltage/current/power, SOC, SOH, lowest/highest cell voltage and temperature, and other information. Quite extensive, I'm satisfied that I can monitor most of what I need right here and won't need to use the JBD apps in most cases. Victron VRM portal can even draw historical charts with all of this data.
- For the lowest/highest cell voltages with Victron CAN protocol, it appears someone (I suspect JBD) messed up the number to string conversion in cell IDs, so IDs are confusing. Cells are identified as "ID:01.01"..."ID:01.10". You'd assume that "ID:01.10" is the 10th cell of the first battery, but from my testing it actually means cell 16. There's also IDs like "ID:01.0=" and "ID:01.0?".
I believe what happens is that during the conversion to string, it overflows from 9 to the characters that follow 9 in the ASCII table, so IDs up to and including 9 are fine, but after 9 they would show up in such a "broken hexadecimal" way:
"ID:01.0:" is cell 10,
"ID:01.0;" is cell 11,
"ID:01.0<" is cell 12,
"ID:01.0=" is cell 13,
"ID:01.0>" is cell 14,
"ID:01.0?" is cell 15,
"ID:01.10" is cell 16.
- DVCC in Cerbo settings will be forced enabled with Pylontech protocol, but not with Victron protocol, so I enabled DVCC manually after confirming the inverter parameters on the BMS side are correct.
I hope someone finds all of this helpful.