I have just come across some learns for a Shaw Direct Motorola DSR satellite where the checksum is the complement of what we were expecting.
https://www.hifi-remote.com/forums/dload ... e_id=10013
I think the best way to handle this is to introduce a seeding value, which could be decoded by DecodeIR as a sub-device (the "unit code" is currently the device code). It would work like this, DecodeIR should calculate the 4-bit checksum as it currently does, then if the checksum in the signal is different, it should determine what 4-bit value needs to be XOR'd with the calculated checksum to come up with the found checksum, then this 4-bit value should be presented (in lsb decimal) as the sub-device code.
In RM, a new sub-device box would need to be added, then the GI2 CmdTranslator routine would need to be modified to use this value as a seed in the checksum calculation for the official version.
I have modified the hacked executor to expect the seed as the 5th fixed byte, so it would simply need to be passed into the executor.
New 4DTV PB file:
https://www.hifi-remote.com/forums/dload ... e_id=10014
I have put together a protocols.ini entry for this:
Code: Select all
[GI 4DTV Hacked2]
PID=00 A4
VariantName=hacked.S3C80
FixedData=C6 3D A5 EF 00
DevParms=Unit Code:2=0,Sub-Device:4=0
DeviceTranslator=Translator(lsb,1,4,32)
CmdTranslator=Translator(lsb,0,6) TranslatorFromDev(lsb,0,2,6)
CmdParms=OBC:6=0
Notes=hacked version (with seeding byte)
Code.S3C80=3D 91 51 8B 12 F5 45 04 08 01 F4 05 C8 01 F4 01 E0 C3 3C 09 C4 03 D4 08 07 1C 04 28 08 87 31 02 4C 02 F0 C3 C0 C2 FB 02 B2 03 4A F6 1A EF 09 03 8D 01 46