This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
hidkey_gpio [2012/11/27 22:07] steve_m [Hardware] |
hidkey_gpio [2013/02/27 01:10] steve_m [Results] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== AVR Programmer built from a USB Keyboard ====== | ====== AVR Programmer built from a USB Keyboard ====== | ||
- | Recently, my old keyboard became louder and louder while typing, so I decided to buy a new one. But what to do with the old one? Ever since I saw the [[http://www.pjrc.com/hub_isp/|AVR programmer that uses a USB hub]], I thought of abusing a USB keyboard for that. | + | Recently, my keyboard became louder and louder while typing, so I decided to buy a new one. But what to do with the old one? Ever since I saw the [[http://www.pjrc.com/hub_isp/|AVR programmer that uses a USB hub]], I thought of abusing a USB keyboard for that. |
===== Theory ===== | ===== Theory ===== | ||
Line 36: | Line 36: | ||
===== Software ===== | ===== Software ===== | ||
- | First I wrote a small libusb-based test utility for experimenting with the keyboard. I'm directly communicating with the keyboard from userspace, unloading the kernel driver first. | + | First I wrote a [[https://github.com/steve-m/hidkey_gpio|small libusb-based test utility]] for experimenting with the keyboard. I'm directly communicating with the keyboard from userspace, unloading the kernel driver first. |
==== Speed ==== | ==== Speed ==== | ||
Line 79: | Line 79: | ||
</code> | </code> | ||
- | Well, as you can see, programming takes quite a while, mainly because of the slow input speed I mentioned before, but is very reliable. Since I assume that many people have some old USB keyboard laying around collecting dust, it still could be used as a bootstrap flasher for solving the old chicken-and-egg problem when building a faster programmer ([[http://www.fischl.de/usbasp/|USBasp]], [[http://www.ladyada.net/make/usbtinyisp/|USBtinyISP]]) or as low-speed general purpose output for other applications. For example, many outputs could be driven using a simple serial-in, parallel-out shift register. | + | Well, as you can see, programming takes quite a while, mainly because of the slow input speed I mentioned before, but is very reliable. Since I assume that many people have some old USB keyboard lying around collecting dust, it still could be used as a bootstrap flasher for solving the old chicken-and-egg problem when building a faster programmer ([[http://www.fischl.de/usbasp/|USBasp]], [[http://www.ladyada.net/make/usbtinyisp/|USBtinyISP]]) or as low-speed general purpose output for other applications. For example, many outputs could be driven using a simple serial-in, parallel-out shift register. |
===== Update #1 ===== | ===== Update #1 ===== | ||
Line 145: | Line 145: | ||
I'd say that's quite an improvement, and very well acceptable for a chicken-and-egg bootstrap flasher :-) | I'd say that's quite an improvement, and very well acceptable for a chicken-and-egg bootstrap flasher :-) | ||
+ | |||
+ | This project was featured on [[http://hackaday.com/2012/11/26/usb-keyboard-becomes-an-avr-programmer/|Hackaday]]. | ||
== Reference Literature == | == Reference Literature == |