How to connect a PC to a VideoCrypt decoder ------------------------------------------- Markus Kuhn -- 1996-05-06 The easiest way to connect your PC to a VideoCrypt pay-TV decoder is to use the chip card slot as an interface and connect it with a voltage converter (MAX232) and a TTL open collector driver (74LS07) to the RS-232 serial port. This way, you don't even have to open the decoder and the PC can now act as an emulator for a smart card. WARNING: In order to build the adapter described below, you will at least require some basic hobby electronics experience. If you do not understand, how the described circuitry works, better do not try to use it! Although the described procedure is relatively safe, serious errors might in the worst case damage both your PC and your TV system. The chip cards used by the VideoCrypt pay-TV access control system follow exactly the specification ISO 7816. You might find this international standard in a good library, if you are interested in more details. The basic transmission protocol used by a VideoCrypt card is the "asynchronous half duplex T=0 protocol" with "active low reset" and "inverse convention" as defined in this standard. The following description may also be used in order to connect computers to other ISO 7816 compatible chip card systems (e.g., GSM mobile phones, EuroCrypt pay-TV decoders, ec-cards with chip) if they also use asynchronous transmission. For smart card systems that use synchronous transmission (e.g., most prepaid phone cards, German health assurance cards), the interface described here will have to be modified and should better be connected to the Centronics printer port of your PC. This text does not describe an adapter that supports synchronous transmission. According to ISO, a chip card is 85.60 mm long, 53.98 mm high, 0.76 mm thick, and the edges are rounded with a radius of 3.18 mm. It has eight defined contact areas (C1 - C8 in the diagram below), each of which is at least 2 mm wide and 1.7 mm high: ______________________________________ / \ | | | | | C1 C5 | | C2 C6 | | C3 C7 | | C4 C8 | | | | | | | \________________________________________/ These contacts have the following purpose: C1 VCC Supply voltage (+5 V, max. 200 mA) C2 RST Reset signal C3 CLK Clock signal C4 - reserved C5 GND Ground C6 VPP Programming voltage (5-25 V) C7 I/O Data input/output C8 - reserved The following table gives the precise location of the contact areas. These areas are only minimum areas, the actual contacts might be larger but must of course be properly isolated from each other. In the following table, A represents the maximum distance between the card's left edge and the contact area's left edge, B represents the minimum distance between the card's left edge and the contact area's right edge, C represents the maximum distance between the card's top edge and the contact area's upper edge, D represents the minimum distance between the card's top edge and the contact area's lower edge. A B C D ----------------------------------------- C1 10.25 12.25 19.23 20.93 C2 10.25 12.25 21.77 23.47 C3 10.25 12.25 24.31 26.01 C4 10.25 12.25 26.85 28.55 C5 17.87 19.87 19.23 20.93 C6 17.87 19.87 21.77 23.47 C7 17.87 19.87 24.31 26.01 C8 17.87 19.87 26.85 28.55 Older card systems (defined in a French AFNOR standard) had these contacts located higher (distance from the top between 9.07 mm and 18.39 mm, distance from the left edge is identical with the C1-C8 contacts). As some decoders support both contact area alternatives, make sure that this old contact area is properly isolated on your card or you will produce a short circuit when inserting your card. You may have noticed, that the contacts are arranged in the usual 1/10 inch (= 2.54 mm) system (i.e. like the pins of a 8-pin DIL chip). You can produce your card adapter by making a printed circuit board (PCB) with contact areas at the above listed locations. The PCB must have precisely the thickness and width of a real card, but it may be longer, such that you can locate the interface electronics on the part that remains outside the slot. Cards are inserted into most decoders with the contacts on the bottom side. Normal PCBs are about 1.3 mm think and won't fit into the slot. Either you get a PCB which is around 0.8 mm thick or you make it thinner, for example by using a sander machine. Perhaps you will find ready to use test cards with connectors instead of producing your own or you simply open the decoder, clamp contacts to the resistors near the card slot and insert a normal plastic card in order to activate the card-presence switch (this is NOT recommended: there are unisolated 230 V parts inside the decoder and touching them can cause cardiac arrest and can easily kill you if you are not very carefull!!!). The adapter will only need the card contacts I/O, GND, RST and VCC. On the RS-232 side, the following contacts will be used: Sub-D 25-pin Sub-D 9-pin --------------------------------------------------------- TxD 2 3 transmit data RxD 3 2 receive data RTS 4 7 request to send CTS 5 8 clear to send DSR 6 6 data set ready GND 7 5 ground DCD 8 1 carrier detect (here: reset) DTR 20 4 data terminal ready The pins DTR, DSR and CTS are not actually needed, they are just connected together in the adapter, so that defined levels are available on them because some software might need this. RTS is connected to an unused MAX232 input and the corresponding TTL output might be used for generating the reset signal if the adapter is used for connecting a PC to a card instead of a decoder. The following components are necessary for the adapter 1 x 0.5-0.8 mm PCB single sided or test card 1 x IC Maxim MAX232CPE (or Linear Technology LT1081CN) 1 x IC 74LS07 (or 7407) 5 x capacitors 1 uF (or higher), 16 V 1 x female Sub-D connector (9 or 25-pin) 1 x ISO 7816 chip card acceptor device (optional) These components cost together less than 25 DEM. The MAX232 converts the RS-232 levels (about +10 and -10 V) to TTL voltage (0 and +5 V) and vice versa without requiring anything else than +5 V power supply. This chip contains two TTL->RS-232 and two RS-232->TTL drivers and needs four external 1 uF capacitors in order to generate the RS-232 voltage internally. The adapter electronic gets its power supply from the decoder's VCC line or you can use an external 5 V supply if you wish. The card slot's RST line is connected using one of the TTL->RS-232 drivers in the MAX232 to DCD, so that the software and the decoder can easily resynchronize in case of a protocol error. The I/O line is a bidirectional half-duplex asynchronous TTL level serial port, which is operated in a VideoCrypt system with 9600 bit/s. We can connect this line to a MAX232 TTL input driver (which is connected to RxD and sends bytes to the PC) in order to receive data from the decoder. The TxD signal is converted in the MAX232 to TTL level and is connected with an open collector TTL driver to I/O. This open collector driver (one of six in the 74LS07) has a high impedance output during idle state and 1 and is connected to GND during a 0 on it's input. As there is already a pull-up resistor to +5 V on I/O in the decoder, this circuitry guarantees, that the adapter is in high impedance state if the TxD line is idle and delivers the correct voltage if the PC sends bytes and the decoder is in reception mode. As we don't connect totem-pole or tristate outputs to I/O, a short circuit should be impossible in the adapter. The following diagram describes the whole interface: +-------------+ + +-----------|1 V 16|---+---o +5V (VCC) +| +| | === === +5V o-||-|2 MAX232 15|---+---o GND (card & RS-232) | | | +-----------|3 +---14|----o DCD +-<-o DTR + | | | | +---||---|4 | +-13|----o RTS +->-o DSR | | | v | | +--------|5 | +-12|- (unused TTL output) +->-o CTS + | | | GND o-||-|6 +-<-11|----o RST | | RxD o----|7 ---<--- 10|-------------------+----o I/O | | |\ | TxD o----|8 --->--- 9|--------------| |--+ +-------------+ 1|/ 2 74LS07 At the MAX232, pin 2 delivers +10 V and pin 6 delivers -10 V. (also connected to 74LS07: pin 7=GND, pin 14=VCC) Pay attention to the polarity of the capacitors (marked with a + in the diagram next to each capacitor)! The four -->-- symbols in the MAX232 diagram above indicate the voltage converters inside the chip. You might want to add an LED and a resistor (between 220 and 1k ohm) between VCC and GND so that you can see when the decoder activates the interface. If you can't live without blinking bits, then add an LED and a resistor from VCC to I/O. The capacitor between VCC and GND is not absolutely necessary, but recommended especially if you add other circuitry on the board (e.g., the crystal oscillator described below). As a side effect of this simple interface design, every byte sent by the PC is at the same time also received by the PC. Consequently, you can test the circuit with a terminal emulator and external +5 V supply by switching off local echo: if you still see every typed character immediately on the screen, the interface should be all right. Software must be capable of dealing with this echo from the interface. As specified in the ISO standard, the decoder activates VCC only shortly before a reset and deactivates VCC again if an answer-to-reset packet has not been received from the card in time after the reset signal. A few additional hints: If you have a larger distance between the PC and the decoder, then locate the adapter electronic near the decoder, because the RS-232 interface is much more suitable for long cables than the TTL signals. Cables of 12 m length have sucessfully been used and you shouldn't have problems with RS-232 cables up to 25 m length and more. You can also use this adapter circuit to allow a PC to listen to the data traffic between a decoder and a real card. Just connect the real card and the adapter parallel to the decoder and don't let the PC software transmit anything. Suitable card slots are available for little money from various manufacturers (see below for addresses). Videocrypt uses the inverse convention data format, i.e., you have to reverse and invert the bits in each byte in the PC software in order to get the correct byte value. For more details about the protocol, check ISO 7816-3. There are many alternative ways to build this interface if you don't have some of the components available. E.g. the MAX232 could be replaced by the fully compatible LT1081 from Linear Technology. The circuit still works fine if you use higher capacitors than 1 uF (e.g. my prototype worked fine with 4 22 uF types which were left from a previous project), but use equally sized capacitors. If you use the pin compatible MAX220 (a low power version) instead of the MAX232, then use capacitors with 10 uF or higher. The MAX232 should be the easiest available one of these chips. If it is more convenient for your layout, then you can use instead of the 1->2 driver in the 74LS07 one of the remaining 5 drivers at the pins 3->4, 5->6, 9->8, 11->10 and 13->12. If your local electronics store doesn't have a 74LS07 or 7407, then use e.g. two of the six open collector inverters in a 74LS05 (same pin assignment as the 74LS07) in series and a 2.2k pull-up resistor to VCC between them. People have also suggested quick-and-dirty designs where the 74LS07 open-collector driver is replaced by a 100 ohm resistor or a diode and the MAX232 by a CMOS inverter. If you don't have the experience to etch your own PCB (it's not very difficult) or don't know someone who does, then you could solder the components in a universal raster PCB or plug them into an experimental board. Build just a simple PCB with only the ISO card contacts and connections to outside the decoder by mechanically removing the thin copper layer with a good knive between the 4 contacts and lines. People have also suggested to use an empty German phone card, which also has ISO contacts. Remove the integrated chip from the other non-contact side, test whether the contacts are now isolated from each other and use a special conductive ink you'll find in an electronics store in order to draw connections to the end of the card were you connect wires. I haven't tested this and don't know how well it works, but you might also consider it. If you ask dealers who sell Videocrypt clone cards, you might also get a suitable PCB with card contacts for little money. You can use the same circuit with a few modifications in order to connect a PC to a smart card. This allows you to use the PC in order to emulate a decoder from the card's point of view. Just connect the card's RST input to pin 12 of the MAX232 so that you can control the RST line with the RS-232 RTS signal. Add a 20k pull-up resistor from the card's I/O line to VCC. In addition, you'll have to generate a 3.57 MHz CLK signal for the card. If you use other frequencies, remember that the time for one protocol bit is 372 CLK periods and you'll have to adjust the bits/sec rate. Either you'll find a complete 3.5 or 3.579545 MHz quartz oscillator which delivers a TTL signal or you build one like the following circuit using a 3.579545 MHz quartz (easily available, because each NTSC TV set contains one) and 2 of the 6 CMOS inverters in a 74HC04. I've also tried a 74HCT04 and a 4069, but they both are less suitable. And of course you'll need an external regulated +5 V power supply (a decoder will provide VCC and CLK signals only while it is talking to a card). In order to protect both the card and the adapter, it might be a good idea to put a 10 ohm resistor in all lines to the card (and perhaps even protection diodes to VCC and GND). If you don't already have a VCC/GND capacitor near the 74HC04, then add 0.1 uF between VCC and GND. 1M 2.2k 3|\4 10 +-/\/\/--+----/\/\/-----+--| o-----+-----/\/\/---o CLK | |2 | |/ | | -o- | |100 pF | /_____\ | === | |1 | | | | 3.579545 MHz | | | | +--+ | - (also connect to 74HC04: +--------+---| | | |---+ GND pin 5,7,9,11,13=GND, | +--+ | pin 14=VCC=+5 V) |27pF |27pF === === | | - - GND GND You can easily build a universal device that can be operated in two modes by changing the position of two jumpers: a) In the first mode, you have a PC<->decoder adapter. The PCB is plugged into the card slot of a decoder, and either you let the PC talk to the decoder or you put a card into the additional slot on your device and use the PC in order to listen to the traffic between card and decoder. Use the jumpers in order to connect pins CLK and RST of your card slot to those of the decoder. b) In the second mode of operation, you have a PC<->card adapter. The device is not connected with the decoder and you have to attach a +5 V power supply. The jumpers are switched, so that your card slot has its CLK pin connected to the output of the above quartz oscillator and the RST pin to pin 12 of the MAX232. As in this mode the PCB isn't plugged into the decoder, it is convenient to have tiny feets attached to the PCB so that you can put it on a table. Now you've built a cheap and flexible debugging tool for all ISO 7816 compatible smart card systems that use an asynchronous protocol. Other ideas are to add a chip socket for a microcontroller (e.g. a PIC16C84 from Microchip or a 8032+EPROM from Intel) parallel to the additional card slot and to add pins where you can easily connect an oscilloscope. This allows you to debug card software for microcontrollers easily. Feel free to produce and sell such a device, but if you do it commercially, please be nice and don't forget to send me a free one, too. :-) ISO 7816 chip card acceptor devices (CCAD) in various forms are for example available from: Amphenol-Tuchel Electronics GmbH August-Haeusser-Str. 10 D-74080 Heilbronn Germany phone +49 7131 929-0 fax +49 7131 929-400 A few final remarks about the safety of the adapter: Normally, both the RS-232 interface and the decoder slot should not be harmed by short circuits, but be careful. Also try to avoid electrostatic voltage (e.g. generated by walking on a suitable carpet) near the interface, because discharges cause easily decoder or PC crashes and could theoretically even harm the hardware (especially CMOS chips like the 74HC04). Before connecting the decoder and the PC the first time, you might want to check the voltage between the two GND lines. In correct installations, the difference of the GND potentials is very low (below 1 V), but someone has reported up to 50 V (high impedance only). Most TV sets, VCRs, SAT receivers, and decoders are not connected with the earth line, so their GND potential is floating or sometimes only defined by e.g. the shielding of the antenna cable. If your antenna system is not correctly installed, the shield might also not be grounded. One quick solution might be to switch off all components and then connect first the RS-232 GND line to e.g. the GND in the SCART connector or the GND at an audio connector of your decoder before connecting anything else. You might also design the ISO contacts on the PCB so that GND touches all pins at first when the PCB is inserted in the card slot. The only really secure protection between your PC and your decoder would be to use an isolating RS-232 driver (e.g. you might want to check data sheets of Maxim's MAX250/251/252 chips which offer RS-232 protection up to 1500 V), but under normal circumstances you won't need this. Use this circuit at your own risk and please don't blame me if anything doesn't work or produces only smoke and noise. Good luck ... ;-)