-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Soarer's Converter
'XT/AT/PS2/Terminal to USB Converter with NKRO'
The original tools for Mac are Intel 32-bit executable binary files and recent versions of MacOS(>=10.15) doens't support Intel 32-bit anymore. You will have to compile binary files from srouce codes with Xcode yourself or you can find them here.
Connector Breakout board
------------------------------
GND GND
Vcc/+5V VCC
Data PD0
Clock PD1
Keyboard Reset PB7
Reset is needed for some of XT keyboards likes IBM XT Type-1, Zenith Z-150 and Leading Edge. https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-XT-Keyboard-Protocol#keyboard-hard-reset
For Reset Pro Micro users need to use modified version firmware because Pro Micro has no pin for PB7. https://deskthority.net/viewtopic.php?p=187874#p187874
The converter outputs some cryptic diagnostic information when in use - it's especially useful to see what is happening when it starts up.
The hid_listen program (from PJRC) can display this output, which mostly just consists of bytes read from and written to the keyboard when things are working correctly.
Most of the output takes the form of a prefix code, followed by a hex value, followed by a space. For example, 'r4A '.
Prefix Description
r byte read from keyboard
w byte written to keyboard
R read error
W write error
+ HID code output from first translation stage (for key-press)
- HID code output from first translation stage (for key-release)
d HID code output (for key-press) v1.03+
u HID code output (for key-release) v1.03+
Code Error Description
R03 unknown something bad happened!
R04 clock missed one edge of the clock signal, usually because of a short spike
R05 timeout started receiving clock from the board, but didn't receive enough for a full code
R06 start bit read a start bit, but it was incorrect
R07 parity bit failed to correctly read a parity bit
R08 stop bit failed to correctly read a stop bit
W005 timeout timeout while writing a command to the keyboard
W105 timeout timeout while writing the first byte of a 2-byte command
W205 timeout timeout while writing the second byte of a 2-byte command
v1.12 Added workaround for Linux kernel v3.x bug which causes Delete key not to repeat
v1.11 Added support for IBM RT keyboard
Added display of boot mode state by making converter lock LEDs glow dimly.
Added extra error codes to help determine where timeouts occur more precisely.
Prevented debug and rawhid output when keyboard_protocol is not set (i.e. in BIOS mode).
v1.10 Added support for 'almost' PC/XT protocol keyboards, e.g. Leading Edge DC-2014
Added Keyboard Reset output (required by some PC/XT keyboards).
Added five auxiliary key inputs (for extra keys, buttons, or footswitches)
Updated and expanded documentation generally, and added GH and DT Thread Contents pages and History page.
Fixed error LED timeout so it now stays on for 3 seconds after an error instead of flickering.
v1.03 Fixed bug which caused the converter to lose config or reboot after using the scrd tool.
Fixed minor USB errors revealed by using the Command Verifier compliance testing tool.
Added debug print of final output HID codes.
v1.02 Fixed bug which could cause the converter to lock up if a key was pressed at certain times during system boot
v1.01 Fixed bug in jump to bootloader affecting Teensy++
v1.0 Added jump to bootloader function, triggered by a macro or a command line tool
Added scboot tool to jump to bootloader.
Added scinfo tool to display version and memory use.
Added tools built for Linux and Mac OS-X.
Improved reliability of the settings protocol.
Reduced memory use when not using onbreak macros and/or not using layers.
Reduced hex size, allowing use of CPUs with only 16kB of flash.
Added documentation.
v0.997 Added user-definable remaps, macros, layers, selects, media keys, and config tools
v0.996 Fixed 'slow' responding keyboards.
Improved robustness when keys are being pressed before init has completed.
Added alternative layouts for terminal keyboards
v0.995 Fixed missing 122-key mapping (top right numpad key is 'pause').
Simplified the code testing which keyboard type is attached.
v0.994 Added suspend support, with remote wake-up
v0.992 Fixed minor incompatibility with Linux (backslash key not repeating etc.)
v0.99 First public release
my software attempts to track both the rising and falling edges of the clock signal
https://geekhack.org/index.php?topic=17458.msg362823#msg362823
The force command disables the auto-detection of keyboard type. It is only very rarely needed!
force {set1|set2|set3|set2ext}
as of August 28, 2012
Actually, the 'force' command only forces the converter to listen for set 3, it doesn't try to put the keyboard into a set 3 mode. That might be a feature I'll add at some point,
https://geekhack.org/index.php?topic=17458.msg649576#msg649576
https://github.com/tmk/tmk_keyboard/wiki/Logic-Analyzer#soarers-logic-analyer
It fails to receive with R08(stop bit error). This is not the converter's fault at all.
https://geekhack.org/index.php?topic=103648.msg2898418#msg2898418
The keybaord is not compliant to AT protocol due to its weird stop bit(0).
https://geekhack.org/index.php?topic=103648.msg2895781#msg2895781
https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#zenith-z-150-at
People have reported mixed results with this keyboard, which is XT/AT switchable.
Focus FK-2001 may use unusual signaling and Soarer's seems to miss '83' part of its keyboard ID here.
With Soarers it is another story, Like I said I couldn't get it to work, but I know the converters work, I have three of them and none of them work, Here is what I get with HID listen in XT mode
Keyboard ID: 0000
Code Set: 1
Mode: PC/XT
(and I get no inputs)
This is what I get with soarers in at mode
Keyboard ID: 00AB
Code Set: 2 (extended)
Mode: AT/PS2
wED rFA w00 rFA
It recognizes inputs but it has heavy ghosting, even worse than my zenith z150 had with soarers. also, a lot of keys lag or fail to recognize presses, overall over with the soarers I have an inconsistent and unusable keyboard, and using this tmk firmware it works perfectly in both modes.
https://geekhack.org/index.php?topic=103648.msg2994892#msg2994892
Some issues with other converter like BlueCube can be also found.
Initially, the keyboard seemed to work okay. However, if I hit Num Lock or Scroll Lock, the keyboard stops working -- none of the keys registers. I have to disconnect and reconnect the keyboard to get it working again. Sometimes CapsLock causes the keyboard to stop registering as well, but not always.
My adapter and converter are okay because I can connect other AT keyboard with them and they work just fine.
https://deskthority.net/viewtopic.php?t=14690
I've had the same problem with my FK-2001 when using a blue cube adaptor as well.G I'd press caps lock and the keyboard would die. Plugging it into a ps/2 port fixed the problem, so there's that. I think it's just a quirk that all FK-2001s have, and it's not that yours is broken.
https://deskthority.net/viewtopic.php?p=331240#p331240
This post syas Soarer's works well with FK-2001.
I tried using an Adesso active PS/2 to USB converter instead of the blue cube. With the Adesso, I couldn't get the keyboard to register at all.
I found that I had an Orihalcon/Soarer PS/2 to USB converter. This worked! Now, Caps Lock, Num Lock, and Scroll Lock all work. The LEDs light up and I can toggle the lock switches on and off without disconnecting/reconnecting the keyboard. I am typing this on the Focus FK-2001.
https://deskthority.net/viewtopic.php?p=331242#p331242
Something like pull-up resistors may causes Soarer's converter?
Someone said Blue cube even worked.
Are you sure there's not an issue with your Focus board? Mine works fine with the blue cube.
Since my software attempts to track both the rising and falling edges of the clock signal,
https://geekhack.org/index.php?topic=17458.msg362823#msg362823
Description below is my wild guess and sepeculation.
Soarer's converter reads data line at rising edge of clock.
The converter will have to use ISR at falling edge of clock line to support both AT and XT protocol. For AT signal it reads data line just after the interrupt, while it may wait for rising edge of clock and then read for XT signal.
On Geekhack forum arakula reverse-engineered Soarer's firmware and confirmed that it reads on rising edge to handle XT protocol. (While it reads on falling edge for AT protocol probably.)
https://geekhack.org/index.php?topic=17458.msg3189302#msg3189302
Note: In XT protocol data line should be read at falling edge of clock for legitimate implementation, as same as AT protocol.
-
Since version 1.10 of his firmware Soarer has supported the 'reset pin', which is mapped to PB7. Sorarer's converter outputs 500ms low pulse on PB7 on AVR for hard reset.
-
On startup as soft reset pulse the converter(1.12) ouputs low for 200us on clock line and immediately 20ms low on data line. https://web.archive.org/web/20240630222329/https://i.imgur.com/DPI423Eh.jpg
Soarer's converter have been known to work well with IBM XT keyboards.
The converter sees start bit(1), 8 data bits and pseudo stop bit(always 0) when reading data line in the that way.
The converter can assembly and process one-byete data after first 9 bits are received, and then the stop bit is ignored. The stop bit will be ignored as invalid start bit on next receiving frame, perhaps.
This keyboard doesn't work with (v1.10-)v1.12 and does with v1.03.
https://geekhack.org/index.php?topic=62168.msg1490354#msg1490354
The fix at v1.10 for Leading Edge DC-2014 causes this probably. Lynk low part period of clock is a little longer than IBM XT and much longer than Leading Edge at the last clock in particular.
My guess is that v1.10 fix shortened waiting time for rising edge and the converter doesn't wait enough for Lynx slow clock since then. In the result the converter misses rising edge of (the last) clock of Lynk.
https://geekhack.org/index.php?topic=62168.msg1469706#msg1469706
The converter sees start bit(1), 8 data bits simply and will work with straight clones except for keyboards below.
This keyboard signaling is unique and very different from other clones but this is still compatible to XT. Reading this at rising edge doesn't work at all clearly and we have to read at falling edge legitimately.
The keyboard doesn't work with Soarer's converter. This is one of the reasons why I speculate that the converter reads data line at rising edge of clock.
The covnerter had had problem with Leading Edge DC-2014 XT keyboard until it was fixed at v1.10. Period between falling and rising edge on the keyboard is very short and the converter could have missed the rising edge until then.
https://geekhack.org/index.php?topic=17458.msg701240#msg701240
Zenith black label Z-150 doesn't work well even with v1.12 Soarer's converter.
It does work, but drops some keystrokes at a fast speed.
https://deskthority.net/viewtopic.php?p=351086#p351086
My black label Z-150 also has a problem with missing keystrokes
https://deskthority.net/viewtopic.php?p=354327#p354327
it reads keycodes but has lots of errors R05 and R06
https://deskthority.net/viewtopic.php?p=354189#p354189
R05 and R06 indicate timeout error and start bit error.
On the first clock data line changes earlier after rising edge as compared to other keyboards. This may cause the converter to miss start bit and lose sync to the clock, perhaps.
I've noticed that when these problems occur, they are accompanied by the LED on the Teensy being illuminated. When the keyboard is operating okay, the Teensy light is off.
https://deskthority.net/viewtopic.php?p=432280#p432280
There are users who reported Soarer's converter worked with the keyboard.
I use a Zenith with a Soarer's at work on an imac and it works fine. The mac does occasionally "forget" that the keyboard is plugged in, so randomly about once a day I need to re-plug it, but it works.
https://deskthority.net/viewtopic.php?p=458218#p458218
Soarer's doesn't seem to support extended scan code(E0 xx).
https://geekhack.org/index.php?topic=17458.msg2980542#msg2980542
https://geekhack.org/index.php?topic=115479.msg3104765#msg3104765