Hi Guys. I'm using Ubuntu 20.04 with lirc 0.10.1-6.1 and I'm using serial receiver. If I hold a button the lirc dosen't get the repeat code. The Lirc output with error:
lircd-0.10.1[38513]: Trace: writing to client 0: 0000000020dfd22d 00 KEY_DOWN CCE lircd-0.10.1[38513]: Trace2: pending pulse: 0 lircd-0.10.1[38513]: Trace2: pending space: 0 lircd-0.10.1[38513]: Trace: trying "CCE" remote lircd-0.10.1[38513]: Trace2: pending pulse: 0 lircd-0.10.1[38513]: Trace2: pending space: 0 lircd-0.10.1[38513]: Trace2: <s39840 lircd-0.10.1[38513]: Trace: sync lircd-0.10.1[38513]: Trace2: expecting pulse: 9078 lircd-0.10.1[38513]: Trace2: +p9089 lircd-0.10.1[38513]: Trace2: pending space: 2169 lircd-0.10.1[38513]: Trace2: expecting pulse: 638 lircd-0.10.1[38513]: Trace2: +s2166 lircd-0.10.1[38513]: Trace2: pending space: 0 lircd-0.10.1[38513]: Trace2: timeout: 100000 lircd-0.10.1[38513]: Trace: no repeat
I fix it just by changing MIN_RECEIVE_TIMEOUT to 125000. I got this timeout number from mode2 output, I don't know why mode2 has a different timeout from lirc.
diff -ru lirc-0.10.1.orig/lib/lirc/receive.h lirc-0.10.1/lib/lirc/receive.h --- lirc-0.10.1.orig/lib/lirc/receive.h 2020-04-21 21:12:20.576268751 -0300 +++ lirc-0.10.1/lib/lirc/receive.h 2020-04-21 21:58:20.975826444 -0300 @@ -32,7 +32,7 @@ /** Min value returned by receive_timeout. */ -#define MIN_RECEIVE_TIMEOUT 100000 +#define MIN_RECEIVE_TIMEOUT 125000
Then:
lircd-0.10.1[61282]: Trace: writing to client 0: 0000000020dfd22d 00 KEY_DOWN CCE lircd-0.10.1[61282]: Trace2: pending pulse: 0 lircd-0.10.1[61282]: Trace2: pending space: 0 lircd-0.10.1[61282]: Trace: trying "CCE" remote lircd-0.10.1[61282]: Trace2: pending pulse: 0 lircd-0.10.1[61282]: Trace2: pending space: 0 lircd-0.10.1[61282]: Trace2: <s39859 lircd-0.10.1[61282]: Trace: sync lircd-0.10.1[61282]: Trace2: expecting pulse: 9078 lircd-0.10.1[61282]: Trace2: +p9066 lircd-0.10.1[61282]: Trace2: pending space: 2169 lircd-0.10.1[61282]: Trace2: expecting pulse: 638 lircd-0.10.1[61282]: Trace2: +s2171 lircd-0.10.1[61282]: Trace2: pending space: 0 lircd-0.10.1[61282]: Trace2: +p652 lircd-0.10.1[61282]: Trace1: sum: 11889 lircd-0.10.1[61282]: Trace2: +s96086 lircd-0.10.1[61282]: Trace2: unget: 1 lircd-0.10.1[61282]: Trace: found: KEY_DOWN lircd-0.10.1[61282]: Trace: 5638cbb548b0 5638cbb548b0 5638cbb548b0 1 1 0 0 1 1 1 lircd-0.10.1[61282]: Trace: release_gap: 223489 lircd-0.10.1[61282]: Trace: writing to client 0: 0000000020dfd22d 01 KEY_DOWN CCE
The mode2 output for this repeat code:
pulse 650 -> ptrail space 39833 -> gap pulse 9091 -> prepeat space 2160 -> srepeat pulse 654 -> ptrail space 96057 -> gap pulse 9087 -> prepeat space 2162 -> srepeat pulse 651 -> ptrail space 96058 -> gap pulse 9091 -> prepeat space 2160 -> srepeat pulse 654 -> ptrail timeout 125000
The repeat code gap is 96057. That is lower than 100000. I don't know why I got timeout from lirc.
My controller config:
name CCE bits 32 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 250 header 9078 4417 one 641 1608 zero 641 481 ptrail 638 repeat 9078 2169 gap 107963 toggle_bit_mask 0x0