Categories

AVR programmer from an old USB keyboard

Posted on Wednesday, December 12th, 2012 in AVR by DP

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 on Wednesday, December 12th, 2012 at 7:00 pm and is filed under AVR. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

2 Responses to “AVR programmer from an old USB keyboard”

  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 Reply

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

Recent Comments