1*4882a593Smuzhiyun.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun.. _Remote_controllers_Protocols: 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun***************************************** 6*4882a593SmuzhiyunRemote Controller Protocols and Scancodes 7*4882a593Smuzhiyun***************************************** 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunIR is encoded as a series of pulses and spaces, using a protocol. These 10*4882a593Smuzhiyunprotocols can encode e.g. an address (which device should respond) and a 11*4882a593Smuzhiyuncommand: what it should do. The values for these are not always consistent 12*4882a593Smuzhiyunacross different devices for a given protocol. 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunTherefore out the output of the IR decoder is a scancode; a single u32 15*4882a593Smuzhiyunvalue. Using keymap tables this can be mapped to linux key codes. 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunOther things can be encoded too. Some IR protocols encode a toggle bit; this 18*4882a593Smuzhiyunis to distinguish whether the same button is being held down, or has been 19*4882a593Smuzhiyunreleased and pressed again. If has been released and pressed again, the 20*4882a593Smuzhiyuntoggle bit will invert from one IR message to the next. 21*4882a593Smuzhiyun 22*4882a593SmuzhiyunSome remotes have a pointer-type device which can used to control the 23*4882a593Smuzhiyunmouse; some air conditioning systems can have their target temperature 24*4882a593Smuzhiyuntarget set in IR. 25*4882a593Smuzhiyun 26*4882a593SmuzhiyunThe following are the protocols the kernel knows about and also lists 27*4882a593Smuzhiyunhow scancodes are encoded for each protocol. 28*4882a593Smuzhiyun 29*4882a593Smuzhiyunrc-5 (RC_PROTO_RC5) 30*4882a593Smuzhiyun------------------- 31*4882a593Smuzhiyun 32*4882a593SmuzhiyunThis IR protocol uses manchester encoding to encode 14 bits. There is a 33*4882a593Smuzhiyundetailed description here https://www.sbprojects.net/knowledge/ir/rc5.php. 34*4882a593Smuzhiyun 35*4882a593SmuzhiyunThe scancode encoding is *not* consistent with the lirc daemon (lircd) rc5 36*4882a593Smuzhiyunprotocol, or the manchester BPF decoder. 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun.. flat-table:: rc5 bits scancode mapping 39*4882a593Smuzhiyun :widths: 1 1 2 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun * - rc-5 bit 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun - scancode bit 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun - description 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun * - 1 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun - none 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun - Start bit, always set 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun * - 1 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun - 6 (inverted) 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun - 2nd start bit in rc5, re-used as 6th command bit 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun * - 1 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun - none 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun - Toggle bit 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun * - 5 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun - 8 to 13 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun - Address 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun * - 6 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun - 0 to 5 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun - Command 76*4882a593Smuzhiyun 77*4882a593SmuzhiyunThere is a variant of rc5 called either rc5x or extended rc5 78*4882a593Smuzhiyunwhere there the second stop bit is the 6th commmand bit, but inverted. 79*4882a593SmuzhiyunThis is done so it the scancodes and encoding is compatible with existing 80*4882a593Smuzhiyunschemes. This bit is stored in bit 6 of the scancode, inverted. This is 81*4882a593Smuzhiyundone to keep it compatible with plain rc-5 where there are two start bits. 82*4882a593Smuzhiyun 83*4882a593Smuzhiyunrc-5-sz (RC_PROTO_RC5_SZ) 84*4882a593Smuzhiyun------------------------- 85*4882a593SmuzhiyunThis is much like rc-5 but one bit longer. The scancode is encoded 86*4882a593Smuzhiyundifferently. 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun.. flat-table:: rc-5-sz bits scancode mapping 89*4882a593Smuzhiyun :widths: 1 1 2 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun * - rc-5-sz bits 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun - scancode bit 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun - description 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun * - 1 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun - none 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun - Start bit, always set 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun * - 1 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun - 13 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun - Address bit 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun * - 1 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun - none 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun - Toggle bit 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun * - 6 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun - 6 to 11 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun - Address 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun * - 6 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun - 0 to 5 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun - Command 126*4882a593Smuzhiyun 127*4882a593Smuzhiyunrc-5x-20 (RC_PROTO_RC5X_20) 128*4882a593Smuzhiyun--------------------------- 129*4882a593Smuzhiyun 130*4882a593SmuzhiyunThis rc-5 extended to encoded 20 bits. The is a 3555 microseconds space 131*4882a593Smuzhiyunafter the 8th bit. 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun.. flat-table:: rc-5x-20 bits scancode mapping 134*4882a593Smuzhiyun :widths: 1 1 2 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun * - rc-5-sz bits 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun - scancode bit 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun - description 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun * - 1 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun - none 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun - Start bit, always set 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun * - 1 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun - 14 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun - Address bit 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun * - 1 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun - none 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun - Toggle bit 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun * - 5 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun - 16 to 20 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun - Address 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun * - 6 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun - 8 to 13 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun - Address 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun * - 6 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun - 0 to 5 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun - Command 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun 179*4882a593Smuzhiyunjvc (RC_PROTO_JVC) 180*4882a593Smuzhiyun------------------ 181*4882a593Smuzhiyun 182*4882a593SmuzhiyunThe jvc protocol is much like nec, without the inverted values. It is 183*4882a593Smuzhiyundescribed here https://www.sbprojects.net/knowledge/ir/jvc.php. 184*4882a593Smuzhiyun 185*4882a593SmuzhiyunThe scancode is a 16 bits value, where the address is the lower 8 bits 186*4882a593Smuzhiyunand the command the higher 8 bits; this is reversed from IR order. 187*4882a593Smuzhiyun 188*4882a593Smuzhiyunsony-12 (RC_PROTO_SONY12) 189*4882a593Smuzhiyun------------------------- 190*4882a593Smuzhiyun 191*4882a593SmuzhiyunThe sony protocol is a pulse-width encoding. There are three variants, 192*4882a593Smuzhiyunwhich just differ in number of bits and scancode encoding. 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun.. flat-table:: sony-12 bits scancode mapping 195*4882a593Smuzhiyun :widths: 1 1 2 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun * - sony-12 bits 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun - scancode bit 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun - description 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun * - 5 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun - 16 to 20 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun - device 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun * - 7 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun - 0 to 6 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun - function 214*4882a593Smuzhiyun 215*4882a593Smuzhiyunsony-15 (RC_PROTO_SONY15) 216*4882a593Smuzhiyun------------------------- 217*4882a593Smuzhiyun 218*4882a593SmuzhiyunThe sony protocol is a pulse-width encoding. There are three variants, 219*4882a593Smuzhiyunwhich just differ in number of bits and scancode encoding. 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun.. flat-table:: sony-12 bits scancode mapping 222*4882a593Smuzhiyun :widths: 1 1 2 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun * - sony-12 bits 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun - scancode bit 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun - description 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun * - 8 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun - 16 to 23 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun - device 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun * - 7 237*4882a593Smuzhiyun 238*4882a593Smuzhiyun - 0 to 6 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun - function 241*4882a593Smuzhiyun 242*4882a593Smuzhiyunsony-20 (RC_PROTO_SONY20) 243*4882a593Smuzhiyun------------------------- 244*4882a593Smuzhiyun 245*4882a593SmuzhiyunThe sony protocol is a pulse-width encoding. There are three variants, 246*4882a593Smuzhiyunwhich just differ in number of bits and scancode encoding. 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun.. flat-table:: sony-20 bits scancode mapping 249*4882a593Smuzhiyun :widths: 1 1 2 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun * - sony-20 bits 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun - scancode bit 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun - description 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun * - 5 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun - 16 to 20 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun - device 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun * - 7 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun - 0 to 7 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun - device 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun * - 8 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun - 8 to 15 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun - extended bits 274*4882a593Smuzhiyun 275*4882a593Smuzhiyunnec (RC_PROTO_NEC) 276*4882a593Smuzhiyun------------------ 277*4882a593Smuzhiyun 278*4882a593SmuzhiyunThe nec protocol encodes an 8 bit address and an 8 bit command. It is 279*4882a593Smuzhiyundescribed here https://www.sbprojects.net/knowledge/ir/nec.php. Note 280*4882a593Smuzhiyunthat the protocol sends least significant bit first. 281*4882a593Smuzhiyun 282*4882a593SmuzhiyunAs a check, the nec protocol sends the address and command twice; the 283*4882a593Smuzhiyunsecond time it is inverted. This is done for verification. 284*4882a593Smuzhiyun 285*4882a593SmuzhiyunA plain nec IR message has 16 bits; the high 8 bits are the address 286*4882a593Smuzhiyunand the low 8 bits are the command. 287*4882a593Smuzhiyun 288*4882a593Smuzhiyunnec-x (RC_PROTO_NECX) 289*4882a593Smuzhiyun--------------------- 290*4882a593Smuzhiyun 291*4882a593SmuzhiyunExtended nec has a 16 bit address and a 8 bit command. This is encoded 292*4882a593Smuzhiyunas a 24 bit value as you would expect, with the lower 8 bits the command 293*4882a593Smuzhiyunand the upper 16 bits the address. 294*4882a593Smuzhiyun 295*4882a593Smuzhiyunnec-32 (RC_PROTO_NEC32) 296*4882a593Smuzhiyun----------------------- 297*4882a593Smuzhiyun 298*4882a593Smuzhiyunnec-32 does not send an inverted address or an inverted command; the 299*4882a593Smuzhiyunentire message, all 32 bits, are used. 300*4882a593Smuzhiyun 301*4882a593SmuzhiyunFor this to be decoded correctly, the second 8 bits must not be the 302*4882a593Smuzhiyuninverted value of the first, and also the last 8 bits must not be the 303*4882a593Smuzhiyuninverted value of the third 8 bit value. 304*4882a593Smuzhiyun 305*4882a593SmuzhiyunThe scancode has a somewhat unusual encoding. 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun.. flat-table:: nec-32 bits scancode mapping 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun * - nec-32 bits 310*4882a593Smuzhiyun 311*4882a593Smuzhiyun - scancode bit 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun * - First 8 bits 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun - 16 to 23 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun * - Second 8 bits 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun - 24 to 31 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun * - Third 8 bits 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun - 0 to 7 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun * - Fourth 8 bits 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun - 8 to 15 328*4882a593Smuzhiyun 329*4882a593Smuzhiyunsanyo (RC_PROTO_SANYO) 330*4882a593Smuzhiyun---------------------- 331*4882a593Smuzhiyun 332*4882a593SmuzhiyunThe sanyo protocol is like the nec protocol, but with 13 bits address 333*4882a593Smuzhiyunrather than 8 bits. Both the address and the command are followed by 334*4882a593Smuzhiyuntheir inverted versions, but these are not present in the scancodes. 335*4882a593Smuzhiyun 336*4882a593SmuzhiyunBis 8 to 20 of the scancode is the 13 bits address, and the lower 8 337*4882a593Smuzhiyunbits are the command. 338*4882a593Smuzhiyun 339*4882a593Smuzhiyunmcir2-kbd (RC_PROTO_MCIR2_KBD) 340*4882a593Smuzhiyun------------------------------ 341*4882a593Smuzhiyun 342*4882a593SmuzhiyunThis protocol is generated by the Microsoft MCE keyboard for keyboard 343*4882a593Smuzhiyunevents. Refer to the ir-mce_kbd-decoder.c to see how it is encoded. 344*4882a593Smuzhiyun 345*4882a593Smuzhiyunmcir2-mse (RC_PROTO_MCIR2_MSE) 346*4882a593Smuzhiyun------------------------------ 347*4882a593Smuzhiyun 348*4882a593SmuzhiyunThis protocol is generated by the Microsoft MCE keyboard for pointer 349*4882a593Smuzhiyunevents. Refer to the ir-mce_kbd-decoder.c to see how it is encoded. 350*4882a593Smuzhiyun 351*4882a593Smuzhiyunrc-6-0 (RC_PROTO_RC6_0) 352*4882a593Smuzhiyun----------------------- 353*4882a593Smuzhiyun 354*4882a593SmuzhiyunThis is the rc-6 in mode 0. rc-6 is described here 355*4882a593Smuzhiyunhttps://www.sbprojects.net/knowledge/ir/rc6.php. 356*4882a593SmuzhiyunThe scancode is the exact 16 bits as in the protocol. There is also a 357*4882a593Smuzhiyuntoggle bit. 358*4882a593Smuzhiyun 359*4882a593Smuzhiyunrc-6-6a-20 (RC_PROTO_RC6_6A_20) 360*4882a593Smuzhiyun------------------------------- 361*4882a593Smuzhiyun 362*4882a593SmuzhiyunThis is the rc-6 in mode 6a, 20 bits. rc-6 is described here 363*4882a593Smuzhiyunhttps://www.sbprojects.net/knowledge/ir/rc6.php. 364*4882a593SmuzhiyunThe scancode is the exact 20 bits 365*4882a593Smuzhiyunas in the protocol. There is also a toggle bit. 366*4882a593Smuzhiyun 367*4882a593Smuzhiyunrc-6-6a-24 (RC_PROTO_RC6_6A_24) 368*4882a593Smuzhiyun------------------------------- 369*4882a593Smuzhiyun 370*4882a593SmuzhiyunThis is the rc-6 in mode 6a, 24 bits. rc-6 is described here 371*4882a593Smuzhiyunhttps://www.sbprojects.net/knowledge/ir/rc6.php. 372*4882a593SmuzhiyunThe scancode is the exact 24 bits 373*4882a593Smuzhiyunas in the protocol. There is also a toggle bit. 374*4882a593Smuzhiyun 375*4882a593Smuzhiyunrc-6-6a-32 (RC_PROTO_RC6_6A_32) 376*4882a593Smuzhiyun------------------------------- 377*4882a593Smuzhiyun 378*4882a593SmuzhiyunThis is the rc-6 in mode 6a, 32 bits. rc-6 is described here 379*4882a593Smuzhiyunhttps://www.sbprojects.net/knowledge/ir/rc6.php. 380*4882a593SmuzhiyunThe upper 16 bits are the vendor, 381*4882a593Smuzhiyunand the lower 16 bits are the vendor-specific bits. This protocol is 382*4882a593Smuzhiyunfor the non-Microsoft MCE variant (vendor != 0x800f). 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun 385*4882a593Smuzhiyunrc-6-mce (RC_PROTO_RC6_MCE) 386*4882a593Smuzhiyun--------------------------- 387*4882a593Smuzhiyun 388*4882a593SmuzhiyunThis is the rc-6 in mode 6a, 32 bits. The upper 16 bits are the vendor, 389*4882a593Smuzhiyunand the lower 16 bits are the vendor-specific bits. This protocol is 390*4882a593Smuzhiyunfor the Microsoft MCE variant (vendor = 0x800f). The toggle bit in the 391*4882a593Smuzhiyunprotocol itself is ignored, and the 16th bit should be takes as the toggle 392*4882a593Smuzhiyunbit. 393*4882a593Smuzhiyun 394*4882a593Smuzhiyunsharp (RC_PROTO_SHARP) 395*4882a593Smuzhiyun---------------------- 396*4882a593Smuzhiyun 397*4882a593SmuzhiyunThis is a protocol used by Sharp VCRs, is described here 398*4882a593Smuzhiyunhttps://www.sbprojects.net/knowledge/ir/sharp.php. There is a very long 399*4882a593Smuzhiyun(40ms) space between the normal and inverted values, and some IR receivers 400*4882a593Smuzhiyuncannot decode this. 401*4882a593Smuzhiyun 402*4882a593SmuzhiyunThere is a 5 bit address and a 8 bit command. In the scancode the address is 403*4882a593Smuzhiyunin bits 8 to 12, and the command in bits 0 to 7. 404*4882a593Smuzhiyun 405*4882a593Smuzhiyunxmp (RC_PROTO_XMP) 406*4882a593Smuzhiyun------------------ 407*4882a593Smuzhiyun 408*4882a593SmuzhiyunThis protocol has several versions and only version 1 is supported. Refer 409*4882a593Smuzhiyunto the decoder (ir-xmp-decoder.c) to see how it is encoded. 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun 412*4882a593Smuzhiyuncec (RC_PROTO_CEC) 413*4882a593Smuzhiyun------------------ 414*4882a593Smuzhiyun 415*4882a593SmuzhiyunThis is not an IR protocol, this is a protocol over CEC. The CEC 416*4882a593Smuzhiyuninfrastructure uses rc-core for handling CEC commands, so that they 417*4882a593Smuzhiyuncan easily be remapped. 418*4882a593Smuzhiyun 419*4882a593Smuzhiyunimon (RC_PROTO_IMON) 420*4882a593Smuzhiyun-------------------- 421*4882a593Smuzhiyun 422*4882a593SmuzhiyunThis protocol is used by Antec Veris/SoundGraph iMON remotes. 423*4882a593Smuzhiyun 424*4882a593SmuzhiyunThe protocol 425*4882a593Smuzhiyundescribes both button presses and pointer movements. The protocol encodes 426*4882a593Smuzhiyun31 bits, and the scancode is simply the 31 bits with the top bit always 0. 427*4882a593Smuzhiyun 428*4882a593Smuzhiyunrc-mm-12 (RC_PROTO_RCMM12) 429*4882a593Smuzhiyun-------------------------- 430*4882a593Smuzhiyun 431*4882a593SmuzhiyunThe rc-mm protocol is described here 432*4882a593Smuzhiyunhttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 433*4882a593Smuzhiyunthe 12 bits. 434*4882a593Smuzhiyun 435*4882a593Smuzhiyunrc-mm-24 (RC_PROTO_RCMM24) 436*4882a593Smuzhiyun-------------------------- 437*4882a593Smuzhiyun 438*4882a593SmuzhiyunThe rc-mm protocol is described here 439*4882a593Smuzhiyunhttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 440*4882a593Smuzhiyunthe 24 bits. 441*4882a593Smuzhiyun 442*4882a593Smuzhiyunrc-mm-32 (RC_PROTO_RCMM32) 443*4882a593Smuzhiyun-------------------------- 444*4882a593Smuzhiyun 445*4882a593SmuzhiyunThe rc-mm protocol is described here 446*4882a593Smuzhiyunhttps://www.sbprojects.net/knowledge/ir/rcmm.php. The scancode is simply 447*4882a593Smuzhiyunthe 32 bits. 448*4882a593Smuzhiyun 449*4882a593Smuzhiyunxbox-dvd (RC_PROTO_XBOX_DVD) 450*4882a593Smuzhiyun---------------------------- 451*4882a593Smuzhiyun 452*4882a593SmuzhiyunThis protocol is used by XBox DVD Remote, which was made for the original 453*4882a593SmuzhiyunXBox. There is no in-kernel decoder or encoder for this protocol. The usb 454*4882a593Smuzhiyundevice decodes the protocol. There is a BPF decoder available in v4l-utils. 455