18c2ecf20Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci.. _Remote_controllers_Protocols: 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci***************************************** 68c2ecf20Sopenharmony_ciRemote Controller Protocols and Scancodes 78c2ecf20Sopenharmony_ci***************************************** 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciIR is encoded as a series of pulses and spaces, using a protocol. These 108c2ecf20Sopenharmony_ciprotocols can encode e.g. an address (which device should respond) and a 118c2ecf20Sopenharmony_cicommand: what it should do. The values for these are not always consistent 128c2ecf20Sopenharmony_ciacross different devices for a given protocol. 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciTherefore out the output of the IR decoder is a scancode; a single u32 158c2ecf20Sopenharmony_civalue. Using keymap tables this can be mapped to linux key codes. 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ciOther things can be encoded too. Some IR protocols encode a toggle bit; this 188c2ecf20Sopenharmony_ciis to distinguish whether the same button is being held down, or has been 198c2ecf20Sopenharmony_cireleased and pressed again. If has been released and pressed again, the 208c2ecf20Sopenharmony_citoggle bit will invert from one IR message to the next. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciSome remotes have a pointer-type device which can used to control the 238c2ecf20Sopenharmony_cimouse; some air conditioning systems can have their target temperature 248c2ecf20Sopenharmony_citarget set in IR. 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ciThe following are the protocols the kernel knows about and also lists 278c2ecf20Sopenharmony_cihow scancodes are encoded for each protocol. 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_circ-5 (RC_PROTO_RC5) 308c2ecf20Sopenharmony_ci------------------- 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciThis IR protocol uses manchester encoding to encode 14 bits. There is a 338c2ecf20Sopenharmony_cidetailed description here https://www.sbprojects.net/knowledge/ir/rc5.php. 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ciThe scancode encoding is *not* consistent with the lirc daemon (lircd) rc5 368c2ecf20Sopenharmony_ciprotocol, or the manchester BPF decoder. 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci.. flat-table:: rc5 bits scancode mapping 398c2ecf20Sopenharmony_ci :widths: 1 1 2 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci * - rc-5 bit 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci - scancode bit 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci - description 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci * - 1 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci - none 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci - Start bit, always set 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci * - 1 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci - 6 (inverted) 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci - 2nd start bit in rc5, re-used as 6th command bit 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci * - 1 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci - none 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci - Toggle bit 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci * - 5 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci - 8 to 13 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci - Address 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci * - 6 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci - 0 to 5 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci - Command 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ciThere is a variant of rc5 called either rc5x or extended rc5 788c2ecf20Sopenharmony_ciwhere there the second stop bit is the 6th commmand bit, but inverted. 798c2ecf20Sopenharmony_ciThis is done so it the scancodes and encoding is compatible with existing 808c2ecf20Sopenharmony_cischemes. This bit is stored in bit 6 of the scancode, inverted. This is 818c2ecf20Sopenharmony_cidone to keep it compatible with plain rc-5 where there are two start bits. 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_circ-5-sz (RC_PROTO_RC5_SZ) 848c2ecf20Sopenharmony_ci------------------------- 858c2ecf20Sopenharmony_ciThis is much like rc-5 but one bit longer. The scancode is encoded 868c2ecf20Sopenharmony_cidifferently. 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci.. flat-table:: rc-5-sz bits scancode mapping 898c2ecf20Sopenharmony_ci :widths: 1 1 2 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci * - rc-5-sz bits 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci - scancode bit 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci - description 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci * - 1 988c2ecf20Sopenharmony_ci 998c2ecf20Sopenharmony_ci - none 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci - Start bit, always set 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci * - 1 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci - 13 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci - Address bit 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci * - 1 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci - none 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci - Toggle bit 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci * - 6 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci - 6 to 11 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci - Address 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_ci * - 6 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ci - 0 to 5 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci - Command 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_circ-5x-20 (RC_PROTO_RC5X_20) 1288c2ecf20Sopenharmony_ci--------------------------- 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_ciThis rc-5 extended to encoded 20 bits. The is a 3555 microseconds space 1318c2ecf20Sopenharmony_ciafter the 8th bit. 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ci.. flat-table:: rc-5x-20 bits scancode mapping 1348c2ecf20Sopenharmony_ci :widths: 1 1 2 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ci * - rc-5-sz bits 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci - scancode bit 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ci - description 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci * - 1 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ci - none 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_ci - Start bit, always set 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci * - 1 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_ci - 14 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_ci - Address bit 1538c2ecf20Sopenharmony_ci 1548c2ecf20Sopenharmony_ci * - 1 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci - none 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ci - Toggle bit 1598c2ecf20Sopenharmony_ci 1608c2ecf20Sopenharmony_ci * - 5 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci - 16 to 20 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_ci - Address 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_ci * - 6 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ci - 8 to 13 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_ci - Address 1718c2ecf20Sopenharmony_ci 1728c2ecf20Sopenharmony_ci * - 6 1738c2ecf20Sopenharmony_ci 1748c2ecf20Sopenharmony_ci - 0 to 5 1758c2ecf20Sopenharmony_ci 1768c2ecf20Sopenharmony_ci - Command 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_cijvc (RC_PROTO_JVC) 1808c2ecf20Sopenharmony_ci------------------ 1818c2ecf20Sopenharmony_ci 1828c2ecf20Sopenharmony_ciThe jvc protocol is much like nec, without the inverted values. It is 1838c2ecf20Sopenharmony_cidescribed here https://www.sbprojects.net/knowledge/ir/jvc.php. 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_ciThe scancode is a 16 bits value, where the address is the lower 8 bits 1868c2ecf20Sopenharmony_ciand the command the higher 8 bits; this is reversed from IR order. 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_cisony-12 (RC_PROTO_SONY12) 1898c2ecf20Sopenharmony_ci------------------------- 1908c2ecf20Sopenharmony_ci 1918c2ecf20Sopenharmony_ciThe sony protocol is a pulse-width encoding. There are three variants, 1928c2ecf20Sopenharmony_ciwhich just differ in number of bits and scancode encoding. 1938c2ecf20Sopenharmony_ci 1948c2ecf20Sopenharmony_ci.. flat-table:: sony-12 bits scancode mapping 1958c2ecf20Sopenharmony_ci :widths: 1 1 2 1968c2ecf20Sopenharmony_ci 1978c2ecf20Sopenharmony_ci * - sony-12 bits 1988c2ecf20Sopenharmony_ci 1998c2ecf20Sopenharmony_ci - scancode bit 2008c2ecf20Sopenharmony_ci 2018c2ecf20Sopenharmony_ci - description 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci * - 5 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_ci - 16 to 20 2068c2ecf20Sopenharmony_ci 2078c2ecf20Sopenharmony_ci - device 2088c2ecf20Sopenharmony_ci 2098c2ecf20Sopenharmony_ci * - 7 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ci - 0 to 6 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ci - function 2148c2ecf20Sopenharmony_ci 2158c2ecf20Sopenharmony_cisony-15 (RC_PROTO_SONY15) 2168c2ecf20Sopenharmony_ci------------------------- 2178c2ecf20Sopenharmony_ci 2188c2ecf20Sopenharmony_ciThe sony protocol is a pulse-width encoding. There are three variants, 2198c2ecf20Sopenharmony_ciwhich just differ in number of bits and scancode encoding. 2208c2ecf20Sopenharmony_ci 2218c2ecf20Sopenharmony_ci.. flat-table:: sony-12 bits scancode mapping 2228c2ecf20Sopenharmony_ci :widths: 1 1 2 2238c2ecf20Sopenharmony_ci 2248c2ecf20Sopenharmony_ci * - sony-12 bits 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci - scancode bit 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ci - description 2298c2ecf20Sopenharmony_ci 2308c2ecf20Sopenharmony_ci * - 8 2318c2ecf20Sopenharmony_ci 2328c2ecf20Sopenharmony_ci - 16 to 23 2338c2ecf20Sopenharmony_ci 2348c2ecf20Sopenharmony_ci - device 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_ci * - 7 2378c2ecf20Sopenharmony_ci 2388c2ecf20Sopenharmony_ci - 0 to 6 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ci - function 2418c2ecf20Sopenharmony_ci 2428c2ecf20Sopenharmony_cisony-20 (RC_PROTO_SONY20) 2438c2ecf20Sopenharmony_ci------------------------- 2448c2ecf20Sopenharmony_ci 2458c2ecf20Sopenharmony_ciThe sony protocol is a pulse-width encoding. There are three variants, 2468c2ecf20Sopenharmony_ciwhich just differ in number of bits and scancode encoding. 2478c2ecf20Sopenharmony_ci 2488c2ecf20Sopenharmony_ci.. flat-table:: sony-20 bits scancode mapping 2498c2ecf20Sopenharmony_ci :widths: 1 1 2 2508c2ecf20Sopenharmony_ci 2518c2ecf20Sopenharmony_ci * - sony-20 bits 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ci - scancode bit 2548c2ecf20Sopenharmony_ci 2558c2ecf20Sopenharmony_ci - description 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_ci * - 5 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_ci - 16 to 20 2608c2ecf20Sopenharmony_ci 2618c2ecf20Sopenharmony_ci - device 2628c2ecf20Sopenharmony_ci 2638c2ecf20Sopenharmony_ci * - 7 2648c2ecf20Sopenharmony_ci 2658c2ecf20Sopenharmony_ci - 0 to 7 2668c2ecf20Sopenharmony_ci 2678c2ecf20Sopenharmony_ci - device 2688c2ecf20Sopenharmony_ci 2698c2ecf20Sopenharmony_ci * - 8 2708c2ecf20Sopenharmony_ci 2718c2ecf20Sopenharmony_ci - 8 to 15 2728c2ecf20Sopenharmony_ci 2738c2ecf20Sopenharmony_ci - extended bits 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_cinec (RC_PROTO_NEC) 2768c2ecf20Sopenharmony_ci------------------ 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ciThe nec protocol encodes an 8 bit address and an 8 bit command. It is 2798c2ecf20Sopenharmony_cidescribed here https://www.sbprojects.net/knowledge/ir/nec.php. Note 2808c2ecf20Sopenharmony_cithat the protocol sends least significant bit first. 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ciAs a check, the nec protocol sends the address and command twice; the 2838c2ecf20Sopenharmony_cisecond time it is inverted. This is done for verification. 2848c2ecf20Sopenharmony_ci 2858c2ecf20Sopenharmony_ciA plain nec IR message has 16 bits; the high 8 bits are the address 2868c2ecf20Sopenharmony_ciand the low 8 bits are the command. 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_cinec-x (RC_PROTO_NECX) 2898c2ecf20Sopenharmony_ci--------------------- 2908c2ecf20Sopenharmony_ci 2918c2ecf20Sopenharmony_ciExtended nec has a 16 bit address and a 8 bit command. This is encoded 2928c2ecf20Sopenharmony_cias a 24 bit value as you would expect, with the lower 8 bits the command 2938c2ecf20Sopenharmony_ciand the upper 16 bits the address. 2948c2ecf20Sopenharmony_ci 2958c2ecf20Sopenharmony_cinec-32 (RC_PROTO_NEC32) 2968c2ecf20Sopenharmony_ci----------------------- 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_cinec-32 does not send an inverted address or an inverted command; the 2998c2ecf20Sopenharmony_cientire message, all 32 bits, are used. 3008c2ecf20Sopenharmony_ci 3018c2ecf20Sopenharmony_ciFor this to be decoded correctly, the second 8 bits must not be the 3028c2ecf20Sopenharmony_ciinverted value of the first, and also the last 8 bits must not be the 3038c2ecf20Sopenharmony_ciinverted value of the third 8 bit value. 3048c2ecf20Sopenharmony_ci 3058c2ecf20Sopenharmony_ciThe scancode has a somewhat unusual encoding. 3068c2ecf20Sopenharmony_ci 3078c2ecf20Sopenharmony_ci.. flat-table:: nec-32 bits scancode mapping 3088c2ecf20Sopenharmony_ci 3098c2ecf20Sopenharmony_ci * - nec-32 bits 3108c2ecf20Sopenharmony_ci 3118c2ecf20Sopenharmony_ci - scancode bit 3128c2ecf20Sopenharmony_ci 3138c2ecf20Sopenharmony_ci * - First 8 bits 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_ci - 16 to 23 3168c2ecf20Sopenharmony_ci 3178c2ecf20Sopenharmony_ci * - Second 8 bits 3188c2ecf20Sopenharmony_ci 3198c2ecf20Sopenharmony_ci - 24 to 31 3208c2ecf20Sopenharmony_ci 3218c2ecf20Sopenharmony_ci * - Third 8 bits 3228c2ecf20Sopenharmony_ci 3238c2ecf20Sopenharmony_ci - 0 to 7 3248c2ecf20Sopenharmony_ci 3258c2ecf20Sopenharmony_ci * - Fourth 8 bits 3268c2ecf20Sopenharmony_ci 3278c2ecf20Sopenharmony_ci - 8 to 15 3288c2ecf20Sopenharmony_ci 3298c2ecf20Sopenharmony_cisanyo (RC_PROTO_SANYO) 3308c2ecf20Sopenharmony_ci---------------------- 3318c2ecf20Sopenharmony_ci 3328c2ecf20Sopenharmony_ciThe sanyo protocol is like the nec protocol, but with 13 bits address 3338c2ecf20Sopenharmony_cirather than 8 bits. Both the address and the command are followed by 3348c2ecf20Sopenharmony_citheir inverted versions, but these are not present in the scancodes. 3358c2ecf20Sopenharmony_ci 3368c2ecf20Sopenharmony_ciBis 8 to 20 of the scancode is the 13 bits address, and the lower 8 3378c2ecf20Sopenharmony_cibits are the command. 3388c2ecf20Sopenharmony_ci 3398c2ecf20Sopenharmony_cimcir2-kbd (RC_PROTO_MCIR2_KBD) 3408c2ecf20Sopenharmony_ci------------------------------ 3418c2ecf20Sopenharmony_ci 3428c2ecf20Sopenharmony_ciThis protocol is generated by the Microsoft MCE keyboard for keyboard 3438c2ecf20Sopenharmony_cievents. Refer to the ir-mce_kbd-decoder.c to see how it is encoded. 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_cimcir2-mse (RC_PROTO_MCIR2_MSE) 3468c2ecf20Sopenharmony_ci------------------------------ 3478c2ecf20Sopenharmony_ci 3488c2ecf20Sopenharmony_ciThis protocol is generated by the Microsoft MCE keyboard for pointer 3498c2ecf20Sopenharmony_cievents. Refer to the ir-mce_kbd-decoder.c to see how it is encoded. 3508c2ecf20Sopenharmony_ci 3518c2ecf20Sopenharmony_circ-6-0 (RC_PROTO_RC6_0) 3528c2ecf20Sopenharmony_ci----------------------- 3538c2ecf20Sopenharmony_ci 3548c2ecf20Sopenharmony_ciThis is the rc-6 in mode 0. rc-6 is described here 3558c2ecf20Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rc6.php. 3568c2ecf20Sopenharmony_ciThe scancode is the exact 16 bits as in the protocol. There is also a 3578c2ecf20Sopenharmony_citoggle bit. 3588c2ecf20Sopenharmony_ci 3598c2ecf20Sopenharmony_circ-6-6a-20 (RC_PROTO_RC6_6A_20) 3608c2ecf20Sopenharmony_ci------------------------------- 3618c2ecf20Sopenharmony_ci 3628c2ecf20Sopenharmony_ciThis is the rc-6 in mode 6a, 20 bits. rc-6 is described here 3638c2ecf20Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rc6.php. 3648c2ecf20Sopenharmony_ciThe scancode is the exact 20 bits 3658c2ecf20Sopenharmony_cias in the protocol. There is also a toggle bit. 3668c2ecf20Sopenharmony_ci 3678c2ecf20Sopenharmony_circ-6-6a-24 (RC_PROTO_RC6_6A_24) 3688c2ecf20Sopenharmony_ci------------------------------- 3698c2ecf20Sopenharmony_ci 3708c2ecf20Sopenharmony_ciThis is the rc-6 in mode 6a, 24 bits. rc-6 is described here 3718c2ecf20Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rc6.php. 3728c2ecf20Sopenharmony_ciThe scancode is the exact 24 bits 3738c2ecf20Sopenharmony_cias in the protocol. There is also a toggle bit. 3748c2ecf20Sopenharmony_ci 3758c2ecf20Sopenharmony_circ-6-6a-32 (RC_PROTO_RC6_6A_32) 3768c2ecf20Sopenharmony_ci------------------------------- 3778c2ecf20Sopenharmony_ci 3788c2ecf20Sopenharmony_ciThis is the rc-6 in mode 6a, 32 bits. rc-6 is described here 3798c2ecf20Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rc6.php. 3808c2ecf20Sopenharmony_ciThe upper 16 bits are the vendor, 3818c2ecf20Sopenharmony_ciand the lower 16 bits are the vendor-specific bits. This protocol is 3828c2ecf20Sopenharmony_cifor the non-Microsoft MCE variant (vendor != 0x800f). 3838c2ecf20Sopenharmony_ci 3848c2ecf20Sopenharmony_ci 3858c2ecf20Sopenharmony_circ-6-mce (RC_PROTO_RC6_MCE) 3868c2ecf20Sopenharmony_ci--------------------------- 3878c2ecf20Sopenharmony_ci 3888c2ecf20Sopenharmony_ciThis is the rc-6 in mode 6a, 32 bits. The upper 16 bits are the vendor, 3898c2ecf20Sopenharmony_ciand the lower 16 bits are the vendor-specific bits. This protocol is 3908c2ecf20Sopenharmony_cifor the Microsoft MCE variant (vendor = 0x800f). The toggle bit in the 3918c2ecf20Sopenharmony_ciprotocol itself is ignored, and the 16th bit should be takes as the toggle 3928c2ecf20Sopenharmony_cibit. 3938c2ecf20Sopenharmony_ci 3948c2ecf20Sopenharmony_cisharp (RC_PROTO_SHARP) 3958c2ecf20Sopenharmony_ci---------------------- 3968c2ecf20Sopenharmony_ci 3978c2ecf20Sopenharmony_ciThis is a protocol used by Sharp VCRs, is described here 3988c2ecf20Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/sharp.php. There is a very long 3998c2ecf20Sopenharmony_ci(40ms) space between the normal and inverted values, and some IR receivers 4008c2ecf20Sopenharmony_cicannot decode this. 4018c2ecf20Sopenharmony_ci 4028c2ecf20Sopenharmony_ciThere is a 5 bit address and a 8 bit command. In the scancode the address is 4038c2ecf20Sopenharmony_ciin bits 8 to 12, and the command in bits 0 to 7. 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_cixmp (RC_PROTO_XMP) 4068c2ecf20Sopenharmony_ci------------------ 4078c2ecf20Sopenharmony_ci 4088c2ecf20Sopenharmony_ciThis protocol has several versions and only version 1 is supported. Refer 4098c2ecf20Sopenharmony_cito the decoder (ir-xmp-decoder.c) to see how it is encoded. 4108c2ecf20Sopenharmony_ci 4118c2ecf20Sopenharmony_ci 4128c2ecf20Sopenharmony_cicec (RC_PROTO_CEC) 4138c2ecf20Sopenharmony_ci------------------ 4148c2ecf20Sopenharmony_ci 4158c2ecf20Sopenharmony_ciThis is not an IR protocol, this is a protocol over CEC. The CEC 4168c2ecf20Sopenharmony_ciinfrastructure uses rc-core for handling CEC commands, so that they 4178c2ecf20Sopenharmony_cican easily be remapped. 4188c2ecf20Sopenharmony_ci 4198c2ecf20Sopenharmony_ciimon (RC_PROTO_IMON) 4208c2ecf20Sopenharmony_ci-------------------- 4218c2ecf20Sopenharmony_ci 4228c2ecf20Sopenharmony_ciThis protocol is used by Antec Veris/SoundGraph iMON remotes. 4238c2ecf20Sopenharmony_ci 4248c2ecf20Sopenharmony_ciThe protocol 4258c2ecf20Sopenharmony_cidescribes both button presses and pointer movements. The protocol encodes 4268c2ecf20Sopenharmony_ci31 bits, and the scancode is simply the 31 bits with the top bit always 0. 4278c2ecf20Sopenharmony_ci 4288c2ecf20Sopenharmony_circ-mm-12 (RC_PROTO_RCMM12) 4298c2ecf20Sopenharmony_ci-------------------------- 4308c2ecf20Sopenharmony_ci 4318c2ecf20Sopenharmony_ciThe rc-mm protocol is described here 4328c2ecf20Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 4338c2ecf20Sopenharmony_cithe 12 bits. 4348c2ecf20Sopenharmony_ci 4358c2ecf20Sopenharmony_circ-mm-24 (RC_PROTO_RCMM24) 4368c2ecf20Sopenharmony_ci-------------------------- 4378c2ecf20Sopenharmony_ci 4388c2ecf20Sopenharmony_ciThe rc-mm protocol is described here 4398c2ecf20Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 4408c2ecf20Sopenharmony_cithe 24 bits. 4418c2ecf20Sopenharmony_ci 4428c2ecf20Sopenharmony_circ-mm-32 (RC_PROTO_RCMM32) 4438c2ecf20Sopenharmony_ci-------------------------- 4448c2ecf20Sopenharmony_ci 4458c2ecf20Sopenharmony_ciThe rc-mm protocol is described here 4468c2ecf20Sopenharmony_cihttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 4478c2ecf20Sopenharmony_cithe 32 bits. 4488c2ecf20Sopenharmony_ci 4498c2ecf20Sopenharmony_cixbox-dvd (RC_PROTO_XBOX_DVD) 4508c2ecf20Sopenharmony_ci---------------------------- 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_ciThis protocol is used by XBox DVD Remote, which was made for the original 4538c2ecf20Sopenharmony_ciXBox. There is no in-kernel decoder or encoder for this protocol. The usb 4548c2ecf20Sopenharmony_cidevice decodes the protocol. There is a BPF decoder available in v4l-utils. 455