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