AVR programmer from an old USB keyboard

in AVR by DP | 2 comments

Steve takes apart an USB keyboard and mods it into an AVR programmer. All it takes is the controller board from a keyboard and an opto-coupler IC.

Most keyboards have at least three indicator LEDs (Num-,  Caps- and Scroll-Lock), which can be controlled from the host using a HID Set_Report request, and thus can be used as general purpose outputs. The inputs are a bit more tricky, since the keyboard uses a scan matrix divided in rows and columns. Most keyboards also do some debouncing and detect rows that are ‘stuck’, which means that we need to simulate the keypress of a single key. If a key has been pressed, the keyboard triggers an interrupt transfer with 8 bytes of data, containing the current state of all keys. The first byte reflects the state of the modifier keys (shift, ctrl, alt, etc.) which I’ll be using as inputs. Additionally, the keys can be polled using a Get_Report request to the control endpoint, but the interrupt transfers need to be handled either way, since my keyboard just locked up after the first keypress when I didn’t handle them first.

Via Embedded Lab.

This entry was posted in AVR and tagged , , .

Comments

  1. Rohit de Sa says:

    Crazy level of cool! :-)

  2. Sleepwalker3 says:

    Very interesting, I’d never thought of a keyboard in this way, but it makes sense. Yep, very cool

Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.