all about custom keyboard controllers

User avatar
off

01 Apr 2012, 16:58

:idea:
So we have a spot to ask questions and collect knowledge regarding the differences between the various keyboard controller options out there, spam away! :evilgeek:
*once enough usefull knowledge has been collected in this one place wikification might be in order, for now this is way more appropriate*

User avatar
off

01 Apr 2012, 17:00

PJRC microcontroller breakout board:
Teensy 2.0, Teensy++ 2.0
*Proprietary boot loader afaik, so not a truely opensource option
*Utilizes the ATMEGA32u4 smd variant

Has been used in various diy solutions to create a keyboard controller or a keyboard signal converter.
Last edited by off on 01 Apr 2012, 17:05, edited 1 time in total.

User avatar
off

01 Apr 2012, 17:01

AIKON

A custom controller designed specifically for keyboards, born in Korea, developed by AQUA and inornate.
It used to be for sale as a small prebuilt board, but now the only option is to make one yourself from cheaply available components; which is still awesome.
See here for info.
Last edited by off on 25 Apr 2012, 15:27, edited 2 times in total.

User avatar
off

01 Apr 2012, 17:01

Chameleon

A custom keyboard controller designed by Imsto.
http://deskthority.net/wiki/Chameleon_k ... controller
Last edited by off on 08 May 2012, 19:14, edited 3 times in total.

User avatar
off

01 Apr 2012, 17:01

*reserved*

User avatar
off

01 Apr 2012, 17:01

*reserved*

User avatar
off

01 Apr 2012, 17:01

*reserved*

User avatar
sordna

02 Apr 2012, 08:51

off wrote:PJRC microcontroller breakout board:
Teensy 2.0, Teensy++ 2.0
*Proprietary boot loader afaik, so not a truely opensource option
I bought a teensy recently, haven't tried it yet but was wondering, why is it a problem if it has some non-opensource code in it?

User avatar
fossala
Elite +1

02 Apr 2012, 09:50

sordna wrote:
off wrote:PJRC microcontroller breakout board:
Teensy 2.0, Teensy++ 2.0
*Proprietary boot loader afaik, so not a truely opensource option
I bought a teensy recently, haven't tried it yet but was wondering, why is it a problem if it has some non-opensource code in it?
Because open source code is better, we can look at it and manipulate it to do things how we want. If the vendor stop supporting it there are other options. We know there is no malicious code in there (keyloggers). Because the sooner everyone realises that life isn't only about money the better.

User avatar
Maarten

02 Apr 2012, 10:10

fossala wrote:Because open source code is better
This is opinion not fact. I agree with you, but if you take any person without any knowledge or interest in (re-)programming then something closed-source that works out of the box is 100% better than anything open-source that needs tinkering to make it do anything. If you want to make a topic like this keep it factional.

User avatar
off

02 Apr 2012, 12:44

Though I too prefer to keep this factual, we/I/someone can always filter the crap out once some kind of wikification is in order.
fossala wrote:
sordna wrote:why is it a problem if it has some non-opensource code in it?
Because open source code is better, we can look at it and manipulate it to do things how we want. If the vendor stop supporting it there are other options. We know there is no malicious code in there (keyloggers). Because the sooner everyone realises that life isn't only about money the better.
On this I would have to agree, although the beaten to death 'we know there's no malicious shit going on' is kinda iffy, seeing how half the opensource code never gets actually read by people that understand that code (yes I pulled that number out of my a** just to illustrate the point). But yeah, so much proprietary stuff just doesn't work the way it should or could, or the way you'd want it to, and gets left in the dirt at some point; that alone makes opensource stuff worth way more. And the 'life ain't dosh' part is important too.
Maarten wrote:that works out of the box is 100% better
edit: quotationfail
That is true no matter what- though seeing 4/5 things will need configuring anyhow, configuring in the programming language is harder but has way more options; that option you'll have with opensource sw, not with closed source.
Last edited by off on 05 Apr 2012, 22:46, edited 1 time in total.

User avatar
Kurk

