Glossary

Here we explain and define some of the used terms. In most cases (but not
all!), this correspond to established usage in the Internet, e.g. in the JP1
forum. It should also be pointed out that in some cases, in particular when
comparing programs by others to my own, the assessment should be considered as
subjective.

Substantial program/program packages are written capitalized, (not
uppercase), in some case in CamelCase, and in Roman typeface, like a
proper noun. "Small" programs are written as
code. For example, we write "Lirc", not "LIRC", or
lirc; and irsend.

AMX Beacon

A daemon program implemented in some networked components. It is
used for periodically announce their existence, and some of their
properties.

AnalysIR

Commercial infrared analyzer and decoder program for Windows.
By its makers characterized as "... the leading tool available for analysing, decoding and
reverse engineering infrared remote control protocols". Web site.

Analyzer

The part of the ExchangeIR library that
analyzes a raw IR Signal. If successful,
it returns an IRP form, together with
parameter values. The returned IRP form may or may not correspond to a
known protocol.

Arduino

A single-board micro-controller, based upon a 8-bit Atmel AVR
micro-controller, or a 32-bit Atmel ARM. Official site. Can be used for
implementing sending and/or capturing of infrared signals with
additional hardware attached to its IO-pins.

IR signal format. Not to be confused with the ccf file format of the Pronto Classic
remotes! Often called "hex", "Pronto", or "Pronto hex". Consist of a
sequence of four-digit hexadecimal numbers. For
the interpretation, see the Appendix. It is a
very popular format, e.g. for textual the exchange in Internet forums.

ccf file format

Not to be confused with the CCF text signal format!
Configuration file format for the Pronto Classic. File extension is
ccf. Can be edited by the ProntoEdit
program. Has been completely reverse engineered, and the open-source program Tonto is able both to interactively edit them, as well as
non-interactively through an API. IrScrutinizer
can import and export ccf files, using the said API.

Cleansed signal

Given a captured IR sequence, using the repeat finder, all occurrences of the repeat sequence but
one are removed, and numerically "close" duration values are lumped into one single value.

CML

Proprietary binary format by RTI for their IR database files.
Has been reverse engineered; IrScrutinizer can import it.
One well known CML file is the
Mega List Database,
which is a huge database of IR codes maintaned by Glackowitz from the
Remote Central Forums.

Consumer IR deals with IR control of various devices. Wikipedia
article. Not to be confused with IRDA. Typically uses wave lengths of 930-950nm.

CVS (comma separated values)

Primitive data base format, one record consisting of one line, the entries
separated from one another by a comma (,) (or sometimes another
character). One possible file extension csv. Can be read
directly by spreadsheet programs.

Decode (noun)

Given an IrSequence or an IrSignal, a decode is a protocol,
together with parameter values, that are compatible with the given
IrSequence/IrSignal, i.e. could have generated the original signal. Note that the
determination is governed by numerical uncertainties, so that small deviations
from the perfect signal are accepted. Furthermore, one signal/sequence may have
none, one, or more valid decodes.

