TVOON der TCU-AG unter LIRC
Vor einigen Tagen habe ich mir über eine Versteigerung bei onlinetvrecorder.com das TV-Kabelset von TVOON.tv ersteigert.
Nach etlichen Experimenten habe ich ein Adapterstück gebaut um die PC-Box mit LIRC ansteuern zu können. Das Empfangen von Signalen war mit dem lirc_serial Treiber kein Problem. Das Senden gelang jedoch nicht, denn lirc_serial sendet die Signale über die DTR Leitung und die PC-Box benötigt dafür die TX Leitung.
| PC | Box |
| 1 | 1 |
| 4 | 3 |
| 5 | 5 |
Damit das Senden richtig klappt, muss außerdem beim lirc_serial Modul die softcarrier-Option aktiviert werden. Ich habe dazu in /etc/modutils/lirc folgende Zeile hinzugefügt:
add options lirc_serial io=0x3f8 irq=4 softcarrier=1
Die übrigen Parameter brauche ich, da ich den ersten Seriellen Port verwende.
Mit diesen wenigen Schritten hat man schon einen Full-Featured IR-Dongle, der über das lange SCART Kabel, eine zweite Einheit z.B. im Wohnzimmer mit bringt.
Im nächsten Schritt habe ich die Fernbedienung des Sets in LIRC eingebaut. (tcuag.lirc)
Damit die Wohnzimmerbox zwischen VCR, PC und TV umschalten kann, musste ich eine "virtuelle-Fernbedienung" für LIRC erstellen. Der Mikroprozessor in der Wohnzimmerbox wertet diese virtuellen Signale aus und verwendet diese zum Umschalten.
Da ich in meiner Konfiguration lediglich das abspielen auf dem Fernseher benötige, ist diese Konfiguration nicht ganz vollständig, denn die Box unterstützt nicht nur das Routing vom VCR/PC zum TV sondern auch das Routing zum VCR und zum PC jeweils von TV, VCR/PC. (tvbox.lirc)
Im folgenden möchte ich noch kurz die Kodierung des Umschalt-Signals erläutern:
Jedes Signal besteht aus einem
HEAD (20000 20000 20000 20000) und 7 Sätzen.
Jeder Satz besteht wiederum aus einem Head (4000 500 1000 500 500 500 1000 500) und einem Byte.
Jedes Byte besteht aus 8 Bit, und ein Bit ist entweder 0 (500) oder 1 (1000) und wird jeweils von einer Lücke (500) gefolgt, eine Ausnahme hierzu stellt das letzte Bit, es wird von einer größeren Lücke gefolgt (2900). Bei letzten Byte fehlt die letzte Lücke.
HEAD
4000 500 1000 500 500 500 1000 500
Byte
500 500 1000 500 500 500 1000 500 500 500 1000 500 500 500 500 2900
Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
0 1 0 1 0 1 0 0
01010100 = 84 (die 84 stellt in der ASCII Tabelle ein 'T' dar)
[..]
Hier folgt jetzt selbiges für 'C', 'U', 'A' und 'G'.
[..]
HEAD
4000 500 1000 500 500 500 1000 500
Byte
500 500 = Bit0 = 0 # I2CREGVOL
500 500 = Bit1 = 0 # I2CREGPC wenn 1: Quelle für PC = VCR sonst TV
1000 500 = Bit2 = 1 # I2CREGTV wenn 1: Quelle für TV = VCR sonst PC
500 500 = Bit3 = 0 # I2CREGVCR wenn 1: Quelle für VCR = TV sonst PC
500 500 = Bit4 = 0 # I2CREGVOLOFF
500 500 = Bit5 = 0 # I2CREG12OFF # 12V Einspeisung AN/AUS?
500 500 = Bit6 = 0 # I2CREG12I # 12V Durchschleifen AN?
500 2900 = Bit7 = 0 # I2CREG12O # 12V Durchschleifen AUS?
HEAD
4000 500 1000 500 500 500 1000 500
500 500 = Bit0 = 0 # I2CREGVOL
500 500 = Bit1 = 0 # I2CREGPC wenn 1: Quelle für PC = VCR sonst TV
1000 500 = Bit2 = 1 # I2CREGTV wenn 1: Quelle für TV = VCR sonst PC
500 500 = Bit3 = 0 # I2CREGVCR wenn 1: Quelle für VCR = TV sonst PC
500 500 = Bit4 = 0 # I2CREGVOLOFF
500 500 = Bit5 = 0 # I2CREG12OFF # 12V Einspeisung AN/AUS?
1000 500 = Bit6 = 1 # I2CREG12I # 12V Durchschleifen AN?
500 = Bit7 = 0 # I2CREG12O # 12V Durchschleifen AUS?
Der Eigentliche Code befindet sich also nur in den beiden letzten Bytes. Das erste Byte kann nur die höchstwertigsten 4 Bit gesetzt haben, das zweite scheint das komplette Byte zu enthalten.
In dieser Beispielkonfiguration bekommt der PC die Video-Signale vom TV, TV die vom VCR und VCR vom PC. Die 12V Phantomspannung werden nach meinem Verständnis in diesem Fall durchgeschliffen.
In meiner Umgebung wirkt sich das so aus, das der Fernseher das VCR Bild darstellt, sobald der VCR das 12V Signal gibt.
| Attachment | Size |
|---|---|
| tcuag.lirc | 8.4 KB |
| tvbox.lirc | 3.72 KB |
