soarers_converter/docs/trouble.html

111 lines
5.5 KiB
HTML

<html>
<head>
<link rel="stylesheet" type="text/css" href="style1.css">
<title>XT/AT/PS2/Terminal to USB Converter with NKRO - Troubleshooting</title>
</head>
<body>
<script type="text/javascript" src="headermenu.js"></script>
<script type="text/javascript">navtabfn("Trouble")</script>
<noscript><div id=jswarn class=\"navtabs\">These docs work best with Javascript enabled!</div></noscript>
<h2><a name="Troubleshooting">Troubleshooting</a></h2>
<hr>
<div id="contentslist">
<ul>
<li><a href="#diag">Diagnostic Output</a></li>
<li><a href="#sctrace">Simple Logic Analyzer</a></li>
<li><a href="#kbid">Keyboard IDs</a></li>
<li><a href="#issues">Known Issues</a></li>
</ul>
</div>
<h3><a name="diag">Diagnostic Output</a></h3>
<hr>
<p>The converter outputs some cryptic diagnostic information when in use -
it's especially useful to see what is happening when it starts up.</p>
<p>The <a href="http://www.pjrc.com/teensy/hid_listen.html">hid_listen</a>
program (from <a href="http://www.pjrc.com/">PJRC</a>) can display this output,
which mostly just consists of bytes read from and written to the keyboard when
things are working correctly.</p>
<p>Most of the output takes the form of a prefix code, followed by a hex value, followed by a space. For example, 'r4A '.</p>
<p>Prefixes used:</p>
<p>
<table>
<tr><th>Prefix</th><th>Description</th></tr>
<tr><td>r</td><td>byte read from keyboard</td></tr>
<tr><td>w</td><td>byte written to keyboard</td></tr>
<tr><td>R</td><td>read error</td></tr>
<tr><td>W</td><td>write error</td></tr>
<tr><td>+</td><td>HID code output from first translation stage (for key-press)</td></tr>
<tr><td>-</td><td>HID code output from first translation stage (for key-release)</td></tr>
<tr><td>d</td><td>HID code output (for key-press) <span class="versioninfo">v1.03+</span></td></tr>
<tr><td>u</td><td>HID code output (for key-release) <span class="versioninfo">v1.03+</span></td></tr>
</table>
</p>
<p>Error codes:</p>
<p>
<table>
<tr><th>Code</th><th>Error</th><th>Description</th></tr>
<tr><td>R03</td><td>unknown</td><td>something bad happened!</td></tr>
<tr><td>R04</td><td>clock</td><td>missed one edge of the clock signal, usually because of a short spike</td></tr>
<tr><td>R05</td><td>timeout</td><td>started receiving clock from the board, but didn't receive enough for a full code</td></tr>
<tr><td>R06</td><td>start bit</td><td>read a start bit, but it was incorrect</td></tr>
<tr><td>R07</td><td>parity bit</td><td>failed to correctly read a parity bit</td></tr>
<tr><td>R08</td><td>stop bit</td><td>failed to correctly read a stop bit</td></tr>
<tr><td>W005</td><td>timeout</td><td>timeout while writing a command to the keyboard</td></tr>
<tr><td>W105</td><td>timeout</td><td>timeout while writing the first byte of a 2-byte command</td></tr>
<tr><td>W205</td><td>timeout</td><td>timeout while writing the second byte of a 2-byte command</td></tr>
</table>
</p>
<p>Usually, if you get error codes right after building your converter, it's because the wiring is incorrect.
One fairly common error is to read the socket pinout diagrams backwards -
they are drawn looking at the <i>front</i> of the socket, not the back.</p>
<h3><a name="sctrace">Simple Logic Analyzer</a></h3>
<hr>
<p>As a side-project, I've posted a <a href="http://deskthority.net/workshop-f7/simple-logic-analyzer-for-teensy-t4567.html">
Simple Logic Analyzer</a> on Deskthority. This can help to diagnose wiring problems or incompatibilities quickly and simply,
whereas before you might've had to resort to trial and error, risking damage to the Teensy in the process.</p>
<h3><a name="kbid">Keyboard IDs</a></h3>
<hr>
<p>
This section is mostly only relevant to terminal keyboards. The converter uses the ID to decide between using scan code set 3 for terminal keyboards, or extended scan code set 2 for 'regular' keyboards.
<p>
By using hid_listen, you can see what ID your keyboard has by looking at the two bytes read back after the get ID command (wF2 rFA).
<p>
The ID and scan code set selected are also printed in a more readable way: <span class="versioninfo">v0.996+</span>
</p>
<pre><code>Keyboard ID: BFBF
Code Set: 3</code></pre>
<p>
Terminal keyboards often have DIP switches on the back panel, or alternatively a pin header on the PCB that you can fit jumpers to, which configure the keyboard's ID code. The ID is a 16-bit number, but commonly fewer than 16 switches/jumpers are fitted meaning it's not possible to select all of the bits. The default value with no jumpers fitted, or with all the DIP switches in the 'open' position, is BFBF.
<p>
If your terminal keyboard is not operating correctly, it might be because the wrong ID is set on the switches/jumpers. The first byte should <b><i>not </i></b>be AB.
<h3><a name="issues">Known Issues</a></h3>
<hr>
<ul>
<li><a href="http://geekhack.org/showwiki.php?title=Island:17458&p=362823&viewfull=1#post362823">Weirdo Monterey International Corp. FKF456K-104 AT keyboard with 3-way A,X,S switch on the back</a>.<br/>
Outputs a very asymmetric clock signal, which is too fast for the converter to track both edges of.<br/>
<b>Update</b>: this should be fixed now, but hasn't been verified. <span class="versioninfo">v1.1+</span><br/><br/>
</li>
<li><a href="http://geekhack.org/showwiki.php?title=Island:17458&p=563473&viewfull=1#post563473">Dell M6300 (BIOS rev A14) and Dell Inspiron 630m</a><br/>
Converter does not work with the BIOS on these machines at boot time. Presuming BIOS defect.
</li>
</ul>
<hr>
</body></html>