05 Apr 2012, 21:52

These Sprintek controllers seem very interesting:
http://www.sprintek.com/products/Products.aspx
Sample ICs are not too expensive (if you're living in the US):
http://www.sprintek.com/order/Orderics.aspx

The German company Code Mercenaries also has a range of programmable controllers:
http://www.codemercs.com/37/?L=1
However, it seems this controllers have no built-in layer locking function. An ideal application for Cherry locking switches ;)
http://www.codemercs.com/phpBB2/viewtop ... =10&t=1537

nfc

25 Apr 2012, 11:11

I would like to clarify a couple of things...

a) The hard coder job...
"Development boards" are boards with a micro controller (uC) where a programmer just test his code. Sometimes he needs to download modifications and then other modifications and then corrections and so on (sometimes for hundreds of times)...
From now on I'll referr to micro controller as "uC".

Times ago development boards was very primitive.
The poor coder was forced to remove the uC from the board, and put it in a programmer board for erase and reprogram.
At that time, the programmed used to accurately design and then code all the program in forehand, just to avoid stress and time loss, by mounting and unmounting chips.

Then, were released some uC with the capability to be written, with a special programming device, directly "in the circuit", without removing the chip from the destination board.
The only thing the designer of the board had to do was to bring specific pins of the uC on a special header for programming device connection. This method, currently commonly used, is known as In Circuit Serial Programming ICSP or ICP. Very usefull also for software updates.

Today a lot of circuits just sport a usb connection, handled directly by the micro controller.
And here is the idea! Why do the programmer have to mount/unmount the chip or even use a ICSP programming device?
It is so simple to just upload the new code in our board through the USB cable.
Isn't it fantastic? Imagine... you're working on your DIY Keyboard-Controller were the USB connection is used to connect your "borning keyboard" to the pc. Then, when you need to correct a bug or implement a new feature, you just press a little thiny button on your development board and suddenly your uC stops acting according to your code and turns in a "Waiting for new code" state. Now, all you have to do is lauch on the pc your uploading software and, click, upload your new code.
When uploading is complete, uC resets by itself and restart acting according to the just uploaded code.
This, last described, method is achived by a bootloader.


b) A profane explains what a bootloader is.
Note 1: Just a note for jump-readers like me, I'll use some of the concept explained in previous point, so in case you don't fully follow, please spend some minute to read it;
Note 2: Feel free to correct all errors I'll write, just don't consider it as a technical document but more like a scientific divulgation;


In simple words a bootloader is a little piece of software loaded in a specific position of the uC: let's say, for example, it resides in the first 4kB of the program memory.
When the uC is powered up, it starts executing instructions form first position in program memory.
And the very first instruction is: "jump to position 5kB"... in other words "By-pass the bootloader code".
when a little special hardware button, mounted on teh dev-board, is pressed, the program pointer is attracted on the first instruction of the bootloader (not the "jump to 5kB", but the very next one) so it start to execute istructions from there.
When uC executes the bootloader (act according the bootloader code) it transform itself in a "memory programmer".
Means that all code somebody (likely a pc application) sends down the USB connection now, with a certain protocol, is written in the uC's program memory by the uC itself, starting from 5kB (so bootloader is not overwritten).
When finished somebody (likely a pc application) sends down the USB connection a special instruction that is interpreted by the bootloader code as "Jump to 5kB"... so the execution starts from "just uploaded" code.

So when you buy a uC from some producer, and want to build your development board, how can you program the bootloader?
Choice 1: yourself with an hardware programmer (good old methods);
Choice 2: buy an already made dev-board, with already loaded bootloader;

When coding session is complete, and it's time to mass produce your board, it is not needed a bootloader anymore.
The executable code is simply written one by one with a programmer or with industrial equipment for large scale production (I think I was reading that big uC producers like MicroChip, Atmel or STS offers mass programming service with a lot of options).

But for me, when I'm doing one of my silly, little, projects I normally stop before mass-production and leave bootloader in.


