I have dug into the CV programming, both Ops mode and Service mode, by logging tons of transmissions and comparing them to the DCC standards.
In ops mode, the messages are fully compliant, including the error detection byte. There’s no reason that JMRI or other software couldn’t program these decoders, provided one CV is updated at a time.
In service mode, it transmits CV values in direct mode, as would be expected for the normal method of programming. A transmission looks like this:
00000000 00000000 00000000
00000000 00000000 00000000
00000000 00000000 00000000
00000000 00000000 00000000
011111AA AAAAAAAA DDDDDDDD EEEEEEEE
00000000 00000000 00000000
00000000 00000000 00000000
00000000 00000000 00000000
00000000 00000000 00000000
That’s several reset packets, the programming packet, and several more reset packets.
The letters above mean:
AAAAAAAAAA: CV number - 1 (CV1 = 0000000000, CV2 = 0000000001, etc.) [10 bits]
DDDDDDDD: Value (0-255) [8 bits]
EEEEEEEE: Error Detection (bitwise XOR of previous bytes in message)
Next step is to create a decoder file in JMRI and give it a try.
Edit: Service mode is standard compliant. I was looking at paged mode earlier.