www.majority.nl   Questions? Feedback?    E-mail in Dutch, English or German (preferred order) to m.majoor@majority.nl


DCC600 Service mode

  Remote control

  Chassis list
  28PW9525 Remote control
  Pioneer KRL-32V service mode

TV Service mode
  Matchline (generic)
  Remote control codes
  MG7.1E Customer Service Mode
  MG7.1E Service Alignment Mode
  MG7.1E Service Default Mode

TV Service mode tables

Revision history
2017-09-15 Added new Pronto application to generate/learn remote control data using a FTDI device with MPSSE support for Windows 10 (64-bit).
2007-08-05 Added utility which uses the standard transmit line of the serial port.
2007-02-24 Updated PRONTO so it supports XP (please read the included README.TXT on 'issues' with this version).
2006-05-24 Updated PRONTO with some more options.
2006-04-23 Updated PRONTO with external control.
2005-09-04 Updated GENERATERCX; Bug corrected (6001 conversion) and C source code added (partially conversion only).
2004-05-08 Updated PRONTODLL; Visual Basic example added.
2004-05-07 Updated PRONTODLL; DLL's for direct control of hardware added.
2004-04-10 Added PRONTODLL; DLL's for communicating with the Pronto and for generating RCx Pronto data.
2004-01-03 Added note on increasing range simple transmitter.
2003-03-28 Added an excellent in depth document about the different Pronto formats from Evgueni Oulianov.
2003-03-23 Added new application which converts between Pronto formats.
2003-03-22 Update of PRONTO.ZIP to V3.02 which can work now without controlling hardware.
2003-03-21 Added comments on how to convert Pronto 5000/5001/6000/6001 codes into learned code (0000) format.
2002-10-25 Added comments on how to generate service mode codes.
2002-09-17 Updated Pronto components.
2002-09-13 Added Pronto components.
2002-08-31 Updated Actisys ACT-IR220L+ modification.
2002-08-11 Update PRONTO.
Added schematic for the simplest remote control ever.
Added information on how to modify an Actisys ACT-IR220L+.
2002-07-27 Updated document PRONTO.PDF (added Pronto '0100' format).
2002-07-21 Added PRONTO.ZIP.
2002-07-19 Updated document PRONTO.PDF.
2002-06-29 Added document PRONTO.PDF.
2002-06-09 Updated PRONTOIRDA.
2002-06-08 Updated PRONTOIRDA.
Added screen captures of programs.
2002-06-07 Updated RemoteIrDA_Pronto - name changed to PRONTOIRDA.
Removed RemoteIrDA which is superceeded by RemoteIrDA_Pronto.
Added pictures of IrDA prototypes.
2002-06-02 Added new schematic for other IrDA device.
2002-06-01 Updated RemoteIrDA_Pronto.
2002-05-31 Updated RemoteIrDA_Pronto.
2002-05-26 Updated RemoteIrDA_Pronto.
Updated RemoteIrDA.
2002-05-25 Added remark about ProntoEdit 4.
Fixed downloadable file 'remoteirda_pronto.zip' which was corrupted.
2002-04-30 New software version added which works with ProntoEdit.
2002-03-01 Added text about using other IrDA devices.
Added link to remotecentral.com.
Projects: Remote control

To access service mode on some of the TV models (see the TV: Service mode remote control codes page) you need to send some remote control codes which are not readily available on all remote controls. In fact you probably need a programmable remote to make things work. If you don't own a programmable remote control then you can either acquire one (the programmable remote which surely will work is the Pronto, though it is expensive), or you can build your own.
Below you will find different kind of infrared remote controls schematics. They are all relatively easy to construct. For those of you who just want to control something, and probably just occasionally, there is an extremely simple construction; a resistor and infrared LED directly on the serial port. See further below for the details.

IrDA on parallel port

The programmable remote control presented here is, like all others, an extremely simple one. It is made up of 6 parts and you will be able to send and receive remote control codes. All interfacing is through the parallel port. The hardware uses a IrDA device which contains both a receiver and transmitter. Here is the schematic:

