<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../site.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Remote Control</title>
<link rel="stylesheet" type="text/css" href="/site.css" />
<style type="text/css">
table#reference
{
	border:			1px solid grey;
	border-collapse:	collapse;

	font-family:		sans-serif;
	font-size:		10pt;
}

table#reference th,
table#reference td
{
	border:			1px solid grey;
	padding-left:		1ex;
	padding-right:		1ex;
	padding-top:		2pt;
	padding-bottom:		2pt;
}

table#reference ul
{
	list-style-type:	none;
	padding:		0 0 0 0;
}
</style>
</head>
<body>

<div class="box">

<h1>Remote Control</h1>

<h2>Keyspan Digital Media Remote (DMR)</h2>

<div class="sect"><a href="remedit.html"><img src="image/remedit.gif"></img></a>

<h3>REM File Editor</h3>

<p>Use this JavaScript <a href="remedit.html">REM Editor</a> to create
or to modify remote definition files for the Keyspan DMR mapper.  It
doesn't eliminate the need to know a little about how remotes work,
but it makes the job far less tedious.</p>

</div>
<div class="sect"><a href="lirc.html"><img src="image/lirc.gif"></img></a>

<h3>LIRC to REM Converter</h3>

<p>Use this JavaScript <a href="lirc.html">LIRC Converter</a> to turn
Linux Infrared Remote Control (<a href="http://www.lirc.org/">LIRC</a>)
remote definition files into Keyspan DMR remote definition files.</p>

</div>
<div class="sect"><img src="image/dmrkext.gif"></img>

<h3>DMR Dump Application</h3>

<p>Download: <a href="dmrdump/dmrdump.bz2">binary</a> <a href="dmrdump/DMR.tar.bz2">source</a></p>

<p>Do you want to find out which codes your remote control sends?
Stop Keyspan's mapper and start this program in a terminal window.
This program watches for IR codes and reports what it
sees. <strong>Unfortunately, this does not work with UIA-10
receivers.</strong></p>

<p>After downloading the binary, unzip it and mark it executable as
follows.

<pre><code class="terminal">$ ls -l
total 56
-rw-r--r--  1 dan  dan  25952 23 Aug 08:14 dmrdump.bz2

$ bunzip2 dmrdump.bz2 

$ ls -l
total 144
-rw-r--r--  1 dan  dan  73192 23 Aug 08:14 dmrdump

$ chmod +x dmrdump 

$ ls -l
total 144
-rwxr-xr-x  1 dan  dan  73192 23 Aug 08:14 dmrdump</code></pre></p>

<p>That needs to be done only once.  Then, before running dmrdump,
make sure the Keyspan driver is not loaded, as follows.

<pre><code class="terminal">$ sudo kextunload /System/Library/Extensions/DMRantiClassic.kext 
Password:
kextunload: unload kext /System/Library/Extensions/DMRantiClassic.kext succeeded

$ ./dmrdump 
PPM q=346 h=7,7 b0=3,2 b1=2,4 bits=15 val(lsb)=5038 val(msb)=0e05
PPM q=346 h=7,7 b0=3,2 b1=2,4 bits=15 val(lsb)=5038 val(msb)=0e05
PPM q=346 h=7,7 b0=3,2 b1=2,4 bits=15 val(lsb)=3038 val(msb)=0e06</code></pre></p>

<p>By default, dmrdump uses a sample time of 66 µs, which is
short enough to make a decent guess at the bit time for many remote
control protocols.  If you know the bit time of the remote you are
using, providing it to dmrdump will enable more reliable decoding.
For example, to decode signals from a JVC remote with a bit time of
527 µs,

<pre><code class="terminal">$ ./dmrdump -q 527</code></pre></p>

<h2>Reference Material</h2>

<p>I find this information useful for development and testing.  The
&#34;OFA Codes&#34; are setup codes for a One For All URC-8017
universal remote control.</p>

