Skip to content

gblargg/adb-usb

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ADB-to-USB adapter using Teensy

This is a simple Mac ADB keyboard to ADB converter using a Teensy/Teensy++ 2.0/Pro Micro (5V 16MHz) AVR development board. The ADB code is based on the t.m.k. Keyboard Firmware Collection, with some timing improvements to make it more robust. It uses PJRC's usb_keyboard driver for USB. I wrote this while debugging some problems with the ADB code and because the TMK collection was too big for me to understand clearly.

This hasn't undergone much testing by others.

See keymap.h to customize layout.

Files

usb_keyboard.c			Keyboard HID implementation
usb_keyboard.h	
usb_keyboard_event.h	Turns key press/release events into report structure
adb.c					ADB protocol driver
adb.h			
adb_usb.h				ADB locking caps lock, misc
keycode.h				
keymap.h				ADB to USB key code conversion
user_keymap.h			Key layouts for extended and compact ADB keyboards. Modify as needed.
main.c					Main loop, ADB polling, suspend handling, boot protocol
config.h				Configuration. Modify as needed.
Makefile				Builds program
README.md				Documentation
CHANGES.md		
LICENSE.txt		

Features

  • Tested on M3501 (Apple Extended Keyboard II) and M0116 (Apple Keyboard).
  • Power key wakes host from sleep/suspend.
  • Adjustable ADB polling rate; comes configured for 12ms (83Hz).

Customization

config.h sets some keyboard options and how ADB is connected.

user_keymap.h to customizes keyboard layout. There are separate layouts for the extended and compact keyboard models.

Construction

  • ADB +5V and GND go to Teensy +5V and GND. ADB Data goes to Teensy PD0 (Pin "3" on the Pro Micro). A 1K resistor must also be connected between ADB Data and +5V. See pinout below.

  • Extract sources and change to their directory. Modify config.h as desired.

  • Connect the Teensy and press its reset button. Execute "make flash". This will build the program and flash it to the Teensy, then run it.

  • Wait a few seconds and try typing on the ADB keyboard.

Pinouts

ADB cable (male):

       ,-.,-.
  +5V / 3  4 \ GND
Data | 1    2 | Power key
      \  ==  /
       ------

To do

  • Add media key support (volume, play/pause, etc.)

-- Shay Green gblargg@gmail.com

About

ADB Keyboard to USB using Teensy

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published