• Have you tried out dark mode?! Scroll to the bottom of any page to find a sun or moon icon to turn dark mode on or off!

diy solar

diy solar

JK BMS V19 (19.10 firmware) UART 2 not correct on slave.

Fer_DK

Solar addict... 23,6kWp 66kWh
Joined
Jun 30, 2025
Messages
38
Location
Denmark
Hello

I have just build my last battery (for now). In total i have 4, in Yixiang V.2 enclosures, with JK inverter BMS V.19. I have updated to firmware 19.10, The first tree went fine, and communication was working from start. Today i had so many problems with the fourth pack. First it interrupted all the communication on the RS485-2 ports. After fidelling a lot with it changed cables and so on, I saw that UART 2 ( The one that is chosen by the bms it self) was set to 1 JK BMS 485 on the 2 slaves that worked but on battery 4 (adress 3) it was set to the 4g protocol. Then I set UART 1 to protocol 1 JK BMS 485 and connected Battery 4 (adress 3) RS485 -1 to Battery 3 (adress 2) RS485-2. The made the pack work! Not the intended connection, but it confirmed my theory about UART 2 protocol being wrong)

Any ideas?

Regards Tommy
 
I have seen this. It does not seem to carry any solution to my problem. I have 2 packs that works as intended, and one not working correctly. You are not able to manually select protocol for UART 2. Why does the BMS not select the correct one?
 
I have seen this. It does not seem to carry any solution to my problem. I have 2 packs that works as intended, and one not working correctly. You are not able to manually select protocol for UART 2. Why does the BMS not select the correct one?
Andy's video implies that you only need to change RS485-1 port to 001-JK BMS RS485 ModBus V1.0 to get full status access on master BMS with address 0 assignment and change PC RS485 cable to RS485-1 RJ45 jack on left side.

On v15 BMS with 15.41 fw, the RS485-2 port protocol option is greyed out with setting of 001-JK BMS RS485 ModBus V1.0. You cannot change RS485-2 port protocol in either the PC app or BT phone App.

Strange thing on V15 with fw15.41 is when you first bring up setup screen, RS485-1 port also shows 001-JK BMS RS485 ModBus V1.0 and it is not greyed out, but if you just hit send on PC app it responds with an error message. It is not actually set to 001-JK BMS RS485 ModBus V1.0 on default. I believe no protocol is actually assigned on RS485-1 until you select it.

V15 also will not allow you to set RS485-1 port to protocol 001-JK BMS RS485 ModBus V1.0. This is different than Andy's video starting at timestamp 8:25 for v19 when BMS is set to address 0 as the master BMS. I noticed in Andy's video that v19 fw has a couple of new protocols. UART2 protocol is now assigned to 016 instead of v15's 001-JK BMS RS485 ModBus V1.0. It also shows a new UART3 port assigned with protocol 015 which I assume to be the new v19 display UART port.

Pure guess on my part, but it may only allow one physical port to be assigned a particular protocol # because that also assigns the data routing to that port for that protocol. On v19 that is likely the reason for the new protocol numbers. Likely 001 and 016 are identical protocols just different port routing assignments.

You did not mention if one of your four BMS's (which you imply are all v19) is set to address 0 which is a master.

You also did not mention if you uploaded new revision v19.10 firmware and which port you used if you did that.

The seven v15 BMS's I bought directly from JK store all came with dip switches set to address 0, so I assumed you changed their address setting on your four v19's. Double check that two of them do not have address 0 as two masters will likely cause conflicts.

Andy's video brings up two questions he did not address. One is what happens if your inverter uses RS485 protocol for BMS communications and you change RS485-1 protocol setting for PC app communications of address 0 BMS like he did in video. I assume it screws up BMS comm with inverter. Second thing he did not do is update a fw revision with the RS485-1 port reassignment to PC app. Doing that would make me nervous for the first attempt.