HSDL1001 HSDL  HSDL1001 Working example. On the right is a power supply connector.
HSDL-1001 pinout
1 Shutdown
2 N.C.
4 RxD
6 TxD
7 LED Cathode
8 LED Anode

The following parts are needed:

  1. 25-pin D-SUB male connector (which plugs into the parallel port of the computer)
  2. An IrDA transceiver (the HSDL-1001, but any IrDA transceiver should do)
  3. Resistor about 9 ohm (transmitter power)
  4. Capacitors (decoupling)
  5. Pulldown resistor of about 50K..100K
Total costs of this hardware: about € 5-10

The following connections are made:
HSDL-1001 pin 1: 0V
HSDL-1001 pin 3: +5V
HSDL-1001 pin 4: to parallel port pin 11
HSDL-1001 pin 5: 0V
HSDL-1001 pin 6: to parallel port pin 17 and a pulldown resistor (50K..100K) which is connected to 0V
HSDL-1001 pin 8: through a 9 ohm/0.5W resistor to +5V
Parallel port pins 18..25: 0V

The only difficult part in the construction is the HSDL-1001 itself which has small (SMD) connections.

It is possible to use other IrDA devices (other than the HSDL-1001) as well. The pinouts will be different and you might need to set some device specific inputs to a specific state. See further below for an alternative IrDA device schematic.
It is also possible just to use an infrared transmitter (with a driver obviously) if you only need to control an infrared device.

The hardware should be powered by a (stabilized) +5V power supply.
The (transmission) range of the hardware is limited which can be extended using a smaller resistor for the transmitter (the 9 ohm resistor). Please note that during startup of the PC the transmit line is ACTIVE during the boot process of the BIOS. If you use a too small a resistor you could destroy the transmitter! You should take precautions if you are using a smaller resistor to extend the transmitter range (for example having the reset line of the printer controlling the Shutdown input of the IrDA device).

IrDA on parallel port (AC coupled IrDA device)

There are some IrDA devices which have an input which is AC coupled. If the above circuit does not work then use the schematic below. The schematic below is for a IRMS6115 (IRMT6115, IRMS6119, IRMT6119) which has an AC coupled input (transmit duration limited to 70 us). The main difference, other than a different pin layout, is the TxD input of the IrDA device. It has a pull-up resistor. Without this pull-up resistor the IRMS6115 will not transmit because the source capability of the drive signal from the parallel port is not adequate. The pull-up resistor now acts as the source, while the parallel port does the sinking (sink capabilities are usually much, much higher than source capabilities are).

IRMX6115 IRMS  IRMS6115 Working example. In the center is a power supply connector.
IRMx-6115 pinout
1 LED Anode
2 LED Cathode
3 TxD
4 RxD
5 Shutdown
7 N.C.

Simple infrared control using the serial port

The following hardware can be used if you just want to control a device and recording is not needed. It is by far the most simple circuit you can imagine. We connect an infrared LED through a resistor to an output pin. In the example below we use the serial port line RTS.

IRLED IRLEDPIC  Working example of an infrared LED on the RTS line of a serial port.

You can use any infrared LED as long as it uses approximately the same wavelength as that remotes do (usually about 940 nm). Large deviations from this wavelength are usually allowed (850-1000 nm), although with reduced performance. Instead of buying an infrared LED you can also use the infrared LED of an (old) remote control for this purpose. You don't necessarily have to strip the old remote for the LED; you can use it all as it is and just connect a resistor/cable and connector to it. You end up with the old remote which now has a cable attached to it, which connects to the serial port.
Because the output pin drives the LED directly through the resistor the transmitting range (distance) is extremely limited. In above example the range is less than 100 cm. You can increase the transmitting range by connecting to LED to pin 20 (25-DSUB) / pin 4 (9-DSUB) instead of pin 7 / 5 (to DTR instead of GND).

You can control this device using the PRONTO program further below. Start it with the following command line options. There is also a batch file included in the PRONTO package PRONTOCOM.BAT which has these settings):
  PRONTO $3FC $02 HIGH $3FE $10 LOW