c) What is Teensy ?
Teensy is a development board based on a chip from Atmel.
The dev board is produced and sold by Paul J Stoffregen and Robin C Coon (http://www.pjrc.com).

There are various different Teensy models, some older, some newer, based on different Atmel chips. The most recent, now when I'm writing, is based on Atmel AT90USB1286 and is called Teensy++ 2.0.

But there are also a lot of other development boards based on exactly same chip, developed by somebody else.
Atmel itself have his own boards, this one, for example, is exactly same as Teensy++ 2.0: http://www.atmel.com/devices/AT90USB1286.aspx
Other good alternatives:
http://code.google.com/p/micropendous/ (This one is based on AT90USB1287, Teensy++ 2.0 is based on AT90USB1286)
http://www.olimex.com/dev/avr-usb-162.html (Teensy 1.0 AT90USB162)
Or just search on eBay... there's a load of cheap (and even bad quality) development boards selled as "Teensy" but not produced by PRJC, used by people for some PS3 modification... let's referr to them as Clones.

It simply turns out that the term "Teensy" is today a way to identify a development board based on certain Atmel uC.

What's really the difference between Teensy, AT90USBKey (Atmel) and a Clone ?
OK, prices... Teensy and Clones appears to be cheaper than other dev-boards.

But the real difference is the bootloader!
Atmel and Clones uses proprietary DFU (by Atmel), Teensy uses the proprietary HalfKay (for his size Half Kilobyte).


d) Conclusions:
Free-software is a "style of life". Personally I believe I found a 2nd spring in my life when I switched to Linux.
But unfortunatelly I'm not contributing at all in any of the source improvements: not kernel, not any of the millions of applications out there... I'm not that good.

PRJC provides schematics, documentation and examples, it's considerable as a form of open-source. From what I read here and there it seems that the hard point is Proprietary bootloader, and pc-mac applications, also not released as open-source, but protocol is described http://pjrc.com/teensy/halfkay_protocol.html (if somebody want's to experiment could write his pc/mac side download application).

Personally I understand that Paul J Stoffregen is gelous about his piece of code... maybe it's his only protection from "rising sun companies copies invasion". [ Would like to know what Litster thinks about :) ]

So, for us there are different solutions/alternatives:

Solution 1- Consider Teensy for what it is and accept it: a ggod quality, very supported, and prize competitive development board;

Solution 2- Buy a AT90USB1286 from Atmel, you'll have a fully supported by Atmel DFU bootloader, but still proprietary and more expensive.
I'm personally experimenting on a Clone: I was cheated on eBay were I was buing it. When I realised it was a clone, it was too late (I left the dev-board in the drawer for too long before dedicating my attention to it).
But still I'm using it with examples from http://www.PRJC.com and with LUFA http://www.fourwalledcubicle.com , I just have to use Flip software to download and it's based on AT90USB162 (therefore only Teensy 1.0).

Solution 3- BURN AN OPEN SOURCE BOOATLOADER. Overwrite the DFU/HalfKay bootloaders with LUFA opensource HID-Bootloader... please read those marvellous tutorials
http://elasticsheep.com/2010/01/install ... ootloader/
http://www.waitingforfriday.com/index.p ... troduction

Just keep in mind that, since PJRC do not publish the code, once replaced there's no way to reprogram back the HalfKay on the Teensy uC (and it seems you cannot even copy it from a brand new Teensy cause it's protected).
You've been warned... after you messed up please don't ask help to me, cause I'm not so deep in details it by myself ;)
...not for now at least.

nfc.

User avatar
off

25 Apr 2012, 15:15

nfc; nice.

I will respond to this:
"Free-software is a "style of life". Personally I believe I found a 2nd spring in my life when I switched to Linux.
But unfortunatelly I'm not contributing at all in any of the source improvements: not kernel, not any of the millions of applications out there... I'm not that good."
It is a style of life, and more. In it is sharing, is working together, is stuff like what you do/just did. :duck:


*also, where are you from? Would be nice to note that in your profile, not needed, just cool to know and sometimes handy (sales & meetings etc).

nfc

