mk2vsc

Victron VEConfigure .rvms and .rvsc configuration files without VEConfigure: format, checksum, settings table, editor.

View the Project on GitHub kylehart/mk2vsc

The fixture corpus

fixtures/ holds every distinct .rvms file we collected while operating four inverter systems between June and September 2026: 92 unique files (duplicates by SHA-256 were dropped). Every test in tests/ runs against these files, and fixtures/manifest.json records what each one is.

Where the files come from

Four two-inverter, split-phase MultiPlus systems, each with its own battery. They are referred to as System A to D throughout this repository; the letters are public aliases, not the systems’ names. Inverter serials in the files are pseudonyms of the same shape as real ones (HQ0000A0001 = System A, first inverter): the 11 serial bytes in each block were replaced and the section checksums recomputed; every other byte is as downloaded. The two deliberately broken negatives keep their broken checksums.

system inverters
System A HQ0000A0001, HQ0000A0002
System B HQ0000B0001, HQ0000B0002
System C HQ0000C0001, HQ0000C0002
System D HQ0000D0001, HQ0000D0002

All eight inverters run firmware 2729560 (shown as “v560” in VRM) and every file carries format version 1.33 in its Mk2vscInfo section. That is the whole range of hardware and software the corpus covers; see CONTRIBUTING.md for what we would like to add.

Classification

Each file name encodes four facts, all derived from the bytes rather than from where the file was found:

origin

state

form

date is the newest save timestamp found inside the file (block offset +0x4f, unix time, UTC), so it is the day the device or the GUI last saved the configuration, not the day the file was copied. The 2026-09-02 post-service download therefore appears as 2026-09-03 because the save happened after midnight UTC.

The original file names were dropped. VRM names downloads after the installation’s portal ID, which identifies a specific VRM site and has no place in a public corpus. The manifest keeps the SHA-256 of each file so a copy found elsewhere can still be matched.

Negative controls

Three files are malformed on purpose and are listed in KNOWN_BAD in tests/conftest.py. The tests assert that they fail, and how:

file defect what it taught us
system_a/system_a_2026-06-18_experiment_bare_deviceform_1.rvms both unit checksums left stale after editing two bytes the device checks the trailer; an edited file needs the checksum recomputed
system_a/system_a_2026-07-21_prepared_ess_uploadform_1.rvms an upload-form block from another system grafted into a device-form file; the pointer chain is broken forms cannot be mixed; block offsets shift by ten after +0x45
system_c/system_c_2026-07-20_prepared_ess_deviceform_1.rvms the last section’s pointer lands inside the file rejected by the device as mk2vsc-49; the pointer must equal the file length

Keep them. A parser that accepts these is wrong.

Files worth reading

Regenerating the table

examples/gen_fixture_table.py prints the table below from the manifest. Re-run it after adding a fixture and paste the output here.