This will use the RTS line as output and the CTS line as input.
Note that lowering the value of the resistor has little effect on the transmitting range. This is because of the limited current output of the RS232 lines.

Simple infrared control using the transmit line of the serial port

The following hardware can be used if you just want to control a device and recording is not needed. It is by far the most simple circuit you can imagine. We connect an infrared LED through a resistor to an output pin. In the example below we use the normal transmit line of the serial port.


You can control this device using the IR_COM program further below.

Modifying a serial based IrDA adapter

Note: This relates to using a control line of the serial port, and not to using the normal transmit line of the serial port.

It is possible to adapt a commercial IrDA adapter to our needs. The advantage is that we end up with a very professional looking result. The drawback is that the costs are relatively high (this obviously depends on the adapter to be modified). Note that these kind of serial based adapters use signals which are not always truly RS232 level signals. There outputs to the serial interface of the computer are often TTL levels (which work fine in most of the cases though). Next is based upon a ACT-IR220L+ adapter from Actisys. It is an IrDA adapter which plugs into the serial port.

ACTBACK  Backside of the ACT-IR220L+; unscrew the two screws to access the internals

The internals of the original product looks like this: ACTORG

What we have to do to make this work, in this case, are some minor modifications. Basically the modifications we need to make are:
. Connect the output of the IrDA receiver to the CTS line
. Connect the input of the IrDA receiver to the RTS line

Here is a picture of the modifications applied to the adapter:


The modifications made here are:
. Pin 2 of the IrDA receiver (TFDS4500) (or pin 11 of the Actisys IC) is connected to the CTS line (red wire, 2nd from the top)
. A pull up resistor (4K7) is connected between CTS (red wire, 2nd from the top) and the internally regulated 5V (the + of the horizontal elco)
   Note that this resistor was experimentally defined.
. The RTS wire (green wire, originally 3rd from the bottom) has changed position with the TXD wire (blue wire, originally 2nd from the bottom)
With the modifications above the whole thing will work. However the ActiSys needs sort of a 'wake up' signal. Without this it won't transport the signals on it's TXD input to the transmitter. We can circumvent this necessity by overriding the ActiSys alltogether. For this we apply the next modification:

ACTMOD2  Additional modification applied

This modification is the following: . The ActiSys IC is disconnected from the transmitter. Since it was connected to it through a 0 ohm resistor all we have to do is to remove this resistor. . The RTS signal which connects to the ActiSys IC (pin 5 of the ActiSys IC) is connected to the transmitter (at the point were the 0 ohm resistor was). Note that we must take the signal at the IC (5V level) and not from the serial port directly (+_12V level). Before using the PRONTO program we need to power the adapter. This is handled with the activation of the DTR line. We can use the support programs from the PRONTO package to accomodate for this.

To activate power to the adapter:
   GETIN $3FE >nul
   SETOUT $3FC $FE $01

Alternatively you can use the provided batch file SETDTR1.BAT We also have to trigger the adapter such that it actually will send the data (if you have overridden the ActiSys IC then there is no need for this). This is usually handled by the RTS line (TXD is now connected to this).

We do this with
  GETIN $3FE >nul
  SETOUT $3F8 $00 $AA

As usual you can also use a batch file (SETTXD.BAT). This will send data to the TXD line and should 'wake up' the device. You probably have to include a delay after powering it up and then waking it up.

When the adapter is powered and activated we can use the PRONTO program using the following parameters:
  PRONTO $3FC $02 HIGH $3FE $10 LOW

(batch file PRONTOCOM.BAT)

When you are ready using the adapter you can power it down using
  GETIN $3FE >nul
  SETOUT $3FC $FE $00

or use the provided batch file SETDTR0.BAT instead.

To simplify things another batch file PRONTOACT.BAT is provided in the PRONTO package which does all this automatically. As it turns out there is no additional delay necessary between powering the adapter (SETDTR1.BAT) and transmitting the data (SETTXD.BAT), the system delays seem to work fine (on a 800 MHz Celeron system that is).

Generating Philips TV service mode remote control codes

