Electronique > Théorie > Télécommandes > IR > Protocole et codes RC6

Dernière mise à jour : 22/01/2017

Présentation

Cette page traite du protocole Philips RC6 utilisé dans les systèmes de télécommandes infrarouge pour équipements audiovisuels.

recepteur_ir_rc5_001z

Il sera question ici de la forme et du contenu d'une trame RC6 au niveau logique (bande de base). Les principes de la modulation bi-phase (codage Manchester) du faisceau infrarouge ne seront pas développés. Voir aussi Protocole et codes RC5.

Avertissement

Après avoir longuement cherché un document officiel décrivant le protocole RC6, il a fallu que je me rende à l'évidence : on n'en trouve pas. Les informations que vous trouverez ci-après sont donc le fruit d'un mélange entre données récupérées ici et là sur le net, et données obtenues par mes propres moyens (reverse-engineering). Malgré cette mauvaise nouvelle, vous vous apercevrez que les informations que je donne suffisent pour bricoler soi-même des émetteurs IR ou décoder des trames RC6 avec un petit microcontrôleur (exemple).

Codes RC6

Les codes RC6 et RC6A sont un peu plus "évolués" que les codes RC5 et RC5X mais y ressemblent beaucoup. Cela est normal, puisque le protocole RC6 a été développé pour palier les insuffisances du protocole RC5. La différence fondamentale entre codes RC5 et RC6 réside dans le temps accordés aux différents "symboles" d'un message (d'une trame) ainsi que dans le nombre de bits transmis. Là où le code RC5 se contentait de bits constitués de la même façon entre le début et la fin de la trame RC5, on trouve dans le codage RC6 trois types de bits différents. Ces trois sortes de bit sont constitués d'une période d'activité (modulation du faisceau IR à 36 kHz) et d'une période de repos (faisceau IR coupé). Ce sont les durées d'activité et de repos qui déterminent le type de bit :
- bit d'entête (Header ou Leader bit) : durée d'activation de 2,66 ms et durée de repos de 889 us
- bit de bascule (Toggle bit) : durée d'activation de 889 us et durée de repos de 889 us
- bit de données (Normal bit) : durée d'activation de 444 us et durée de repos de 444 us

Voilà à quoi ressemblent ces trois sortes de bit :

rc6_modul_36khz_leader_001a
bit d'entête (Header bit ou Leader bit) - durée totale = 2,666 ms + 0,889 ms = 3,555 ms

rc6_modul_36khz_toggle_001a
bit de bascule (Toggle bit)

rc6_modul_36khz_normal_001a
bit de données (Normal bit)