file bytes state form origin inverters (block length, flag)
system_a/system_a_2026-06-18_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000A0002 (484, f5), HQ0000A0001 (482, f4)
system_a/system_a_2026-06-18_experiment_bare_deviceform_1.rvms 5055 bare deviceform experiment HQ0000A0002 (484, f5), HQ0000A0001 (482, f4)
system_a/system_a_2026-06-19_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-07-13_prepared_half-ess_uploadform_1.rvms 6182 half-ess uploadform prepared HQ0000A0001 (484, f4), HQ0000A0002 (1609, e4)
system_a/system_a_2026-07-13_prepared_half-ess_uploadform_2.rvms 6182 half-ess uploadform prepared HQ0000B0001 (484, f5), HQ0000B0002 (1609, e4)
system_a/system_a_2026-07-20_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-07-20_download_bare_deviceform_2.rvms 5055 bare deviceform download HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-07-20_download_bare_deviceform_3.rvms 5055 bare deviceform download HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-07-20_prepared_bare_deviceform_1.rvms 5055 bare deviceform prepared HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-07-21_prepared_ess_uploadform_1.rvms 6877 ess uploadform prepared HQ0000A0002 (1177, e5), HQ0000A0001 (1611, e4)
system_a/system_a_2026-08-12_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000A0002 (484, f5), HQ0000A0001 (482, f4)
system_a/system_a_2026-08-12_download_bare_deviceform_2.rvms 5055 bare deviceform download HQ0000A0002 (484, f5), HQ0000A0001 (482, f4)
system_a/system_a_2026-08-12_download_bare_deviceform_3.rvms 5055 bare deviceform download HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-08-12_download_bare_deviceform_4.rvms 5055 bare deviceform download HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-08-12_download_stub_deviceform_1.rvms 5183 stub deviceform download HQ0000A0002 (548, e5), HQ0000A0001 (546, e4)
system_a/system_a_2026-08-12_download_stub_deviceform_2.rvms 5183 stub deviceform download HQ0000A0001 (548, e4), HQ0000A0002 (546, e5)
system_a/system_a_2026-08-12_prepared_ess_deviceform_1.rvms 7049 ess deviceform prepared HQ0000A0002 (1257, e5), HQ0000A0001 (1703, e4)
system_a/system_a_2026-08-12_prepared_ess_deviceform_2.rvms 7049 ess deviceform prepared HQ0000A0001 (1705, e4), HQ0000A0002 (1255, e5)
system_a/system_a_2026-08-12_prepared_ess_deviceform_3.rvms 7049 ess deviceform prepared HQ0000A0001 (1705, e4), HQ0000A0002 (1255, e5)
system_a/system_a_2026-08-13_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000A0002 (1257, e5), HQ0000A0001 (1703, e4)
system_a/system_a_2026-08-13_download_ess_deviceform_2.rvms 7049 ess deviceform download HQ0000A0002 (1257, e5), HQ0000A0001 (1703, e4)
system_a/system_a_2026-08-13_download_ess_deviceform_3.rvms 7049 ess deviceform download HQ0000A0001 (1705, e4), HQ0000A0002 (1255, e5)
system_a/system_a_2026-08-13_download_ess_deviceform_4.rvms 7049 ess deviceform download HQ0000A0002 (1257, e5), HQ0000A0001 (1703, e4)
system_a/system_a_2026-08-13_download_ess_deviceform_5.rvms 7049 ess deviceform download HQ0000A0001 (1705, e4), HQ0000A0002 (1255, e5)
system_a/system_a_2026-08-13_download_ess_deviceform_6.rvms 7049 ess deviceform download HQ0000A0001 (1705, e4), HQ0000A0002 (1255, e5)
system_a/system_a_2026-08-13_download_ess_deviceform_7.rvms 7049 ess deviceform download HQ0000A0002 (1257, e5), HQ0000A0001 (1703, e4)
system_a/system_a_2026-08-13_prepared_bare_deviceform_1.rvms 5055 bare deviceform prepared HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-08-13_prepared_ess_deviceform_1.rvms 7049 ess deviceform prepared HQ0000A0001 (1705, e4), HQ0000A0002 (1255, e5)
system_a/system_a_2026-08-13_prepared_ess_deviceform_2.rvms 7049 ess deviceform prepared HQ0000A0001 (1705, e4), HQ0000A0002 (1255, e5)
system_a/system_a_2026-08-13_prepared_ess_uploadform_1.rvms 6877 ess uploadform prepared HQ0000A0001 (1611, e4), HQ0000A0002 (1177, e5)
system_a/system_a_2026-08-14_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000A0001 (1705, e4), HQ0000A0002 (1255, e5)
system_a/system_a_2026-08-14_prepared_bare_deviceform_1.rvms 5055 bare deviceform prepared HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-08-14_prepared_bare_deviceform_2.rvms 5055 bare deviceform prepared HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-08-19_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000A0001 (484, f4), HQ0000A0002 (482, f5)
system_a/system_a_2026-09-03_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000A0002 (1257, e5), HQ0000A0001 (1703, e4)
system_b/system_b_2026-06-08_download_bare_deviceform_1.rvms 5067 bare deviceform download HQ0000B0002 (490, f4), HQ0000B0001 (488, f5)
system_b/system_b_2026-06-08_download_bare_deviceform_2.rvms 5067 bare deviceform download HQ0000B0002 (490, f4), HQ0000B0001 (488, f5)
system_b/system_b_2026-06-18_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000B0001 (484, f5), HQ0000B0002 (482, f4)
system_b/system_b_2026-07-20_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000B0001 (484, f5), HQ0000B0002 (482, f4)
system_b/system_b_2026-07-20_download_bare_deviceform_2.rvms 5055 bare deviceform download HQ0000B0001 (484, f5), HQ0000B0002 (482, f4)
system_b/system_b_2026-07-20_download_bare_deviceform_3.rvms 5055 bare deviceform download HQ0000B0002 (484, f4), HQ0000B0001 (482, f5)
system_b/system_b_2026-07-20_prepared_bare_deviceform_1.rvms 5055 bare deviceform prepared HQ0000B0001 (484, f5), HQ0000B0002 (482, f4)
system_b/system_b_2026-07-20_prepared_half-ess_deviceform_1.rvms 7497 half-ess deviceform prepared HQ0000B0002 (1705, e4), HQ0000B0001 (1703, e4)
system_b/system_b_2026-07-21_prepared_ess_uploadform_1.rvms 6877 ess uploadform prepared HQ0000B0001 (1179, e5), HQ0000B0002 (1609, e4)
system_b/system_b_2026-07-24_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000B0001 (484, f5), HQ0000B0002 (482, f4)
system_b/system_b_2026-07-24_download_bare_deviceform_2.rvms 5055 bare deviceform download HQ0000B0001 (484, f5), HQ0000B0002 (482, f4)
system_b/system_b_2026-07-24_download_bare_deviceform_3.rvms 5055 bare deviceform download HQ0000B0002 (484, f4), HQ0000B0001 (482, f5)
system_b/system_b_2026-07-24_download_stub_deviceform_1.rvms 5183 stub deviceform download HQ0000B0001 (548, e5), HQ0000B0002 (546, e4)
system_b/system_b_2026-07-24_prepared_ess_deviceform_1.rvms 7049 ess deviceform prepared HQ0000B0001 (1257, e5), HQ0000B0002 (1703, e4)
system_b/system_b_2026-07-24_prepared_ess_deviceform_2.rvms 7049 ess deviceform prepared HQ0000B0001 (1257, e5), HQ0000B0002 (1703, e4)
system_b/system_b_2026-08-12_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000B0002 (1705, e4), HQ0000B0001 (1255, e5)
system_c/system_c_2026-06-18_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000C0001 (484, f4), HQ0000C0002 (482, f5)
system_c/system_c_2026-06-23_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000C0002 (484, f5), HQ0000C0001 (482, f4)
system_c/system_c_2026-07-13_gui-export_half-ess_uploadform_1.rvms 6182 half-ess uploadform gui-export HQ0000C0002 (484, f5), HQ0000C0001 (1609, e4)
system_c/system_c_2026-07-17_download_half-ess_deviceform_1.rvms 6276 half-ess deviceform download HQ0000C0002 (484, f5), HQ0000C0001 (1703, e4)
system_c/system_c_2026-07-20_download_half-ess_deviceform_1.rvms 6276 half-ess deviceform download HQ0000C0001 (1705, e4), HQ0000C0002 (482, f5)
system_c/system_c_2026-07-20_download_half-ess_deviceform_2.rvms 6276 half-ess deviceform download HQ0000C0001 (1705, e4), HQ0000C0002 (482, f5)
system_c/system_c_2026-07-20_download_half-ess_deviceform_3.rvms 6276 half-ess deviceform download HQ0000C0002 (484, f5), HQ0000C0001 (1703, e4)
system_c/system_c_2026-07-20_download_half-ess_deviceform_4.rvms 6276 half-ess deviceform download HQ0000C0001 (1705, e4), HQ0000C0002 (482, f5)
system_c/system_c_2026-07-20_download_half-ess_deviceform_5.rvms 6276 half-ess deviceform download HQ0000C0002 (484, f5), HQ0000C0001 (1703, e4)
system_c/system_c_2026-07-20_download_half-ess_deviceform_6.rvms 6276 half-ess deviceform download HQ0000C0001 (1705, e4), HQ0000C0002 (482, f5)
system_c/system_c_2026-07-20_prepared_ess_deviceform_1.rvms 7495 ess deviceform prepared HQ0000C0002 (1703, e4), HQ0000C0001 (1703, e4)
system_c/system_c_2026-07-20_prepared_half-ess_deviceform_1.rvms 6276 half-ess deviceform prepared HQ0000C0001 (1705, e4), HQ0000C0002 (482, f5)
system_c/system_c_2026-07-20_prepared_half-ess_deviceform_2.rvms 6276 half-ess deviceform prepared HQ0000C0001 (1705, e4), HQ0000C0002 (482, f5)
system_c/system_c_2026-07-20_prepared_half-ess_deviceform_3.rvms 7497 half-ess deviceform prepared HQ0000C0002 (1705, e4), HQ0000C0001 (1703, e4)
system_c/system_c_2026-07-20_prepared_half-ess_deviceform_4.rvms 5055 half-ess deviceform prepared HQ0000C0001 (484, e4), HQ0000C0002 (482, f5)
system_c/system_c_2026-07-21_gui-export_ess_uploadform_1.rvms 6877 ess uploadform gui-export HQ0000C0001 (1611, e4), HQ0000C0002 (1177, e5)
system_c/system_c_2026-07-24_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000C0002 (1257, e5), HQ0000C0001 (1703, e4)
system_d/system_d_2026-06-18_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000D0002 (484, f4), HQ0000D0001 (482, f5)
system_d/system_d_2026-07-20_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000D0001 (484, f5), HQ0000D0002 (482, f4)
system_d/system_d_2026-07-20_download_bare_deviceform_2.rvms 5055 bare deviceform download HQ0000D0001 (484, f5), HQ0000D0002 (482, f4)
system_d/system_d_2026-07-20_download_bare_deviceform_3.rvms 5055 bare deviceform download HQ0000D0001 (484, f5), HQ0000D0002 (482, f4)
system_d/system_d_2026-07-20_download_bare_deviceform_4.rvms 5055 bare deviceform download HQ0000D0001 (484, f5), HQ0000D0002 (482, f4)
system_d/system_d_2026-07-20_prepared_bare_deviceform_1.rvms 5055 bare deviceform prepared HQ0000D0001 (484, f5), HQ0000D0002 (482, f4)
system_d/system_d_2026-07-23_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000D0002 (484, f4), HQ0000D0001 (482, f5)
system_d/system_d_2026-07-23_prepared_bare_deviceform_1.rvms 5055 bare deviceform prepared HQ0000D0002 (484, f4), HQ0000D0001 (482, f5)
system_d/system_d_2026-08-12_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000D0001 (484, f5), HQ0000D0002 (482, f4)
system_d/system_d_2026-08-12_prepared_ess_deviceform_1.rvms 7049 ess deviceform prepared HQ0000D0001 (1257, e5), HQ0000D0002 (1703, e4)
system_d/system_d_2026-08-13_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000D0002 (484, f4), HQ0000D0001 (482, f5)
system_d/system_d_2026-08-13_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000D0001 (1257, e5), HQ0000D0002 (1703, e4)
system_d/system_d_2026-08-13_prepared_ess_deviceform_1.rvms 7049 ess deviceform prepared HQ0000D0002 (1705, e4), HQ0000D0001 (1255, e5)
system_d/system_d_2026-08-14_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000D0001 (1257, e5), HQ0000D0002 (1703, e4)
system_d/system_d_2026-08-14_prepared_bare_deviceform_1.rvms 5055 bare deviceform prepared HQ0000D0002 (484, f4), HQ0000D0001 (482, f5)
system_d/system_d_2026-08-14_prepared_bare_deviceform_2.rvms 5055 bare deviceform prepared HQ0000D0001 (484, f5), HQ0000D0002 (482, f4)
system_d/system_d_2026-09-04_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000D0002 (1705, e4), HQ0000D0001 (1255, e5)
system_d/system_d_2026-09-04_prepared_bare_uploadform_1.rvms 5079 bare uploadform prepared HQ0000D0002 (496, f4), HQ0000D0001 (494, f5)
system_d/system_d_2026-09-04_download_bare_deviceform_1.rvms 5055 bare deviceform download HQ0000D0001 (484, f5), HQ0000D0002 (482, f4)
system_d/system_d_2026-09-04_download_ess_deviceform_2.rvms 7049 ess deviceform download HQ0000D0001 (1257, e5), HQ0000D0002 (1703, e4)
system_b/system_b_2026-09-04_download_ess_deviceform_1.rvms 7049 ess deviceform download HQ0000B0002 (1705, e4), HQ0000B0001 (1255, e5)
system_b/system_b_2026-09-04_download_ess_deviceform_2.rvms 7049 ess deviceform download HQ0000B0002 (1705, e4), HQ0000B0001 (1255, e5)
system_b/system_b_2026-09-04_download_ess_deviceform_3.rvms 7049 ess deviceform download HQ0000B0001 (1257, e5), HQ0000B0002 (1703, e4)
system_b/system_b_2026-09-04_prepared_ess_deviceform_1.rvms 7049 ess deviceform prepared HQ0000B0002 (1705, e4), HQ0000B0001 (1255, e5)