On the TV: Service mode remote control codes page you can see that there are sequences of particular remote control codes which can be used to access service mode. Because it is not all that clear on how to generate and use these sequences, a short description here is appropiate:
Step 1: The tools you need:
     . The RC5IRDA software (see below) to generate the sequences
     . The PRONTO software (see below) to transmit the sequences through the hardware
     . Infrared hardware as discussed above (for example the 'Simple infrared control using the serial port')
Step 2: Using RC5IRDA, fill in the appropriate values for the system/command/delays. Don't forget to ENABLE the rows you plan to use.

Example: we want to generate the 'GFL - Alignment' sequence. Here is the sequence (taken from the 'TV: Service mode remote control codes' page)

Sequence Delay (ms)
RC5 10 26 25
RC5 16 7 25
RC5 21 92 500
RC5 31 4 500
RC5 0 3 200
RC5 0 1 200
RC5 0 4 200
RC5 0 0 200
RC5 0 87 300

We now fill in the data in RC5IRDA:

Enabled Togglebit System Command Delay (ms)
X 10 26 25
X 16 7 25
X 21 92 500
X 31 4 500
X 0 3 200
X 0 1 200
X 0 4 200
X 0 0 200
X 0 87 300

With this data filled in the generated data will be:
0000 0070 0068 0000 0021 0021 0042 0021 0021 0042 0042 0042 0042 0021 0021 0042 0021 0021 0042 0042 0042 039D 0021 0021 0042 0042 0042 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0042 0021 0021 0021 0021 0021 039D 0042 0021 0021 0042 0042 0042 0042 0042 0042 0042 0021 0021 0021 0021 0042 0021 0021 4849 0021 0021 0042 0042 0021 0021 0021 0021 0021 0021 0021 0021 0042 0021 0021 0021 0021 0042 0042 0021 0021 4849 0021 0021 0042 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0042 0021 0021 0021 1CEA 0021 0021 0042 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0042 0021 1CEA 0021 0021 0042 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0042 0042 0021 0021 1CEA 0021 0021 0042 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 1CEA 0042 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0021 0042 0042 0042 0021 0021 0021 0021 0021 2B5F

You can use the 'Save as ASCII' to save this data to a file.

Step 3: Start the PRONTO software.
       Assuming we use the 'Simple infrared control' hardware we do this with:
Step 4: Load the generated code
       Use 'Load from file' and select the file you saved the data to. After loading the data will be visible in the 'Pronto format data' field.
Step 5: Transmit the sequence
        Use the 'Send' button to transmit the sequence through the hardware.
       NOTE: If you are using the 'Simple infrared control' hardware then make sure the infrared LED is very close to the receptor of the TV, because it's range is limited!
Step 6: Done....

Note: Instead of generating the data you can also use the 'Generated sequence (RC5PRONTO) samples' from the TV: Service mode remote control codes page.
Note: Instead of generating files you can also use the clipboard to transfer information between RC5IRDA and PRONTO. Since RC5IRDA automatically puts the data on the clipboard, you only have to 'Load from clipboard' in the PRONTO software to load it.
Note: if you own an actual Pronto then all you need is the RC5IRDA software (and ProntoEdit) and you typically will use the clipboard to get the data into ProntoEdit.

Additional information

If you are interested in more information about programmable remotes and/or remote control codes you should have a look at www.remotecentral.com. Here you find all kind of information concerning remotes. Because the Windows programs use the Pronto format you can use many of the utilities found in the Pronto section of this site.

PRONTOFTDI_V100.ZIP  (13 MB, Last updated: 2017-09-15)

A Pronto application, to generate and learn remote control data using a FTDI device with MPSSE support, for Windows 10 (64-bit).
More or less identical to the other Pronto applications (that can only be used on older Windows versions due to the hardware being used).
Can be used with USB-to-serial devices from FTDI, which support MPSSE mode. Note that the simple USB-to-serial devices from FTDI -DO NOT- support this mode!
Typically this MPSSE mode is used for JTAG based solutions, so have a look at OpenOCD based devices using the FTDI chip. When a FTDI device is used for JTAG control then this device can typically be used. MPSSE is supported by the following FTDI models: FT2232D, FT2232H, FT4232H and FT232H.