An integrated circuit that receives a modulated IR signal and recovers the original
signal with the modulation removed. The modulation frequency of the signal
must "match" the frequency of the demodulator. Receiver chips are typically marked TSMPXXYY,
where XX (two or three digits) denotes a vendor specific type, and YY
the modulation frequency in kHz.
(Data sheet for a typical
product. Not suited for capturing of unknown
signals, since it removes the modulation frequency without identifying it.

"EventGhost is an advanced, easy to use and extensible automation
tool for MS Windows. It can use different input devices like infrared
or wireless remote controls to trigger macros, that on their part
control a computer and its attached hardware." Licensed under GPL2.Home page for Eventghost.

An embedded "program" for the rendering and transmission of one
or several protocols. One executor can manage several protocols; also,
for one protocol there may be several alternative executors. An executer has its own parametrization,
more-or-less similar to the parametrization of the protocol. Used in JP1 Remotes
and RemoteMaster.

The current version of the GNU
General Public License. Used by my software projects (with some
exceptions), and many so-called open-source software projects. The basic idea
is the licensee is allowed to use, enhance etc. the software (also in a
commerical product and context), but is not allowed to turn it, or a derived product, into non-free software.

IR (Infrared light)

According to Wikipedia,
infrared light are light (electromagnetic radiation) of wavelength between
700nm and 1mm. For control of consumer electronics (CIR), according to
Wikipedia, wavelengths
around 870 nm and 930-950 nm (latter preferred), in comparison to IrDA
(850-900nm) are used. Almost always generated by an IR LED.

IrDA

IrDA is a
method for data exchange between PCs and portable devices. It is no longer to
be considered as state-or-the-art, and has been almost completely replaced by
Bluetooth and WiFi. Many devices with IrDA hardware is still around, but it is,
with few exceptions, unsuitable for consumer IR.

IR LED (light emitting diode)

Semiconductor component capable of sending light with the desired IR
wavelength. A typical representative is the Osram
SFH 4512.

(IR) Protocol

An algorithm for turning a number of parameters into an IR signal. It defines the necessary parameters and their
allowed values. In almost all protocols, the most frequently changing parameter
is called "F" (function number). Almost all protocols have a "device number"
called "D". Many protocols have a "sub-device" number, called "S". A few
protocols have a toggle parameter, in general called "T",
and being persistent. A protocol may also
have other parameters, with "arbitrary" names.

IrMaster

A program for generating, analyzing, importing, and exporting of infrared
signals. Now discontinued, replaced by IrScrutinizer.

IrpMaster

A program and API library for renderingIRP protocols version 2. See its documentation. Comes with a powerful (but
slightly hard to use) command line interface. For GUI usage, see IrMaster and IrScrutinizer. Note that the word "IrpMaster"
sometimes refers to the command line program, sometimes to the rendering
engine contained in IrMaster and IrScrutinizer.

Program that accompanies the IrWidget, also by Kevin
Timmerman. Originally a support to the IrWidget, was further developed (in
particular through Graham Dixon) to a fairly general and capable IR analyzing
program, supporting also DecodeIR and ExchangeIR. The program was a major inspiration source
for IrScrutinizer.

IrScrutinizer

IrScrutinizer is a powerful program for capturing, generating, analyzing,
importing, and exporting of infrared signals.

IR Sequence

Sequence of time durations, in general in expressed microseconds, together with a modulation frequency. The even numbered entries
normally denote times when the IR light is on (modulated), called "flashes", the other denote off-periods "gaps".

start sequence (or "intro", or
"beginning sequence"), sent exactly once at the beginning of the transmission
of the IR signal,

repeat sequence, sent "while the
button is held down", i.e. zero or more times during the transmission
of the IR signal (although some protocols may require at least one copy to be transmitted),

ending sequence, sent exactly once at
the end of the transmission of the IR signal, "when the button has been
released". Only present in a few protocols.

Any of these can be empty, but not both the intro and the repeat. A
non-empty ending sequence is only meaningful with a non-empty repeat.

IrToy

An "open hardware" project by
Dangerous Prototypes, see the product
page. Consists of a microprocessor PIC18F2550, a demodulating IR-receiver,
a non-demodulating IR-receiver, an IR-LED, and a USB-connector. Thus, is usable
both for learning, including frequency measurements, receiving demodulated
R-signals, and sending IR signals. Supported by IrScrutinizer.

IrTrans

A series of IR products from the firm
with the same name. IrScrutinizer and IrMaster supports the Ethernet models
(preferrably with the "IR data base"), for sending only.

IrWidget

An "open hardeware" project by Kevin Timmerman. Project page. That page
presents many different versions, but the most spread version
(commercially available by Tommy Tyler) consists of
a micro processor PIC12F629, a non-demodulating sensor (QSE15x), and a USB serial
FTDI interface. Supported by Kevin's IrScope, as well as
IrScrutinizer.

Java Native Interface (JNI)

A technique for having a Java program calling a native shared library (DLL
in Windows, "Shared object" (.so) in other operating systems). See
the Wikipedia article.

Customer remotes manufactured by Universal Electronics Inc., manufactured by many different
names, like One for all etc. Has been reverse engineered by the JP1 community and
can be programmed through a connector, called (after the PCB print).
The main tool for this is RemoteMaster.

JSON

A standard for using human readable text to transfer structured
data, as an alternative to XML. See the Wikipedia article.

Lirc

An open source project for sending and receiving IR signals from Linux. Official web site. First release in May
1996, current version is 0.9.4(pre1), released in January 2016. IrScrutinizer supports
sending through a LIRC server, patched with the CCF patch, and can also import and export files in lircd.conf format.

Lircd

The main daemon of the Lirc project. Accepts
commands on a Unix domain socket, as well as on a TCP socket, by
default 8765. Accepts commands to send IR signals in Remote/Command format only. For a
complete list or commands implemented, see the man page of
irsend, a progam that implements a simple client for
the Lircd server daemon.

lircd.conf

The main Lirc configuration file; a data base of remotes and its contained commands.
Typically residing in /etc/lirc/lircd.conf. Also used to denote the file format.
The files in the Lirc data base are in this format. Although its syntax and semantics
is documentated, should not be
considered a viable exchange format. Can be imported by IrScrutinizer — since it contains a substantial abount
of Lircd, translated to Java.

MakeHex

A predecessor to IrpMaster. Adheres to an earlier version ("Version 1") of the IRP Notation. For the original C++ program by John Fine, neither a GUI nor a command line
interface are present; the parameters are given to the program by editing the
data base files. A Java translation (by myself) exists, which has a command line interface, available
here.

During the "on" periods, the IR light is not just constantly on, but
"flashed" on and off at a frequency called the modulation frequency, typically
between 36kHz to 40kHz, in some cases higher (up to 56kHz), or much higher
(455kHz, Bang & Olufsen equipment). This reduces noise sensitivity and
power consumption, and also allows higher currents through the IR LED (that
thus does not have to be able to survive the high current continuously). Also
see Duty cycle.

(Non-demodulating) IR receiver

IR receiver that outputs the received IR signal essentially as received,
i.e. without removing a modulation.
Preferred sensor component
is a chip with pre-amplifier like TSMP58000,
at least for "moderate" modulation frequencies (< 60kHz).

An Ir Signal given as a protocol and a parameter assignment to its
parameters. Of course, a renderer may compute the
numerical IR Sequences, but these are considered secondary, it is
defined by its protocol and parameters values.

PCF

IR signal format, not to be confused with the pcf file
format of the Pronto NG remotes! This is a proprietary and encrypted form of IR signals. As far as I am aware, it is presently not known how to decode this representation.

pcf file format

Like the xcf format, this is a ZIP
file containing an XML file with the real payload, and a
number of icon files. Unfortunately, the enclosed IR signals are in the PCF format, thus possible to decrypt only by the ProntoEditNG program.

Persistent variable

A persistent variable in an IR protocol may, but
need not, be given a value before generating. If not,
it retains its value from previous invocation, or, for the first invocation,
has a default value.

Pronto Classic

Legendary Family of advanced touch-screen remote controls. Manufactured by Philips between 1998 and 2004. Consists of the models TS1000,
TSU2000,
TSU6000,
RC5000,
RC5000i,
RC5200,
RC9200,
RU890,
RU940,
RU970,
USR5,
RAV2K,
RAV2KZ1. Configurable/programmable by a GUI program "ProntoEdit", as well as
the open-source program Tonto.

ProntoEdit

Windows program for programming the Pronto remotes. Exists in different
versions for different Pronto series. From its owner Philips now discontinued,
but available for download at RemoteCentral.

Pronto frequency code

The second number in the CCF representation. For f in Hertz, this is the
four-digit hexadecimal number given as 1000000/(f*0.241246). It can be
conveniently computed by the Time/Frequency Calculator in IrScrutinizer,
available under the Tools menu.

Pronto NG (New Generaton)

Later generation of Pronto touch screen programmable remotes. Uses the pcf format as their configurations. Can be read by ProntoEditNG.

Data base file for RemoteMaster. Despite the name,
it does not descibe protocols in our sense, but rather executors
their properties and parametrization.

properties (of an interactive program)

The part of the program's state saved between sessions for each user; saved
to disk.

Raw IR sequence/signal

A raw Ir Sequence is a sequence of (in general) measured on-off
durations. It may or may not have one or many decodes, but
these are considered to be secondary; its is defined by its numeric
time durations. Often written with signs: a "+" indicates a flash, a "-" indicates a gap.

Configuration file for RemoteMaster, describing the configuration
of a (universal) remote for a particular device. Contains parametrized commands, unfortunatelly not
in the protocol/parameter form, but parametrized by an executor
and its parameters. In some cases, IrScrutinizer can import these files.

scrutinize

"To examine in detail with careful or critical attention."

sendir (Global Caché) format

Text format used by Global Caché devices for expressing an IR signal,
together with some additional information (number of sends, transmitter). IrScrutinizer can translate to and from this format.

Like CSV but using a tab character (ASCII character
9). File extension .tsv, or other.

Toggle

Persistent variable in an IrProtocol, in general alternating between 0 and 1, between
different invocations. I.e., if the first invocation has the toggle value 0,
all even invocations will have the value 1 of the toggle, all even the value 0,
independent of the number of repeat sequences. Also see protocol parameters.

Some IR senders have more than one sending channel, called
transmitter, allowing for example to control different equipment
independently, even if they are using the same commands. These are
called transmitters. Note that by definition, every IR sender has at
least one transmitter, but only in the case of multiple transmitters,
a selection is meaningful.

UEI learned format

Proprietary internal format for a single IR signal from Universal Electronics Inc.
By convention formatted as a sequence of two-digit hexadecimal numbers.
Has been reverse engineered in ExchangeIR, thus supported by IrScrutinizer.

wave file format

An IR sequence rendered with halfed modulation frequency, as a sequences of
equdistant samples (in general with sample frequency 44.1kHz or 48kHz)
considered as an audio signal. It is supposed to be "playbacked" through an
audio system connected to a pair of IR LEDs connected in anti-parallel, which
will again double the carrier frequency. IrScrutinizer supports both the
generation of wave files, as well as its import and analysis.

WinLirc

According to its its web
site, it "...is the Windows equivalent of LIRC". It is not a port of LIRC, nor does it share
any code with LIRC. Appears currently not to be maintained (early 2017).
Statements on Lirc in these pages are not necessarily true for WinLirc.

xcf configuration file

Configuration file format for the Pronto
Professional line of remotes. Consists of a ZIP file
containing one configuration file in XML-format, as well as a number of
supplementary icon images. The XML file is very easy to understand (for programmers!), and
can contain IR signals in different formats, like CCF format
(usable!) and PCF format (encrypted, thus not usable).

XML

Here, a data base file in certain text file format.

XML Schema

XML Schema (also called XSD, for "Xml Schema Language") is an XML language
for describing the syntax of XML documents. See the Wikipedia article.

XSLT (Extensible Stylesheet Language Transformations)

XSLT is an XML language for transforming XML documents into other XML
documents, HTML-pages, or plain text. See the Wikipedia article. The programs
here use only XSLT version 1.0.

Appendix. Semantics of the Pronto HEX (CCF) format.

Note

There are a few very old guides to the format circulating on the internet.
These were written in the previous century, as the subject was not very well understood.
Although likely very valuable at the time they were written, however, now they
are basicall completely unsuitable. Please do not read, and in particular, do not recommend to others. This appendix
contains all needed to know — at least in 2016.

An IR signal in Pronto CCF form consists of a number of 4-digit
hexadecimal numbers. For example:

The first number, here 0000, denotes the type of the signal. 0000
denotes a raw IR signal with modulation,
while 0100 denotes a non-modulated raw IR signal. There are also a
small number of other allowed values, denoting signals in protocol/parameter
form, notably 5000 for RC5-protocols, 6000 for RC6-protocols, and 900A
for NEC1-protocols.

The second number, here 006C, denotes a frequency code. For the
frequency f in Hertz,
this is the number 1000000/(f*0.241246) expressed as a
four-digit hexadecimal
number. In the example, 006C corresponds to 1000000/(0x006c *
0.241246) = 38381 Hertz. (It can be
conveniently computed by the Time/Frequency Calculator in IrScrutinizer,
available under the Tools menu.)

The third and the forth number denote the number of pairs
(= twice the number of durations)
in the start- and the repeat sequence respectively. In the
example, there are 0x0022 = 34 starting pairs, and 2 repeat pairs.

Next the start- and the repeat-sequences follow; their length being
given by the third and the forth number, as per above. The
numbers therein are all time durations, the ones with odd numbers
on-periods, the other ones off-periods. These are all expressed as
multiples of the period time; the inverse value of the
frequency given through the second number. For this reason, "frequency"
must be a sensible number also for the non-modulated case, denoted by
the first number being 0100. In the example,
the fifth number 0x015B denotes an on-period of
0x015B*periodtime = 347/f = 347/38381 = 0.009041 seconds.

In particular, all sequences start with an on-period and end with
an off-period.

In the Pronto representation, there is no way to express an ending sequence.