Skip to content

Soarer's Converter

hasu@tmk edited this page Nov 24, 2024 · 21 revisions

Soarer's Converter

Discussion threads

'XT/AT/PS2/Terminal to USB Converter with NKRO'

64-bit Tools for MacOS

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.

Wiring

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

Diagnostic Output

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+

Error codes

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

Release History

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

MEMO

Code Behaviours

my software attempts to track both the rising and falling edges of the clock signal

https://geekhack.org/index.php?topic=17458.msg362823#msg362823

force command

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

Debug

Soarer's Logic Analyzer

https://github.com/tmk/tmk_keyboard/wiki/Logic-Analyzer#soarers-logic-analyer

Quirks

Zenith Z-150 AT(beige label)

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

Focus FK-2001

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.

https://www.reddit.com/r/MechanicalKeyboards/comments/4w2j71/help_getting_focus_fk2001_keyboard_to_work/d63jf74/?utm_source=reddit&utm_medium=web2x&context=3

Soarer's converter with XT protocol

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.

Reset

IBM XT(Two start bits)

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.

Lynk 122-key Terminal

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

Clones(One start bit)

The converter sees start bit(1), 8 data bits simply and will work with straight clones except for keyboards below.

Microtech Brazilian XT

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.

https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-XT-Keyboard-Protocol#microtech-made-in-brazil

Leading Edge DC-2014

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 Z-150 XT Black label

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.

https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-XT-Keyboard-Protocol#zenith-z-150-xtblack-label

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

Extended XT scan code

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

Clone this wiki locally