Besides sending and receiving, the application can also generate the data to be send, based on the following:
. Direct code input (Pronto format)
. RC5, RC5x, RC6, RC6a generator
. IRP based generator (using included "makehex" by John Fine). This allows generating code based on some 50 other protocols

All sources are included, and also additional information, like the compiler being used for it (Lazarus and FreePascal).

In my own setup I used an OpenOCD device, with JTAG I/O, connected to the HSDL-1001 device (see "IrDA on parallel port", at the start of this page).
The following connections are made (identical to that as described earlier except that the in/out is from the OpenOCD/FTDI device instead of the parallel port):
HSDL-1001 pin 3: to +5V of OpenOCD/FTDI device
HSDL-1001 pin 4: to TDO (JTAG TD input) of OpenOCD/FTDI device
HSDL-1001 pin 5: to 0V of OpenOCD/FTDI device
HSDL-1001 pin 6: to TDI (JTAG TD output) of OpenOCD/FTDI device and a pulldown resistor (50K..100K) which is connected to 0V
HSDL-1001 pin 8: through a 9 ohm/0.5W resistor to +5V

Note that the OpenOCD/FTDI typically has a VREF or VTARGET connection. This would be the reference voltage being used for the JTAG (TDI and TDO) lines. You must provide a voltage to this (in my case I use the 5V of the USB itself).

The reason for using the MPSSE mode, instead of using the 'bit-bang' mode that is also possible with the more simple FTDI devices, is the following:
. The number of bytes for a single transfer are very limited for 'bit-bang' mode (between transfers unacceptabel delays are introduded - this might be specific to Windows since 'bit-bang' mode is used on other platforms - see LIRC project)
. The number of bytes without introducing a delay for 'bit-bang' mode is less than 100 bytes.
. Each 'bit' in the 'bit-bang' mode requires one byte. This limits the output to about 100 'bits' (== 50 on/off cycles)
. With MPSSE mode very accurate timings are possible and a large single transfer (without introducing additional delays) is about 60000 bytes.
. For MPSSE each byte represents 8 bits at the output. A single 60K transfer can therefore have 480000 bits.
. Up to about a frequency of 500000 Hz no apparent delay between bytes is observed. Sampling with 400000 Hz is therefore not a problem.

PRONTO.PDF  (105 kb, Last updated: 2002-07-27)

This document describes the communication involved with the Pronto. Includes information on the 0000, 0100, 5000 (RC5), 5001 (RC5X), 6000 (RC6 mode 0) and 6001 (RC6 mode 6A) Pronto formats.

PRONTOIRFORMATS.PDF  (373 kb, red. 0, 2003-03-23)

An excellent, in depth, document about the different Pronto IR formats (eg. 5000, 5001, 6000, 7000, 8000, 900x) from Evgueni Oulianov (eoulianov@hotbox.ru).

IR_COM  (390 kb, V1.00, Last updated: 2007-08-05)

Application which uses the standard serial port line (TxD) to generate infrared command.
Input formats: learned format and short form formats.
Can generate RC5, RC5x, RC6 and RC6A codes interanally.
Includes documentation and source code.

GENERATERCX  (323 kb, V0.00, Last updated: 2005-09-04)

Command line application which converts Pronto formats.
Uses either command line passed parameters or the clipboard.
Input formats: short form 1 and short form 2 formats (eg. 'RC5 0 0', '5000 0000 0001 0000 0000').
Output formats: short form 1, short form 2, bit stream, encoded bit stream, learned code ('0000').
Optional parameters for full control of generated data (frequency, delay, toggle, repeat).
Includes documentation and source code.
Note: The Delphi source code provides the full conversion, the C source code only partial (e.g. only 5000/5001/6000/6001 conversions).

PRONTODLL  (984 kb, V1.00, Last updated: 2003-05-08)