<table id="reference">
<tr>
  <th>Protocol</th>
  <th>Carrier</th>
  <th>Quantum</th>
  <th>Coding</th>
  <th>Data Sheets</th>
  <th>Other Info</th>
  <th>OFA Codes</th>
</tr>
<tr>
  <td>IR 60</td>
  <td>38 kHz</td>
  <td></td>
  <td>BPM [A]</td>
  <td><a href="http://www.datasheetarchive.com/search.php?search=SDA2008%26sType=part%26ExactDS=on">Siemens SDA2008</a></td>
  <td></td>
  <td></td>
</tr>
<tr>
  <td>ITT</td>
  <td>none</td>
  <td></td>
  <td>PPM</td>
  <td></td>
  <td><a href="http://www.xs4all.nl/~sbp/knowledge/ir/ir.htm">San Bergmans</a></td>
  <td></td>
</tr>
<tr>
  <td>JVC</td>
  <td>38 kHz</td>
  <td>527 µs</td>
  <td>PPM</td>
  <td><a href="http://www.google.com/search?hl=en%26lr=%26q=victor+industrial+standard+%22VIS+H+1401%22%26btnG=Search">VIS H 1401</a></td>
  <td></td>
  <td>DVD 0558</td>
</tr>
<tr>
  <td>Kaseikyo</td>
  <td>37 kHz</td>
  <td></td>
  <td>PPM</td>
  <td></td>
  <td><ul>
      <li><a href="http://john.fine.home.comcast.net/ir/DecodeIr.html">John S. Fine</a></li>
      <li><a href="http://www.usa.denon.com/catalog/">Denon Codes</a></li>
      </ul></td>
  <td>TV 0250</td>
</tr>
<tr>
  <td>Mitsubishi 50560</td>
  <td>38 kHz</td>
  <td>520 µs</td>
  <td>PPM</td>
  <td><a href="http://www.datasheetarchive.com/search.php?search=SC50560%26sType=part%26ExactDS=on">Silan SC50560</a></td>
  <td></td>
  <td>TV 0624</td>
</tr>
<tr>
  <td>NEC</td>
  <td>38 kHz</td>
  <td>563 µs</td>
  <td>PPM</td>
  <td><ul>
      <li><a href="http://www.datasheetarchive.com/search.php?search=UPD6121%26sType=part%26ExactDS=on">NEC UPD6121</a></li>
      <li><a href="http://www.yamaha.com/yec/customer/remotes/remote_IR.htm">Yamaha Codes</a></li>
      </ul></td>
  <td></td>
  <td><ul>
      <li>CD 1023</li>
      <li>SAT 1109</li>
      </ul></td>
</tr>
<tr>
  <td>NRC17</td>
  <td>38 kHz</td>
  <td>500 µs</td>
  <td>BPM [A]</td>
  <td></td>
  <td><a href="http://www.xs4all.nl/~sbp/knowledge/ir/ir.htm">San Bergmans</a></td>
  <td></td>
</tr>
<tr>
  <td>RC-5</td>
  <td>36 kHz</td>
  <td>889 µs</td>
  <td>BPM [B]</td>
  <td><a href="http://www.datasheetarchive.com/search.php?search=SAA3010%26sType=part%26ExactDS=on">Philips SAA3010</a></td>
  <td></td>
  <td>AMP 1269</td>
</tr>
<tr>
  <td>RC-6</td>
  <td>36 kHz</td>
  <td>444 µs</td>
  <td>BPM [A]</td>
  <td></td>
  <td><a href="http://www.xs4all.nl/~sbp/knowledge/ir/ir.htm">San Bergmans</a></td>
  <td>DVD 0539</td>
</tr>
<tr>
  <td>RC-MM</td>
  <td>36 kHz</td>
  <td></td>
  <td>PPM</td>
  <td></td>
  <td><a href="http://www.xs4all.nl/~sbp/knowledge/ir/ir.htm">San Bergmans</a></td>
  <td></td>
