I modified the ert.c code slightly (diffs against e310efe; see below) to add in more debugging and also to make the output consistent wrt rtlamr (I think the ert-type processing is incorrect in rtl_433)
I ran rtlamr and rtl_433 side by side against rtlmux so they are working on identical bytestreams and I noticed a lot of DECODE_ABORT_LENGTH (I live in a suburb of Boston and there are a lot of meters chirping regularly). Curiously, one a single meter id appears in the rtl_433 output. I will do some further experiments and report back if anything interesting comes up.
regards,
pjjH
phrrngtn@sdrpi:~/work/rtl_433/build $ git diff
diff --git a/src/devices/ert.c b/src/devices/ert.c
index 3d11ffe..fffc0b1 100644
--- a/src/devices/ert.c
+++ b/src/devices/ert.c
@@ -54,18 +54,27 @@ static int ert_decode(r_device *decoder, bitbuffer_t *bitbuffer)
data_t *data;
if (bitbuffer->bits_per_row[0] != 96)
+ {
+ fprintf(stderr, "DECODE_ABORT_LENGTH %d\n", bitbuffer->bits_per_row[0]);
return DECODE_ABORT_LENGTH;
+ }
+
b = bitbuffer->bb[0];
if (crc16(&b[2], 10, 0x6F63, 0))
+ {
+
+ fprintf(stderr, "ERT failed checksum\n");
return DECODE_FAIL_MIC;
+ }
+
/* Instead of detecting the preamble we rely on the
* CRC and extract the parameters from the back */
/* Extract parameters */
physical_tamper = (b[3]&0xC0) >> 6;
- ert_type = (b[3]&0x60) >> 2;
+ ert_type = (b[3]&0x36) >> 2;
encoder_tamper = b[3]&0x03;
consumption_data = (b[4]<<16) | (b[5]<<8) | b[6];
ert_id = ((b[2]&0x06)<<23) | (b[7]<<16) | (b[8]<<8) | b[9];