Skip to content
Luke Tucker edited this page Feb 20, 2022 · 17 revisions

This page provides all of the information I have figured out about the serial interface. The interface supports both monitoring and control operations.

Serial interface settings

57600 8N1 | NOR

Monitoring

There are two kinds of monitoring messages received from the device. There is a "CM2024 SUP" message every second which seems to be an overall status and is used to indicate that a battery is ready to charge (and possibly other things I am yet to figure out). The second type of message is a "CM2024 DAT" which returns the status of each slot independently.

"SUP" Message

First a message like this will arrive

43 4D 32 30 32 34 20 53 55 50 (ASCII: CM2024 SUP)

Followed by another fixed length message like this:

02 00 7B 01 EE 02 0D 00 82 78 78 78 78 78 78 78
78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78
78 98 16 0D 0A

Then when a battery is inserted it will switch to something like:

01 00 7B 01 ED 02 09 00 13 00 01 01 00 02 00 00
00 3C 05 05 00 08 78 78 78 78 78 78 78 78 78 78
78 73 26 0D 0A

78 is a filler value for no data

So far I have figured out the following:

Byte Description
01 Unknown
02 Unknown
03 Unknown
04 Unknown
05 Unknown
06 Unknown
07 Unknown
08 - 09 Sequence Counter going from 0x0000 to 0x0257 (0-599) in increments of 13 - little endian
10 Slot awaiting setup (see slot table)
11 Chemistry selected (See chemistry table)
12 Program selected (See program table)
13 Selected maximum charge current (applicable for NiHM/Cd only) (see charge current table)
14 Selected discharge rate (see discharge table)
15 - 16 Selected capacity in mAh - little endian
17 SD card status (see table)
18 Cool time in minutes
19 Unknown
20 Unknown
21 Unknown
22 SD Slot status
23 Unknown
24 Unknown
25 Unknown
26 Unknown
27 Unknown
28 Unknown
29 Unknown
30 Unknown
31 Unknown
32 Unknown
33 Unknown
34 - 35 Unknown - likely a CRC16
36 - 37 Always 0D 0A - \r\n

"DAT" Message

As the SUP message, First you get this:

43 4D 32 30 32 34 20 44 41 54 (ASCII: CM2024 DAT)

Then the rest:

02 57 03 02 01 06 06 01 05 01 5F 07 39 00 3B 84
00 00 6D 77 00 00 06 00 00 00 0D 3C 00 00 01 01
01 DD 79 0D 0A
Byte Description
01 - 02 Sequence Counter going from 0x0000 to 0x0257 (0-599) and resetting (little endian)
03 Slot number (see slot table)
04 Chemistry (see chemistry table)
05 Unknown flag - either 0 or 1
06 Program state - always the same as the next value (in 06) unless the program finishes and then it's 0B
07 Program (see program table)
08 Activity Step (see activity table)
09 - 10 Time in minutes (big endian). When Ready, this will stop.
11 - 12 Voltage in units of 0.001 (big endian). e.g. 5F 07 = 1.887
13 - 14 Current in units of 0.001 (big endian). E.g. 17 02 = 0.535
15 - 18 C-CAP stored in units of 0.01 (big endian)
19 - 22 D-CAP stored in units of 0.01 (big endian). e.g. 3D 88 01 00 = 1004.13
23 Unknown
24 Unknown
25 Maximum charge current (see table)
26 Unknown
27 Unknown
28 Pause time in minutes. Windows software allows increments of 30 mins so not sure if other values supported
29 - 30 Battery capacity in mAh (big endian)
31 Discharge rate (see discharge rate table)
32 Unknown - Sometimes the same as previous value in 31 so it’s related
33 Unknown
34 - 35 Checksum - CRC-16/MODBUS calculated from bytes 02 to 33
36 - 37 Carriage return - always 0D 0A (i.e. \r\n)

Control

Control messages are send from the PC software to the device. These messages are always 13 bytes long. Not all commands use all of the bytes so any unused values are set to 00. The control messages look like this:

02 00 00 00 00 00 00 00 00 00 01 9D 69

The first byte is always the command type as follows:

Value Command
01 Start program
02 Cancel
03 Set LCD brightness
04 Release SD Card

Start Program

When the CM2024 SUP message has values in 10 to 18, the charger is indicating that it is ready to receive the start command. In the windows software, this makes the slot blue allowing you to fill out the fields. You cannot choose which slot to start, you can only start the one that the device tells you is ready in the CM2024 SUP message.

Offset Description
01 Always 01 for this command
02 Selected program (as program table, only 01 to 06) not sure what happen if you send e.g. 07
03 Selected Chemistry
04 - 05 Selected Charge capacity in mAh* (little endian)
06 Selected charge current maximum (NiHM/Cd only) as table
07 Selected discharge current (as table)
08 SD Recording on/off (as SD recording table)
09 Always 00, probably not used by command
10 Unknown - Always 01 for all commands
11 - 12 TBC - always returns a value close the what would be CRC-16/MODBUS, but is always different. Need to figure this out.

*: When setting the value in the UI, the encoded value is always a bit higher. E.g. set 20,000 and the value is 4E 6E (20,078). I'm not sure why so needs testing

Cancel

Offset Description
01 Always 02 for this command
02 Slot to cancel (see slots table)
03 - 09 Not used (00)
10 Unknown - Always 01 for all commands
11 - 12 CRC16 TBC - see start command

Set LCD brightness

Offset Description
01 Always 03 for this command
02 - 09 Not used (00)
10 Unknown - Always 01 for all commands
11 - 12 CRC16 TBC - see start command

Release SD Card

I guess this just unmounts the card

Offset Description
01 Always 04 for this command
02 - 09 Not used (00)
10 Unknown - Always 01 for all commands
11 - 12 CRC16 TBC - see start command

Common

This is a set of common enumerated values which appear in various messages.

Slot number

Value Description
00 Slot 1
01 Slot 2
02 Slot 3
03 Slot 4
04 Slot 5
05 Slot 6
06 Slot 7
07 Slot 8
08 Slot A
09 Slot B

Chemistry Values

Value Description
01 NiHM/Cd
02 NiZn

Program select / state

For selection, only up to 06 is used. The rest shows the state which could be no setup/error/complete

Value Description
00 None / slot empty
01 Recharge
02 Discharge
03 Procharge
04 Cycle
05 Alive
06 Maximize
07 No setup
08 Unknown
09 Unknown
0A Error
0B Complete

Activity Step

Value Description
00 Idle
01 Charging
02 Discharging
03 Ready
04 Unknown
05 Cool Down
06 Error

Charge current

Value Description
00 Auto (this is always used for NiZn)
01 500mA
02 1000mA
03 1500mA
04 2000mA
05 2500mA
06 3000mA

Discharge current

The values are interpreted differently depending on the chemistry

NiZn

Value Description
01 150mA
02 300mA
03 450mA
04 600mA

NiMH/Cd

Value Description
01 125mA
02 250mA
03 375mA
04 500mA
05 625mA
06 750mA

SD card state

Value Description
00 SD off
01 Unknown
02 On / Ready

SD recording state (per slot). Probably the same meaning as above

Value Description
00 off
01 Unknown
02 on

SD slot state

Value Description
00 NO CARD
01 Unknown
02 Unknown
03 Unknown
04 Unknown
05 Unknown
06 Unknown
07 Inserted
08 Ready