Some of the Pronto Components (see PRONTOCOMP) ported to DLL's so they can be used with other programming languages.
Contains ProntoCommunication.dll for communicating with the Pronto.
Contains ProntoRc.dll for generating RC5/5X/6/6A/Learned Pronto data.
Contains ProntoDirect.dll/ProntoSetOutput.dll/ProntoGetInput.dll to be used with alternative hardware (NOT for XP/2000!!).
Examples and executables included for using these DLL's under Delphi and Visual Basic 4.

PRONTOCOMP  (438 kb, V0.01, Last updated: 2002-09-17)

Pronto components (package) for Delphi (>=5).
Pre-release, including documentation and source code.
Can also be used with above infrared hardware.
The following components are available:.
   ProntoCommunication , ProntoRC, ProntoRC5, ProntoRC5x, ProntoRC6, ProntoRC6A, ProntoGetInput, ProntoSetOutput, ProntoDirect.
Components also active at design time! Communicate with the Pronto without writing any code....

PRONTO  (1616 kb, V3.05, Last updated: 2007-02-24)

Includes full source code (Delphi and C for the PFDIRECTIO service).
>V3.03: Can be called from command line (data is filled in, send and application terminates).
>=V3.05: Also supports XP using included service (please read README.TXT on the 'issues' with this).
Basically the same as PRONTOIRDA except that instead of using ProntoEdit/Emulator it can control a Pronto instead.
Control of the hardware does NOT work under Windows XP/2000. Using the conversion DOES work under XP, as well as sending through a Pronto.
Can be used, without controlling any hardware, to convert the Pronto 5000/5001/6000/6001 formats into the learned code format (0000). To do this: place the 5000/5001/6000/6001 code in the 'Pronto format data' window and press the 'Validate above data' button. This will convert it into a learned code format (the 'Generate RCx code' fields will indicate the converted RCx code).
Can control either a Pronto or user selectable hardware device (for example the IrDA device on the parallel port).
Includes support programs to control hardware directly.
Does NOT intercept serial communication (use PRONTOIRDA for this).
For documentation on communicating with the Pronto see PRONTO.PDF.


PRONTOIRDA  (536 kb, V1.16, Last updated: 2002-06-09)

Includes partial source code (Delphi 5/6 and C).
Works under Windows (<= ME).
Does NOT work under Windows XP/2000.
Full control of the IrDA device on the parallel port.
Recording/Sending/Converting/Loading/Saving data in Pronto format.
Also supports the 'repeat' function of the Pronto learned format (a 'repeat' code is 4 times send).
Use it with the included two utilities MAKEHEX and IRTOOL to generate commands for different kind of devices (Denon/Emerson/Furby/JVC/NEC/Panasonic/RC5/RCA/Sharp/Sony/X10/etc..).
Possible to use it with other tools which generate Pronto learned code data (two utilities already included).
Can work with ProntoEdit (and Emulator) as frontend (ProntoEdit V1.05).
Also works with ProntoEdit V4.0.3 (RU890 mode, emulator of color Pronto's generates runtime error but 'Test IR' does work).
Serial data as send by ProntoEdit and Emulator is intercepted and processed.
Includes generator for RC5, RC5x, RC6 (RC6 mode 0), RC6A (RC6 mode 6A) commands.
Allows direct entry of Pronto format data. You can even input the RC5/5x/6/6A commands Pronto uses: these will be translated into the learned code format.


RC5IRDA  (217 kb, Last updated: 2001-12-08)

Includes source code (Delphi 5).
Works under Windows (<= ME).
Generates RC5 remote control codes (learned code) for the IrDA device on the parallel port.


LPTIRDA  (38 kb, Last updated: 2001-12-02)

Includes source code (TP 6).
Works under DOS.
Includes utilities like: recording, normalizing and sending data through the IrDA device on the parallel port.

RC5PRONTO  (206 kB, Last updated: 2001-11-03)

Includes source code (Delphi 5).
Generates RC5 remote control codes (learned code) for the Pronto.
Can be used when the internal RC5 codes can not be used for some reason (i.e. timing restrictions).

www.majority.nl   Questions? Feedback?    E-mail in Dutch, English or German (preferred order) to m.majoor@majority.nl