Le rapport cyclique du signal porteuse 36 kHz peut être compris entre 25% et 50% (à 25%, on réduit la consommation moyenne de l'émetteur IR, et on prolonge donc son autonomie).

En ce qui concerne les bits bascule (Toggle bits) et normaux (Normal bits) et par rapport au protocole RC5, on fait immédiatement deux constats :
- les états actifs et inactifs sont inversés. En RC6, un bit de valeur logique 0 commence par un repos et se termine par une activité, alors qu'en RC5 un bit de valeur logique 0 commence par une activité et fini par un repos.
- la durée d'un bit normal est moitié moindre en RC6. En RC6, un bit normal dure 888,8 us, alors qu'en RC5 il dure 1777 us. On dispose donc de 16 périodes du signal 36 kHz et non plus de 32 par moitié de bit. Ce qui à priori doit permettre de caser deux fois plus d'infos dans un même laps de temps.

Les images qui précèdent montre comment sont constitués les trois sortes de bits. Une trame RC6 complète comporte un certain nombre de bits, et ce nombre peut varier en fonction du "mode" RC6 (ce point est abordé plus loin). Pour rappel, une trame RC5 comporte toujours 14 bits.

Une trame RC6 "normale" (mode 0) est composée de 22 bits, suivis d'une période de "temps mort" :
- 1 premier bit d'entête (Header / Leader) - Utilisation d'un bit de type "Leader"
- 1 second bit d'entête (Short start bit) - Utilisation d'un bit de type "Normal" (ce bit court et le bit long qui précède constituent un "Start bit")
- 3 bits pour le mode / champs d'application (Field / Mode) - Utilisation de bits de type "Normal"
- 1 bit pour la bascule (Toggle) - Utilisation d'un bit de type "Toggle"
- 8 bits pour la valeur système (System / Address / Control) - Utilisation de bits de type "Normal" - MSB en premier et LSB en dernier
- 8 bits pour la valeur commande (Command / Information) - Utilisation de bits de type "Normal" - MSB en premier et LSB en dernier
- période de "temps mort" (Signal free) - durée d'au moins 2,66 ms (6 x 444 us)

Remarque : dans certains modes non décrit ici, la trame RC6 peut comporter un nombre de bits supérieur à 22.

rc6_demodul_36khz_001a  rc6_demodul_36khz_001b  rc6_demodul_36khz_001c  
Exemple de trames émises par une télécommande Philips pour lecteur DVD (porteuse 36 kHz supprimée à la réception)

Bit de Start / Header / Leader (bits #1 et #2)
L'information de début de trame est composée de deux bits : un bit long (bit Leader de durée 3,55 ms) et un bit court (bit Normal de durée 889 us). Cette amorce permet au récepteur d'identifier le début de la trame, et en même temps d'ajuster le gain de l'étage de réception IR en fonction du niveau de lumière infrarouge reçue. Tous les récepteurs n'ont pas un tel réglage automatique de gain. 

Bits de mode / Field (Bits #3 à #5)
Le champ "Mode" ne peut en théorie prendre que 8 valeurs, puisque codé sur 3 bits. Pourtant, on compte au moins 11 modes possibles (source) :

Mode Mode Name
0 Command Mode (Philips mode)
1A String mode (without Acknowledge)
1B String mode (with Acknowledge)
2A Pointing device mode (A)
2B For Future Use
3 For Future Use
4 For Future Use
5 Professional mode
6A OEM command mode
6B OEM Pointing device mode
7 For Future Use

Le mode 0 est celui adopté pour les équipements de la marque Philips. Les autres modes concernent des équipements des marques autres que Philips.
- Mode 0 : valeur Address/System/Control codée sur 8 bits (bits #7 à #14) et valeur Command codée sur 8 bits (bits #15 à #22)
- Mode 6A : valeur Address/System/Control codée sur 15/16 bits (bits #7 à #22) et valeur Command codée sur x bits (bits #23 à #23+n)
Je pense que le "sous-indicateur de mode" (lettre A ou B) est lié à la valeur du bit de poids fort (MSB) de la valeur Address/System. Mais info à prendre avec des pincettes...

Bit de bascule / Toggle (bit #6)
Ce bit indique au récepteur si deux codes reçus identiques ont été obtenus en appuyant deux fois de suite sur la même touche de la télécommande, ou s'ils ont été obtenus en laissant la touche enfoncée. Cette astuce permet par exemple de différencier deux commandes successives "1" d'une commande "11". Ce bit change à chaque fois que l'on relâche une touche et qu'on appuie sur la même ou sur une autre. Si on laisse le doigt appuyé sur une touche, ce bit conserve le même état.

Numéro d'adresse système (bits #7 à #14, ou autre si Mode <> 0)
Ces huit bits permettent d'identifier le type d'équipement auquel s'adresse la trame (TV, lecteur DVD, récepteur satellite, etc). Le bit de poids fort (MSB) est transmis en premier (bit #7) et le bit de poids faible (LSB) est transmis en dernier (bit #14). Selon le numéro d'adresse système, un même numéro de commande (derniers bits de la trame) pourra avoir plusieurs significations différentes. La liste qui suit indique la correspondance entre numéro d'adresse système (exprimée en notation décimale et hexadécimale) et type d'appareil concerné. Je suppose ici - comme d'autres - que ce tableau valable pour le protocole RC5 est également valable pour le protocole RC6.

Numéro adresse système
Type d'équipement
Remarques
0 ($00)
1 ($01)
2 ($02)
3 ($03)
4 ($04)
5 ($05)
6 ($06)
7 ($07)
8 ($08)
9 ($09)
10 ($0A)
11 ($0B)
12 ($0C)
13 ($0D)
14 ($0E)
15 ($0F)
16 ($10)
17 ($11)
18 ($12)
19 ($13)
20 ($14)
21 ($15)
22 ($16)
23 ($17)
24 ($18)
25 ($19)
26 ($1A)
27 ($1B)
28 ($1C)
29 ($1D)
30 ($1E)
31 ($1F)
TV SET 1
TV SET 2
VIDEOTEXT / TELETEXT
EXPANSION FOR TV 1 AND 2
LASER VIDEO PLAYER
VIDEO RECORDER 1 (VCR 1)
VIDEO RECORDER 2 (VCR 2)
RESERVED / EXPERIMENT
SAT 1
VCR 1/2 EXT or CAMERA
SAT 2
RESERVED
CD VIDEO / VCD
RESERVED / CAMCORDER
CD PHOTO
RESERVED
AUDIO PREAMPLIFIER 1
RECEIVER / TUNER
TAPE / CASSETE RECORDER
AUDIO PREAMPLIFIER 2
CD PLAYER
AUDIO RACK / PHONO
AUDIO SAT RECEIVER
DCC RECORDER
RESERVED
RESERVED
WRITABLE CD / CDR
RESERVED
RESERVED
RESERVED / LIGHTING 1
RESERVED / LIGHTING 2
RESERVED / PHONE
ensemble de commandes N°1 pour TV (TV1)
ensemble de commandes N°2 pour TV ( TV2)
Video-texte / Télé-texte
Extension pour TV1 et TV2 ou Vidéo Disque
Lecteur disques vidéo laser
Enregistreur vidéo #1
Enregistreur vidéo #2
Réservé / Expérimental
Récepteur satellite #1
Extension pour enregistreur vidéo VCR1 et VCR2 ou Appareil photo
Récepteur satellite #2
Réservé
CD Vidéo
Réservé ou Caméscope
CD Photos
Réservé
Préampli audio #1
Récepteur / tuner (radio)
Lecteur / enregistreur de K7 audio
Préampli audio #2
Lecteur CD
Rack audio ou Platine disque (combi)
Récepteur satellite audio
Enregistreur à K7 DCC (peut-être aussi DAT et MD)
Réservé
Réservé
Enregistreur de CD
Réservé
Réservé
Réservé ou Lumière 1
Réservé ou Lumière 2
Réservé ou Téléphone

Le premier bit de ce champ (bit #7) indique, quand on est dans le mode 6A, si la valeur Address/System est codée sur 7 bits (SCC, Short Customer Code) ou 15 bits (LCC, Long Customer Code). Dans le premier cas (SCC) il ne reste que 7 bits réellement utilisables, soit 128 valeurs possibles. Dans le second cas (LCC) les 15 bits restants permettent de disposer de 32768 valeurs possibles.

Numéro de commande (bits #15 à #22, ou autre si Mode <> 0)
Les huit derniers bits décrivent le type de commande à traiter, telle que lecture (play) ou arrêt (stop) d'un CD audio, changement de chaîne TV (N°1, N°5 par exemple), augmentation ou diminution du volume, etc. La liste ci-après résume les commandes disponibles, les valeurs numériques sont exprimées en notation décimale et hexadécimal (il est possible que certaines ne soient pas documentées). Là encore, je fais l'hypothèse que ce tableau qui est valable pour le protocole RC5, est également valable pour le protocole RC6.

Numéro de commande
Action
Remarques
0-9 ($00-$09)
10 ($0A)
11 ($0B)
12 ($0C)
13 ($0D)
14 ($0E)
15 ($0F)
16 ($10)
17 ($11)
18 ($12)
19 ($13)
20 ($14)
21 ($15)
22 ($16)
23 ($17)
24 ($18)
25 ($19)
26 ($1A)
27 ($1B)
28 ($1C)
29 ($1D)
30 ($1E)
31 ($1F)
32 ($20)
33 ($21)
34 ($22)
35 ($23)
37 ($25)
39 ($27)
40 ($28)
48 ($30)
50 ($32)
52 ($34)
53 ($35)
54 ($36)
55 ($37)
63 ($3F)
71 ($47)
77 ($4D)
78 ($4E)
80 ($50)
81 ($51)
82 ($52)
83 ($53)
84 ($54)
85 ($55)
86 ($56)
87 ($57)
88 ($58)
89 ($59)
90 ($5A)
91 ($5B)
92 ($5C)
93 ($5D)
94 ($5E)
95 ($5F)
96 ($60)
97 ($61)
98 ($62)
99 ($63)
100 ($64)
101 ($65)
102 ($66)
103 ($67)
118 ($76)
119 ($77)
123 ($7B)
124 ($7C)
NUMERIC KEYS 0 - 9
-/--
TV / VCR1/2 / CD / DCC
STANDBY
MUTE
PRESETS TV / VCR1/2
INFO
VOLUME +
VOLUME -
BRIGHTNESS +
BRIGHTNESS -
COLOR SATURATION +
COLOR SATURATION -
BASS +
BASS -
TREBLE +
TREBLE -
BALANCE RIGHT
BALANCE LEFT
CD SHUFFLE / DCC REPEAT
VCR TIMER / CD REPEAT
VCR REC MODE / TUNER SEARCH +
VCR FAST REV / TUNER SEARCH -
PROGRAM + (NEXT)
PROGRAM - (PREVIOUS)
TV P<P / VCR SLOW REV / CD INDEX +
TV 1/2 / VCR AUDIO MODE / AMP SPK A / CD INDEX -
STEREO / MONO
VCR OTR / AMP SPK B
SLOW FORWARD
PAUSE
FAST REVERSE / REWIND
FAST FORWARD
PLAY
STOP
RECORD
SYSTEM SELECT
DIM LOCAL DISPLAY
LINEAR FUNCTION (+)
LINEAR FUNCTION (-)
STEP UP
STEP DOWN
MENU ON
MENU OFF
DISPLAY A/V SYS STATUS
STEP LEFT
STEP RIGHT
ACKNOWLEDGE
PIP ON/OFF
PIP SHIFT
PIP MAIN SWAP
STROBE ON/OFF
MULTI STROBE
MAIN FROZEN
3/9 MULTI SCAN
PIP SELECT
MOSAIC MULTI PIP
PICTURE DNR
MAIN STORED
PIP STROBE
RECALL MAIN PICTURE
PIP FREEZE
PIP STEP UP
PIP STEP DOWN
SUB MODE
OPTIONS SUB MODE
CONNECT
DISCONNECT
Pavé numérique 0-9
-/--
C/P - C/P Select - Time
Standby
Silencieux (si TV)
Presets
Infos
Volume +
Volume -
Lumière +
Lumière -
Saturation couleurs +
Saturation couleurs -
Graves +
Graves -
Aigus +
Aigus -
Balance Droite
Balance Gauche
CD lecture aléatoire / DCC Répétition
Programmation Magnétoscope / CD répétition
Mode Enr. Magnétoscope / Tuner recherche +
Retour rapide magnétoscope / Tuner recherche -
Programme + (Suivant)
Programme - (Précédent)
-
-
-
-
-
Pause
Retour rapide
Avance rapide
Lecture
Arrêt
Enregistrement
Sélection système
Affichage local DIM ?
Fonction linaire +
Fonction linéaire -
Un cran au-dessus
Un cran au-dessous
Menu Marche
Menu Arrêt
Affichage statut système A/V
Un cran à gauche
Un cran à droite
Acquittement (validation)
Image dans image Marche / arrêt
Image dans image Décallage
Image dans image Inversion
Sonde Marche / arrêt
Sonde multiple
Gel image principale
Multi Scan
Image dans image Sélection
Image dans image Mosaïque
Réduction de bruit image
Enregistrement (stockage) image principale
Image dans image Sonde
Rappel image principale
Image dans image Gel
Image dans image Un cran au-dessus
Image dans image Un cran au-dessous
Sous-mode
Options Sous-mode
Connexion
Déconnexion

Quand on est dans le mode 6A, le champ Command peut comporter jusqu'à 24 bits (SCC, Short Customer Code) ou 128 bits (LCC, Long Customer Code).

Temps mort (Signal free)
A la fin de chaque trame, on trouve toujours une période de "silence total" ou "temps mort" (Signal free) de 2,66 ms au moins (6 x 444 us). Ce temps doit permetttre au récepteur de comprendre que l'émetteur a envoyé tous les bits du message.