* Can I expect in-kernel decoding to work out of box? @ 2010-07-27 22:33 Maxim Levitsky 2010-07-27 23:32 ` Maxim Levitsky 0 siblings, 1 reply; 33+ messages in thread From: Maxim Levitsky @ 2010-07-27 22:33 UTC (permalink / raw) To: Jarod Wilson; +Cc: Jon Smirl, linux-input, Mauro Carvalho Chehab [-- Attachment #1: Type: text/plain, Size: 92525 bytes --] Hi, I ported my ene driver to in-kernel decoding. It isn't yet ready to be released, but in few days it will be. Now, knowing about wonders of in-kernel decoding, I try to use it, but it just doesn't work. Mind you that lircd works with this remote. (I attach my lircd.conf) Here is the output of mode2 for a single keypress: maxim@maxim-laptop:~$ mode2 -m 2147483 8850 4350 525 1575 525 1575 525 450 525 450 525 450 525 450 525 1575 525 450 525 1575 525 450 525 1575 525 450 525 450 525 1575 525 450 525 450 525 23625 600 1575 525 1575 525 450 525 450 525 450 525 450 525 1575 525 450 525 1575 525 450 525 1575 525 450 525 450 525 1575 525 450 525 450 525 23475 600 1575 525 1575 525 450 525 450 525 450 525 450 525 1575 525 450 525 1575 525 450 525 1575 525 450 525 450 525 1575 525 450 525 450 525 (Hardware isn't very accurate though, it shows that on all protocols). According to tests I did in the past this is NEC protocol. NEC is very popular protocol. (Remote itself is from old JVC VCR, and it also a multifunction remote) Now output from the uber-cool in-kernel decoding: "ene_ir: RX:" means sample given by hardware "IR: raw sample:" means sample given to ir_raw_event_store [ 4765.446424] ene_ir: RX: 8850 (pulse) [ 4765.446439] exit idle mode [ 4765.446451] IR: raw sample: 2147483 us (space) [ 4765.446464] IR: raw sample: 0 us (space) [ 4765.446484] ene_ir: disabling idle mode [ 4765.446514] ene_ir: RX: 4350 (space) [ 4765.446525] IR: raw sample: 8850 us (pulse) [ 4765.446545] ene_ir: RX: 525 (pulse) [ 4765.446557] IR: raw sample: 4350 us (space) [ 4765.446576] ene_ir: RX: 1575 (space) [ 4765.446588] IR: raw sample: 525 us (pulse) [ 4765.446612] ir_nec_decode: NEC decode started at state 0 (4292819813us space) [ 4765.446633] ir_nec_decode: NEC decode failed at state 0 (4292819813us space) [ 4765.446653] ir_rc5_decode: RC5(x) decode started at state 0 (4292819813us space) [ 4765.446673] ir_rc5_decode: RC5(x) decode failed at state 0 (4292819813us space) [ 4765.446694] ir_rc6_decode: RC6 decode started at state 0 (4292819813us space) [ 4765.446714] ir_rc6_decode: RC6 decode failed at state 0 (4292819813us space) [ 4765.446734] ir_jvc_decode: JVC decode started at state 0 (4292819813us space) [ 4765.446754] ir_jvc_decode: JVC decode failed at state 0 (4292819813us space) [ 4765.446774] ir_sony_decode: Sony decode started at state 0 (4292819813us space) [ 4765.446794] ir_sony_decode: Sony decode failed at state 0 (4292819813us space) [ 4765.446814] ir_lirc_decode: LIRC data transfer started (4292819813us space) [ 4765.446842] ir_nec_decode: NEC decode started at state 0 (8850us pulse) [ 4765.446862] ir_rc5_decode: RC5(x) decode started at state 0 (8850us pulse) [ 4765.446882] ir_rc5_decode: RC5(x) decode started at state 1 (7961us pulse) [ 4765.446902] ir_rc5_decode: RC5(x) decode failed at state 1 (7961us pulse) [ 4765.446922] ir_rc6_decode: RC6 decode started at state 0 (8850us pulse) [ 4765.446941] ir_rc6_decode: RC6 decode failed at state 0 (8850us pulse) [ 4765.446960] ir_jvc_decode: JVC decode started at state 0 (8850us pulse) [ 4765.446979] ir_jvc_decode: JVC decode failed at state 0 (8850us pulse) [ 4765.446998] ir_sony_decode: Sony decode started at state 0 (8850us pulse) [ 4765.447017] ir_sony_decode: Sony decode failed at state 0 (8850us pulse) [ 4765.447036] ir_lirc_decode: LIRC data transfer started (8850us pulse) [ 4765.447059] ir_nec_decode: NEC decode started at state 1 (4350us space) [ 4765.447078] ir_rc5_decode: RC5(x) decode started at state 0 (4350us space) [ 4765.447097] ir_rc5_decode: RC5(x) decode failed at state 0 (4350us space) [ 4765.447117] ir_rc6_decode: RC6 decode started at state 0 (4350us space) [ 4765.447135] ir_rc6_decode: RC6 decode failed at state 0 (4350us space) [ 4765.447153] ir_jvc_decode: JVC decode started at state 0 (4350us space) [ 4765.447172] ir_jvc_decode: JVC decode failed at state 0 (4350us space) [ 4765.447190] ir_sony_decode: Sony decode started at state 0 (4350us space) [ 4765.447209] ir_sony_decode: Sony decode failed at state 0 (4350us space) [ 4765.447228] ir_lirc_decode: LIRC data transfer started (4350us space) [ 4765.447250] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.447269] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.447288] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.447307] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.447326] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.447344] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.447362] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.447380] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.447399] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.447417] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.449591] ene_ir: RX: 525 (pulse) [ 4765.449602] IR: raw sample: 1575 us (space) [ 4765.449622] ene_ir: RX: 1575 (space) [ 4765.449633] IR: raw sample: 525 us (pulse) [ 4765.449653] ene_ir: RX: 525 (pulse) [ 4765.449664] IR: raw sample: 1575 us (space) [ 4765.449684] ene_ir: RX: 450 (space) [ 4765.449695] IR: raw sample: 525 us (pulse) [ 4765.449721] ir_nec_decode: NEC decode started at state 3 (1575us space) [ 4765.449740] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.449759] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.449778] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.449797] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.449815] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.449833] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.449852] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.449870] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.449889] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.449912] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.449930] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.449950] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.449969] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.449987] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.450005] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.450024] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.450043] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.450063] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.450081] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.450106] ir_nec_decode: NEC decode started at state 3 (1575us space) [ 4765.450125] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.450146] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.450166] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.450185] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.450204] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.450223] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.450242] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.450261] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.450280] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.450302] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.450320] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.450340] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.450358] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.450377] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.450395] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.450413] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.450431] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.450450] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.450468] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.451755] ene_ir: RX: 525 (pulse) [ 4765.451766] IR: raw sample: 450 us (space) [ 4765.451786] ene_ir: RX: 450 (space) [ 4765.451797] IR: raw sample: 525 us (pulse) [ 4765.451817] ene_ir: RX: 525 (pulse) [ 4765.451828] IR: raw sample: 450 us (space) [ 4765.451848] ene_ir: RX: 450 (space) [ 4765.451859] IR: raw sample: 525 us (pulse) [ 4765.451885] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.451904] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.451923] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.451942] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.451961] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.451979] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.451998] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.452017] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.452036] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.452058] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.452077] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.452097] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.452116] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.452135] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.452153] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.452172] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.452190] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.452209] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.452228] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.452250] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.452270] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.452289] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.452308] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.452327] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.452345] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.452364] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.452383] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.452402] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.452424] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.452443] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.452463] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.452482] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.452545] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.452565] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.452588] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.452614] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.452645] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.452664] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.454857] ene_ir: RX: 525 (pulse) [ 4765.454869] IR: raw sample: 450 us (space) [ 4765.454898] ene_ir: RX: 450 (space) [ 4765.454910] IR: raw sample: 525 us (pulse) [ 4765.454931] ene_ir: RX: 525 (pulse) [ 4765.454943] IR: raw sample: 450 us (space) [ 4765.454964] ene_ir: RX: 1575 (space) [ 4765.454976] IR: raw sample: 525 us (pulse) [ 4765.457583] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.457605] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.457627] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.457650] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.457670] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.457696] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.457721] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.457742] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.457762] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.457788] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.457808] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.457828] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.457851] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.457876] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.457900] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.457931] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.457950] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.457970] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.458026] ene_ir: RX: 525 (pulse) [ 4765.458038] IR: raw sample: 1575 us (space) [ 4765.458059] ene_ir: RX: 450 (space) [ 4765.458071] IR: raw sample: 525 us (pulse) [ 4765.458100] ene_ir: RX: 525 (pulse) [ 4765.458118] IR: raw sample: 450 us (space) [ 4765.458147] ene_ir: RX: 1575 (space) [ 4765.458166] IR: raw sample: 525 us (pulse) [ 4765.458184] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.458209] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.458228] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.458249] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.458269] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.458291] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.458313] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.458338] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.458358] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.458383] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.458408] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.458427] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.458448] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.458471] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.458492] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.458511] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.458531] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.458550] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.458571] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.458593] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.458623] ir_nec_decode: NEC decode started at state 3 (1575us space) [ 4765.458642] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.458663] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.458685] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.458712] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.458736] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.458767] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.458787] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.458808] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.458827] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.458859] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.458878] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.458898] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.458923] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.458948] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.458967] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.458986] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.459006] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.459027] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.459046] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.459071] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.459090] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.459110] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.459137] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.459156] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.459176] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.459196] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.459217] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.459240] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.459304] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.459323] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.459343] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.459363] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.459382] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.459402] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.459421] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.459440] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.459460] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.459479] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.461169] ene_ir: RX: 525 (pulse) [ 4765.461177] IR: raw sample: 1575 us (space) [ 4765.461192] ene_ir: RX: 450 (space) [ 4765.461198] IR: raw sample: 525 us (pulse) [ 4765.461213] ene_ir: RX: 525 (pulse) [ 4765.461225] IR: raw sample: 450 us (space) [ 4765.461246] ene_ir: RX: 1575 (space) [ 4765.461257] IR: raw sample: 525 us (pulse) [ 4765.461285] ir_nec_decode: NEC decode started at state 3 (1575us space) [ 4765.461294] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.461304] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.461313] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.461322] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.461330] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.461340] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.461348] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.461357] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.461367] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.461382] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.461391] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.461400] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.461409] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.461418] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.461426] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.461435] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.461444] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.461453] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.461461] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.461476] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.461485] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.461494] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.461502] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.461511] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.461520] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.461529] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.461537] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.461546] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.461557] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.461566] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.461575] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.461584] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.461593] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.461602] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.461610] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.461619] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.461628] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.461637] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.463270] ene_ir: RX: 525 (pulse) [ 4765.463277] IR: raw sample: 1575 us (space) [ 4765.463291] ene_ir: RX: 450 (space) [ 4765.463297] IR: raw sample: 525 us (pulse) [ 4765.463310] ene_ir: RX: 525 (pulse) [ 4765.463316] IR: raw sample: 450 us (space) [ 4765.463329] ene_ir: RX: 450 (space) [ 4765.463335] IR: raw sample: 525 us (pulse) [ 4765.463495] ir_nec_decode: NEC decode started at state 3 (1575us space) [ 4765.463516] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.463537] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.463558] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.463578] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.463597] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.463617] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.463636] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.463656] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.463676] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.463740] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.463760] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.463780] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.463800] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.463819] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.463838] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.463858] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.463877] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.463897] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.463917] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.463965] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.463985] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.464005] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.464025] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.464044] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.464064] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.464082] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.464103] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.464122] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.464169] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.464189] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.464209] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.464230] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.464250] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.464269] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.464293] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.464319] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.464345] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.464364] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.466444] ene_ir: RX: 525 (pulse) [ 4765.466457] IR: raw sample: 450 us (space) [ 4765.466478] ene_ir: RX: 1575 (space) [ 4765.466490] IR: raw sample: 525 us (pulse) [ 4765.466511] ene_ir: RX: 525 (pulse) [ 4765.466523] IR: raw sample: 1575 us (space) [ 4765.466547] ene_ir: RX: 450 (space) [ 4765.466559] IR: raw sample: 525 us (pulse) [ 4765.466586] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.466606] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.466629] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.466649] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.466668] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.466688] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.466707] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.466728] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.466747] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.466802] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.466821] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.466841] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.466861] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.466880] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.466899] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.466918] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.466937] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.466958] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.466977] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.467023] ir_nec_decode: NEC decode started at state 3 (1575us space) [ 4765.467043] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.467063] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.467083] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.467102] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.467121] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.467141] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.467160] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.467180] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.467199] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.467249] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.467268] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.467289] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.467310] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.467329] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.467347] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.467366] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.467385] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.467404] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.467423] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.477130] ene_ir: RX: 525 (pulse) [ 4765.477136] IR: raw sample: 450 us (space) [ 4765.477147] ene_ir: RX: 450 (space) [ 4765.477150] IR: raw sample: 525 us (pulse) [ 4765.477161] ene_ir: RX: 525 (pulse) [ 4765.477169] IR: raw sample: 450 us (space) [ 4765.477185] ene_ir: RX: 9525 (space) [ 4765.477193] IR: raw sample: 525 us (pulse) [ 4765.477213] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.477218] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.477223] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.477228] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.477233] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.477238] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.477243] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.477248] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.477253] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.477262] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.477267] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.477272] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.477277] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.477282] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.477287] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.477292] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.477297] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.477302] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.477307] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.477315] ir_nec_decode: NEC decode started at state 3 (450us space) [ 4765.477320] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.477324] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.477329] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.477334] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.477339] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.477343] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.477348] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.477353] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.477359] ir_nec_decode: NEC decode started at state 2 (525us pulse) [ 4765.477364] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.477368] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.477373] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.477378] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.477383] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.477387] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.477392] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.477397] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.477401] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.486337] ene_ir: RX: 9525 (space) [ 4765.493452] ene_ir: RX: 4575 (space) [ 4765.493468] ene_ir: RX: 600 (pulse) [ 4765.493476] IR: raw sample: 23625 us (space) [ 4765.493492] ene_ir: RX: 1575 (space) [ 4765.493495] IR: raw sample: 600 us (pulse) [ 4765.493505] ene_ir: RX: 525 (pulse) [ 4765.493508] IR: raw sample: 1575 us (space) [ 4765.493521] ir_nec_decode: NEC decode started at state 3 (23625us space) [ 4765.493527] ir_nec_decode: NEC decode failed at state 3 (23625us space) [ 4765.493532] ir_rc5_decode: RC5(x) decode started at state 1 (23625us space) [ 4765.493537] ir_rc5_decode: RC5(x) decode failed at state 1 (23625us space) [ 4765.493542] ir_rc6_decode: RC6 decode started at state 0 (23625us space) [ 4765.493547] ir_rc6_decode: RC6 decode failed at state 0 (23625us space) [ 4765.493552] ir_jvc_decode: JVC decode started at state 0 (23625us space) [ 4765.493557] ir_jvc_decode: JVC decode failed at state 0 (23625us space) [ 4765.493562] ir_sony_decode: Sony decode started at state 0 (23625us space) [ 4765.493567] ir_sony_decode: Sony decode failed at state 0 (23625us space) [ 4765.493572] ir_lirc_decode: LIRC data transfer started (23625us space) [ 4765.493581] ir_nec_decode: NEC decode started at state 0 (600us pulse) [ 4765.493586] ir_nec_decode: NEC decode failed at state 0 (600us pulse) [ 4765.493591] ir_rc5_decode: RC5(x) decode started at state 0 (600us pulse) [ 4765.493595] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.493601] ir_rc6_decode: RC6 decode started at state 0 (600us pulse) [ 4765.493605] ir_rc6_decode: RC6 decode failed at state 0 (600us pulse) [ 4765.493610] ir_jvc_decode: JVC decode started at state 0 (600us pulse) [ 4765.493615] ir_jvc_decode: JVC decode failed at state 0 (600us pulse) [ 4765.493620] ir_sony_decode: Sony decode started at state 0 (600us pulse) [ 4765.493625] ir_sony_decode: Sony decode failed at state 0 (600us pulse) [ 4765.493630] ir_lirc_decode: LIRC data transfer started (600us pulse) [ 4765.493638] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.493643] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.493648] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.493653] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.493658] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.493663] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.493667] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.493672] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.493677] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.493682] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.493687] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.496593] ene_ir: RX: 1575 (space) [ 4765.496596] IR: raw sample: 525 us (pulse) [ 4765.496607] ene_ir: RX: 525 (pulse) [ 4765.496610] IR: raw sample: 1575 us (space) [ 4765.496620] ene_ir: RX: 450 (space) [ 4765.496623] IR: raw sample: 525 us (pulse) [ 4765.496633] ene_ir: RX: 525 (pulse) [ 4765.496636] IR: raw sample: 450 us (space) [ 4765.496648] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.496653] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.496657] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.496662] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.496667] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.496672] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.496676] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.496681] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.496686] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.496690] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.496695] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.496703] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.496708] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.496713] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.496718] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.496723] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.496728] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.496732] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.496737] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.496742] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.496747] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.496752] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.496759] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.496764] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.496768] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.496773] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.496778] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.496783] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.496793] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.496793] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.496797] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.496802] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.496806] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.496814] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.496819] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.496823] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.496828] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.496833] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.496837] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.496842] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.496847] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.496852] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.496856] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.498706] ene_ir: RX: 450 (space) [ 4765.498715] IR: raw sample: 525 us (pulse) [ 4765.498731] ene_ir: RX: 525 (pulse) [ 4765.498739] IR: raw sample: 450 us (space) [ 4765.498754] ene_ir: RX: 450 (space) [ 4765.498761] IR: raw sample: 525 us (pulse) [ 4765.498777] ene_ir: RX: 525 (pulse) [ 4765.498784] IR: raw sample: 450 us (space) [ 4765.498801] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.498814] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.498826] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.498839] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.498852] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.498865] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.498878] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.498890] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.498903] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.498915] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.498928] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.498944] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.498956] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.498969] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.498982] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.498987] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.498992] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.498997] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.499001] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.499006] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.499010] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.499018] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.499023] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.499028] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.499033] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.499037] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.499042] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.499047] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.499052] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.499056] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.499061] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.499065] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.499072] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.499076] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.499081] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.499086] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.499090] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.499095] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.499100] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.499105] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.499110] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.499114] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.501866] ene_ir: RX: 450 (space) [ 4765.501870] IR: raw sample: 525 us (pulse) [ 4765.501881] ene_ir: RX: 525 (pulse) [ 4765.501884] IR: raw sample: 450 us (space) [ 4765.501896] ene_ir: RX: 1575 (space) [ 4765.501904] IR: raw sample: 525 us (pulse) [ 4765.501920] ene_ir: RX: 525 (pulse) [ 4765.501927] IR: raw sample: 1575 us (space) [ 4765.501944] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.501949] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.501953] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.501958] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.501963] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.501968] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.501973] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.501977] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.501982] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.501987] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.501991] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.501999] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.502004] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.502009] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.502014] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.502018] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.502023] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.502028] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.502032] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.502037] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.502042] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.502048] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.502053] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.502057] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.502062] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.502067] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.502072] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.502076] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.502081] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.502086] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.502091] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.502096] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.502103] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.502108] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.502113] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.502118] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.502123] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.502128] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.502132] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.502137] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.502142] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.502147] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.502151] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.505026] ene_ir: RX: 450 (space) [ 4765.505039] IR: raw sample: 525 us (pulse) [ 4765.505051] ene_ir: RX: 525 (pulse) [ 4765.505055] IR: raw sample: 450 us (space) [ 4765.505066] ene_ir: RX: 1575 (space) [ 4765.505070] IR: raw sample: 525 us (pulse) [ 4765.505082] ene_ir: RX: 525 (pulse) [ 4765.505086] IR: raw sample: 1575 us (space) [ 4765.505144] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.505150] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.505156] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.505163] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.505169] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.505175] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.505180] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.505186] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.505192] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.505198] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.505204] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.505216] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.505222] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.505227] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.505233] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.505239] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.505245] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.505251] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.505257] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.505263] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.505269] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.505279] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.505284] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.505290] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.505296] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.505302] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.505308] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.505315] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.505321] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.505327] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.505333] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.505339] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.505348] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.505354] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.505360] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.505367] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.505373] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.505380] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.505386] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.505392] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.505398] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.505405] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.505411] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.508194] ene_ir: RX: 450 (space) [ 4765.508209] IR: raw sample: 525 us (pulse) [ 4765.508232] ene_ir: RX: 525 (pulse) [ 4765.508241] IR: raw sample: 450 us (space) [ 4765.508258] ene_ir: RX: 1575 (space) [ 4765.508268] IR: raw sample: 525 us (pulse) [ 4765.508290] ene_ir: RX: 525 (pulse) [ 4765.508299] IR: raw sample: 1575 us (space) [ 4765.508599] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.508619] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.508635] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.508650] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.508665] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.508680] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.508695] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.508710] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.508724] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.508740] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.508755] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.508776] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.508792] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.508807] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.508825] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.508842] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.508860] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.508875] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.508890] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.508905] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.508919] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.508938] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.508952] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.508967] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.508982] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.508997] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.509013] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.509027] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.509042] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.509057] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.509072] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.509087] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.509116] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.509131] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.509147] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.509165] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.509181] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.509196] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.509211] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.509226] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.509244] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.509262] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.509277] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.510293] ene_ir: RX: 450 (space) [ 4765.510297] IR: raw sample: 525 us (pulse) [ 4765.510308] ene_ir: RX: 525 (pulse) [ 4765.510311] IR: raw sample: 450 us (space) [ 4765.510321] ene_ir: RX: 450 (space) [ 4765.510324] IR: raw sample: 525 us (pulse) [ 4765.510335] ene_ir: RX: 525 (pulse) [ 4765.510338] IR: raw sample: 450 us (space) [ 4765.510350] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.510355] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.510360] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.510365] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.510370] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.510374] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.510379] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.510384] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.510389] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.510393] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.510398] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.510407] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.510411] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.510416] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.510421] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.510426] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.510430] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.510435] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.510440] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.510444] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.510449] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.510456] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.510461] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.510465] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.510470] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.510475] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.510480] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.510484] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.510489] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.510494] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.510499] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.510503] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.510511] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.510516] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.510520] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.510525] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.510530] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.510534] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.510539] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.510544] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.510548] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.510553] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.513450] ene_ir: RX: 1575 (space) [ 4765.513459] IR: raw sample: 525 us (pulse) [ 4765.513476] ene_ir: RX: 525 (pulse) [ 4765.513484] IR: raw sample: 1575 us (space) [ 4765.513501] ene_ir: RX: 450 (space) [ 4765.513510] IR: raw sample: 525 us (pulse) [ 4765.513526] ene_ir: RX: 525 (pulse) [ 4765.513535] IR: raw sample: 450 us (space) [ 4765.513552] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.513566] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.513579] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.513593] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.513606] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.513620] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.513634] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.513647] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.513660] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.513674] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.513688] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.513704] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.513719] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.513732] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.513746] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.513759] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.513773] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.513787] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.513800] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.513814] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.513827] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.513841] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.513856] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.513869] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.513881] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.513895] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.513908] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.513922] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.513934] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.513949] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.513962] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.513976] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.513990] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.514005] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.514018] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.514031] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.514045] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.514058] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.514071] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.514085] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.514098] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.514111] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.514124] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.524666] ene_ir: RX: 450 (space) [ 4765.524670] IR: raw sample: 525 us (pulse) [ 4765.524682] ene_ir: RX: 525 (pulse) [ 4765.524685] IR: raw sample: 450 us (space) [ 4765.524697] ene_ir: RX: 9525 (space) [ 4765.524700] IR: raw sample: 525 us (pulse) [ 4765.524726] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.524731] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.524736] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.524741] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.524747] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.524752] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.524758] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.524763] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.524768] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.524773] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.524779] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.524787] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.524792] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.524797] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.524802] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.524807] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.524812] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.524817] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.524822] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.524827] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.524832] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.524839] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.524844] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.524849] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.524854] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.524859] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.524863] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.524869] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.524874] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.524879] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.524883] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.524888] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.532792] ene_ir: RX: 9525 (space) [ 4765.539803] ene_ir: RX: 4425 (space) [ 4765.539814] ene_ir: RX: 600 (pulse) [ 4765.539818] IR: raw sample: 23475 us (space) [ 4765.539828] ene_ir: RX: 1575 (space) [ 4765.539831] IR: raw sample: 600 us (pulse) [ 4765.539842] ene_ir: RX: 525 (pulse) [ 4765.539845] IR: raw sample: 1575 us (space) [ 4765.539858] ir_nec_decode: NEC decode started at state 0 (23475us space) [ 4765.539863] ir_nec_decode: NEC decode failed at state 0 (23475us space) [ 4765.539868] ir_rc5_decode: RC5(x) decode started at state 1 (23475us space) [ 4765.539873] ir_rc5_decode: RC5(x) decode failed at state 1 (23475us space) [ 4765.539878] ir_rc6_decode: RC6 decode started at state 0 (23475us space) [ 4765.539883] ir_rc6_decode: RC6 decode failed at state 0 (23475us space) [ 4765.539888] ir_jvc_decode: JVC decode started at state 0 (23475us space) [ 4765.539893] ir_jvc_decode: JVC decode failed at state 0 (23475us space) [ 4765.539897] ir_sony_decode: Sony decode started at state 0 (23475us space) [ 4765.539902] ir_sony_decode: Sony decode failed at state 0 (23475us space) [ 4765.539907] ir_lirc_decode: LIRC data transfer started (23475us space) [ 4765.539915] ir_nec_decode: NEC decode started at state 0 (600us pulse) [ 4765.539920] ir_nec_decode: NEC decode failed at state 0 (600us pulse) [ 4765.539925] ir_rc5_decode: RC5(x) decode started at state 0 (600us pulse) [ 4765.539930] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.539935] ir_rc6_decode: RC6 decode started at state 0 (600us pulse) [ 4765.539940] ir_rc6_decode: RC6 decode failed at state 0 (600us pulse) [ 4765.539945] ir_jvc_decode: JVC decode started at state 0 (600us pulse) [ 4765.539950] ir_jvc_decode: JVC decode failed at state 0 (600us pulse) [ 4765.539955] ir_sony_decode: Sony decode started at state 0 (600us pulse) [ 4765.539960] ir_sony_decode: Sony decode failed at state 0 (600us pulse) [ 4765.539965] ir_lirc_decode: LIRC data transfer started (600us pulse) [ 4765.539978] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.539978] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.539982] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.539987] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.539992] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.539997] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.540002] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.540007] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.540013] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.540018] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.540023] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.542972] ene_ir: RX: 1575 (space) [ 4765.542982] IR: raw sample: 525 us (pulse) [ 4765.542998] ene_ir: RX: 525 (pulse) [ 4765.543002] IR: raw sample: 1575 us (space) [ 4765.543012] ene_ir: RX: 450 (space) [ 4765.543015] IR: raw sample: 525 us (pulse) [ 4765.543025] ene_ir: RX: 525 (pulse) [ 4765.543028] IR: raw sample: 450 us (space) [ 4765.543041] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.543046] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.543051] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.543056] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.543061] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.543066] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.543070] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.543075] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.543080] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.543085] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.543090] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.543097] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.543103] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.543107] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.543113] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.543118] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.543122] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.543127] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.543132] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.543137] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.543142] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.543147] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.543153] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.543158] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.543163] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.543168] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.543173] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.543177] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.543182] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.543187] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.543191] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.543196] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.543201] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.543207] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.543212] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.543217] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.543222] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.543226] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.543231] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.543236] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.543240] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.543245] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.543250] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.545075] ene_ir: RX: 450 (space) [ 4765.545084] IR: raw sample: 525 us (pulse) [ 4765.545100] ene_ir: RX: 525 (pulse) [ 4765.545108] IR: raw sample: 450 us (space) [ 4765.545125] ene_ir: RX: 450 (space) [ 4765.545134] IR: raw sample: 525 us (pulse) [ 4765.545151] ene_ir: RX: 525 (pulse) [ 4765.545159] IR: raw sample: 450 us (space) [ 4765.545177] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.545190] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.545203] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.545217] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.545231] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.545244] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.545257] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.545270] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.545283] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.545297] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.545310] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.545328] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.545341] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.545355] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.545369] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.545382] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.545395] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.545409] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.545424] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.545439] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.545452] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.545468] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.545481] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.545494] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.545508] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.545521] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.545535] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.545548] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.545561] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.545574] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.545588] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.545602] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.545618] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.545630] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.545644] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.545658] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.545671] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.545684] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.545698] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.545711] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.545725] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.545738] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.548248] ene_ir: RX: 450 (space) [ 4765.548256] IR: raw sample: 525 us (pulse) [ 4765.548272] ene_ir: RX: 525 (pulse) [ 4765.548280] IR: raw sample: 450 us (space) [ 4765.548295] ene_ir: RX: 1575 (space) [ 4765.548299] IR: raw sample: 525 us (pulse) [ 4765.548309] ene_ir: RX: 525 (pulse) [ 4765.548312] IR: raw sample: 1575 us (space) [ 4765.548325] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.548329] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.548334] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.548339] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.548344] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.548349] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.548354] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.548359] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.548363] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.548368] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.548373] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.548380] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.548385] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.548390] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.548395] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.548400] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.548404] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.548409] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.548414] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.548418] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.548423] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.548429] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.548434] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.548439] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.548444] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.548449] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.548453] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.548458] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.548463] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.548467] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.548472] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.548477] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.548483] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.548488] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.548493] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.548498] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.548503] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.548507] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.548512] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.548517] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.548522] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.548527] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.548532] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.551393] ene_ir: RX: 450 (space) [ 4765.551402] IR: raw sample: 525 us (pulse) [ 4765.551418] ene_ir: RX: 525 (pulse) [ 4765.551421] IR: raw sample: 450 us (space) [ 4765.551432] ene_ir: RX: 1575 (space) [ 4765.551435] IR: raw sample: 525 us (pulse) [ 4765.551445] ene_ir: RX: 525 (pulse) [ 4765.551449] IR: raw sample: 1575 us (space) [ 4765.551459] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.551464] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.551469] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.551474] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.551479] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.551483] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.551488] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.551493] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.551498] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.551503] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.551507] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.551515] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.551519] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.551524] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.551529] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.551534] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.551538] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.551543] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.551548] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.551552] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.551557] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.551563] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.551568] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.551573] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.551578] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.551582] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.551587] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.551592] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.551596] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.551601] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.551606] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.551611] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.551617] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.551622] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.551627] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.551631] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.551636] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.551641] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.551646] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.551651] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.551655] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.551660] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.551665] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.554572] ene_ir: RX: 450 (space) [ 4765.554576] IR: raw sample: 525 us (pulse) [ 4765.554586] ene_ir: RX: 525 (pulse) [ 4765.554594] IR: raw sample: 450 us (space) [ 4765.554610] ene_ir: RX: 1575 (space) [ 4765.554617] IR: raw sample: 525 us (pulse) [ 4765.554633] ene_ir: RX: 525 (pulse) [ 4765.554636] IR: raw sample: 1575 us (space) [ 4765.554648] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.554653] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.554658] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.554663] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.554668] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.554673] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.554677] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.554682] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.554687] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.554691] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.554696] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.554704] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.554709] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.554713] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.554718] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.554723] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.554728] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.554732] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.554737] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.554742] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.554746] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.554753] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.554757] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.554762] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.554767] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.554772] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.554777] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.554781] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.554786] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.554790] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.554795] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.554800] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.554806] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.554811] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.554816] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.554820] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.554826] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.554830] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.554835] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.554840] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.554844] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.554849] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.554854] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.556660] ene_ir: RX: 450 (space) [ 4765.556668] IR: raw sample: 525 us (pulse) [ 4765.556683] ene_ir: RX: 525 (pulse) [ 4765.556691] IR: raw sample: 450 us (space) [ 4765.556706] ene_ir: RX: 450 (space) [ 4765.556714] IR: raw sample: 525 us (pulse) [ 4765.556729] ene_ir: RX: 525 (pulse) [ 4765.556737] IR: raw sample: 450 us (space) [ 4765.556753] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.556766] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.556779] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.556792] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.556805] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.556817] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.556830] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.556842] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.556855] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.556868] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.556881] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.556896] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.556909] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.556922] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.556937] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.556951] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.556965] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.556979] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.556994] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.557009] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.557025] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.557042] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.557057] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.557071] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.557085] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.557100] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.557115] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.557129] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.557142] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.557157] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.557172] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.557185] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.557199] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.557215] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.557229] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.557245] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.557261] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.557274] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.557290] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.557305] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.557319] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.557333] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.559814] ene_ir: RX: 1575 (space) [ 4765.559823] IR: raw sample: 525 us (pulse) [ 4765.559839] ene_ir: RX: 525 (pulse) [ 4765.559847] IR: raw sample: 1575 us (space) [ 4765.559862] ene_ir: RX: 450 (space) [ 4765.559870] IR: raw sample: 525 us (pulse) [ 4765.559885] ene_ir: RX: 525 (pulse) [ 4765.559893] IR: raw sample: 450 us (space) [ 4765.559911] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.559924] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.559937] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.559950] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.559963] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.559976] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.559989] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.560002] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.560016] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.560031] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.560045] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.560062] ir_nec_decode: NEC decode started at state 0 (1575us space) [ 4765.560076] ir_nec_decode: NEC decode failed at state 0 (1575us space) [ 4765.560089] ir_rc5_decode: RC5(x) decode started at state 1 (1575us space) [ 4765.560104] ir_rc5_decode: RC5(x) decode failed at state 1 (1575us space) [ 4765.560118] ir_rc6_decode: RC6 decode started at state 0 (1575us space) [ 4765.560132] ir_rc6_decode: RC6 decode failed at state 0 (1575us space) [ 4765.560146] ir_jvc_decode: JVC decode started at state 0 (1575us space) [ 4765.560159] ir_jvc_decode: JVC decode failed at state 0 (1575us space) [ 4765.560173] ir_sony_decode: Sony decode started at state 0 (1575us space) [ 4765.560186] ir_sony_decode: Sony decode failed at state 0 (1575us space) [ 4765.560200] ir_lirc_decode: LIRC data transfer started (1575us space) [ 4765.560217] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.560229] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.560243] ir_rc5_decode: RC5(x) decode started at state 0 (525us pulse) [ 4765.560256] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.560271] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.560284] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.560297] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.560311] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.560324] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.560338] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.560351] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.560368] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.560381] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.560394] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.560407] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.560422] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.560435] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.560449] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.560463] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.560477] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.560491] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.569966] ene_ir: RX: 450 (space) [ 4765.569971] IR: raw sample: 525 us (pulse) [ 4765.569981] ene_ir: RX: 525 (pulse) [ 4765.569985] IR: raw sample: 450 us (space) [ 4765.569995] ene_ir: RX: 9525 (space) [ 4765.569998] IR: raw sample: 525 us (pulse) [ 4765.570020] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.570025] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.570031] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.570036] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.570042] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.570047] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.570052] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.570057] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.570061] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.570066] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.570071] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.570079] ir_nec_decode: NEC decode started at state 0 (450us space) [ 4765.570084] ir_nec_decode: NEC decode failed at state 0 (450us space) [ 4765.570089] ir_rc5_decode: RC5(x) decode started at state 1 (450us space) [ 4765.570094] ir_rc6_decode: RC6 decode started at state 0 (450us space) [ 4765.570099] ir_rc6_decode: RC6 decode failed at state 0 (450us space) [ 4765.570104] ir_jvc_decode: JVC decode started at state 0 (450us space) [ 4765.570109] ir_jvc_decode: JVC decode failed at state 0 (450us space) [ 4765.570114] ir_sony_decode: Sony decode started at state 0 (450us space) [ 4765.570119] ir_sony_decode: Sony decode failed at state 0 (450us space) [ 4765.570124] ir_lirc_decode: LIRC data transfer started (450us space) [ 4765.570139] ir_nec_decode: NEC decode started at state 0 (525us pulse) [ 4765.570139] ir_nec_decode: NEC decode failed at state 0 (525us pulse) [ 4765.570141] ir_rc5_decode: RC5(x) decode started at state 2 (525us pulse) [ 4765.570146] ir_rc5_decode: RC5(x) decode started at state 1 (0us pulse) [ 4765.570151] ir_rc6_decode: RC6 decode started at state 0 (525us pulse) [ 4765.570156] ir_rc6_decode: RC6 decode failed at state 0 (525us pulse) [ 4765.570160] ir_jvc_decode: JVC decode started at state 0 (525us pulse) [ 4765.570173] ir_jvc_decode: JVC decode failed at state 0 (525us pulse) [ 4765.570173] ir_sony_decode: Sony decode started at state 0 (525us pulse) [ 4765.570175] ir_sony_decode: Sony decode failed at state 0 (525us pulse) [ 4765.570179] ir_lirc_decode: LIRC data transfer started (525us pulse) [ 4765.579139] ene_ir: RX: 9525 (space) [ 4765.588297] ene_ir: RX: 9525 (space) [ 4765.597542] ene_ir: RX: 9525 (space) [ 4765.606647] ene_ir: RX: 9525 (space) [ 4765.615862] ene_ir: RX: 9525 (space) [ 4765.625014] ene_ir: RX: 9525 (space) [ 4765.634185] ene_ir: RX: 9525 (space) [ 4765.643345] ene_ir: RX: 9525 (space) [ 4765.652497] ene_ir: RX: 9525 (space) [ 4765.661656] ene_ir: RX: 9525 (space) [ 4765.670812] ene_ir: RX: 9525 (space) [ 4765.679968] ene_ir: RX: 9525 (space) [ 4765.689125] ene_ir: RX: 9525 (space) [ 4765.698284] ene_ir: RX: 9525 (space) [ 4765.707421] ene_ir: RX: 9525 (space) [ 4765.716601] ene_ir: RX: 9525 (space) [ 4765.725751] ene_ir: RX: 9525 (space) [ 4765.734908] ene_ir: RX: 9525 (space) [ 4765.744067] ene_ir: RX: 9525 (space) [ 4765.755883] ene_ir: RX: 9525 (space) [ 4765.762364] ene_ir: RX: 9525 (space) [ 4765.771535] ene_ir: RX: 9525 (space) [ 4765.780695] ene_ir: RX: 9525 (space) [ 4765.789846] ene_ir: RX: 9525 (space) [ 4765.799005] ene_ir: RX: 9525 (space) [ 4765.808163] ene_ir: RX: 9525 (space) [ 4765.808177] enter idle mode [ 4765.808188] ene_ir: enabling idle mode [ 4765.817306] ene_ir: RX: 9525 (space) [-- Attachment #2: lircd.conf --] [-- Type: text/plain, Size: 2527 bytes --] # Please make this file available to others # by sending it to <lirc@bartelmus.de> # # this config file was automatically generated # using lirc-0.8.5(default) on Sun Aug 9 02:33:55 2009 # # contributed by Maxim Levitsky # # brand: JVC # model no. of remote control: LP20878-008 # devices being controlled by this remote: JVC VCR # begin remote name JVC bits 8 flags SPACE_ENC|NO_HEAD_REP|CONST_LENGTH eps 30 aeps 100 header 8800 4416 one 565 1583 zero 565 485 ptrail 563 pre_data_bits 8 pre_data 0xC2 gap 44600 min_repeat 3 suppress_repeat 3 begin codes # first and second row KEY_POWER 0xD0 KEY_ESCAPE 0xC3 KEY_TV 0xC8 KEY_MUTE 0xE8 KEY_BACKSPACE 0x1C # numbers - remapped to mouse MOUSE_1 0x84 MOUSE_2 0x44 MOUSE_3 0xC4 MOUSE_4 0x24 MOUSE_5 0xA4 MOUSE_6 0x64 MOUSE_7 0xE4 MOUSE_8 0x14 MOUSE_9 0x94 MOUSE_X 0x6C MOUSE_0 0xCC MOUSE_CLOCK 0xAC # start +- MOUSE_DOWN 0x93 MOUSE_UP 0x13 # stop +- KEY_VOLUMEDOWN 0xD3 KEY_VOLUMEUP 0x53 # date +- KEY_BRIGHTNESSDOWN 0xE3 KEY_BRIGHTNESSUP 0x63 # row above play button - TODO KEY_PROGRAM 0x83 KEY_SETUP 0xBC KEY_SWITCHVIDEOMODE 0x8C KEY_NEXT 0x69 # play block KEY_PREVIOUSSONG 0xE0 KEY_PLAY 0x30 KEY_NEXTSONG 0x60 KEY_RECORD 0x33 KEY_STOP 0xC0 KEY_PAUSE 0xB0 # setup row KEY_TAB 0xEC KEY_ENTER 0x3C # large bottom button KEY_UP 0x98 KEY_DOWN 0x18 KEY_LEFT 0xA8 KEY_RIGHT 0x28 end codes end remote ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-27 22:33 Can I expect in-kernel decoding to work out of box? Maxim Levitsky @ 2010-07-27 23:32 ` Maxim Levitsky 2010-07-28 1:29 ` Jon Smirl 0 siblings, 1 reply; 33+ messages in thread From: Maxim Levitsky @ 2010-07-27 23:32 UTC (permalink / raw) To: Jarod Wilson; +Cc: Jon Smirl, linux-input, Mauro Carvalho Chehab On Wed, 2010-07-28 at 01:33 +0300, Maxim Levitsky wrote: > Hi, > > I ported my ene driver to in-kernel decoding. > It isn't yet ready to be released, but in few days it will be. > > Now, knowing about wonders of in-kernel decoding, I try to use it, but > it just doesn't work. > > Mind you that lircd works with this remote. > (I attach my lircd.conf) > > Here is the output of mode2 for a single keypress: Just want to add that I tested it with many different modes of my remotes, and all but one fail (one mode is detected as NEC). Don't get me wrong. Although I opposed to idea of in-kernel decoding, lately I began to think that this isn't such a bad idea. Especially if number of users for whom it will work out of box. So, I am very disappointed. Best regards, Maxim Levitsky ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-27 23:32 ` Maxim Levitsky @ 2010-07-28 1:29 ` Jon Smirl 2010-07-28 2:33 ` Jarod Wilson 0 siblings, 1 reply; 33+ messages in thread From: Jon Smirl @ 2010-07-28 1:29 UTC (permalink / raw) To: Maxim Levitsky; +Cc: Jarod Wilson, linux-input, Mauro Carvalho Chehab On Tue, Jul 27, 2010 at 7:32 PM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: > On Wed, 2010-07-28 at 01:33 +0300, Maxim Levitsky wrote: >> Hi, >> >> I ported my ene driver to in-kernel decoding. >> It isn't yet ready to be released, but in few days it will be. >> >> Now, knowing about wonders of in-kernel decoding, I try to use it, but >> it just doesn't work. >> >> Mind you that lircd works with this remote. >> (I attach my lircd.conf) >> >> Here is the output of mode2 for a single keypress: 8850 4350 525 1575 525 1575 525 450 525 450 525 450 525 450 525 1575 525 450 525 1575 525 450 525 1575 525 450 525 450 525 1575 525 450 525 450 525 23625 That decodes as: 1100 0010 1010 0100 In the NEC protocol the second word is supposed to be the inverse of the first word and it isn't. The timing is too short for NEC protocol too. Valid NEC... 1100 0011 1010 0101 Maybe JVC protocol but it is longer than normal. The JVC decoder was unable to get started decoding it. I don't think the JVC decoder has been tested much. Take a look at it and see why it couldn't get out of state 0. > > Just want to add that I tested it with many different modes of my > remotes, and all but one fail (one mode is detected as NEC). > > Don't get me wrong. > Although I opposed to idea of in-kernel decoding, lately I began to > think that this isn't such a bad idea. > Especially if number of users for whom it will work out of box. > > So, I am very disappointed. > > Best regards, > Maxim Levitsky > > -- Jon Smirl jonsmirl@gmail.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 1:29 ` Jon Smirl @ 2010-07-28 2:33 ` Jarod Wilson 2010-07-28 6:30 ` Maxim Levitsky 0 siblings, 1 reply; 33+ messages in thread From: Jarod Wilson @ 2010-07-28 2:33 UTC (permalink / raw) To: Jon Smirl; +Cc: Maxim Levitsky, linux-input, Mauro Carvalho Chehab, linux-media On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: > On Tue, Jul 27, 2010 at 7:32 PM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: >> On Wed, 2010-07-28 at 01:33 +0300, Maxim Levitsky wrote: >>> Hi, >>> >>> I ported my ene driver to in-kernel decoding. >>> It isn't yet ready to be released, but in few days it will be. >>> >>> Now, knowing about wonders of in-kernel decoding, I try to use it, but >>> it just doesn't work. >>> >>> Mind you that lircd works with this remote. >>> (I attach my lircd.conf) >>> >>> Here is the output of mode2 for a single keypress: > > 8850 4350 525 1575 525 1575 > 525 450 525 450 525 450 > 525 450 525 1575 525 450 > 525 1575 525 450 525 1575 > 525 450 525 450 525 1575 > 525 450 525 450 525 23625 > > That decodes as: > 1100 0010 1010 0100 > > In the NEC protocol the second word is supposed to be the inverse of > the first word and it isn't. The timing is too short for NEC protocol > too. > > Valid NEC... > 1100 0011 1010 0101 > > Maybe JVC protocol but it is longer than normal. > > The JVC decoder was unable to get started decoding it. I don't think > the JVC decoder has been tested much. Take a look at it and see why it > couldn't get out of state 0. Personally, I haven't really tried much of anything but RC-6(A) and RC-5 while working on mceusb, so they're the only ones I can really vouch for myself at the moment. It seems that I don't have many remotes that aren't an RC-x variant, outside of universals, which I have yet to get around to programming for various other modes to test any of the protocol decoders. I assume that David Hardeman already did that much before submitting each of the ir protocol decoders with his name one them (which were, if I'm not mistaken, based at least partially on Jon's earlier work), but its entirely possible there are slight variants of each that aren't handled properly just yet. That right there is one of the major reasons I saw for writing the lirc bridge driver plugin in the first place -- the lirc userspace decoder has been around for a LOT longer, and thus is likely to know how to handle more widely varying IR signals. -- Jarod Wilson jarod@wilsonet.com -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 2:33 ` Jarod Wilson @ 2010-07-28 6:30 ` Maxim Levitsky 2010-07-28 6:59 ` Maxim Levitsky 2010-07-28 10:40 ` Jon Smirl 0 siblings, 2 replies; 33+ messages in thread From: Maxim Levitsky @ 2010-07-28 6:30 UTC (permalink / raw) To: Jarod Wilson; +Cc: Jon Smirl, linux-input, Mauro Carvalho Chehab, linux-media On Tue, 2010-07-27 at 22:33 -0400, Jarod Wilson wrote: > On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: > > On Tue, Jul 27, 2010 at 7:32 PM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: > >> On Wed, 2010-07-28 at 01:33 +0300, Maxim Levitsky wrote: > >>> Hi, > >>> > >>> I ported my ene driver to in-kernel decoding. > >>> It isn't yet ready to be released, but in few days it will be. > >>> > >>> Now, knowing about wonders of in-kernel decoding, I try to use it, but > >>> it just doesn't work. > >>> > >>> Mind you that lircd works with this remote. > >>> (I attach my lircd.conf) > >>> > >>> Here is the output of mode2 for a single keypress: > > > > 8850 4350 525 1575 525 1575 > > 525 450 525 450 525 450 > > 525 450 525 1575 525 450 > > 525 1575 525 450 525 1575 > > 525 450 525 450 525 1575 > > 525 450 525 450 525 23625 > > > > That decodes as: > > 1100 0010 1010 0100 > > > > In the NEC protocol the second word is supposed to be the inverse of > > the first word and it isn't. The timing is too short for NEC protocol > > too. No its not, its just extended NEC. This lirc generic config matches that output quite well: NEC-short-pulse.conf: begin remote name NEC bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9000 4500 one 563 1687 zero 563 562 ptrail 563 pre_data_bits 16 # just a guess gap 108000 repeat 9000 2250 frequency 38000 duty_cycle 33 begin codes end codes end remote > > > > Valid NEC... > > 1100 0011 1010 0101 > > > > Maybe JVC protocol but it is longer than normal. > > > > The JVC decoder was unable to get started decoding it. I don't think > > the JVC decoder has been tested much. Take a look at it and see why it > > couldn't get out of state 0. > > Personally, I haven't really tried much of anything but RC-6(A) and > RC-5 while working on mceusb, so they're the only ones I can really > vouch for myself at the moment. It seems that I don't have many > remotes that aren't an RC-x variant, outside of universals, which I > have yet to get around to programming for various other modes to test > any of the protocol decoders. I assume that David Hardeman already did > that much before submitting each of the ir protocol decoders with his > name one them (which were, if I'm not mistaken, based at least > partially on Jon's earlier work), but its entirely possible there are > slight variants of each that aren't handled properly just yet. That > right there is one of the major reasons I saw for writing the lirc > bridge driver plugin in the first place -- the lirc userspace decoder > has been around for a LOT longer, and thus is likely to know how to > handle more widely varying IR signals. In fact its dead easy to test a lot of remotes, by using an universal remote. These remotes are designed to tech literate persons for a reason.... On my remote, all I have to do is press TV + predefined number + OK to make remote mimic a random remote. Unill now, kernel decoding couldn't pick anything but one mode.... Here is a table I created long ago on my remote showing all kinds of protocols there: Heck, hardware isn't very accurate, I know, but streamzap receiver according to what I have heard it even worse... Best regards, Maxim Levitsky 08 - NEC short pulse / SANYO (38 khz), [15 - NEC] 9440 4640 620 550 620 550 620 550 620 550 620 550 620 550 620 1720 610 550 610 1720 620 1720 620 1720 620 1720 610 1730 610 1720 620 550 620 1720 620 550 620 550 620 550 620 550 620 550 620 550 610 550 610 550 610 1720 620 1720 620 1720 620 1720 620 1720 610 1720 620 1720 620 1720 620 41540 9440 2300 620 100110 (9440 2300 610 100110) --------------------------------------------------------------------------------------------------------------- 02 - Philips (RC5): (36 khz) 990 890 970 890 1920 890 970 890 970 890 970 890 970 890 970 890 970 890 970 890 970 890 970 890 970 94190 --------------------------------------------------------------------------------------------------------------- 25 - Philips (RECS-80): (38 khz) 200 7720 170 7720 170 7700 200 7690 200 7720 170 5090 160 7730 170 5090 170 5090 160 5090 170 5090 170 --------------------------------------------------------------------------------------------------------------- 01 - JVC: (38 khz) 8840 4370 590 1600 590 1600 590 500 590 500 590 500 590 500 590 510 590 510 590 500 590 500 590 500 590 1600 590 500 590 1600 590 500 590 500 590 25730 --------------------------------------------------------------------------------------------------------------- 07 - Sony (SIRC): (40 khz) 2550 600 1260 600 630 600 630 600 1260 600 630 600 630 600 630 600 1260 600 630 600 630 600 630 600 630 27450 <rep> --------------------------------------------------------------------------------------------------------------- 19 - MOTOROLLA: 610 2730 550 550 580 520 580 520 580 490 600 520 580 520 580 520 580 520 580 520 580 21240 (600 2720 580 1070 580 520 580 520 580 520 1130 1070 580 490 580 540 550 540 580 126890) --------------------------------------------------------------------------------------------------------------- 06 - Sharp (denon): (38 khz) 370 1870 340 750 340 760 340 750 340 750 340 750 340 1870 340 750 340 1870 340 760 340 760 340 760 340 760 340 1870 340 750 340 48940 370 1870 340 750 340 760 340 760 340 750 340 1870 340 750 340 1870 340 760 340 1870 340 1870 340 1870 340 1870 340 760 340 1870 340 44610 --------------------------------------------------------------------------------------------------------------- 30 - Nokia NRC17: 580 2590 550 990 1100 490 550 480 550 480 550 480 550 480 550 490 550 480 550 480 550 490 550 480 550 490 550 480 550 480 550 480 550 20230 580 2580 560 990 550 490 1100 480 550 990 550 480 550 490 550 480 550 480 1100 990 1100 490 550 990 1100 990 550 84380 580 2580 550 990 550 490 1100 480 550 990 550 490 550 480 550 480 550 480 1100 990 1100 480 550 990 1100 990 550 84380 --------------------------------------------------------------------------------------------------------------- 03 - Mitsubishi: 350 2220 320 2220 320 2220 320 950 320 950 340 920 320 2220 320 950 320 2220 320 950 350 920 320 2220 320 950 320 950 320 950 320 950 320 27630 <rep> --------------------------------------------------------------------------------------------------------------- 04 - Panasonic: 3600 3460 950 820 960 820 950 820 950 820 950 820 960 2570 960 820 950 820 950 2580 950 2580 950 820 950 2580 950 2580 950 2580 950 2580 950 2580 950 820 950 2580 950 2580 960 820 960 820 950 2570 960 39070 <rep> --------------------------------------------------------------------------------------------------------------- 11 - Panasonic: 3700 1780 490 410 500 1320 490 410 490 410 490 410 500 410 490 410 490 410 500 410 490 410 490 410 490 410 490 410 490 1320 490 410 500 410 490 410 490 410 490 410 500 410 490 410 490 410 500 410 490 1320 490 410 490 410 500 410 490 410 490 410 490 410 490 410 490 410 490 1320 500 410 490 410 490 1320 500 1310 500 410 490 410 490 410 490 1320 490 410 490 410 490 1320 490 1320 490 410 490 410 490 1320 500 <rep> --------------------------------------------------------------------------------------------------------------- 05 - unknown: 20950 4110 620 1990 590 2020 580 2020 580 2020 590 980 580 980 580 2020 590 2020 580 980 580 980 590 980 590 980 580 980 580 980 580 980 580 980 580 2020 580 2020 590 980 580 980 580 2020 590 2020 580 2020 580 2020 1070 --------------------------------------------------------------------------------------------------------------- 09 - unknown: 590 480 560 4230 560 480 560 4230 560 5260 560 5260 560 480 560 4230 560 5260 560 480 560 4220 560 5260 560 480 560 4220 560 5260 560 480 560 126450 <rep> --------------------------------------------------------------------------------------------------------------- 12 - RCA? 4740 4650 620 1720 620 1720 620 1720 620 550 610 550 610 550 610 550 620 550 620 1720 620 1720 620 1720 620 550 620 550 620 550 620 550 620 550 620 1720 620 550 620 550 610 550 610 1730 610 550 610 550 610 550 620 550 620 1720 620 1720 620 1720 620 550 620 1720 620 1720 620 1720 620 --------------------------------------------------------------------------------------------------------------- 26 - junk -(thomson) - unsuppored/no carrier 27 - junk -(unknown) - unsuppored/no carrier 28 - junk -ITT - unsuppored/no carrier > ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 6:30 ` Maxim Levitsky @ 2010-07-28 6:59 ` Maxim Levitsky 2010-07-28 10:40 ` Jon Smirl 1 sibling, 0 replies; 33+ messages in thread From: Maxim Levitsky @ 2010-07-28 6:59 UTC (permalink / raw) To: Jarod Wilson; +Cc: Jon Smirl, linux-input, Mauro Carvalho Chehab, linux-media On Wed, 2010-07-28 at 09:30 +0300, Maxim Levitsky wrote: > On Tue, 2010-07-27 at 22:33 -0400, Jarod Wilson wrote: > > On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: > > > On Tue, Jul 27, 2010 at 7:32 PM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: > > >> On Wed, 2010-07-28 at 01:33 +0300, Maxim Levitsky wrote: > > >>> Hi, > > >>> > > >>> I ported my ene driver to in-kernel decoding. > > >>> It isn't yet ready to be released, but in few days it will be. > > >>> > > >>> Now, knowing about wonders of in-kernel decoding, I try to use it, but > > >>> it just doesn't work. > > >>> > > >>> Mind you that lircd works with this remote. > > >>> (I attach my lircd.conf) > > >>> > > >>> Here is the output of mode2 for a single keypress: > > > > > > 8850 4350 525 1575 525 1575 > > > 525 450 525 450 525 450 > > > 525 450 525 1575 525 450 > > > 525 1575 525 450 525 1575 > > > 525 450 525 450 525 1575 > > > 525 450 525 450 525 23625 > > > > > > That decodes as: > > > 1100 0010 1010 0100 > > > > > > In the NEC protocol the second word is supposed to be the inverse of > > > the first word and it isn't. The timing is too short for NEC protocol > > > too. > No its not, its just extended NEC. > > This lirc generic config matches that output quite well: > NEC-short-pulse.conf: > > begin remote > > name NEC > bits 16 > flags SPACE_ENC|CONST_LENGTH > eps 30 > aeps 100 > > header 9000 4500 > one 563 1687 > zero 563 562 > ptrail 563 > pre_data_bits 16 > # just a guess > gap 108000 > > repeat 9000 2250 > > frequency 38000 > duty_cycle 33 > > begin codes > end codes > > end remote > > > > > > > > > Valid NEC... > > > 1100 0011 1010 0101 > > > > > > Maybe JVC protocol but it is longer than normal. > > > > > > The JVC decoder was unable to get started decoding it. I don't think > > > the JVC decoder has been tested much. Take a look at it and see why it > > > couldn't get out of state 0. Its not JVC I am sure. > > > > Personally, I haven't really tried much of anything but RC-6(A) and > > RC-5 while working on mceusb, so they're the only ones I can really > > vouch for myself at the moment. It seems that I don't have many > > remotes that aren't an RC-x variant, outside of universals, which I > > have yet to get around to programming for various other modes to test > > any of the protocol decoders. I assume that David Hardeman already did > > that much before submitting each of the ir protocol decoders with his > > name one them (which were, if I'm not mistaken, based at least > > partially on Jon's earlier work), but its entirely possible there are > > slight variants of each that aren't handled properly just yet. That > > right there is one of the major reasons I saw for writing the lirc > > bridge driver plugin in the first place -- the lirc userspace decoder > > has been around for a LOT longer, and thus is likely to know how to > > handle more widely varying IR signals. > > In fact its dead easy to test a lot of remotes, by using an universal > remote. These remotes are designed to tech literate persons for a > reason.... I mean illiterate. > > On my remote, all I have to do is press TV + predefined number + OK to > make remote mimic a random remote. > Unill now, kernel decoding couldn't pick anything but one mode.... It does pick RC-5... it figures... > > > Here is a table I created long ago on my remote showing all kinds of > protocols there: > > Heck, hardware isn't very accurate, I know, but streamzap receiver > according to what I have heard it even worse... > > Best regards, > Maxim Levitsky > > > 08 - NEC short pulse / SANYO (38 khz), [15 - NEC] > 9440 4640 620 550 620 550 620 550 620 550 620 550 > 620 550 620 1720 610 550 610 1720 620 1720 620 1720 > 620 1720 610 1730 610 1720 620 550 620 1720 620 550 > 620 550 620 550 620 550 620 550 620 550 610 550 > 610 550 610 1720 620 1720 620 1720 620 1720 620 1720 > 610 1720 620 1720 620 1720 620 41540 9440 2300 620 100110 > (9440 2300 610 100110) > --------------------------------------------------------------------------------------------------------------- > 02 - Philips (RC5): (36 khz) > 990 890 970 890 1920 890 970 890 970 890 970 890 > 970 890 970 890 970 890 970 890 970 890 970 890 > 970 94190 > --------------------------------------------------------------------------------------------------------------- > 25 - Philips (RECS-80): (38 khz) > 200 7720 170 7720 170 7700 200 7690 200 7720 170 5090 > 160 7730 170 5090 170 5090 160 5090 170 5090 170 > --------------------------------------------------------------------------------------------------------------- > 01 - JVC: (38 khz) > 8840 4370 590 1600 590 1600 590 500 590 500 590 500 > 590 500 590 510 590 510 590 500 590 500 590 500 > 590 1600 590 500 590 1600 590 500 590 500 590 25730 > --------------------------------------------------------------------------------------------------------------- > 07 - Sony (SIRC): (40 khz) > 2550 600 1260 600 630 600 630 600 1260 600 630 600 > 630 600 630 600 1260 600 630 600 630 600 630 600 > 630 27450 <rep> > --------------------------------------------------------------------------------------------------------------- > 19 - MOTOROLLA: > 610 2730 550 550 580 520 580 520 580 490 600 520 > 580 520 580 520 580 520 580 520 580 21240 > > (600 2720 580 1070 580 520 580 520 580 520 1130 1070 > 580 490 580 540 550 540 580 126890) > --------------------------------------------------------------------------------------------------------------- > 06 - Sharp (denon): (38 khz) > 370 1870 340 750 340 760 340 750 340 750 340 750 > 340 1870 340 750 340 1870 340 760 340 760 340 760 > 340 760 340 1870 340 750 340 48940 > > 370 1870 340 750 340 760 340 760 340 750 340 1870 > 340 750 340 1870 340 760 340 1870 340 1870 340 1870 > 340 1870 340 760 340 1870 340 44610 > --------------------------------------------------------------------------------------------------------------- > 30 - Nokia NRC17: > 580 2590 550 990 1100 490 550 480 550 480 550 480 > 550 480 550 490 550 480 550 480 550 490 550 480 > 550 490 550 480 550 480 550 480 550 20230 > > 580 2580 560 990 550 490 1100 480 550 990 550 480 > 550 490 550 480 550 480 1100 990 1100 490 550 990 > 1100 990 550 84380 > > 580 2580 550 990 550 490 1100 480 550 990 550 490 > 550 480 550 480 550 480 1100 990 1100 480 550 990 > 1100 990 550 84380 > --------------------------------------------------------------------------------------------------------------- > 03 - Mitsubishi: > 350 2220 320 2220 320 2220 320 950 320 950 340 920 > 320 2220 320 950 320 2220 320 950 350 920 320 2220 > 320 950 320 950 320 950 320 950 320 27630 <rep> > --------------------------------------------------------------------------------------------------------------- > 04 - Panasonic: > 3600 3460 950 820 960 820 950 820 950 820 950 820 > 960 2570 960 820 950 820 950 2580 950 2580 950 820 > 950 2580 950 2580 950 2580 950 2580 950 2580 950 820 > 950 2580 950 2580 960 820 960 820 950 2570 960 39070 > <rep> > --------------------------------------------------------------------------------------------------------------- > 11 - Panasonic: > 3700 1780 490 410 500 1320 490 410 490 410 490 410 > 500 410 490 410 490 410 500 410 490 410 490 410 > 490 410 490 410 490 1320 490 410 500 410 490 410 > 490 410 490 410 500 410 490 410 490 410 500 410 > 490 1320 490 410 490 410 500 410 490 410 490 410 > 490 410 490 410 490 410 490 1320 500 410 490 410 > 490 1320 500 1310 500 410 490 410 490 410 490 1320 > 490 410 490 410 490 1320 490 1320 490 410 490 410 > 490 1320 500 <rep> > --------------------------------------------------------------------------------------------------------------- > 05 - unknown: > 20950 4110 620 1990 590 2020 580 2020 580 2020 590 980 > 580 980 580 2020 590 2020 580 980 580 980 590 980 > 590 980 580 980 580 980 580 980 580 980 580 2020 > 580 2020 590 980 580 980 580 2020 590 2020 580 2020 > 580 2020 1070 > --------------------------------------------------------------------------------------------------------------- > 09 - unknown: > 590 480 560 4230 560 480 560 4230 560 5260 560 5260 > 560 480 560 4230 560 5260 560 480 560 4220 560 5260 > 560 480 560 4220 560 5260 560 480 560 126450 <rep> > --------------------------------------------------------------------------------------------------------------- > 12 - RCA? > 4740 4650 620 1720 620 1720 620 1720 620 550 610 550 > 610 550 610 550 620 550 620 1720 620 1720 620 1720 > 620 550 620 550 620 550 620 550 620 550 620 1720 > 620 550 620 550 610 550 610 1730 610 550 610 550 > 610 550 620 550 620 1720 620 1720 620 1720 620 550 > 620 1720 620 1720 620 1720 620 > --------------------------------------------------------------------------------------------------------------- > 26 - junk -(thomson) - unsuppored/no carrier > 27 - junk -(unknown) - unsuppored/no carrier > 28 - junk -ITT - unsuppored/no carrier > > > > > > > > > ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 6:30 ` Maxim Levitsky 2010-07-28 6:59 ` Maxim Levitsky @ 2010-07-28 10:40 ` Jon Smirl 2010-07-28 13:13 ` Mauro Carvalho Chehab 1 sibling, 1 reply; 33+ messages in thread From: Jon Smirl @ 2010-07-28 10:40 UTC (permalink / raw) To: Maxim Levitsky Cc: Jarod Wilson, linux-input, Mauro Carvalho Chehab, linux-media On Wed, Jul 28, 2010 at 2:30 AM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: > On Tue, 2010-07-27 at 22:33 -0400, Jarod Wilson wrote: >> On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: >> > On Tue, Jul 27, 2010 at 7:32 PM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: >> >> On Wed, 2010-07-28 at 01:33 +0300, Maxim Levitsky wrote: >> >>> Hi, >> >>> >> >>> I ported my ene driver to in-kernel decoding. >> >>> It isn't yet ready to be released, but in few days it will be. >> >>> >> >>> Now, knowing about wonders of in-kernel decoding, I try to use it, but >> >>> it just doesn't work. >> >>> >> >>> Mind you that lircd works with this remote. >> >>> (I attach my lircd.conf) >> >>> >> >>> Here is the output of mode2 for a single keypress: >> > >> > 8850 4350 525 1575 525 1575 >> > 525 450 525 450 525 450 >> > 525 450 525 1575 525 450 >> > 525 1575 525 450 525 1575 >> > 525 450 525 450 525 1575 >> > 525 450 525 450 525 23625 >> > >> > That decodes as: >> > 1100 0010 1010 0100 >> > >> > In the NEC protocol the second word is supposed to be the inverse of >> > the first word and it isn't. The timing is too short for NEC protocol >> > too. > No its not, its just extended NEC. http://www.sbprojects.com/knowledge/ir/nec.htm Says the last two bytes should be the complement of each other. So for extended NEC it would need to be: 1100 0010 1010 0101 instead of 1100 0010 1010 0100 The last bit is wrong. From the debug output it is decoding as NEC, but then it fails a consistency check. Maybe we need to add a new protocol that lets NEC commands through even if they fail the error checks. It may also be that the NEC machine rejected it because the timing was so far off that it concluded that it couldn't be a NEC messages. The log didn't include the exact reason it got rejected. Add some printks at the end of the NEC machine to determine the exact reason for rejection. The current state machines enforce protocol compliance so there are probably a lot of older remotes that won't decode right. We can use some help in adjusting the state machines to let out of spec codes through. The timing of those pulses is exactly right for JVC. Maybe there is an extended 4 byte version of the JVC protocol. JVC doesn't have the error checks like NEC. The question here is, why didn't the JVC machine get started? User space lirc is much older. Bugs like this have been worked out of it. It will take some time to get the kernel implementation up to the same level. > > This lirc generic config matches that output quite well: > NEC-short-pulse.conf: > > begin remote > > name NEC > bits 16 > flags SPACE_ENC|CONST_LENGTH > eps 30 > aeps 100 > > header 9000 4500 > one 563 1687 > zero 563 562 > ptrail 563 > pre_data_bits 16 > # just a guess > gap 108000 > > repeat 9000 2250 > > frequency 38000 > duty_cycle 33 > > begin codes > end codes > > end remote > > > >> > >> > Valid NEC... >> > 1100 0011 1010 0101 >> > >> > Maybe JVC protocol but it is longer than normal. >> > >> > The JVC decoder was unable to get started decoding it. I don't think >> > the JVC decoder has been tested much. Take a look at it and see why it >> > couldn't get out of state 0. >> >> Personally, I haven't really tried much of anything but RC-6(A) and >> RC-5 while working on mceusb, so they're the only ones I can really >> vouch for myself at the moment. It seems that I don't have many >> remotes that aren't an RC-x variant, outside of universals, which I >> have yet to get around to programming for various other modes to test >> any of the protocol decoders. I assume that David Hardeman already did >> that much before submitting each of the ir protocol decoders with his >> name one them (which were, if I'm not mistaken, based at least >> partially on Jon's earlier work), but its entirely possible there are >> slight variants of each that aren't handled properly just yet. That >> right there is one of the major reasons I saw for writing the lirc >> bridge driver plugin in the first place -- the lirc userspace decoder >> has been around for a LOT longer, and thus is likely to know how to >> handle more widely varying IR signals. > > In fact its dead easy to test a lot of remotes, by using an universal > remote. These remotes are designed to tech literate persons for a > reason.... > > On my remote, all I have to do is press TV + predefined number + OK to > make remote mimic a random remote. > Unill now, kernel decoding couldn't pick anything but one mode.... > > > Here is a table I created long ago on my remote showing all kinds of > protocols there: > > Heck, hardware isn't very accurate, I know, but streamzap receiver > according to what I have heard it even worse... > > Best regards, > Maxim Levitsky > > > 08 - NEC short pulse / SANYO (38 khz), [15 - NEC] > 9440 4640 620 550 620 550 620 550 620 550 620 550 > 620 550 620 1720 610 550 610 1720 620 1720 620 1720 > 620 1720 610 1730 610 1720 620 550 620 1720 620 550 > 620 550 620 550 620 550 620 550 620 550 610 550 > 610 550 610 1720 620 1720 620 1720 620 1720 620 1720 > 610 1720 620 1720 620 1720 620 41540 9440 2300 620 100110 > (9440 2300 610 100110) > --------------------------------------------------------------------------------------------------------------- > 02 - Philips (RC5): (36 khz) > 990 890 970 890 1920 890 970 890 970 890 970 890 > 970 890 970 890 970 890 970 890 970 890 970 890 > 970 94190 > --------------------------------------------------------------------------------------------------------------- > 25 - Philips (RECS-80): (38 khz) > 200 7720 170 7720 170 7700 200 7690 200 7720 170 5090 > 160 7730 170 5090 170 5090 160 5090 170 5090 170 > --------------------------------------------------------------------------------------------------------------- > 01 - JVC: (38 khz) > 8840 4370 590 1600 590 1600 590 500 590 500 590 500 > 590 500 590 510 590 510 590 500 590 500 590 500 > 590 1600 590 500 590 1600 590 500 590 500 590 25730 > --------------------------------------------------------------------------------------------------------------- > 07 - Sony (SIRC): (40 khz) > 2550 600 1260 600 630 600 630 600 1260 600 630 600 > 630 600 630 600 1260 600 630 600 630 600 630 600 > 630 27450 <rep> > --------------------------------------------------------------------------------------------------------------- > 19 - MOTOROLLA: > 610 2730 550 550 580 520 580 520 580 490 600 520 > 580 520 580 520 580 520 580 520 580 21240 > > (600 2720 580 1070 580 520 580 520 580 520 1130 1070 > 580 490 580 540 550 540 580 126890) > --------------------------------------------------------------------------------------------------------------- > 06 - Sharp (denon): (38 khz) > 370 1870 340 750 340 760 340 750 340 750 340 750 > 340 1870 340 750 340 1870 340 760 340 760 340 760 > 340 760 340 1870 340 750 340 48940 > > 370 1870 340 750 340 760 340 760 340 750 340 1870 > 340 750 340 1870 340 760 340 1870 340 1870 340 1870 > 340 1870 340 760 340 1870 340 44610 > --------------------------------------------------------------------------------------------------------------- > 30 - Nokia NRC17: > 580 2590 550 990 1100 490 550 480 550 480 550 480 > 550 480 550 490 550 480 550 480 550 490 550 480 > 550 490 550 480 550 480 550 480 550 20230 > > 580 2580 560 990 550 490 1100 480 550 990 550 480 > 550 490 550 480 550 480 1100 990 1100 490 550 990 > 1100 990 550 84380 > > 580 2580 550 990 550 490 1100 480 550 990 550 490 > 550 480 550 480 550 480 1100 990 1100 480 550 990 > 1100 990 550 84380 > --------------------------------------------------------------------------------------------------------------- > 03 - Mitsubishi: > 350 2220 320 2220 320 2220 320 950 320 950 340 920 > 320 2220 320 950 320 2220 320 950 350 920 320 2220 > 320 950 320 950 320 950 320 950 320 27630 <rep> > --------------------------------------------------------------------------------------------------------------- > 04 - Panasonic: > 3600 3460 950 820 960 820 950 820 950 820 950 820 > 960 2570 960 820 950 820 950 2580 950 2580 950 820 > 950 2580 950 2580 950 2580 950 2580 950 2580 950 820 > 950 2580 950 2580 960 820 960 820 950 2570 960 39070 > <rep> > --------------------------------------------------------------------------------------------------------------- > 11 - Panasonic: > 3700 1780 490 410 500 1320 490 410 490 410 490 410 > 500 410 490 410 490 410 500 410 490 410 490 410 > 490 410 490 410 490 1320 490 410 500 410 490 410 > 490 410 490 410 500 410 490 410 490 410 500 410 > 490 1320 490 410 490 410 500 410 490 410 490 410 > 490 410 490 410 490 410 490 1320 500 410 490 410 > 490 1320 500 1310 500 410 490 410 490 410 490 1320 > 490 410 490 410 490 1320 490 1320 490 410 490 410 > 490 1320 500 <rep> > --------------------------------------------------------------------------------------------------------------- > 05 - unknown: > 20950 4110 620 1990 590 2020 580 2020 580 2020 590 980 > 580 980 580 2020 590 2020 580 980 580 980 590 980 > 590 980 580 980 580 980 580 980 580 980 580 2020 > 580 2020 590 980 580 980 580 2020 590 2020 580 2020 > 580 2020 1070 > --------------------------------------------------------------------------------------------------------------- > 09 - unknown: > 590 480 560 4230 560 480 560 4230 560 5260 560 5260 > 560 480 560 4230 560 5260 560 480 560 4220 560 5260 > 560 480 560 4220 560 5260 560 480 560 126450 <rep> > --------------------------------------------------------------------------------------------------------------- > 12 - RCA? > 4740 4650 620 1720 620 1720 620 1720 620 550 610 550 > 610 550 610 550 620 550 620 1720 620 1720 620 1720 > 620 550 620 550 620 550 620 550 620 550 620 1720 > 620 550 620 550 610 550 610 1730 610 550 610 550 > 610 550 620 550 620 1720 620 1720 620 1720 620 550 > 620 1720 620 1720 620 1720 620 > --------------------------------------------------------------------------------------------------------------- > 26 - junk -(thomson) - unsuppored/no carrier > 27 - junk -(unknown) - unsuppored/no carrier > 28 - junk -ITT - unsuppored/no carrier > > > > > >> > > > -- Jon Smirl jonsmirl@gmail.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 10:40 ` Jon Smirl @ 2010-07-28 13:13 ` Mauro Carvalho Chehab 2010-07-28 13:46 ` Jon Smirl 2010-07-28 14:24 ` Maxim Levitsky 0 siblings, 2 replies; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 13:13 UTC (permalink / raw) To: Jon Smirl; +Cc: Maxim Levitsky, Jarod Wilson, linux-input, linux-media Em 28-07-2010 07:40, Jon Smirl escreveu: > On Wed, Jul 28, 2010 at 2:30 AM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: >> On Tue, 2010-07-27 at 22:33 -0400, Jarod Wilson wrote: >>> On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: >> No its not, its just extended NEC. > > http://www.sbprojects.com/knowledge/ir/nec.htm > Says the last two bytes should be the complement of each other. > > So for extended NEC it would need to be: > 1100 0010 1010 0101 instead of 1100 0010 1010 0100 > The last bit is wrong. > > From the debug output it is decoding as NEC, but then it fails a > consistency check. Maybe we need to add a new protocol that lets NEC > commands through even if they fail the error checks. Assuming that Maxim's IR receiver is not causing some bad decode at the NEC code, it seems simpler to add a parameter at sysfs to relax the NEC detection. We should add some way, at the userspace table for those RC's that uses a NEC-like code. There's another alternative: currently, the NEC decoder produces a 16 bits code for NEC and a 24 bits for NEC-extended code. The decoder may return a 32 bits code when none of the checksum's match the NEC or NEC-extended standard. Such 32 bits code won't match a keycode on a 16-bits or 24-bits table, so there's no risk of generating a wrong keycode, if the wrong consistent check is due to a reception error. Btw, we still need to port rc core to use the new tables ioctl's, as cleaning all keycodes on a 32 bits table would take forever with the current input events ioctls. > It may also be > that the NEC machine rejected it because the timing was so far off > that it concluded that it couldn't be a NEC messages. The log didn't > include the exact reason it got rejected. Add some printks at the end > of the NEC machine to determine the exact reason for rejection. The better is to discard the possibility of a timing issue before changing the decoder to accept NEC-like codes without consistency checks. > The current state machines enforce protocol compliance so there are > probably a lot of older remotes that won't decode right. We can use > some help in adjusting the state machines to let out of spec codes > through. Yes, but we should take some care to avoid having another protocol decoder to interpret badly a different protocol. So, I think that the decoders may have some sysfs nodes to tweak the decoders to accept those older remotes. We'll need a consistent way to add some logic at the remotes keycodes used by ir-keycode, in order to allow it to tweak the decoder when a keycode table for such remote is loaded into the driver. > User space lirc is much older. Bugs like this have been worked out of > it. It will take some time to get the kernel implementation up to the > same level. True. Cheers, Mauro ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 13:13 ` Mauro Carvalho Chehab @ 2010-07-28 13:46 ` Jon Smirl 2010-07-28 14:38 ` Andy Walls 2010-07-28 14:24 ` Maxim Levitsky 1 sibling, 1 reply; 33+ messages in thread From: Jon Smirl @ 2010-07-28 13:46 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Maxim Levitsky, Jarod Wilson, linux-input, linux-media Let's be really sure it is NEC and not JVC. > > 8850 4350 525 1575 525 1575 > > 525 450 525 450 525 450 > > 525 450 525 1575 525 450 > > 525 1575 525 450 525 1575 > > 525 450 525 450 525 1575 > > 525 450 525 450 525 23625 NEC timings are 9000 4500 560 1680 560 560 etc JVC timings are 8400 4200 525 1575 525 525 It is a closer match to the JVC timing. But neither protocol uses a different mark/space timing -- 450 vs 525 Also look at the repeats. This is repeating at about 25ms. NEC repeat spacing is 110ms. JVC is supposed to be at 50-60ms. NEC does not repeat the entire command and JVC does. The repeats are closer to following the JVC model. I'd say this is a JVC command. So the question is, why didn't JVC decoder get out of state zero? -- Jon Smirl jonsmirl@gmail.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 13:46 ` Jon Smirl @ 2010-07-28 14:38 ` Andy Walls 2010-07-28 14:53 ` Jon Smirl 0 siblings, 1 reply; 33+ messages in thread From: Andy Walls @ 2010-07-28 14:38 UTC (permalink / raw) To: Jon Smirl Cc: Mauro Carvalho Chehab, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: > Let's be really sure it is NEC and not JVC. > > > > 8850 4350 525 1575 525 1575 > > > 525 450 525 450 525 450 > > > 525 450 525 1575 525 450 > > > 525 1575 525 450 525 1575 > > > 525 450 525 450 525 1575 > > > 525 450 525 450 525 23625 > > > NEC timings are 9000 4500 560 1680 560 560 etc > > JVC timings are 8400 4200 525 1575 525 525 > > It is a closer match to the JVC timing. But neither protocol uses a > different mark/space timing -- 450 vs 525 I assume you mean "different mark/space timing for the symbol for which they are the same length" (in NEC that's the '0' symbol IIRC). I've noticed different mark/space timings for the '0' symbol from NEC remotes and with some RC-5 remotes. I usually attribute it to cheap remote designs, weak batteries, capacitive effects, receiver pulse measurement technique, etc. Here's an example of NEC remote from a DTV STB remote as measured by the CX23888 IR receiver on an HVR-1850: 8257296 ns mark 4206185 ns space leader 482926 ns mark 545296 ns space 0 481296 ns mark 1572259 ns space 1 481148 ns mark 546333 ns space 0 479963 ns mark 551815 ns space 0 454333 ns mark 1615519 ns space 1 435074 ns mark 591370 ns space [...] I don't know the source of the error. I would have to check the same remote against my MCE USB receiver to try and determine any receiver induced measurement errors. But, in Maxim's case, the difference isn't bad: 450/525 ~= 86%. I would hope a 15% difference would still be recognizable. > Also look at the repeats. This is repeating at about 25ms. NEC repeat > spacing is 110ms. JVC is supposed to be at 50-60ms. NEC does not > repeat the entire command and JVC does. The repeats are closer to > following the JVC model. > > I'd say this is a JVC command. So the question is, why didn't JVC > decoder get out of state zero? Is JVC enabled by default? I recall analyzing that it could generate false positives on NEC codes. Regards, Andy ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 14:38 ` Andy Walls @ 2010-07-28 14:53 ` Jon Smirl 2010-07-28 15:42 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 33+ messages in thread From: Jon Smirl @ 2010-07-28 14:53 UTC (permalink / raw) To: Andy Walls Cc: Mauro Carvalho Chehab, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: > On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: >> Let's be really sure it is NEC and not JVC. >> >> > > 8850 4350 525 1575 525 1575 >> > > 525 450 525 450 525 450 >> > > 525 450 525 1575 525 450 >> > > 525 1575 525 450 525 1575 >> > > 525 450 525 450 525 1575 >> > > 525 450 525 450 525 23625 >> >> >> NEC timings are 9000 4500 560 1680 560 560 etc >> >> JVC timings are 8400 4200 525 1575 525 525 >> >> It is a closer match to the JVC timing. But neither protocol uses a >> different mark/space timing -- 450 vs 525 > > I assume you mean "different mark/space timing for the symbol for which > they are the same length" (in NEC that's the '0' symbol IIRC). > > > I've noticed different mark/space timings for the '0' symbol from NEC > remotes and with some RC-5 remotes. I usually attribute it to cheap > remote designs, weak batteries, capacitive effects, receiver pulse > measurement technique, etc. > > Here's an example of NEC remote from a DTV STB remote as measured by the > CX23888 IR receiver on an HVR-1850: > > 8257296 ns mark > 4206185 ns space > leader > 482926 ns mark > 545296 ns space > 0 > 481296 ns mark > 1572259 ns space > 1 > 481148 ns mark > 546333 ns space > 0 > 479963 ns mark > 551815 ns space > 0 > 454333 ns mark > 1615519 ns space > 1 > 435074 ns mark > 591370 ns space > [...] > > I don't know the source of the error. I would have to check the same > remote against my MCE USB receiver to try and determine any receiver > induced measurement errors. > > But, in Maxim's case, the difference isn't bad: 450/525 ~= 86%. I would > hope a 15% difference would still be recognizable. The error can't exceed 50% of a bit time. Bit time in JVC is 525us. The error in the first 1 was 8850 - 8400 = 450us. That's almost a whole bit. You have to have the 50% of bit time rule. That's the rule that lets you tell JVC from NEC. The 450us error in the 8850us number was enough to switch the engine from JVC to NEC. NEC bits are longer, the leading 1 triggered the NEC engine instead of the JVC one. 450/525us didn't disrupt the decode process it is under a 50% bit error. > > >> Also look at the repeats. This is repeating at about 25ms. NEC repeat >> spacing is 110ms. JVC is supposed to be at 50-60ms. NEC does not >> repeat the entire command and JVC does. The repeats are closer to >> following the JVC model. >> >> I'd say this is a JVC command. So the question is, why didn't JVC >> decoder get out of state zero? > > Is JVC enabled by default? I recall analyzing that it could generate > false positives on NEC codes. Hopefully the engines should differentiate the two. If the signal is really messed up it may trigger a response from both engines. That shouldn't be fatal at the higher layers, the wrong protocol would just be ignored. I recommend that all decoders initially follow the strict protocol rules. That will let us find bugs like this one in the ENE driver. After we get everything possible working under the strict rules we can loosen then up to allow out of spec devices. We might even end up with an IR-quirk driver that supports broken remotes. > > Regards, > Andy > > -- Jon Smirl jonsmirl@gmail.com -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 14:53 ` Jon Smirl @ 2010-07-28 15:42 ` Mauro Carvalho Chehab 2010-07-28 17:02 ` Andy Walls 0 siblings, 1 reply; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 15:42 UTC (permalink / raw) To: Jon Smirl Cc: Andy Walls, Maxim Levitsky, Jarod Wilson, linux-input, linux-media Em 28-07-2010 11:53, Jon Smirl escreveu: > On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: >> On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: >> Is JVC enabled by default? I recall analyzing that it could generate >> false positives on NEC codes. > > Hopefully the engines should differentiate the two. If the signal is > really messed up it may trigger a response from both engines. That > shouldn't be fatal at the higher layers, the wrong protocol would just > be ignored. By default, both decoders are enabled, but if you're using the ir-keycode userspace program at udev, it will disable all protocols but the ones associated with the RC keytable loaded for that specific device. Even if both JVC and NEC decoders generate scancodes, it is very unlikely that the scancode generated by the wrong decoder would produce a valid scancode at the RC keycode space. > I recommend that all decoders initially follow the strict protocol > rules. That will let us find bugs like this one in the ENE driver. Agreed. > After we get everything possible working under the strict rules we can > loosen then up to allow out of spec devices. We might even end up with > an IR-quirk driver that supports broken remotes. I think that the better is to add some parameters, via sysfs, to relax the rules at the current decoders, if needed. Cheers, Mauro ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 15:42 ` Mauro Carvalho Chehab @ 2010-07-28 17:02 ` Andy Walls 2010-07-28 17:35 ` Jon Smirl 2010-07-28 18:29 ` Mauro Carvalho Chehab 0 siblings, 2 replies; 33+ messages in thread From: Andy Walls @ 2010-07-28 17:02 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Jon Smirl, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, 2010-07-28 at 12:42 -0300, Mauro Carvalho Chehab wrote: > Em 28-07-2010 11:53, Jon Smirl escreveu: > > On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: > >> On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: > > I recommend that all decoders initially follow the strict protocol > > rules. That will let us find bugs like this one in the ENE driver. > > Agreed. Well... I'd possibly make an exception for the protocols that have long-mark leaders. The actual long mark measurement can be far off from the protocol's specification and needs a larger tolerance (IMO). Only allowing 0.5 to 1.0 of a protocol time unit tolerance, for a protocol element that is 8 to 16 protocol time units long, doesn't make too much sense to me. If the remote has the basic protocol time unit off from our expectation, the error will likely be amplified in a long protocol elements and very much off our expectation. > I think that the better is to add some parameters, via sysfs, to relax the > rules at the current decoders, if needed. Is that worth the effort? It seems like only going half-way to an ultimate end state. <crazy idea> If you go through the effort of implementing fine grained controls (tweaking tolerances for this pulse type here or there), why not just implement a configurable decoding engine that takes as input: symbol definitions (pulse and space length specifications and tolerances) pulse train states allowed state transitions gap length decoded output data length and instantiates a decoder that follows a user-space provided specification? The user can write his own decoding engine specification in a text file, feed it into the kernel, and the kernel can implement it for him. </crazy idea> OK, maybe that is a little too much time and effort. ;) Regards, Andy > Cheers, > Mauro ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 17:02 ` Andy Walls @ 2010-07-28 17:35 ` Jon Smirl 2010-07-28 18:18 ` Andy Walls 2010-07-28 18:29 ` Mauro Carvalho Chehab 1 sibling, 1 reply; 33+ messages in thread From: Jon Smirl @ 2010-07-28 17:35 UTC (permalink / raw) To: Andy Walls Cc: Mauro Carvalho Chehab, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, Jul 28, 2010 at 1:02 PM, Andy Walls <awalls@md.metrocast.net> wrote: > On Wed, 2010-07-28 at 12:42 -0300, Mauro Carvalho Chehab wrote: >> Em 28-07-2010 11:53, Jon Smirl escreveu: >> > On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: >> >> On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: > >> > I recommend that all decoders initially follow the strict protocol >> > rules. That will let us find bugs like this one in the ENE driver. >> >> Agreed. > > Well... > > I'd possibly make an exception for the protocols that have long-mark > leaders. The actual long mark measurement can be far off from the > protocol's specification and needs a larger tolerance (IMO). > > Only allowing 0.5 to 1.0 of a protocol time unit tolerance, for a > protocol element that is 8 to 16 protocol time units long, doesn't make > too much sense to me. If the remote has the basic protocol time unit > off from our expectation, the error will likely be amplified in a long > protocol elements and very much off our expectation. Do you have a better way to differentiate JVC and NEC protocols? They are pretty similar except for the timings. What happened in this case was that the first signals matched the NEC protocol. Then we shifted to bits that matched JVC protocol. The NEC bits are 9000/8400 = 7% longer. If we allow more than a 3.5% error in the initial bit you can't separate the protocols. In general the decoders are pretty lax and the closest to the correct one with decode the stream. The 50% rule only comes into play between two very similar protocols. One solution would be to implement NEC/JVC in the same engine. Then apply the NEC consistency checks. If the consistency check pass present the event on the NEC interface. And then always present the event on the JVC interface. >> I think that the better is to add some parameters, via sysfs, to relax the >> rules at the current decoders, if needed. > > Is that worth the effort? It seems like only going half-way to an > ultimate end state. > > <crazy idea> > If you go through the effort of implementing fine grained controls > (tweaking tolerances for this pulse type here or there), why not just > implement a configurable decoding engine that takes as input: > > symbol definitions > (pulse and space length specifications and tolerances) > pulse train states > allowed state transitions > gap length > decoded output data length > > and instantiates a decoder that follows a user-space provided > specification? > > The user can write his own decoding engine specification in a text file, > feed it into the kernel, and the kernel can implement it for him. > </crazy idea> > > OK, maybe that is a little too much time and effort. ;) > > Regards, > Andy > > >> Cheers, >> Mauro > > > -- Jon Smirl jonsmirl@gmail.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 17:35 ` Jon Smirl @ 2010-07-28 18:18 ` Andy Walls 2010-07-28 20:13 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 33+ messages in thread From: Andy Walls @ 2010-07-28 18:18 UTC (permalink / raw) To: Jon Smirl Cc: Mauro Carvalho Chehab, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, 2010-07-28 at 13:35 -0400, Jon Smirl wrote: > On Wed, Jul 28, 2010 at 1:02 PM, Andy Walls <awalls@md.metrocast.net> wrote: > > On Wed, 2010-07-28 at 12:42 -0300, Mauro Carvalho Chehab wrote: > >> Em 28-07-2010 11:53, Jon Smirl escreveu: > >> > On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: > >> >> On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: > > > >> > I recommend that all decoders initially follow the strict protocol > >> > rules. That will let us find bugs like this one in the ENE driver. > >> > >> Agreed. > > > > Well... > > > > I'd possibly make an exception for the protocols that have long-mark > > leaders. The actual long mark measurement can be far off from the > > protocol's specification and needs a larger tolerance (IMO). > > > > Only allowing 0.5 to 1.0 of a protocol time unit tolerance, for a > > protocol element that is 8 to 16 protocol time units long, doesn't make > > too much sense to me. If the remote has the basic protocol time unit > > off from our expectation, the error will likely be amplified in a long > > protocol elements and very much off our expectation. > > Do you have a better way to differentiate JVC and NEC protocols? They > are pretty similar except for the timings. Yes: Invoke the 80/20 rule and don't try. Enable NEC and disable JVC by default. Let the users know so as to properly manage user expectations. (Maxim's original question was about expectation.) When the user knows NEC isn't working, or he suspects JVC may work, he can bind that protocol to the particular IR receiver. Trying to solve the discrimination problem with blindly parallel decoding all the possible protocols is a big waste of effort IMO: a. Many remotes are sloppy and out of spec, and get worse with weak batteries. b. The IR receiver driver knows what remotes possibly came bundled with the hardware. (For the case of the MCE USB, it's almost always an RC-6 6A remote.) c. The user can tell the kernel about his remote unambiguously. There's no burning need to wear a blindfold, AFAICT, so let's not. Why bother to solve a hard problem (discrimination of protocols from out of spec remotes), when it raises the error rate of solving the simple one (properly decoding a single protocol)? Doing many things poorly is worse than doing one thing well. Non-adaptive protocol discovery (i.e. blind parallel decoding) should not be the default if it leads to problems or inflated expectations for the user. > What happened in this case > was that the first signals matched the NEC protocol. Then we shifted > to bits that matched JVC protocol. > > The NEC bits are 9000/8400 = 7% longer. If we allow more than a 3.5% > error in the initial bit you can't separate the protocols. > > In general the decoders are pretty lax and the closest to the correct > one with decode the stream. The 50% rule only comes into play between > two very similar protocols. > > One solution would be to implement NEC/JVC in the same engine. Then > apply the NEC consistency checks. If the consistency check pass > present the event on the NEC interface. And then always present the > event on the JVC interface. It's just too simple to have the user: a. Try NEC b. Try JVC c. Make a judgment and stick with the one he perceives works. To have reliable discrimination in the general case between two protocols, given the variables out of our control (i.e. the remote control implementation) would require some sort of data collection and adaptive algorithm to go on inside the kernel. I don't think you can get reliable discrimination in one key press. Maybe by looking at the key press and the repeats together might up the probability of correct discrimination (that's one criterion you examined to make a determination in your earlier email). Regards, Andy ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 18:18 ` Andy Walls @ 2010-07-28 20:13 ` Mauro Carvalho Chehab 2010-07-28 20:27 ` Maxim Levitsky 2010-07-29 2:36 ` Andy Walls 0 siblings, 2 replies; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 20:13 UTC (permalink / raw) To: Andy Walls Cc: Jon Smirl, Maxim Levitsky, Jarod Wilson, linux-input, linux-media Andy, Em 28-07-2010 15:18, Andy Walls escreveu: > On Wed, 2010-07-28 at 13:35 -0400, Jon Smirl wrote: >> On Wed, Jul 28, 2010 at 1:02 PM, Andy Walls <awalls@md.metrocast.net> wrote: >>> On Wed, 2010-07-28 at 12:42 -0300, Mauro Carvalho Chehab wrote: >>>> Em 28-07-2010 11:53, Jon Smirl escreveu: >>>>> On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: >>>>>> On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: >>> >>>>> I recommend that all decoders initially follow the strict protocol >>>>> rules. That will let us find bugs like this one in the ENE driver. >>>> >>>> Agreed. >>> >>> Well... >>> >>> I'd possibly make an exception for the protocols that have long-mark >>> leaders. The actual long mark measurement can be far off from the >>> protocol's specification and needs a larger tolerance (IMO). >>> >>> Only allowing 0.5 to 1.0 of a protocol time unit tolerance, for a >>> protocol element that is 8 to 16 protocol time units long, doesn't make >>> too much sense to me. If the remote has the basic protocol time unit >>> off from our expectation, the error will likely be amplified in a long >>> protocol elements and very much off our expectation. >> >> Do you have a better way to differentiate JVC and NEC protocols? They >> are pretty similar except for the timings. > > Yes: Invoke the 80/20 rule and don't try. At the room where my computers is located, I have two wide fluorescent lamps each with 20W. If I don't hide the IR sensors bellow my desk, those lamps are enough to generate random flickers at the sensors. With the more relaxed driver we used to have at saa7134, it ended by producing random scancodes, or, even worse, random repeat codes. So, lots of false-positive events. It is a way worse to have false-positive than having a false-negative events. So, I don't think it is a good idea to use a "relaxed" mode by default. > Enable NEC and disable JVC by > default. Let the users know so as to properly manage user expectations. > (Maxim's original question was about expectation.) We should discuss a little bit about RC subsystem evolution during LPC/2010, but, from my point of view, we should soon deprecate the in-kernel keymap tables on some new kernel version, using, instead, the ir-keycode application to dynamically load the keycode tables via UDEV. Of course, after some time, we may end by removing all those tables from the kernel. So, assuming that we follow this patch, what we'll have for a newer device is: For most devices, the keymap configuration table (rc_maps.cfg) will associate all known devices with their corresponding keytable (we still need to generate a default rc_maps.cfg that corresponds to the current in-kernel mapping, but this is trivial). As ir-keytable disables all protocols but the one(s) needed by a given device, in practice, if the scancode table specifies a NEC keymap table, JVC will be disabled. If the table is for JVC, NEC will be disabled. So, this already happens in a practical scenario, as all decoders will be enabled only before loading a keymap (or if the user explicitly enable the other decoders). So, the device will be in some sort of "training" mode, e. g. it will try every possible decoder, and will be generating the scancodes for some userspace application that will be learning the keycodes and creating a keymap table. IMO, we should have a way to tell the RC and/or the decoding subsystem to work on a "relaxed" mode only when the user (or the userspace app) detects that there's something wrong with that device. > When the user knows NEC isn't working, or he suspects JVC may work, he > can bind that protocol to the particular IR receiver. > > Trying to solve the discrimination problem with blindly parallel > decoding all the possible protocols is a big waste of effort IMO: > > a. Many remotes are sloppy and out of spec, and get worse with weak > batteries. > > b. The IR receiver driver knows what remotes possibly came bundled with > the hardware. (For the case of the MCE USB, it's almost always an RC-6 > 6A remote.) > > c. The user can tell the kernel about his remote unambiguously. > > There's no burning need to wear a blindfold, AFAICT, so let's not. > > Why bother to solve a hard problem (discrimination of protocols from out > of spec remotes), when it raises the error rate of solving the simple > one (properly decoding a single protocol)? > > Doing many things poorly is worse than doing one thing well. > Non-adaptive protocol discovery (i.e. blind parallel decoding) should > not be the default if it leads to problems or inflated expectations for > the user. > > >> What happened in this case >> was that the first signals matched the NEC protocol. Then we shifted >> to bits that matched JVC protocol. >> >> The NEC bits are 9000/8400 = 7% longer. If we allow more than a 3.5% >> error in the initial bit you can't separate the protocols. >> >> In general the decoders are pretty lax and the closest to the correct >> one with decode the stream. The 50% rule only comes into play between >> two very similar protocols. >> >> One solution would be to implement NEC/JVC in the same engine. Then >> apply the NEC consistency checks. If the consistency check pass >> present the event on the NEC interface. And then always present the >> event on the JVC interface. > > It's just too simple to have the user: > > a. Try NEC > b. Try JVC > c. Make a judgment and stick with the one he perceives works. > > > To have reliable discrimination in the general case between two > protocols, given the variables out of our control (i.e. the remote > control implementation) would require some sort of data collection and > adaptive algorithm to go on inside the kernel. I don't think you can > get reliable discrimination in one key press. Maybe by looking at the > key press and the repeats together might up the probability of correct > discrimination (that's one criterion you examined to make a > determination in your earlier email). Cheers, Mauro. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 20:13 ` Mauro Carvalho Chehab @ 2010-07-28 20:27 ` Maxim Levitsky 2010-07-29 2:36 ` Andy Walls 1 sibling, 0 replies; 33+ messages in thread From: Maxim Levitsky @ 2010-07-28 20:27 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Andy Walls, Jon Smirl, Jarod Wilson, linux-input, linux-media On Wed, 2010-07-28 at 17:13 -0300, Mauro Carvalho Chehab wrote: > Andy, > > Em 28-07-2010 15:18, Andy Walls escreveu: > > On Wed, 2010-07-28 at 13:35 -0400, Jon Smirl wrote: > >> On Wed, Jul 28, 2010 at 1:02 PM, Andy Walls <awalls@md.metrocast.net> wrote: > >>> On Wed, 2010-07-28 at 12:42 -0300, Mauro Carvalho Chehab wrote: > >>>> Em 28-07-2010 11:53, Jon Smirl escreveu: > >>>>> On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: > >>>>>> On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: > >>> > >>>>> I recommend that all decoders initially follow the strict protocol > >>>>> rules. That will let us find bugs like this one in the ENE driver. > >>>> > >>>> Agreed. > >>> > >>> Well... > >>> > >>> I'd possibly make an exception for the protocols that have long-mark > >>> leaders. The actual long mark measurement can be far off from the > >>> protocol's specification and needs a larger tolerance (IMO). > >>> > >>> Only allowing 0.5 to 1.0 of a protocol time unit tolerance, for a > >>> protocol element that is 8 to 16 protocol time units long, doesn't make > >>> too much sense to me. If the remote has the basic protocol time unit > >>> off from our expectation, the error will likely be amplified in a long > >>> protocol elements and very much off our expectation. > >> > >> Do you have a better way to differentiate JVC and NEC protocols? They > >> are pretty similar except for the timings. > > > > Yes: Invoke the 80/20 rule and don't try. > > At the room where my computers is located, I have two wide fluorescent lamps > each with 20W. If I don't hide the IR sensors bellow my desk, those lamps > are enough to generate random flickers at the sensors. With the more relaxed > driver we used to have at saa7134, it ended by producing random scancodes, > or, even worse, random repeat codes. So, lots of false-positive events. It is > a way worse to have false-positive than having a false-negative events. > > So, I don't think it is a good idea to use a "relaxed" mode by default. > > > > Enable NEC and disable JVC by > > default. Let the users know so as to properly manage user expectations. > > (Maxim's original question was about expectation.) > > We should discuss a little bit about RC subsystem evolution during LPC/2010, > but, from my point of view, we should soon deprecate the in-kernel keymap tables > on some new kernel version, using, instead, the ir-keycode application to > dynamically load the keycode tables via UDEV. Of course, after some time, > we may end by removing all those tables from the kernel. /me is very happy about it. The reason isn't even about size or some principle. These keymaps just increase compilation time too much... > > So, assuming that we follow this patch, what we'll have for a newer device is: > > For most devices, the keymap configuration table (rc_maps.cfg) will associate > all known devices with their corresponding keytable (we still need to generate > a default rc_maps.cfg that corresponds to the current in-kernel mapping, but > this is trivial). > > As ir-keytable disables all protocols but the one(s) needed by a given device, > in practice, if the scancode table specifies a NEC keymap table, JVC will be disabled. > If the table is for JVC, NEC will be disabled. > > So, this already happens in a practical scenario, as all decoders will be enabled > only before loading a keymap (or if the user explicitly enable the other decoders). > > So, the device will be in some sort of "training" mode, e. g. it will try every > possible decoder, and will be generating the scancodes for some userspace application > that will be learning the keycodes and creating a keymap table. > > IMO, we should have a way to tell the RC and/or the decoding subsystem to work on a > "relaxed" mode only when the user (or the userspace app) detects that there's something > wrong with that device. > > > When the user knows NEC isn't working, or he suspects JVC may work, he > > can bind that protocol to the particular IR receiver. > > > > Trying to solve the discrimination problem with blindly parallel > > decoding all the possible protocols is a big waste of effort IMO: > > > > a. Many remotes are sloppy and out of spec, and get worse with weak > > batteries. > > > > b. The IR receiver driver knows what remotes possibly came bundled with > > the hardware. (For the case of the MCE USB, it's almost always an RC-6 > > 6A remote.) > > > > c. The user can tell the kernel about his remote unambiguously. > > > > There's no burning need to wear a blindfold, AFAICT, so let's not. > > > > Why bother to solve a hard problem (discrimination of protocols from out > > of spec remotes), when it raises the error rate of solving the simple > > one (properly decoding a single protocol)? > > > > Doing many things poorly is worse than doing one thing well. > > Non-adaptive protocol discovery (i.e. blind parallel decoding) should > > not be the default if it leads to problems or inflated expectations for > > the user. > > > > > >> What happened in this case > >> was that the first signals matched the NEC protocol. Then we shifted > >> to bits that matched JVC protocol. > >> > >> The NEC bits are 9000/8400 = 7% longer. If we allow more than a 3.5% > >> error in the initial bit you can't separate the protocols. > >> > >> In general the decoders are pretty lax and the closest to the correct > >> one with decode the stream. The 50% rule only comes into play between > >> two very similar protocols. > >> > >> One solution would be to implement NEC/JVC in the same engine. Then > >> apply the NEC consistency checks. If the consistency check pass > >> present the event on the NEC interface. And then always present the > >> event on the JVC interface. > > > > It's just too simple to have the user: > > > > a. Try NEC > > b. Try JVC > > c. Make a judgment and stick with the one he perceives works. > > > > > > To have reliable discrimination in the general case between two > > protocols, given the variables out of our control (i.e. the remote > > control implementation) would require some sort of data collection and > > adaptive algorithm to go on inside the kernel. I don't think you can > > get reliable discrimination in one key press. Maybe by looking at the > > key press and the repeats together might up the probability of correct > > discrimination (that's one criterion you examined to make a > > determination in your earlier email). > > Cheers, > Mauro. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 20:13 ` Mauro Carvalho Chehab 2010-07-28 20:27 ` Maxim Levitsky @ 2010-07-29 2:36 ` Andy Walls 2010-07-29 11:58 ` Jon Smirl 1 sibling, 1 reply; 33+ messages in thread From: Andy Walls @ 2010-07-29 2:36 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Jon Smirl, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, 2010-07-28 at 17:13 -0300, Mauro Carvalho Chehab wrote: > Andy, > > Em 28-07-2010 15:18, Andy Walls escreveu: > > On Wed, 2010-07-28 at 13:35 -0400, Jon Smirl wrote: > >> On Wed, Jul 28, 2010 at 1:02 PM, Andy Walls <awalls@md.metrocast.net> wrote: > >>> On Wed, 2010-07-28 at 12:42 -0300, Mauro Carvalho Chehab wrote: > >>>> Em 28-07-2010 11:53, Jon Smirl escreveu: > >>>>> On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: > >>>>>> On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: > >>> > >>>>> I recommend that all decoders initially follow the strict protocol > >>>>> rules. That will let us find bugs like this one in the ENE driver. > >>>> > >>>> Agreed. > >>> > >>> Well... > >>> > >>> I'd possibly make an exception for the protocols that have long-mark > >>> leaders. The actual long mark measurement can be far off from the > >>> protocol's specification and needs a larger tolerance (IMO). > >>> > >>> Only allowing 0.5 to 1.0 of a protocol time unit tolerance, for a > >>> protocol element that is 8 to 16 protocol time units long, doesn't make > >>> too much sense to me. If the remote has the basic protocol time unit > >>> off from our expectation, the error will likely be amplified in a long > >>> protocol elements and very much off our expectation. > >> > >> Do you have a better way to differentiate JVC and NEC protocols? They > >> are pretty similar except for the timings. > > > > Yes: Invoke the 80/20 rule and don't try. > > At the room where my computers is located, I have two wide fluorescent lamps > each with 20W. If I don't hide the IR sensors bellow my desk, those lamps > are enough to generate random flickers at the sensors. With the more relaxed > driver we used to have at saa7134, it ended by producing random scancodes, > or, even worse, random repeat codes. So, lots of false-positive events. It is > a way worse to have false-positive than having a false-negative events. So those sorts of false positiives are bad, but a glitch filter handles those. (Easily done in software - borrow from the LIRC userspace if need be.) Set the glictch filter discard pulses that are shorter than some fraction of the expected protocol time unit. In the cx23885-input.c file I chose to set the hardware glitch filter at 75% for RC-6 and 62.5% for NEC (I forget my reasons for those numbers aside from being 3/4 & 5/8 respectively) > So, I don't think it is a good idea to use a "relaxed" mode by default. So I disagree. We should set the default to make the most common use case as error free as possible, reducing false detections and missed detections, so that it "just works". I see two conflicting goals, which force optimizations one direction or another: 1. Optimize for good protocol discrimination (at the expense of ability to decode from remotes/receviers that don't meet the protocol specs). 2. Optimize for good decoding within each protocol (at the expense of discriminating between the protocols). My assertion that goal #1, is not important in the most common use case and the ability have an acceptable success rate in the general case is questionable. There is so much information available to constrain what IR protocols will be present on a receiver, it hardly seems worth the effort for the normal user with 1 TV capture device and the remote that came with it. I'll also assert that goal #2 is easier to attain and more useful to the general case. Cheap remotes and poor ambient light conditions are common occurences. Glitch filters are simpler if you can just throw out glitches, restarting the measurment, knowing that the tolerances will still pull you in. One can also start to think about adaptive decoders, that adjust to the protocol time unit the remotes appears to be using. (In NEC, the normal mark time indicates the remote's idea of the protocol time unit.) What am I going to do about it all in the end? Probably not much. :) (I seem to have more time to gripe than do much else nowadays. :P ) > > Enable NEC and disable JVC by > > default. Let the users know so as to properly manage user expectations. > > (Maxim's original question was about expectation.) > > We should discuss a little bit about RC subsystem evolution during LPC/2010, Yes. I'll be there. > but, from my point of view, we should soon deprecate the in-kernel keymap tables > on some new kernel version, using, instead, the ir-keycode application to > dynamically load the keycode tables via UDEV. Of course, after some time, > we may end by removing all those tables from the kernel. > > So, assuming that we follow this patch, what we'll have for a newer device is: > > For most devices, the keymap configuration table (rc_maps.cfg) will associate > all known devices with their corresponding keytable (we still need to generate > a default rc_maps.cfg that corresponds to the current in-kernel mapping, but > this is trivial). > > As ir-keytable disables all protocols but the one(s) needed by a given device, > in practice, if the scancode table specifies a NEC keymap table, JVC will be disabled. > If the table is for JVC, NEC will be disabled. > > So, this already happens in a practical scenario, as all decoders will be enabled > only before loading a keymap (or if the user explicitly enable the other decoders). > > So, the device will be in some sort of "training" mode, e. g. it will try every > possible decoder, and will be generating the scancodes for some userspace application > that will be learning the keycodes and creating a keymap table. I like that discovery of a remote protocol and scancodes is a particular mode, but I don't see the value of turning it on by default. It seems like the user-space CLI or GUI apps could just set it that way for the receiver of interest. I'm not sure I can develop some evil IR DoS device to take advantage of that default, so I suppose it is only wasting CPU cycles. > IMO, we should have a way to tell the RC and/or the decoding subsystem to work on a > "relaxed" mode only when the user (or the userspace app) detects that there's something > wrong with that device. Simple glitch filters, like ones that discard measurments, would be a case where the decoding would benefit from the decoders being less picky. As an example of simple hardware glitch filter, here's an excerpt from the public CX25480/1/2/3 datasheet on the IR low-pass (glitch) filter that's in the hardware: "the counter reloads using the value programmed to this register each time a qualified edge is detected [...]. Once the reload occurs, the counter begins decrementing. If the next programmed edge occurs before the counter reaches 0, the pulse measurement value is discarded, the filter modulus value is reloaded, and the next pulse measurement begins. Thus, any pulse measurement that ends before the counter reaches 0 is ignored." Regards, Andy ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-29 2:36 ` Andy Walls @ 2010-07-29 11:58 ` Jon Smirl 0 siblings, 0 replies; 33+ messages in thread From: Jon Smirl @ 2010-07-29 11:58 UTC (permalink / raw) To: Andy Walls Cc: Mauro Carvalho Chehab, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, Jul 28, 2010 at 10:36 PM, Andy Walls <awalls@md.metrocast.net> wrote: > As an example of simple hardware glitch filter, here's an excerpt > from the public CX25480/1/2/3 datasheet on the IR low-pass (glitch) > filter that's in the hardware: > > "the counter reloads using the value programmed to this register each > time a qualified edge is detected [...]. Once the reload occurs, the > counter begins decrementing. If the next programmed edge occurs before > the counter reaches 0, the pulse measurement value is discarded, the > filter modulus value is reloaded, and the next pulse measurement begins. > Thus, any pulse measurement that ends before the counter reaches 0 is > ignored." You could make a small library that drivers could link in. That way we won't get it implemented ten different ways. Devices that do the filtering in firmware won't have to use the code. There are lots of ways to design it. A simple one would be to sit on each message until the next one arrives. Then make a decision to pass the previous message up or declare the current edge a glitch and wait for the next one. It probably needs a timeout so that you don't sit on long pulses forever waiting on the next one. -- Jon Smirl jonsmirl@gmail.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 17:02 ` Andy Walls 2010-07-28 17:35 ` Jon Smirl @ 2010-07-28 18:29 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 18:29 UTC (permalink / raw) To: Andy Walls Cc: Jon Smirl, Maxim Levitsky, Jarod Wilson, linux-input, linux-media Em 28-07-2010 14:02, Andy Walls escreveu: > On Wed, 2010-07-28 at 12:42 -0300, Mauro Carvalho Chehab wrote: >> Em 28-07-2010 11:53, Jon Smirl escreveu: >>> On Wed, Jul 28, 2010 at 10:38 AM, Andy Walls <awalls@md.metrocast.net> wrote: >>>> On Wed, 2010-07-28 at 09:46 -0400, Jon Smirl wrote: > >>> I recommend that all decoders initially follow the strict protocol >>> rules. That will let us find bugs like this one in the ENE driver. >> >> Agreed. > > Well... > > I'd possibly make an exception for the protocols that have long-mark > leaders. The actual long mark measurement can be far off from the > protocol's specification and needs a larger tolerance (IMO). > > Only allowing 0.5 to 1.0 of a protocol time unit tolerance, for a > protocol element that is 8 to 16 protocol time units long, doesn't make > too much sense to me. If the remote has the basic protocol time unit > off from our expectation, the error will likely be amplified in a long > protocol elements and very much off our expectation. We may adjust it as we note problems on it, but relaxing rules may cause bad effects, so the better is to be more strict. >> I think that the better is to add some parameters, via sysfs, to relax the >> rules at the current decoders, if needed. > > Is that worth the effort? It seems like only going half-way to an > ultimate end state. Well, let's see first if this is needed. Then, we take the decisions case by case. > <crazy idea> > If you go through the effort of implementing fine grained controls > (tweaking tolerances for this pulse type here or there), why not just > implement a configurable decoding engine that takes as input: > > symbol definitions > (pulse and space length specifications and tolerances) > pulse train states > allowed state transitions > gap length > decoded output data length > > and instantiates a decoder that follows a user-space provided > specification? > > The user can write his own decoding engine specification in a text file, > feed it into the kernel, and the kernel can implement it for him. > </crazy idea> It is not a crazy idea, and perhaps this is the only way to work with certain protocols, like Quatro Pulse (see my previous email). But I think that we should still have the proper decoders for common protocols and that we won't have any legal restriction to implement a decoder. A generic decoder will be less efficient than > OK, maybe that is a little too much time and effort. ;) Good point. Well, we'll need some volunteer to write such driver ;) Cheers, Mauro ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 13:13 ` Mauro Carvalho Chehab 2010-07-28 13:46 ` Jon Smirl @ 2010-07-28 14:24 ` Maxim Levitsky 2010-07-28 14:41 ` Jon Smirl 2010-07-28 21:01 ` Maxim Levitsky 1 sibling, 2 replies; 33+ messages in thread From: Maxim Levitsky @ 2010-07-28 14:24 UTC (permalink / raw) To: Mauro Carvalho Chehab; +Cc: Jon Smirl, Jarod Wilson, linux-input, linux-media On Wed, 2010-07-28 at 10:13 -0300, Mauro Carvalho Chehab wrote: > Em 28-07-2010 07:40, Jon Smirl escreveu: > > On Wed, Jul 28, 2010 at 2:30 AM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: > >> On Tue, 2010-07-27 at 22:33 -0400, Jarod Wilson wrote: > >>> On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: > > >> No its not, its just extended NEC. > > > > http://www.sbprojects.com/knowledge/ir/nec.htm > > Says the last two bytes should be the complement of each other. > > > > So for extended NEC it would need to be: > > 1100 0010 1010 0101 instead of 1100 0010 1010 0100 > > The last bit is wrong. > > > > From the debug output it is decoding as NEC, but then it fails a > > consistency check. Maybe we need to add a new protocol that lets NEC > > commands through even if they fail the error checks. > > Assuming that Maxim's IR receiver is not causing some bad decode at the > NEC code, it seems simpler to add a parameter at sysfs to relax the NEC > detection. We should add some way, at the userspace table for those RC's > that uses a NEC-like code. > > There's another alternative: currently, the NEC decoder produces a 16 bits > code for NEC and a 24 bits for NEC-extended code. The decoder may return a > 32 bits code when none of the checksum's match the NEC or NEC-extended standard. > > Such 32 bits code won't match a keycode on a 16-bits or 24-bits table, so > there's no risk of generating a wrong keycode, if the wrong consistent check > is due to a reception error. > > Btw, we still need to port rc core to use the new tables ioctl's, as cleaning > all keycodes on a 32 bits table would take forever with the current input > events ioctls. > > > It may also be > > that the NEC machine rejected it because the timing was so far off > > that it concluded that it couldn't be a NEC messages. The log didn't > > include the exact reason it got rejected. Add some printks at the end > > of the NEC machine to determine the exact reason for rejection. > > The better is to discard the possibility of a timing issue before changing > the decoder to accept NEC-like codes without consistency checks. > > > The current state machines enforce protocol compliance so there are > > probably a lot of older remotes that won't decode right. We can use > > some help in adjusting the state machines to let out of spec codes > > through. > > Yes, but we should take some care to avoid having another protocol decoder to > interpret badly a different protocol. So, I think that the decoders may have > some sysfs nodes to tweak the decoders to accept those older remotes. > > We'll need a consistent way to add some logic at the remotes keycodes used by > ir-keycode, in order to allow it to tweak the decoder when a keycode table for > such remote is loaded into the driver. > > > User space lirc is much older. Bugs like this have been worked out of > > it. It will take some time to get the kernel implementation up to the > > same level. > > True. I more or less got to the bottom of this. It turns out that ENE reciever has a non linear measurement error. That is the longer sample is, the larger error it contains. Substracting around 4% from the samples makes the output look much more standard compliant. You are right that my remote has JVC protocol. (at least I am sure now it hasn't NEC, because repeat looks differently). My remote now actually partially works with JVC decoder, it decodes every other keypress. Still, no repeat is supported. However, all recievers (and transmitters) aren't perfect. Thats why I prefer lirc, because it makes no assumptions about protocol, so it can be 'trained' to work with any remote, and under very large range of error tolerances. Best regards, Maxim Levitsky ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 14:24 ` Maxim Levitsky @ 2010-07-28 14:41 ` Jon Smirl 2010-07-28 15:18 ` Jarod Wilson 2010-07-28 15:56 ` Mauro Carvalho Chehab 2010-07-28 21:01 ` Maxim Levitsky 1 sibling, 2 replies; 33+ messages in thread From: Jon Smirl @ 2010-07-28 14:41 UTC (permalink / raw) To: Maxim Levitsky Cc: Mauro Carvalho Chehab, Jarod Wilson, linux-input, linux-media On Wed, Jul 28, 2010 at 10:24 AM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: > On Wed, 2010-07-28 at 10:13 -0300, Mauro Carvalho Chehab wrote: >> Em 28-07-2010 07:40, Jon Smirl escreveu: >> > On Wed, Jul 28, 2010 at 2:30 AM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: >> >> On Tue, 2010-07-27 at 22:33 -0400, Jarod Wilson wrote: >> >>> On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: >> >> >> No its not, its just extended NEC. >> > >> > http://www.sbprojects.com/knowledge/ir/nec.htm >> > Says the last two bytes should be the complement of each other. >> > >> > So for extended NEC it would need to be: >> > 1100 0010 1010 0101 instead of 1100 0010 1010 0100 >> > The last bit is wrong. >> > >> > From the debug output it is decoding as NEC, but then it fails a >> > consistency check. Maybe we need to add a new protocol that lets NEC >> > commands through even if they fail the error checks. >> >> Assuming that Maxim's IR receiver is not causing some bad decode at the >> NEC code, it seems simpler to add a parameter at sysfs to relax the NEC >> detection. We should add some way, at the userspace table for those RC's >> that uses a NEC-like code. >> >> There's another alternative: currently, the NEC decoder produces a 16 bits >> code for NEC and a 24 bits for NEC-extended code. The decoder may return a >> 32 bits code when none of the checksum's match the NEC or NEC-extended standard. >> >> Such 32 bits code won't match a keycode on a 16-bits or 24-bits table, so >> there's no risk of generating a wrong keycode, if the wrong consistent check >> is due to a reception error. >> >> Btw, we still need to port rc core to use the new tables ioctl's, as cleaning >> all keycodes on a 32 bits table would take forever with the current input >> events ioctls. >> >> > It may also be >> > that the NEC machine rejected it because the timing was so far off >> > that it concluded that it couldn't be a NEC messages. The log didn't >> > include the exact reason it got rejected. Add some printks at the end >> > of the NEC machine to determine the exact reason for rejection. >> >> The better is to discard the possibility of a timing issue before changing >> the decoder to accept NEC-like codes without consistency checks. >> >> > The current state machines enforce protocol compliance so there are >> > probably a lot of older remotes that won't decode right. We can use >> > some help in adjusting the state machines to let out of spec codes >> > through. >> >> Yes, but we should take some care to avoid having another protocol decoder to >> interpret badly a different protocol. So, I think that the decoders may have >> some sysfs nodes to tweak the decoders to accept those older remotes. >> >> We'll need a consistent way to add some logic at the remotes keycodes used by >> ir-keycode, in order to allow it to tweak the decoder when a keycode table for >> such remote is loaded into the driver. >> >> > User space lirc is much older. Bugs like this have been worked out of >> > it. It will take some time to get the kernel implementation up to the >> > same level. >> >> True. > > > I more or less got to the bottom of this. > > > It turns out that ENE reciever has a non linear measurement error. > That is the longer sample is, the larger error it contains. > Substracting around 4% from the samples makes the output look much more > standard compliant. Most of the protocols are arranged using power of two timings. For example 562.5, 1125, 2250, 4500, 9000 -- NEC 525, 1050, 2100, 4200, 8400 - JVC The decoders are designed to be much more sensitive to the power of two relationship than the exact timing. Your non-linear error messed up the relationship. > > You are right that my remote has JVC protocol. (at least I am sure now > it hasn't NEC, because repeat looks differently). > > My remote now actually partially works with JVC decoder, it decodes > every other keypress. > > Still, no repeat is supported. It probably isn't implemented yet. Jarod has been focusing more on getting the basic decoders to work. > However, all recievers (and transmitters) aren't perfect. > Thats why I prefer lirc, because it makes no assumptions about protocol, > so it can be 'trained' to work with any remote, and under very large > range of error tolerances. It's possible to build a Linux IR decoder engine that can be loaded with the old LIRC config files. But before doing this we should work on getting all of the errors out of the standard decoders. > > Best regards, > Maxim Levitsky > > -- Jon Smirl jonsmirl@gmail.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 14:41 ` Jon Smirl @ 2010-07-28 15:18 ` Jarod Wilson 2010-07-28 15:56 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 33+ messages in thread From: Jarod Wilson @ 2010-07-28 15:18 UTC (permalink / raw) To: Jon Smirl Cc: Maxim Levitsky, Mauro Carvalho Chehab, Jarod Wilson, linux-input, linux-media On Wed, Jul 28, 2010 at 10:41:27AM -0400, Jon Smirl wrote: > On Wed, Jul 28, 2010 at 10:24 AM, Maxim Levitsky ... > > You are right that my remote has JVC protocol. (at least I am sure now > > it hasn't NEC, because repeat looks differently). > > > > My remote now actually partially works with JVC decoder, it decodes > > every other keypress. > > > > Still, no repeat is supported. > > It probably isn't implemented yet. Jarod has been focusing more on > getting the basic decoders to work. More specifically, getting the basic decoders to work with very specific hardware -- i.e., the mceusb transceivers, and primarily focused only on RC-6(A) decode w/the mceusb bundled remotes. That, and getting the lirc bridge driver working for both rx and tx. Basically, my plan of attack has been to get enough bits in place that we have a "reference implementation", if you will, of a driver that supports all in-kernel decoders and the lirc interface, complete with the ability to do tx[*], and from there, then we can really dig into the in-kernel decoders and/or work on porting additional drivers to ir-core. I'm more focused on porting additional drivers to ir-core at the moment than I am on testing all of the protocol decoders right now. [*] we still don't have an ir-core "native" tx method, but tx on the mceusb works quite well using the lirc bridge plugin -- Jarod Wilson jarod@redhat.com -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 14:41 ` Jon Smirl 2010-07-28 15:18 ` Jarod Wilson @ 2010-07-28 15:56 ` Mauro Carvalho Chehab 2010-07-28 17:04 ` Jon Smirl 1 sibling, 1 reply; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 15:56 UTC (permalink / raw) To: Jon Smirl; +Cc: Maxim Levitsky, Jarod Wilson, linux-input, linux-media Em 28-07-2010 11:41, Jon Smirl escreveu: > It's possible to build a Linux IR decoder engine that can be loaded > with the old LIRC config files. I think it is a good idea to have a decoder that works with such files anyway. There are some good reasons for that, as it would allow in-kernel support for protocols that may have some patent restrictions on a few countries that allow patents on software. We'll need to discuss the API requirements for such decoder, in order to load the RC decoding code into it. Cheers, Mauro. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 15:56 ` Mauro Carvalho Chehab @ 2010-07-28 17:04 ` Jon Smirl 2010-07-28 17:21 ` Andy Walls 2010-07-28 18:08 ` Mauro Carvalho Chehab 0 siblings, 2 replies; 33+ messages in thread From: Jon Smirl @ 2010-07-28 17:04 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, Jul 28, 2010 at 11:56 AM, Mauro Carvalho Chehab <mchehab@redhat.com> wrote: > Em 28-07-2010 11:41, Jon Smirl escreveu: > >> It's possible to build a Linux IR decoder engine that can be loaded >> with the old LIRC config files. > > I think it is a good idea to have a decoder that works with such files anyway. The recorder should use the Linux IR system to record the data. It would confusing to mix the systems. Users need to be really sure that the standard protocol decoders don't understand their protocol before resorting to this. Any one in this situation should post their recorded data so we can check for driver implementation errors. An example: if you use irrecord on Sony remotes lirc always records them in raw mode. The true problem here is that irrecord doesn't understand that Sony remotes mix different flavors of the Sony protocol on a single remote. This leads you to think that the Sony protocol engine is broken when it really isn't. It's the irrecord tool that is broken. The kernel IR system will decode these remotes correctly without resorting to raw mode. > There are some good reasons for that, as it would allow in-kernel support for > protocols that may have some patent restrictions on a few countries that allow > patents on software. Are there any IR protocols less than 20 (or 17) years old? If they are older than that the patents have expired. I expect IR use to decline in the future, it will be replaced with RF4CE radio remotes. > > We'll need to discuss the API requirements for such decoder, in order to load > the RC decoding code into it. > > Cheers, > Mauro. > -- Jon Smirl jonsmirl@gmail.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 17:04 ` Jon Smirl @ 2010-07-28 17:21 ` Andy Walls 2010-07-28 17:38 ` Jon Smirl 2010-07-28 18:08 ` Mauro Carvalho Chehab 1 sibling, 1 reply; 33+ messages in thread From: Andy Walls @ 2010-07-28 17:21 UTC (permalink / raw) To: Jon Smirl Cc: Mauro Carvalho Chehab, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, 2010-07-28 at 13:04 -0400, Jon Smirl wrote: > On Wed, Jul 28, 2010 at 11:56 AM, Mauro Carvalho Chehab > <mchehab@redhat.com> wrote: > > Em 28-07-2010 11:41, Jon Smirl escreveu: > > Are there any IR protocols less than 20 (or 17) years old? If they are > older than that the patents have expired. I expect IR use to decline > in the future, it will be replaced with RF4CE radio remotes. UEI's XMP protocol for one, IIRC. UEI are the folks that sell/make "OneForALL" branded remotes. You can read about their patents' remaining lifetimes in this March 2010 SEC filing: http://www.faqs.org/sec-filings/100315/UNIVERSAL-ELECTRONICS-INC_10-K/ 1 to 18 years - that includes the ones they just bought from Zilog. That is not to say that all those patents cover protocols. Regards, Andy ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 17:21 ` Andy Walls @ 2010-07-28 17:38 ` Jon Smirl 2010-07-28 18:35 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 33+ messages in thread From: Jon Smirl @ 2010-07-28 17:38 UTC (permalink / raw) To: Andy Walls Cc: Mauro Carvalho Chehab, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, Jul 28, 2010 at 1:21 PM, Andy Walls <awalls@md.metrocast.net> wrote: > On Wed, 2010-07-28 at 13:04 -0400, Jon Smirl wrote: >> On Wed, Jul 28, 2010 at 11:56 AM, Mauro Carvalho Chehab >> <mchehab@redhat.com> wrote: >> > Em 28-07-2010 11:41, Jon Smirl escreveu: > >> >> Are there any IR protocols less than 20 (or 17) years old? If they are >> older than that the patents have expired. I expect IR use to decline >> in the future, it will be replaced with RF4CE radio remotes. > > UEI's XMP protocol for one, IIRC. The beauty of LIRC is that you can use any remote for input. If one remote's protocols are patented, just use another remote. Only in the case where we have to xmit the protocol is the patent conflict unavoidable. In that case we could resort to sending a raw pulse timing string that comes from user space. > > UEI are the folks that sell/make "OneForALL" branded remotes. > > You can read about their patents' remaining lifetimes in this March 2010 > SEC filing: > > http://www.faqs.org/sec-filings/100315/UNIVERSAL-ELECTRONICS-INC_10-K/ > > 1 to 18 years - that includes the ones they just bought from Zilog. > That is not to say that all those patents cover protocols. > > > Regards, > Andy > > -- Jon Smirl jonsmirl@gmail.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 17:38 ` Jon Smirl @ 2010-07-28 18:35 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 18:35 UTC (permalink / raw) To: Jon Smirl Cc: Andy Walls, Maxim Levitsky, Jarod Wilson, linux-input, linux-media Em 28-07-2010 14:38, Jon Smirl escreveu: > On Wed, Jul 28, 2010 at 1:21 PM, Andy Walls <awalls@md.metrocast.net> wrote: >> On Wed, 2010-07-28 at 13:04 -0400, Jon Smirl wrote: >>> On Wed, Jul 28, 2010 at 11:56 AM, Mauro Carvalho Chehab >>> <mchehab@redhat.com> wrote: >>>> Em 28-07-2010 11:41, Jon Smirl escreveu: >> >>> >>> Are there any IR protocols less than 20 (or 17) years old? If they are >>> older than that the patents have expired. I expect IR use to decline >>> in the future, it will be replaced with RF4CE radio remotes. >> >> UEI's XMP protocol for one, IIRC. > > The beauty of LIRC is that you can use any remote for input. If one > remote's protocols are patented, just use another remote. > > Only in the case where we have to xmit the protocol is the patent > conflict unavoidable. In that case we could resort to sending a raw > pulse timing string that comes from user space. Well, software patents are valid only on very few Countries. People that live on a software-patent-free Country can keep using those protocols, if they can just upload a set of rules for a generic driver. On the other hand, a rule-hardcoded codec for a patented protocol cannot be inside Kernel, as this would restrict kernel distribution on those non-software-patent-free Countries. Cheers, Mauro. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 17:04 ` Jon Smirl 2010-07-28 17:21 ` Andy Walls @ 2010-07-28 18:08 ` Mauro Carvalho Chehab 2010-07-28 18:05 ` Jarod Wilson 1 sibling, 1 reply; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 18:08 UTC (permalink / raw) To: Jon Smirl; +Cc: Maxim Levitsky, Jarod Wilson, linux-input, linux-media Em 28-07-2010 14:04, Jon Smirl escreveu: > On Wed, Jul 28, 2010 at 11:56 AM, Mauro Carvalho Chehab > <mchehab@redhat.com> wrote: >> Em 28-07-2010 11:41, Jon Smirl escreveu: >> >>> It's possible to build a Linux IR decoder engine that can be loaded >>> with the old LIRC config files. >> >> I think it is a good idea to have a decoder that works with such files anyway. > > The recorder should use the Linux IR system to record the data. It > would confusing to mix the systems. Users need to be really sure that > the standard protocol decoders don't understand their protocol before > resorting to this. Any one in this situation should post their > recorded data so we can check for driver implementation errors. > > An example: if you use irrecord on Sony remotes lirc always records > them in raw mode. The true problem here is that irrecord doesn't > understand that Sony remotes mix different flavors of the Sony > protocol on a single remote. This leads you to think that the Sony > protocol engine is broken when it really isn't. It's the irrecord tool > that is broken. The kernel IR system will decode these remotes > correctly without resorting to raw mode. A decoder like that should be a last-resort decoder, only in the cases where there's no other option. >> There are some good reasons for that, as it would allow in-kernel support for >> protocols that may have some patent restrictions on a few countries that allow >> patents on software. > > Are there any IR protocols less than 20 (or 17) years old? Yes. This protocol is brand new: https://www.smkusa.com/usa/technologies/qp/ And several new devices are starting to accept it. > If they are > older than that the patents have expired. I expect IR use to decline > in the future, it will be replaced with RF4CE radio remotes. I expect so, but it will take some time until this transition happens. Cheers, Mauro. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 18:08 ` Mauro Carvalho Chehab @ 2010-07-28 18:05 ` Jarod Wilson 2010-07-28 18:40 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 33+ messages in thread From: Jarod Wilson @ 2010-07-28 18:05 UTC (permalink / raw) To: Mauro Carvalho Chehab Cc: Jon Smirl, Maxim Levitsky, Jarod Wilson, linux-input, linux-media On Wed, Jul 28, 2010 at 03:08:13PM -0300, Mauro Carvalho Chehab wrote: > Em 28-07-2010 14:04, Jon Smirl escreveu: > > On Wed, Jul 28, 2010 at 11:56 AM, Mauro Carvalho Chehab > > <mchehab@redhat.com> wrote: > >> Em 28-07-2010 11:41, Jon Smirl escreveu: > >> > >>> It's possible to build a Linux IR decoder engine that can be loaded > >>> with the old LIRC config files. > >> > >> I think it is a good idea to have a decoder that works with such files anyway. > > > > The recorder should use the Linux IR system to record the data. It > > would confusing to mix the systems. Users need to be really sure that > > the standard protocol decoders don't understand their protocol before > > resorting to this. Any one in this situation should post their > > recorded data so we can check for driver implementation errors. > > > > An example: if you use irrecord on Sony remotes lirc always records > > them in raw mode. The true problem here is that irrecord doesn't > > understand that Sony remotes mix different flavors of the Sony > > protocol on a single remote. This leads you to think that the Sony > > protocol engine is broken when it really isn't. It's the irrecord tool > > that is broken. The kernel IR system will decode these remotes > > correctly without resorting to raw mode. > > A decoder like that should be a last-resort decoder, only in the > cases where there's no other option. > > >> There are some good reasons for that, as it would allow in-kernel support for > >> protocols that may have some patent restrictions on a few countries that allow > >> patents on software. > > > > Are there any IR protocols less than 20 (or 17) years old? > > Yes. This protocol is brand new: > https://www.smkusa.com/usa/technologies/qp/ > > And several new devices are starting to accept it. The US patent appears to have been filed in 1995 and granted in 1997, so "brand new" is relative. ;) http://www.freepatentsonline.com/5640160.html We do have a few more years of being encumbered by it here in the US though. :( -- Jarod Wilson jarod@redhat.com ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 18:05 ` Jarod Wilson @ 2010-07-28 18:40 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 18:40 UTC (permalink / raw) To: Jarod Wilson Cc: Jon Smirl, Maxim Levitsky, Jarod Wilson, linux-input, linux-media Em 28-07-2010 15:05, Jarod Wilson escreveu: > On Wed, Jul 28, 2010 at 03:08:13PM -0300, Mauro Carvalho Chehab wrote: >> Em 28-07-2010 14:04, Jon Smirl escreveu: >>> On Wed, Jul 28, 2010 at 11:56 AM, Mauro Carvalho Chehab >>> <mchehab@redhat.com> wrote: >>>> Em 28-07-2010 11:41, Jon Smirl escreveu: >>>> >>>>> It's possible to build a Linux IR decoder engine that can be loaded >>>>> with the old LIRC config files. >>>> >>>> I think it is a good idea to have a decoder that works with such files anyway. >>> >>> The recorder should use the Linux IR system to record the data. It >>> would confusing to mix the systems. Users need to be really sure that >>> the standard protocol decoders don't understand their protocol before >>> resorting to this. Any one in this situation should post their >>> recorded data so we can check for driver implementation errors. >>> >>> An example: if you use irrecord on Sony remotes lirc always records >>> them in raw mode. The true problem here is that irrecord doesn't >>> understand that Sony remotes mix different flavors of the Sony >>> protocol on a single remote. This leads you to think that the Sony >>> protocol engine is broken when it really isn't. It's the irrecord tool >>> that is broken. The kernel IR system will decode these remotes >>> correctly without resorting to raw mode. >> >> A decoder like that should be a last-resort decoder, only in the >> cases where there's no other option. >> >>>> There are some good reasons for that, as it would allow in-kernel support for >>>> protocols that may have some patent restrictions on a few countries that allow >>>> patents on software. >>> >>> Are there any IR protocols less than 20 (or 17) years old? >> >> Yes. This protocol is brand new: >> https://www.smkusa.com/usa/technologies/qp/ >> >> And several new devices are starting to accept it. > > The US patent appears to have been filed in 1995 and granted in 1997, so > "brand new" is relative. ;) Yes, I saw the patent timestamps too ;) Yet, AFAIK, they're starting to use this protocol on newer IR devices, so, we'll probably see some new devices using it. > > http://www.freepatentsonline.com/5640160.html > > We do have a few more years of being encumbered by it here in the US > though. :( > :( Cheers, Mauro. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 14:24 ` Maxim Levitsky 2010-07-28 14:41 ` Jon Smirl @ 2010-07-28 21:01 ` Maxim Levitsky 2010-07-28 21:35 ` Mauro Carvalho Chehab 1 sibling, 1 reply; 33+ messages in thread From: Maxim Levitsky @ 2010-07-28 21:01 UTC (permalink / raw) To: Mauro Carvalho Chehab; +Cc: Jon Smirl, Jarod Wilson, linux-input, linux-media On Wed, 2010-07-28 at 17:24 +0300, Maxim Levitsky wrote: > On Wed, 2010-07-28 at 10:13 -0300, Mauro Carvalho Chehab wrote: > > Em 28-07-2010 07:40, Jon Smirl escreveu: > > > On Wed, Jul 28, 2010 at 2:30 AM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: > > >> On Tue, 2010-07-27 at 22:33 -0400, Jarod Wilson wrote: > > >>> On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: > > > > >> No its not, its just extended NEC. > > > > > > http://www.sbprojects.com/knowledge/ir/nec.htm > > > Says the last two bytes should be the complement of each other. > > > > > > So for extended NEC it would need to be: > > > 1100 0010 1010 0101 instead of 1100 0010 1010 0100 > > > The last bit is wrong. > > > > > > From the debug output it is decoding as NEC, but then it fails a > > > consistency check. Maybe we need to add a new protocol that lets NEC > > > commands through even if they fail the error checks. > > > > Assuming that Maxim's IR receiver is not causing some bad decode at the > > NEC code, it seems simpler to add a parameter at sysfs to relax the NEC > > detection. We should add some way, at the userspace table for those RC's > > that uses a NEC-like code. > > > > There's another alternative: currently, the NEC decoder produces a 16 bits > > code for NEC and a 24 bits for NEC-extended code. The decoder may return a > > 32 bits code when none of the checksum's match the NEC or NEC-extended standard. > > > > Such 32 bits code won't match a keycode on a 16-bits or 24-bits table, so > > there's no risk of generating a wrong keycode, if the wrong consistent check > > is due to a reception error. > > > > Btw, we still need to port rc core to use the new tables ioctl's, as cleaning > > all keycodes on a 32 bits table would take forever with the current input > > events ioctls. > > > > > It may also be > > > that the NEC machine rejected it because the timing was so far off > > > that it concluded that it couldn't be a NEC messages. The log didn't > > > include the exact reason it got rejected. Add some printks at the end > > > of the NEC machine to determine the exact reason for rejection. > > > > The better is to discard the possibility of a timing issue before changing > > the decoder to accept NEC-like codes without consistency checks. > > > > > The current state machines enforce protocol compliance so there are > > > probably a lot of older remotes that won't decode right. We can use > > > some help in adjusting the state machines to let out of spec codes > > > through. > > > > Yes, but we should take some care to avoid having another protocol decoder to > > interpret badly a different protocol. So, I think that the decoders may have > > some sysfs nodes to tweak the decoders to accept those older remotes. > > > > We'll need a consistent way to add some logic at the remotes keycodes used by > > ir-keycode, in order to allow it to tweak the decoder when a keycode table for > > such remote is loaded into the driver. > > > > > User space lirc is much older. Bugs like this have been worked out of > > > it. It will take some time to get the kernel implementation up to the > > > same level. > > > > True. > > > I more or less got to the bottom of this. > > > It turns out that ENE reciever has a non linear measurement error. > That is the longer sample is, the larger error it contains. > Substracting around 4% from the samples makes the output look much more > standard compliant. > > You are right that my remote has JVC protocol. (at least I am sure now > it hasn't NEC, because repeat looks differently). > > My remote now actually partially works with JVC decoder, it decodes > every other keypress. > > Still, no repeat is supported. > > However, all recievers (and transmitters) aren't perfect. > Thats why I prefer lirc, because it makes no assumptions about protocol, > so it can be 'trained' to work with any remote, and under very large > range of error tolerances. > > Best regards, > Maxim Levitsky > I think I found the reason behind some of incorrect behavior. I see that in-kernel decoding is unhappy about the way I process gaps. I do exactly the same I did in lirc driver. At the end of keypress, the driver receives series of spaces from hardware. I accumulate 'em until patience^Wtimeout runs out. Then I put hardware in 'idle' mode, and remember current time. As soon as I get new pulse, I send a sum of accumulated same and time difference to user. Therefore every keypress ends with a pulse, and starts with space. But in-kernel decoding isn't happy about it, it seems.. at least NEC decoder... How you think to solve that? Fix in-kernel decoders maybe? Best regards, Maxim Levitsky ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: Can I expect in-kernel decoding to work out of box? 2010-07-28 21:01 ` Maxim Levitsky @ 2010-07-28 21:35 ` Mauro Carvalho Chehab 0 siblings, 0 replies; 33+ messages in thread From: Mauro Carvalho Chehab @ 2010-07-28 21:35 UTC (permalink / raw) To: Maxim Levitsky; +Cc: Jon Smirl, Jarod Wilson, linux-input, linux-media Em 28-07-2010 18:01, Maxim Levitsky escreveu: > On Wed, 2010-07-28 at 17:24 +0300, Maxim Levitsky wrote: >> On Wed, 2010-07-28 at 10:13 -0300, Mauro Carvalho Chehab wrote: >>> Em 28-07-2010 07:40, Jon Smirl escreveu: >>>> On Wed, Jul 28, 2010 at 2:30 AM, Maxim Levitsky <maximlevitsky@gmail.com> wrote: >>>>> On Tue, 2010-07-27 at 22:33 -0400, Jarod Wilson wrote: >>>>>> On Tue, Jul 27, 2010 at 9:29 PM, Jon Smirl <jonsmirl@gmail.com> wrote: >>> >>>>> No its not, its just extended NEC. >>>> >>>> http://www.sbprojects.com/knowledge/ir/nec.htm >>>> Says the last two bytes should be the complement of each other. >>>> >>>> So for extended NEC it would need to be: >>>> 1100 0010 1010 0101 instead of 1100 0010 1010 0100 >>>> The last bit is wrong. >>>> >>>> From the debug output it is decoding as NEC, but then it fails a >>>> consistency check. Maybe we need to add a new protocol that lets NEC >>>> commands through even if they fail the error checks. >>> >>> Assuming that Maxim's IR receiver is not causing some bad decode at the >>> NEC code, it seems simpler to add a parameter at sysfs to relax the NEC >>> detection. We should add some way, at the userspace table for those RC's >>> that uses a NEC-like code. >>> >>> There's another alternative: currently, the NEC decoder produces a 16 bits >>> code for NEC and a 24 bits for NEC-extended code. The decoder may return a >>> 32 bits code when none of the checksum's match the NEC or NEC-extended standard. >>> >>> Such 32 bits code won't match a keycode on a 16-bits or 24-bits table, so >>> there's no risk of generating a wrong keycode, if the wrong consistent check >>> is due to a reception error. >>> >>> Btw, we still need to port rc core to use the new tables ioctl's, as cleaning >>> all keycodes on a 32 bits table would take forever with the current input >>> events ioctls. >>> >>>> It may also be >>>> that the NEC machine rejected it because the timing was so far off >>>> that it concluded that it couldn't be a NEC messages. The log didn't >>>> include the exact reason it got rejected. Add some printks at the end >>>> of the NEC machine to determine the exact reason for rejection. >>> >>> The better is to discard the possibility of a timing issue before changing >>> the decoder to accept NEC-like codes without consistency checks. >>> >>>> The current state machines enforce protocol compliance so there are >>>> probably a lot of older remotes that won't decode right. We can use >>>> some help in adjusting the state machines to let out of spec codes >>>> through. >>> >>> Yes, but we should take some care to avoid having another protocol decoder to >>> interpret badly a different protocol. So, I think that the decoders may have >>> some sysfs nodes to tweak the decoders to accept those older remotes. >>> >>> We'll need a consistent way to add some logic at the remotes keycodes used by >>> ir-keycode, in order to allow it to tweak the decoder when a keycode table for >>> such remote is loaded into the driver. >>> >>>> User space lirc is much older. Bugs like this have been worked out of >>>> it. It will take some time to get the kernel implementation up to the >>>> same level. >>> >>> True. >> >> >> I more or less got to the bottom of this. >> >> >> It turns out that ENE reciever has a non linear measurement error. >> That is the longer sample is, the larger error it contains. >> Substracting around 4% from the samples makes the output look much more >> standard compliant. >> >> You are right that my remote has JVC protocol. (at least I am sure now >> it hasn't NEC, because repeat looks differently). >> >> My remote now actually partially works with JVC decoder, it decodes >> every other keypress. >> >> Still, no repeat is supported. >> >> However, all recievers (and transmitters) aren't perfect. >> Thats why I prefer lirc, because it makes no assumptions about protocol, >> so it can be 'trained' to work with any remote, and under very large >> range of error tolerances. >> >> Best regards, >> Maxim Levitsky >> > > I think I found the reason behind some of incorrect behavior. > > I see that in-kernel decoding is unhappy about the way I process gaps. > > I do exactly the same I did in lirc driver. > > At the end of keypress, the driver receives series of spaces from > hardware. > I accumulate 'em until patience^Wtimeout runs out. > Then I put hardware in 'idle' mode, and remember current time. > > As soon as I get new pulse, I send a sum of accumulated same and time > difference to user. > > Therefore every keypress ends with a pulse, and starts with space. > But in-kernel decoding isn't happy about it, it seems.. at least NEC > decoder... > > How you think to solve that? > Fix in-kernel decoders maybe? Just send whatever you receive from hardware to the decoders. both LIRC and decoders have already a code to handle the timeouts. Cheers, Mauro ^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2010-07-29 11:58 UTC | newest] Thread overview: 33+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-07-27 22:33 Can I expect in-kernel decoding to work out of box? Maxim Levitsky 2010-07-27 23:32 ` Maxim Levitsky 2010-07-28 1:29 ` Jon Smirl 2010-07-28 2:33 ` Jarod Wilson 2010-07-28 6:30 ` Maxim Levitsky 2010-07-28 6:59 ` Maxim Levitsky 2010-07-28 10:40 ` Jon Smirl 2010-07-28 13:13 ` Mauro Carvalho Chehab 2010-07-28 13:46 ` Jon Smirl 2010-07-28 14:38 ` Andy Walls 2010-07-28 14:53 ` Jon Smirl 2010-07-28 15:42 ` Mauro Carvalho Chehab 2010-07-28 17:02 ` Andy Walls 2010-07-28 17:35 ` Jon Smirl 2010-07-28 18:18 ` Andy Walls 2010-07-28 20:13 ` Mauro Carvalho Chehab 2010-07-28 20:27 ` Maxim Levitsky 2010-07-29 2:36 ` Andy Walls 2010-07-29 11:58 ` Jon Smirl 2010-07-28 18:29 ` Mauro Carvalho Chehab 2010-07-28 14:24 ` Maxim Levitsky 2010-07-28 14:41 ` Jon Smirl 2010-07-28 15:18 ` Jarod Wilson 2010-07-28 15:56 ` Mauro Carvalho Chehab 2010-07-28 17:04 ` Jon Smirl 2010-07-28 17:21 ` Andy Walls 2010-07-28 17:38 ` Jon Smirl 2010-07-28 18:35 ` Mauro Carvalho Chehab 2010-07-28 18:08 ` Mauro Carvalho Chehab 2010-07-28 18:05 ` Jarod Wilson 2010-07-28 18:40 ` Mauro Carvalho Chehab 2010-07-28 21:01 ` Maxim Levitsky 2010-07-28 21:35 ` Mauro Carvalho Chehab
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).