I am not sure why the change to RS485-1 port for master address 0 assigned BMS, but I am guessing it was to prevent the problem of folks trying to update new fw to UART2 common BMS bus causing bricking of unit when attempting to update fw. You had to be sure to disconnect all other BMS's when doing a fw update to common UART2 RS485 001-JK BMS RS485 ModBus V1.0 port.
 
Last edited:

UART2 configuration

In the last software version only two protocols are available:

  • 001 - JK BMS RS485 Modbus V1.0
  • 015 - UART Protocol 015

UART2 usage

If Device Address is set to 0x00 (by the switches) then UART2 protocol is set to 015 and the master mode of the JK BMS RS485 Modbus V1.0 protocol is set.

So on master, when ID 0 => UART 015
On Slaves UART 2 must be 001 protocol. (use BT app).

For firmware updates, I always use
- RS485 on UART 1 for master (protocol 001)
- RS485-1 on UART 2 for slaves (to use this port, I have to disconnect from the other BMSs)
 

UART2 configuration

In the last software version only two protocols are available:

  • 001 - JK BMS RS485 Modbus V1.0
  • 015 - UART Protocol 015

UART2 usage

If Device Address is set to 0x00 (by the switches) then UART2 protocol is set to 015 and the master mode of the JK BMS RS485 Modbus V1.0 protocol is set.

So on master, when ID 0 => UART 015
On Slaves UART 2 must be 001 protocol. (use BT app).

For firmware updates, I always use
- RS485 on UART 1 for master (protocol 001)
- RS485-1 on UART 2 for slaves (to use this port, I have to disconnect from the other BMSs)

