Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Sun to USB keyboard protocol converter
Target MCU is ATMega32u4 but other USB capable AVR will also work.

This converter will work with Sun Type 2-5 Keyboards.

Tested on:
Sun Type 3 Keyboard:

Keymap of Type 3(keymap_sun3.c) were impoted from dastels's repository.

  8Pin mini DIN
     ___ ___
    /  |_|  \
   / 8  7  6 \
  | 5    4  3 |
   \_ 2   1 _/

    Pin mini DIN        MCU
    1   GND             GND
    2   GND             GND
    3   5V
    4   RX/TX(Mouse)
    5   RX              PD3
    6   TX              PD2
    7   GND             GND
    8   5V              VCC

Signal: Asynchronous, Negative logic, 1200baud, No Flow control
Frame format: 1-Start bit, 8-Data bits, No-Parity, 1-Stop bit

    AVR USART engine expects positive logic while Sun keyboard signal is negative.
    To use AVR UART engine you need external inverter in front of RX and TX pin.
    Otherwise you can software serial routine to communicate the keyboard.

This converter uses software method by default, so you don't need any inverter part.  But
it can also be built with 'make HARDWARE_SERIAL=y' to enable hardware serial if there
is an inverter present.  Good results have been obtained using a 74LS04 and hardware serial.

Commands From System To Keyboard
    0x01 Reset
            Keyboard responds with following byte sequence:
            Success: 0xFF 0x04 0x7F
            Fail:    0x7E 0x01 0x7F
    0x02 Bell On
    0x03 Bell Off
    0x0A Click On
    0x0B Click Off
    0x0E LED
            followed by LED status byte:
            bit: 3       2       1       0
            LED: CapsLk  ScrLk   Compose NumLk
    0x0F Layout
            Keyboard responds with 'Layout Response' 0xFE 0xXX

Commands From Keyboard To System
    0x7F Idle
            means no keys pressed.
    0xFE Layout Response
    0xFF Reset Response(followed by 0x04)

Build Firmware
Just use 'make'
    $ cd sun_usb
    $ make
Then, load the binary to MCU with your favorite programmer.

Sun commands
You can send Sun protocol commands with TMK `Magic` key combo. By default `Magic` key is `LShift` + `RShift`, `LAlt` + `RAlt' or `LMeta` + `RMeta`.

Following Sun specific commands are available. For example, to send 'Bell On' you can press `LShift` + `RShift` + `Up` keys simultaneously.

----- Sun converter Help -----
Up:     Bell On
Down:   Bell Off
Left:   Click On
Right:  Click Off
PgUp:   LED all On
PgDown: LED all On
Insert: Layout
Delete: Reset
You can’t perform that action at this time.