</tr>
<tr>
  <td>RECS 80</td>
  <td>38 kHz</td>
  <td>2532 µs</td>
  <td>PPM</td>
  <td><a href="http://www.datasheetarchive.com/search.php?search=SAA3004%26sType=part%26ExactDS=on">Philips SAA3004</a></td>
  <td></td>
  <td></td>
</tr>
<tr>
  <td>Remotec</td>
  <td>38 kHz</td>
  <td></td>
  <td>PPM</td>
  <td></td>
  <td><a href="http://www.google.com/search?hl=en%26lr=%26q=celadon_trx_manual_2.1.pdf+remotec%26btnG=Search">Celadon TRX</a></td>
  <td></td>
</tr>
<tr>
  <td>Sanyo 7461</td>
  <td>38 kHz</td>
  <td>563 µs</td>
  <td>PPM</td>
  <td><a href="http://www.datasheetarchive.com/search.php?search=LC7461M%26sType=part%26ExactDS=on">Sanyo LC7461M</a></td>
  <td></td>
  <td>CD 0124</td>
</tr>
<tr>
  <td>Sharp</td>
  <td>38 kHz</td>
  <td>350 µs</td>
  <td>PPM</td>
  <td></td>
  <td><ul>
      <li><a href="http://john.fine.home.comcast.net/ir/DecodeIr.html">John S. Fine</a></li>
      <li><a href="http://www.usa.denon.com/catalog/">Denon Codes</a></li>
      </ul></td>
  <td>AMP 0186</td>
</tr>
<tr>
  <td>SIRC</td>
  <td>40 kHz</td>
  <td>600 µs</td>
  <td>PWM [A]</td>
  <td><a href="http://www.freepatentsonline.com/image-5319487-1.html">US Patent 5319487</a></td>
  <td><ul>
      <li><a href="http://www.xs4all.nl/~sbp/knowledge/ir/ir.htm">San Bergmans</a></li>
      <li><a href="http://www.hifi-remote.com/sony/sony_home.htm">Sony Codes</a></li>
      </ul></td>
  <td><ul>
      <li>CD 0490</li>
      <li>AMP 0689</li>
      <li>DVD 0533</li>
      </ul></td>
</tr>
<tr>
  <td>Toshiba 9148</td>
  <td>38 kHz</td>
  <td>422 µs</td>
  <td>PWM [I]</td>
  <td><a href="http://www.datasheetarchive.com/search.php?search=TC9148P%26sType=part%26ExactDS=on">Toshiba TC9148P</a></td>
  <td></td>
  <td></td>
</tr>
<tr>
  <td>Toshiba 9243</td>
  <td>38 kHz</td>
  <td>563 µs</td>
  <td>PPM</td>
  <td><a href="http://www.datasheetarchive.com/search.php?search=TC9243%26sType=part%26ExactDS=on">Toshiba TC9243</a></td>
  <td></td>
  <td>TV 0060</td>
</tr>
<tr>
  <td>X-Sat</td>
  <td>38 kHz</td>
  <td>526 µs</td>
  <td>PPM</td>
  <td></td>
  <td><a href="http://www.xs4all.nl/~sbp/knowledge/ir/ir.htm">San Bergmans</a></td>
  <td></td>
</tr>
</table>

<table>
<tr>
  <td>BPM [A]</td>
  <td>bipolar modulation, value taken from first half of cycle</td>
</tr>
<tr>
  <td>BPM [B]</td>
  <td>bipolar modulation, value taken from second half of cycle</td>
</tr>
<tr>
  <td>PPM</td>
  <td>pulse position modulation (a.k.a. pulse distance modulation)</td>
</tr>
<tr>
  <td>PWM [A]</td>
  <td>pulse width modulation, cycles of varying length</td>
</tr>
<tr>
  <td>PWM [I]</td>
  <td>pulse width modulation, cycles of constant length</td>
</tr>
</table>

</div><!-- box -->
</div>
</body>
</html>