From video, looks like UART2 (right most RJ45 pair normally used for PC comm and comm between BMS's) goes to protocol 016 UARYZERO Inverter_Modbus when ID is set to zero.

He switches PC cable over to UART1 (left most RJ45 normally used for inverter comm) and sets UART1 protocol to 001 JK BMS RS485 Modbus V1.0 to allow UART1 to communicate with PC.

When not on ID 0, I believe UART2 is set to 001 JK BMS RS485 Modbus V1.0 and is greyed out, not allowing user to change its setting.

UART protocol 015-JK BMS PBxx SERIES LCD Protocol is for UART3 going to the new LCD display module.

Start watching video at timestamp 8:00.

At timestamp 8:47 he makes the UART1 protocol settings change to 001 JK BMS RS485 Modbus V1.0. Look at UART2 port setting when he makes the UART1 change. It has changed from original greyed out 001 JK BMS RS485 Modbus V1.0 setting to 016 UARYZERO Inverter_Modbus. I am guessing this happened when ID was set to 0. If not set to ID 0 it will not take the change of UART1 to 001 JK BMS RS485 Modbus V1.0 likely because UART2 has that assignment when not on ID 0.

You might need the latest phone app version JK-BMS_Android App 5.2.3.apk to show UART3 which is new addition for new LCD display interconnect on V19 BMS.

1754659957723.png 1754659682326.png

UART1_V19.10_Modbus_20250805-102229_BMS.jpg UART1 RS485 protocol options 1 on v15.41 BMS.png
_____________V19 additions__________________________________v15.41 lower numbers still used__________________________
 
Last edited:
I previously wondered how there was not a ModBus multiple master conflict when you had ID set to 0 and master BMS sending out master ModBus commands to slave BMS's to query their data reports while you have a connected PC, also to UART2 port sending out ModBus master commands querying BMS's.

I am sure there was crashes on the ModBus due to this.

This mutated switching of PC comm over to UART1 port was likely to solve this ModBus multiple masters collisions.
 
I have the same problem with the UART 2 settings.

JKBMS V19 with Firmware V19.10
PC SW 3.2.0 @ RS485-1

Good BMS at ID0000(Master)
1755707340808.png

Good BMS at ID0001(Slave)
1755707374351.png


Bad BMS at ID0000(Master)
1755707328285.png


Bad BMS at ID0001(Slave)
1755707305945.png

As you can see the "broken" BMS shows in slave mode the wrong protocol and cant be operated as slave.
In master mode the protocol seems ok and the BMS can be used as Master

Seem like a firmware BUG.

On the PC Software and Android App the settings of UART 2 are greyed out and can not be changed by user.
Any ideas? Is there any way to do some kind of "factory" reset?

Things I tried:
- Downgrading FW to 19.05 and back to 19.10
 
Yes, connecting the UART1 from the "broken" BMS(slave mode ID0001) to an UART 2 (BMS in Master mode ID0000) will work.

But is there any possibility to get UART 2 working ?
 
no connection from uart 1 to uart 2!
The connections between batteries is only on uart2.
 

Attachments

  • IMG_0151.jpeg
    IMG_0151.jpeg
    490.5 KB · Views: 49
  • IMG_0152.jpeg
    IMG_0152.jpeg
    496.5 KB · Views: 45
no connection from uart 1 to uart 2!
The connections between batteries is only on uart2.
Yes I know. But since the UART 2 is broken due to faulty config on slave this is the only possibility to get it temporary working.


Working,Master(Top Unit) shows slave

1755718492548.png


Not Working, Master didn't show slave.
1755718528808.png
 
Hi could u solve this as i have the same problem i have 4 batterys with v15 bms and i build another battery but could only get v19 bms when adding the v19 bms as n slave its not communicating with the other batteries if i make the v19 the master and i add the can port from the inverter then the 2 rs485 ports work correctly the only way i can get the v19 to work as n slave with the v15 is to use the rs485 port thats used for inverter communication then it communicates
 
Last edited:

UART2 configuration

In the last software version only two protocols are available:

  • 001 - JK BMS RS485 Modbus V1.0
  • 015 - UART Protocol 015
Protocols are set not selectable by BLE configuration or Modbus.

UART2 usage

If Device Address is set to 0x00 (by the switches) then UART2 protocol is set to 015 and the master mode of the JK BMS RS485 Modbus V1.0 protocol is set.

During every 15 sec. status of the master device is send to the bus, followed by data request addressed to the all 15 slaves

If Device Address is set to 1 - 15 (0x01 - 0x0F) then BMS is in the Modbus slave mode and protocol is set to 001

This is normal, UART2 is not configurable by the user!

Set the master ID 0
Set the slave ID 2
Connect UART 2-2 from the master to UART 2-1 of the slave.

Restart the BMS just to be sure if it's not working.
 

Attachments

  • 1755718492548.jpg
    1755718492548.jpg
    119.7 KB · Views: 35
Last edited:
The problem is it doesn't work with the right side rs485 ports the v19 bms right side ports only works if i have the can cable connected from the inverter if i unplug the can cable the right side rs485 ports doesnt work anymore
 
The v15 bms works fine together with my other 3 v15 bms but the v19 only works as the master with the can cable connected from the inverter
 
Thank you for clarification.

See on my 2nd photo. I already did the connection UART 2-2 from the master to UART 2-1 of the slave.
And restarted the BMS several times.


1. On the "broken" BMS. If I set it to slave ID1 and connect the PC software to UART 2-1 or UAR 2-1 then i cant make any changes to the configuration. Is detected it in parallel mode as device 0
2. If I set the "broken" BMS to ID00 (Master) and connect an other slave to UART 2-1 or UART 2-2 it its detects the other slave.

It seems that this BMS is stuck to Master mode on UART-2 nevertheless ID 00 or ID 1-15

And I am not alone:
https://diysolarforum.com/threads/jk-bms-v19-broken-parallel-comms.110148/


If have to guess what causes the problem
May I did the firmware update when the PC was connected
to UART 1 and ID was set to 00 and now the internal config is broken.
 
do not use the pc app on uart 2, only uart1!

The modbus id must be anything than 0 when using the pc app on uart1
Uart2 is for parallel mode only
 
Using the latest Bluetooth App JK-BMS_Android App 5.2.1.apk from offgrid garage.


Slave ID 01 on the "broken" unit and no other communication cables are connected for this test.
1755884410596.png




An other good unit with slave ID 02.
I have removed all communication cables connected for this test too.
1755884487168.png



The good slave shows UART 1 on protocol 1 as expected. I think this is definitely a firmware bug.
Is there any official way to contact JK for bug reporting?
 
Phone App rev 5.3.0 released 8/22/2023



APP下载

安卓APP
苹果APP

JK BMS(Google Play)
First one is Android download.
Second is Mac download.
Third is from Goggle play store but usually older version.

On PC it will download .apk file to your download folder. (25.3 MBytes)

Usually have to do BT pairing again with phone when you first open a new rev of App with pairing pin of 123456 or 1234.
 
Last edited:
@RCinFLA Thank you for providing the newer App version.
I have installed now App 5.3.0 on my Android phone


The broken unit with slave ID 01, UART2 is set to the wrong protocol

1755921941749.png


Other unit with slave ID 02 is working flawless
1755922038956.png


Seems that in the newer App revision they added description for protocol 017 as "RS485 Protocol 17".
And all BMS have the same firmware V19.10.
But UART2 setting is still wrong on slave Unit with ID 01.
 
@RCinFLA Thank you for providing the newer App version.
I have installed now App 5.3.0 on my Android phone


The broken unit with slave ID 01, UART2 is set to the wrong protocol

View attachment 323645


Other unit with slave ID 02 is working flawless
View attachment 323646


Seems that in the newer App revision they added description for protocol 017 as "RS485 Protocol 17".
And all BMS have the same firmware V19.10.
But UART2 setting is still wrong on slave Unit with ID 01.
Mine is also on protocol 17 and it doesnt work as a slave only way i can get it to work now is with the rs485 port next to the can port
 
I believe there is an interaction between the sequence of setting the ports' protocol that gets you into this situation. It is greying out or changing port assignment options based on you making changes to other ports.

To get back out you have to reverse the accidental ports' protocol assignment sequences you did which can be difficult to backtrack out of correctly.

Sort of like solving a Rubix cube. Start by knowing what was a new v19.10 install default settings for the ports are. Keep an eye on both UART1 and UART2 protocol assignments as you make changes.

When it rejects a setting, it does not always let you know by reverting back to showing the previous state in the display unless you disconnect and reconnect to BMS.
 
Last edited:
Hello everyone,

1. BUG v19 - I have the same problem as described above by some here. I had 5x delong hs51200 with pace-bms and changed all 5 to the new jk-bms v19. All are working great, but one is not showing up in parallel mode (actually slave 1, after 0 the master)! But this does not seem to affect the functionality. From my point of view, exactly as already reported here, all working bms have been set to uart2 protocol 001, only the one that doesn't work has some other protocol, which as you know cannot be changed or tricked manually.

In my case, I initially wanted to use this as the master. But then I changed the design of another one so that I could use the display further away externally, so I used the modified one as the master and the old master as slave1. But even changing to a different ID does not solve the problem. Even a downgrade to all versions from v19.02 to 19.10 did not solve the problem. Cable sets, communication board replaced as I wasn't sure whether it was the protocol ... no solution. But as I can read, I'm not the only one with this problem.

2. BUG v19 - short circus Alarm with discharge disabling at startup and go into loop. Really not nice. I mention this because i‘ve read others having same problem.

3. wishes:
- since i replaced my old bms, i would like to take over my old cycle count. BUT therefore it‘s needed to edit cycle count!
- display turning off after a certain time and wakes up by touch.

It would be nice if a FW update would solve the BUGs.

Otherwise I am extremely satisfied with what the BMS does. The Pace can only dream of. Please keep up the good work! Thank you in advance.
 
Last edited:

diy solar

diy solar

diy solar
Back
Top