25 Apr 2012, 20:13

off wrote: *also, where are you from? Would be nice to note that in your profile, not needed, just cool to know and sometimes handy (sales & meetings etc).
Ops, sorry Pal... I never realized those infos wasn't visibile in my profile. I'll try to fix it. If not you'll have to help me again ;)

User avatar
Soarer

26 Apr 2012, 00:30

TBH, I think the discussion about free/open vs non-free/open doesn't really belong here, it's swamping the real info :-/

User avatar
Spharx

26 Apr 2012, 00:42

nfc wrote: But the real difference is the bootloader!
Atmel and Clones uses proprietary DFU (by Atmel), Teensy uses the proprietary HalfKay (for his size Half Kilobyte).
Could you please explain where are the differences between both bootloaders ? Would I be able to run Soarer's code on the faked teensys :?:

User avatar
off

26 Apr 2012, 00:48

AFAIK that is not dependent on the bootloader, but rather on the chips used in the 'fake'. AFAIK soarer's runs on quite a few atmel microcontrollers, not just the 32u4 used in the teensy; but he'll definitely know best ;)

User avatar
Soarer

26 Apr 2012, 01:06

Exactly - the bootloader is just a means to get the hex onto the chip. After that's done, it does nothing except take up some memory. The only time this bothers my converter is on chips with only 16KB of flash memory, but apart from the 16U4, most of those also lack enough USB hardware, so it's not relevant. (This is why the AT90USB162, used in the original Teeny and many of the 'fakes', is NOT supported by my converter).

nfc

26 Apr 2012, 06:39

Soarer's code could run on the right Dev-Board (or on the right fake as you call it).
Just googled out one for you: http://www.ladyada.net/products/atmega32u4breakout/
Authress also explain what led to build it. But still best price is Teensy one :)

User avatar
graboy

06 May 2012, 16:42

Stumbled upon these recently, you guys might be interested.

http://www.alcormicro.com/en_content/c_ ... tegoryID=1

User avatar
Maarten

06 May 2012, 22:04


User avatar
off

07 May 2012, 12:48

graboy wrote:Stumbled upon these recently, you guys might be interested.
http://www.alcormicro.com/en_content/c_ ... tegoryID=1

Code: Select all

    * Sample Chips x 10
    * Print Datasheet x 1
    * Main Sample Print Circuit Board x 1
    * Software CD for Development Usage x 1
Purchase 		
    * Price:
      USD250 / each (per engineering evaluaction kit)
Doesn't really sound too appealing, even in samplekit it's more expensive than a teensy; which is less feature-limited..
But it does seem to have a few niceities in it; weird that they say "Number of different keyboard models supported: 4", like there's only 4 preset matrices you can choose from, or perhaps that there's space for remembering 4 matrix configs..


oh Maarten, I'd already added that here; too slow! But thanks for writing it ;D

User avatar
graboy

07 May 2012, 23:55

off wrote: Doesn't really sound too appealing, even in samplekit it's more expensive than a teensy; which is less feature-limited..
But it does seem to have a few niceities in it; weird that they say "Number of different keyboard models supported: 4", like there's only 4 preset matrices you can choose from, or perhaps that there's space for remembering 4 matrix configs..
Whoa, something really cool just happened.
I was thinking, "Alcor Micro... where have I heard that before?"

:o

But then I realized...

:shock:

I saw it once on an old mac pro 'dome board's IC, I just dug the PCB out of my pile of crap... I had disassembled it like a month or so ago. It uses the AU9462, this occurred to me when I realized that the keyboard has a 2 port hub, one way that these controllers have an advantage over the Teensy/Chameleon.

Image
(Too lazy to take pictures, just stole one from the web.)

User avatar
off

08 May 2012, 00:24

graboy wrote:Whoa, something really cool just happened.
I was thinking, "Alcor Micro... where have I heard that before?"
:o
But then I realized...
:shock:
.. What I had to do! :evilgeek:

Pictures/firmwareconfig will be appreciated :D

Post Reply

Return to “Workshop”