Author Topic: GH60 prototype betatesting [Call for layouts, GUI testing]  (Read 183355 times)

0 Members and 1 Guest are viewing this topic.

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
GH60 prototype betatesting [Call for layouts, GUI testing]
« on: Tue, 20 November 2012, 09:11:11 »
Please send your layouts!
If you have some cool layouts for the GH60, please send them to me and I'll include them in this thread. Please attach a short description too.

8238-08240-1

Please download the current beta firmware snapshot for testing:
* ukbdc-gh60.hex (22.96 kB - downloaded 1627 times.) [old pre-release]
* ukbdc_gh60-0.1.hex (18.21 kB - downloaded 2869 times.) [deprecated and buggy]
* ukbdc_gh60-0.2_rc2.hex (20.97 kB - downloaded 1827 times.) [current]
* ukbdc_gh60-0.2_rc2_std_layout.hex (23.78 kB - downloaded 2601 times.) [current, preprogrammed with layout]

DISCLAIMER: the current version of firmware is not yet compatible with USB power requirements in sleep mode. It may draw about 20mA or more in sleep. This shouldn't break anything, but you should know anyway.

CHANGELOG
v0.2-rc2
* fixed bug which caused the keyboard to stop working from time to time
* added support for remote wakeup
* pwm-controlled caps-lock LED
* minor code cleanup

v0.1
* first "official build"

Programming instructions in the post below.

Programming gui:
* ukbdc_gui.zip (53.36 kB - downloaded 1094 times.) [current version, problems on win 7, please test on linux]
* ukbdc_gui_win7.7z (61.75 kB - downloaded 1267 times.) [current version, please test on windows xp, vista and 7]
* ukbdc_gui_w7_new.7z (34.03 kB - downloaded 1537 times.) [current windows version, please test on windows xp, vista and 7]
* ukbdc_gui_linux_new.tar.gz (40.91 kB - downloaded 1248 times.) [current linux version]

Using the firmware
The "official" firmware does not contain any layout on its own, so after programming, the keyboard will enumerate but not send any keystrokes. In order to program it with a layout you need to use a program, which is currently in a very early stage and we need your help to find bugs and make it better.


Windows
After the keyboard is connected, windows should detect it and install drivers. The keyboard can be used without any extra drivers, but programming requires libusb driver. This will hopefully change, when we find someone with winapi knowledge who will remove the libusb dependency from the GUI program.


1. Install libusb driver: download libusb-win32 (link: http://sourceforge.net/projects/libusb-win32/files/latest/download?source=files), unpack the zip file. Run inf-wizard.exe from the bin subdirectory. Choose the device with vid = 16c0 and pid = 047c. You should see 2 such devices, choose the one with "Interface 1" in its name. Leave all other options unchanged, save the inf file anywhere when asked and then  click "Install driver" in the last screen.
2. Install Python 3.3 (download from here: http://www.python.org/download/)
3. Download ukbdc_gui, the layout programming program, unpack and run gui.py
4. Choose File->Open and load the example layout file, gh60.lay
5. Click the programming button and wait for a message in the status bar. You should get "Programmed 1026 bytes of layout"
6. At this point the keyboard should send keystrokes according to the programmed layout

Linux
1. Download ukbdc_gui, unpack and run: python3 gui.py (or set the executable bit on gui.py and run it). You need python 3, but most distros will already have it
2. Load the layout, as in windows and click the programming button.

Creating layouts in ukbdc_gui

16006-10

1. Layer selector - there are 16 independent layers which can be programmed into the keyboard
2. Inheritance selector - each layer (except for layer 0) inherits from some other layer whose number must be less than its own.
3. Programming button - clicking programs the board immediately
4. Key properties - after a key is selected, its properties are presented here; every modification takes place immediately, no need to apply.


How to use inheritance
This is handy if you want to have at least 2 layers which differ from each other only by a few keys. In this case, set the derived layer to inherit from the base layer and set all derived layer's keys' mode to "inherited". Then override some of the keys by setting the "defined" mode. We should have a button which sets all the keys to inherited... I know.


What are actions
For each key (on each layer independently) you can define 0, 1 or 2 actions. There are 2 types of actions: "key press" and "key release", and their meaning is self-explanatory. The action basically changes layers. You can change layer by specifying its number ("Go to layer") or in a relative way with respect to the current layer's number ("Change layer by"), in which case you can write either a positive or a negative integer.


How to do X
Fn button: one special button switches to a different layer when pressed, and goes back to previous one when released
define Fn button's press action to go to another layer, then on another layer define that same Fn button's release action to go back to your base layer. This will basically mean for example: "on press go to layer 1, on release go back to layer 0".

More Fn buttons: you can have a few layers, and you can change them by holding multiple Fn keys, for example Fn2 - layer 1,  Fn2 - layer 2, and Fn1 and Fn2 together - layer 3
On layer 0 define Fn1 with press action "change layer by 2", and release action "change layer by -2", then Fn2 with press action "change layer by 1" and release action "change layer by -1". This basically sets Fn1 as the more significant bit and Fn2 as less significant bit of layer number offset. Now define layers 1, 2 and 3 in such a way that they inherit directly or indirectly from layer 0, so that the Fn1 and Fn2 definitions are common to all 4 layers. On layers 1, 2 and 3 make sure that Fn1 and Fn2 are set to "inherited".
This is how your Fn keys should look on the base layer (Fn1 and Fn2, respectively):


How to do X (advanced)
Cycling through layers: one key, when pressed and released, changes to next layer, after the last layer, it goes back to the first one. For example there are 5 layers
On layer 0 define the key with a press action which changes layer by 1. Make layers 1, 2, 3 inherit directly or indirectly from layer 0 (if you're actually starting from 0, that's the only possible way anyway). On layers 1, 2 and 3 make sure the layer cycling key is set to "inherited". On layer 4, set the layer cycling key's press action to go to layer 0 (as opposed to "change by" as in layer 0).

Conditional keys: esc changes to tilde/tick, when shift is pressed, so that esc is easily available and at the same time tilde can be written (by holding shift and pressing esc) without switching to a different layer using Fn - good for linux/vim users
I'm assuming you already have a number of layers, and that conditional esc has to work independently from which layer you're on.
On all your existing layers define key number 0 to be esc (or use inheritance, of course).
For every existing layer create another one, which inherits from the respective layer, for example for 4 existing layers, set layers 4, 5, 6, 7 to inherit from 0, 1, 2, 3, respectively.
On each of the new layers set all the keys to "inherited", except key number 0, which you need to set to tick/tilde of course.
Now on layer 0 set both shifts' press action to "change layer by 4", so that on each of those layers, pressing shift goes to its corresponding layer, where esc becomes tilde/shift. On layers 1, 2 and 3 it's enough to set the shift buttons as inherited, since they all indirectly inherit from layer 0. Alternatively you can just redefine shifts on all those layers.
In order to provide a way to come back from the extra layers, on each of them set both shifts to "change layer by -4" on key release. You have to do it for every layer separately, since they inherit from different layers.
Warning: in order for this to work properly, you need to use only relative actions ("change layer by...") in the existing layers or you will have to redefine the action keys in the newly added layers, so that while on one of the extra layers, the keyboard actually switches between the extra layers, instead of going back to the original ones.

Fn-lock: 2 layers: basic and extra, and Fn key. When Fn is pressed the extra layer is active, when it's released, the keyboard goes back to the basic layer. When Fn+space is pressed, the keyboard stays on the extra layer, where pressing Fn temporarily goes back to basic. Pressing Fn+space again goes back to basic, permanently.
16088-1216090-13
16092-1416094-15
You will need 4 layers for this.
Use layers 0 and 2 to define the basic and extra layers.
(1) Set layer 2 to inherit from layer 0, and redefine whichever keys you need.
Set up the Fn button to switch between these layers:
        (2) on l. 0 set press action to "change by +2" and
        (3) on l.2 set release action to "change by -2".
You have 2 working layers with Fn button.
Now the locking happens when space is pressed while Fn is being held. So that happens on layer 2.
(4) That's why on l. 2 remove the scancode from space and set up press action to "change layer by 1". This will go to layer 3.
(5) Layer 3 needs to be the same as layer 2, so set it to inherit from layer 2.
The only difference is that layer 3 will be used when the keyboard is Fn-locked, as opposed to layer 2 being used when Fn is pressed. We use different layers with the same keys here as internal state of the keyboard which remembers that the keyboard was Fn-locked.
Now on layer 2, space does nothing, so set it to "defined" and define it as regular space with no actions.
Now, being on layer 3, we want to be able to use the basic layer while holding Fn, but Fn can't go to layer 0, since this would loose information about being Fn-locked and after releasing it on layer 0, nothing would happen.
(6) That's why you have to set the press action to "change layer by -2", so that it goes to layer 1 instead.
(7) Now of course layer 1 has to be the same as layer 0, so set all the keys to inherited, and set layer 1 to inherit from layer 0.
( 8) Remember we want to be able to come back from layer 1 to layer 3, so on layer 1 set the Fn's release action to "change by +2".
The last thing to do is to make sure we can Fn-unlock the keyboard. This happens when we press space, while holding Fn being in the locked mode, so it happens on layer 1.
(9) That's why on layer 1 remove the space's scancode and set the press action to "change layer by -1", which will go back to layer 0.
That's it!

Layouts
komar's layout
(this is not the layout included in the ukbdc_gui package; that one is old, deprecated and buggy)
16291-1616293-17
This is my "official" layout for the GH60. It's designed mainly for linux/vim users, but should work well for others too.
The primary layer contains all the standard keys, except in the upper left-hand corner there's escape.
The second modifier from the left in the 5th row is Fn, and when pressed it activates the second layer. On the second layer there are arrows instead of hjkl (that's for vim users mainly), also another set of arrows in the lower right-hand corner (like in the Poker).
There are also the F keys and a few other, which you can see in the pictures.
You can lock to the second layer by pressing Fn+space. Then the layers are swapped and you have the second by default, and Fn switches it to the first one.
One more feature, especially for linux users is conditional escape. If you press escape while holding shift, tick/tilde is sent, so you effectively get the tilde without changing layers.
Download: * gh60.lay (4.02 kB - downloaded 1203 times.)

hasu's poker layout
17598-1917600-20

Original Poker has two locking layers, Fn+Q fixes cursor keys on right bottom area and Fn+Space places Esc instead of back quote(`). I add my layout file just for reference
This layout is comprised of these layers:
0: default(qwerty)
1: Space lock(cursor keys)
2: Q lock(Esc)
3: Space and Q lock
4: Fn layer of default
5: Fn layer of Layer 1
6: Fn layer of Layer 2
7: Fn layer of Layer 3
Download: gh60_poker.lay
« Last Edit: Tue, 02 April 2013, 07:48:57 by komar007 »
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #1 on: Tue, 20 November 2012, 09:11:23 »
Layout errors
These are the errors connected with support for various layouts (wrong switch positions, missing stabilizer holes, wrong dimensions/distances)
  • the USB connector is moved a bit to the left
Mechanical errors
Problems fitting various cases, wrong position of mounting holes, dimensions
  • the spaces between stabilizer holes and the horizontal edges of the board turned out to be too small, and easy to break. The board can be a little larger
  • FIXED capacitor C3 prevents the board from fitting the plastic Poker case, because it gets in the way of the lowest horizontal support bar
  • FIXED no polarity info for the caps-lock diode
Electrical errors
Routing, EMI, broken traces, not connected switches, etc
  • ...
Improvements
New ideas
  • DONE Split backspace option
  • Hacker pads
« Last Edit: Wed, 06 March 2013, 09:38:34 by komar007 »
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #2 on: Tue, 20 November 2012, 09:11:49 »

What you'll get
1. The GH60 rev. A PCB:
8242-0
2. A bag of SMD components:
What you won't get:
1. switches
2. keycaps
3. case

Building the prototype (SMD)
For those who are soldering everything on their own
Controller part
1. Start with the microcontroller (hand solder with a soldering iron)
10137-110139-210141-3
a) place IC1 in the marked position (remember about the right rotation!)
b) hold it in place with a pair of tweezers
c) solder a couple of pins, then do one whole side (use much flux to prevent solder bridges)

10143-410145-5
d) solder everything else
e) clean the flux residue

2. Solder the controller part of the board (hot-air).
This can be done with a regular soldering iron too (I recommend chisel tip), only X1 may cause problems, so beware.
10155-610157-7
a) place solder paste on all pads around the microcontroller. Leave the top pad of C3 empty (error described above)
b) place all the parts on positions, put C3 horizontally, only on the lower pad

10159-810161-9
c) blow hot air and watch the components reflow (the best part)
d) done!

3. Fix C3 error
10163-1010165-1110167-12
a) heat up C3 (either hot-air or regular iron) and tweak the positioning
b) twist a few wires from a solder wick or any other cable and cut a few mm, solder one side to the cap; try to solder as close to the board as possible
c) bend the twisted wires and solder onto the top pad of C3

USB connector part
4. Solder the USB receptacle and components around it (this can be done with a regular soldering iron too)
10169-1310171-14
a) put solder paste on all the pads
b) place the components, place the USB socket close to the top edge of the board, but not too close;)

10173-1510175-16
c) reflow
d) add more solder to the connector's large pads

At this point you should connect the board to a PC with a USB A - USB mini B cable and check that it enumerates as Atmel DFU

Diodes part
5. Solder diodes
10177-17
a) put solder paste on all diode pads
... place diodes
... reflow


WhiteFireDragon also added these tips:

S0 button
a) add solder to one pad (any pad)
b) put one of the leg right on top of this pad with solder, and melt the solder again with the iron until the leg is flush to the pad. This will tack the button down and prevent it from sliding around.
c) solder the other 3 legs to the pad
d) (optional) reflow that first pad and/or add a little bit more solder so everything looks even and clean.
LED resistor
a) bend the two leads 90° to the appropriate length
b) insert them through the two tiny through-holes, and (optional) bend the leads 45°
c) flip over the board
d) you can either clip off the excess lead and solder, or solder first and clip off the two excess leads. If you clip after soldering, make sure none of the solder is clipped.
Yellow LED

a) You must have the capslock switch soldered on first
b) insert the leads through the switch, into and through the PCB holes corresponding to the capslock
c) make sure you pay attention to the polarity. The longer lead is the positive side.
d) follow steps b - d in the LED resistor steps above.

And you have the board in the same stage as the final GH60 will be.
If you're sure the board works fine you may want to protect the capacitor C3 with some super-glue, since it's mounted only on one pad.

Switch position and layout guide coming soon!

Programming the firmware (Windows)
1. download and install FLIP (http://www.atmel.com/tools/FLIP.aspx)
2. connect the keyboard, press the program button (S1) and wait until it enumerates
3. go to device manager, find the atmega32u4 chip and click "update driver"
4. choose location manually: folder named "usb" inside the installation directory of FLIP
5. once the driver is installed, run flip
6. Device -> Select: choose ATMega32U4
7. Settings -> Communication -> USB, FLIP should show the signature at this point (58 1E 95 87)
8. File -> Load HEX file: choose the hex firmware: ukbdc_gh60-0.1.hex
9. click "Run"
10. after programming is done, disconnect the device from USB and connect again.


Programming the firmware (Linux)
Download and install/compile/unpack dfu-programmer from http://dfu-programmer.sourceforge.net/.
Issue the following commands in the command prompt after connecting the device and pressing the programming button (S1). You may need root permissions or udev rules to do that.
sudo dfu-programmer atmega32u4 erase

sudo dfu-programmer atmega32u4 flash ukbdc_gh60-0.1.hex
sudo dfu-programmer atmega32u4 start
where ukbdc_gh60-0.1.hex is the firmware file.
The keyboard should start working. If it doesn't, reconnect the cable.
« Last Edit: Tue, 26 February 2013, 18:01:55 by komar007 »
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline dirge

  • Posts: 475
  • Location: Newcastle Upon Tyne
Re: GH60 prototype betatesting
« Reply #3 on: Tue, 20 November 2012, 09:32:51 »
Looking good :)
Thinking about things isn't the same as doing things. Otherwise everybody would be in jail.

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: GH60 prototype betatesting
« Reply #4 on: Tue, 20 November 2012, 09:46:30 »
Agreed... shame about the capacitor... is there any space on top to put it with a couple vias?
Or just move the cap a little.

Offline jdcarpe

  • * Curator
  • Posts: 8852
  • Location: Odessa, TX
  • Live long, and prosper.
Re: GH60 prototype betatesting
« Reply #5 on: Tue, 20 November 2012, 09:48:07 »
Just waiting on the prototype board. Will update here when I get mine built!
KMAC :: LZ-GH :: WASD CODE :: WASD v2 :: GH60 :: Alps64 :: JD45 :: IBM Model M :: IBM 4704 "Pingmaster"

http://jd40.info :: http://jd45.info


in memoriam

"When I was a kid, I used to take things apart and never put them back together."

Offline IvanIvanovich

  • Mr. Silk Underwear
  • Posts: 8199
  • Location: USA
Re: GH60 prototype betatesting
« Reply #6 on: Tue, 20 November 2012, 11:21:26 »
Broken traces, not connected switches... so does it mean it's not functional?

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: GH60 prototype betatesting
« Reply #7 on: Tue, 20 November 2012, 11:23:27 »
Not that we know of yet. I believe that Komar was just giving examples of what to put in those categories.

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #8 on: Tue, 20 November 2012, 11:28:48 »
Agreed... shame about the capacitor... is there any space on top to put it with a couple vias?
Or just move the cap a little.
There won't be a problem moving. Only for the prototype we need to play around.
Not that we know of yet. I believe that Komar was just giving examples of what to put in those categories.
Yes.
The only major problem now is this cap.
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline IvanIvanovich

  • Mr. Silk Underwear
  • Posts: 8199
  • Location: USA
Re: GH60 prototype betatesting
« Reply #9 on: Tue, 20 November 2012, 11:39:59 »
I see, too early and I wasn't thinking on full power. I thought it was a list of a problem not just an example.

Offline WhiteFireDragon

  • Posts: 2276
    • youtube
Re: GH60 prototype betatesting
« Reply #10 on: Tue, 20 November 2012, 13:41:56 »
Agreed... shame about the capacitor... is there any space on top to put it with a couple vias?
Or just move the cap a little.
Vias still needs a hole with traces through it. Since these are all SMD, I don't think you can use vias. I think we can just solder a small wire to each of the pad on the PCB, and solder the other side of the wire to the cap.

Offline __red__

  • Posts: 194
Re: GH60 prototype betatesting
« Reply #11 on: Tue, 20 November 2012, 18:00:33 »
Can you flash the Aurduino bootloader via USB or do we need to go all jtag on it's ass?

Thanks,



Red

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: GH60 prototype betatesting
« Reply #12 on: Tue, 20 November 2012, 18:01:21 »
IIRC, the ATMega32U4's come with the default DFU bootloader that Komar used. I don't have one to be certain though.
« Last Edit: Tue, 20 November 2012, 18:03:04 by SmallFry »

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #13 on: Tue, 20 November 2012, 23:47:38 »
Can you flash the Aurduino bootloader via USB or do we need to go all jtag on it's ass?

Thanks,



Red
No, you can't flash bootloader with a bootloader, so you have to use SPI. JTAG isn't available, because I didn't make headers;)
But we don't need arduino bootloader. Atmel DFU is fine and it can program the keyboard's firmware via USB.
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline alaricljs

  • I be WOT'ing all day...
  • ** Moderator Emeritus
  • Posts: 3715
  • Location: NE US
Re: GH60 prototype betatesting
« Reply #14 on: Wed, 21 November 2012, 08:06:15 »
Flip is not too much of a pain and is multi-platform.
Filco w/ Imsto thick PBT
Ducky 1087XM PCB+Plate, w/ Matias "Quiet Click" spring-swapped w/ XM Greens

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: GH60 prototype betatesting
« Reply #15 on: Wed, 21 November 2012, 08:36:12 »
FLIP is nice. Easy enough to install in a sandbox of you don't want Java on your main machine. :)

Offline alaricljs

  • I be WOT'ing all day...
  • ** Moderator Emeritus
  • Posts: 3715
  • Location: NE US
Re: GH60 prototype betatesting
« Reply #16 on: Wed, 21 November 2012, 08:42:42 »
The irritating part of flip is that it is order of operations sensitive.
Filco w/ Imsto thick PBT
Ducky 1087XM PCB+Plate, w/ Matias "Quiet Click" spring-swapped w/ XM Greens

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: GH60 prototype betatesting
« Reply #17 on: Wed, 21 November 2012, 08:56:00 »
I call that idiot proofing. :P

Offline alaricljs

  • I be WOT'ing all day...
  • ** Moderator Emeritus
  • Posts: 3715
  • Location: NE US
Re: GH60 prototype betatesting
« Reply #18 on: Wed, 21 November 2012, 08:59:49 »
Idiot proofing would be them making it so you can't do it out of order.  That, and the little message about 'reset before flashing' should be changed to 'restart flip before flashing'... resetting my controller sure didn't do the job.
Filco w/ Imsto thick PBT
Ducky 1087XM PCB+Plate, w/ Matias "Quiet Click" spring-swapped w/ XM Greens

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: GH60 prototype betatesting
« Reply #19 on: Wed, 21 November 2012, 09:07:06 »
Heh. Oh well... heh.

Offline __red__

  • Posts: 194
Re: GH60 prototype betatesting
« Reply #20 on: Mon, 17 December 2012, 06:34:23 »
So, to be clear.  If we're not using the plastic poke case but making our own then we can solder C3 as you originally intended...

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #21 on: Mon, 17 December 2012, 06:37:23 »
Depends on how that case looks, but in general, yes...
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline WhiteFireDragon

  • Posts: 2276
    • youtube
Re: GH60 prototype betatesting
« Reply #22 on: Mon, 17 December 2012, 06:38:25 »
Even if you are, just take a snip or dremel and cut out ~4mm from the plastic support and you'll be good to go. I don't think that C3 should be a problem.

Offline __red__

  • Posts: 194
Re: GH60 prototype betatesting
« Reply #23 on: Mon, 17 December 2012, 06:43:37 »
Sweet! Thank you gentlemen.

Now I just have two missions:
1) Sweet-talk WhiteFireDragon to forward mine on un-soldered as soon as he gets it :-)
2) A decent source for cherry MX blues since someone bought out verical's supply a few weeks ago over doubling the cost.

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #24 on: Mon, 17 December 2012, 06:56:59 »
I thought WFD is only soldering a couple of them, and the rest will go to people untouched... But apparently something's changed;)
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline TheProfosist

  • Posts: 3671
  • Location: Wisconsin, USA
  • Custom Layouts Only!
Re: GH60 prototype betatesting
« Reply #25 on: Mon, 17 December 2012, 07:24:25 »
ill be using mine with the poker case i was going to use for DOX v2.

Offline dirge

  • Posts: 475
  • Location: Newcastle Upon Tyne
Re: GH60 prototype betatesting
« Reply #26 on: Sat, 22 December 2012, 10:51:11 »
pads on the X1 could be a little larger for those using soldering stations?
Thinking about things isn't the same as doing things. Otherwise everybody would be in jail.

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #27 on: Sat, 22 December 2012, 10:57:36 »
Yes, I did them according to the datasheet, didn't think about that... I hope you coped somehow;)
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline __red__

  • Posts: 194
Re: GH60 prototype betatesting
« Reply #28 on: Sat, 22 December 2012, 11:23:19 »
So, wfd - do we owe you monies for shipping?  Also, if it costs extra for tracking, I'll pay it.

I'm an obsessive tracking re-loader.

Offline dirge

  • Posts: 475
  • Location: Newcastle Upon Tyne
Re: GH60 prototype betatesting
« Reply #29 on: Sat, 22 December 2012, 11:28:44 »
Well plugged in the USB and it tried to install the atmega driver, so some of my soldering at least has worked. :)
Thinking about things isn't the same as doing things. Otherwise everybody would be in jail.

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #30 on: Sat, 22 December 2012, 11:46:10 »
Nice, the third GH60 in the world has just been built!
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: GH60 prototype betatesting
« Reply #31 on: Sat, 22 December 2012, 11:51:13 »
SCHWING! Super excited Komar! Great work!

Offline dirge

  • Posts: 475
  • Location: Newcastle Upon Tyne
Re: GH60 prototype betatesting
« Reply #32 on: Sat, 22 December 2012, 12:40:21 »
Who's the other? or did you make 2? :)  Will get some pics up tomorrow.
Thinking about things isn't the same as doing things. Otherwise everybody would be in jail.

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #33 on: Sat, 22 December 2012, 12:43:38 »
I made 2;)
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline hasu

  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: GH60 prototype betatesting
« Reply #34 on: Wed, 26 December 2012, 11:28:46 »
My GH60 is unfinished yet but almost done except for soldering rest of diodes and switches.
I used The_Beast's plate to compensate flimsy poker case, I miss beautiful matte black PCB :)


At this time I can register some keys successfully with my firmware! I'll finish rest of soldering tomorrow.

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #35 on: Wed, 26 December 2012, 11:35:14 »
Great!
Send me your e-mail address and I'll send you a beta "official" firmware with layout programming support but no PC-side software yet:D
I'll also post it publicly soon.


EDIT: so we have one fitting plate...
Which layout is it? Standard ISO, 1.25 mods?
« Last Edit: Wed, 26 December 2012, 11:38:07 by komar007 »
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline JPG

  • Posts: 1124
  • Location: Canada (Beloeil, near Montreal)
  • Model F is my new passion!
Re: GH60 prototype betatesting
« Reply #36 on: Wed, 26 December 2012, 11:55:08 »
I just want to say that this project seems amazing. I am still new to the mech keyboard universe, and already I spent quite a lot of time on this forum reading all kind of super interesting things.

Probably that one day when my budget allows it I will participate on one of these projects, but mainly I wanted to contratulate you all for these amazing projects/keyboards you make.

Continue posting pictures of your creations :)
IBM F122, IBM XT F X2, IBM AT F (all Soarer converted), Filco Camo TKL Browns

Offline absyrd

  • CPT HYPE PADAWAN
  • Posts: 3300
  • Location: Philly Burbs
Re: GH60 prototype betatesting
« Reply #37 on: Wed, 26 December 2012, 12:01:53 »
Looking good, hasu!
My wife I a also push her button . But now she have her button push by a different men. So I buy a keyboard a mechanicale, she a reliable like a Fiat.

Offline hasu

  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: GH60 prototype betatesting
« Reply #38 on: Wed, 26 December 2012, 12:06:44 »
EDIT: so we have one fitting plate...
Which layout is it? Standard ISO, 1.25 mods?
It is original poker layout, ANSI with 1.25 mods.

Offline hasu

  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: GH60 prototype betatesting
« Reply #39 on: Sun, 06 January 2013, 03:37:39 »
I'd say I'm happy with my GH60 now. Both Komar007's official firmware and my unofficial one work well without problem on this beta PCB. Thanks komar007 and community for making GH60 happen.       
           
Now, I as a beta tester would share my thoughts and suggestions.
             
[Unofficial firmware]
If you want to try my unofficial version you can find here: https://github.com/tmk/tmk_keyboard/tree/gh60/keyboard/gh60
And I put two version of binaries on public storage to let you give it a shot on your board easily.
1) plain layout without Fn layer: https://dl.dropbox.com/u/1033342/gh60_pjrc.hex
2) my current using layout: https://dl.dropbox.com/u/1033342/gh60_lufa.hex
             
[SMD parts soldering]
There were no real difficulties except for wiring C3 during soldering parts on GH60 PCB.
Final product version of GH60 doesn't need to be soldered SMD parts by hand, so this is not problem at all. Though, I'd say soldering these small parts by hand was delicate and cumbersome, I'm not sure I can do this job successfully again. I won't be surprised even if a beta tester mangle his PCB pad or parts.
To be honest, I needed ChipQuick to desolder miss-aligned ATMega chip and peeled off one of C3 pads a bit from board :)                                     
             
[Rotation of switch]
This is not a real problem at all, too.
Some switches are aligned with rotating 90 degree, my keycaps fit into these switches a bit tightly. It looks like vertical part and horizontal part of MX cross stem doesn't have same thickness. Rotation of 180deg will be better for keycap than 90deg, but I can understand that some are inevitable to allow various key layout option. Just whine.
           
[Screw hole]
No problem with Poker stock plastic case but screw hole between Tab and Q may be a bit out of alignment to the left in comparison with Poker? I think the hole of Poker PCB is also not perfect. My suggestion is to change form of the hole to oval like others, in the result you may be able to adjust positon of PCB to various cases even with tiny misalignment.
« Last Edit: Sun, 06 January 2013, 03:44:07 by hasu »

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #40 on: Sun, 06 January 2013, 04:12:32 »
Thanks for your input, hasu!
I know the GH60 "official" firmware is not good enough yet, but I'll get back to it just after I end my thesis. I have a deadline on Wednesday so I just have to rush with the final corrections and I'll be working on GH60 again.

Some switches are aligned with rotating 90 degree, my keycaps fit into these switches a bit tightly.
Well, the main reason was to avoid overlapping of main holes and PCB mounting pins. If we give that up, the switches could be all rotated correctly, I'm just not sure we want that.
So it's not like it's necessary to have them rotated, but it's a matter of deciding which is more important...
           
No problem with Poker stock plastic case but screw hole between Tab and Q may be a bit out of alignment to the left in comparison with Poker? I think the hole of Poker PCB is also not perfect. My suggestion is to change form of the hole to oval like others, in the result you may be able to adjust positon of PCB to various cases even with tiny misalignment.
Maybe that's a good idea... Everyone could just fiddle with the board to get perfect centering, especially with the cases differing from each other a bit.
Circular hole gives you firm mounting but takes the flexibility.
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #41 on: Tue, 08 January 2013, 05:46:10 »
Added "official" firmware snapshot for testing and programming guide to the first and third post.
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard

Offline mashby

  • ** Moderator Emeritus
  • Posts: 2828
  • Location: Nashville, TN
  • What Up Shoney? (ツ)_/¯
    • Mashby
Re: GH60 prototype betatesting
« Reply #42 on: Tue, 08 January 2013, 18:07:03 »
I find this whole project amazing and so grateful that I joined GH when I did so I can watch it all unfold.  :-*

Offline WhiteFireDragon

  • Posts: 2276
    • youtube
Re: GH60 prototype betatesting
« Reply #43 on: Tue, 08 January 2013, 23:56:02 »
After 1 full month in transit and customs, I finally received these and unpackaged the 14 PCBs. The PCBs look very nice overall. The gold pads contrast with the black matte finish really well, especially when it's reflective in the light. I would love to see this color scheme and finish in the final production board as well. One tiny gripe that I have with this is that matte finish tends to scratch easier, and it seems like all of these do have some light scratches right out of the box. Not very visible unless you actually look for the scratches.



I just built two prototype boards, one using all hot air and one was done by hand with an iron just to see if it can be fully built with an iron. Solder paste and hot air was pretty straight forward. Though I did have to manually align the controller and tack down two pins on the opposite sides with an iron first before soldering the rest of the pins with hot air. All other SMD capacitors, resistors, and diodes were done with hot air.

Now the one that I built using an iron took me a while. 166 small pads to solder (not counting any of the tiny pins from the atmega and USB) was really tedious. This board probably isn't a good one to learn SMD soldering by hand if it's your first time. The X1 crystal with 4 pads was almost impossible with just an iron. You can tack down the first pad, but the other 3 pads will nearly be all covered and you won't be able to apply the solder around or underneath. These pads should have been a tiny bit bigger to hand solder. I cheated and ended up using hot air just for the X1 pads. Lots of flux was needed to solder the 44 fine pins from the atmega and 4 USB pins to help prevent solder bridges. The rest of the caps, resistors, and diodes weren't too bad, but just tedious. Lastly, there isn't much room to mess up because these are not the same as desoldering switches. You'll have to desolder 2 pads simultaneously either with 2 irons or hot air. For components with 4 pads or the controller pins, you'd have to use hot air or quikchip with braid if they get misaligned. Pretty much you get one shot to do each component, and I wouldn't have stood a chance if I didn't have a fine chisel tip (<1.4mm) iron and solder wire size 0.020" or smaller.



komar left out soldering steps for a few other components, so here they are:

S0 button

a) add solder to one pad (any pad)
b) put one of the leg right on top of this pad with solder, and melt the solder again with the iron until the leg is flush to the pad. This will tack the button down and prevent it from sliding around.
c) solder the other 3 legs to the pad
d) (optional) reflow that first pad and/or add a little bit more solder so everything looks even and clean.

LED resistor
a) bend the two leads 90° to the appropriate length
b) insert them through the two tiny through-holes, and (optional) bend the leads 45°
c) flip over the board
d) you can either clip off the excess lead and solder, or solder first and clip off the two excess leads. If you clip after soldering, make sure none of the solder is clipped.

Yellow LED

a) You must have the capslock switch soldered on first
b) insert the leads through the switch, into and through the PCB holes corresponding to the capslock
c) make sure you pay attention to the polarity. The longer lead is the positive side.
d) follow steps b - d in the LED resistor steps above.



I'm loading firmware on it now to make sure everything is working....

Offline dirge

  • Posts: 475
  • Location: Newcastle Upon Tyne
Re: GH60 prototype betatesting
« Reply #44 on: Wed, 09 January 2013, 02:24:40 »
Nice write up Whitefiredragon, I only used my iron and did find it quite difficult.  I think the pads on the X1 should be enlarged to allow for soldering stations.
Thinking about things isn't the same as doing things. Otherwise everybody would be in jail.

Offline jdcarpe

  • * Curator
  • Posts: 8852
  • Location: Odessa, TX
  • Live long, and prosper.
Re: GH60 prototype betatesting
« Reply #45 on: Wed, 09 January 2013, 06:37:08 »
Nice write up Whitefiredragon, I only used my iron and did find it quite difficult.  I think the pads on the X1 should be enlarged to allow for soldering stations.

Good point, but shouldn't be necessary with production boards, as all SMD work will be presoldered at the fab.

SMD soldering for GH60 is not relevant because the final production boards will come with SMC presoldered on. The only reason that I have to do the SMD soldering is because these are all prototype boards and it's not cost effective only have a few prototype boards soldered at the factory.
« Last Edit: Wed, 09 January 2013, 07:59:28 by jdcarpe »
KMAC :: LZ-GH :: WASD CODE :: WASD v2 :: GH60 :: Alps64 :: JD45 :: IBM Model M :: IBM 4704 "Pingmaster"

http://jd40.info :: http://jd45.info


in memoriam

"When I was a kid, I used to take things apart and never put them back together."

Offline dirge

  • Posts: 475
  • Location: Newcastle Upon Tyne
Re: GH60 prototype betatesting
« Reply #46 on: Wed, 09 January 2013, 07:19:19 »
Replying like that comes across as impolite jdcarpe.

The X1 is the only component I think I'd have trouble replacing using an iron if it broke.  If the pads were larger with flux and wick may be possible without a gun.  Just depends on whether methods of DIY repair are going to be considered.

If not start the group buy, the board works.
Thinking about things isn't the same as doing things. Otherwise everybody would be in jail.

Offline jdcarpe

  • * Curator
  • Posts: 8852
  • Location: Odessa, TX
  • Live long, and prosper.
GH60 prototype betatesting
« Reply #47 on: Wed, 09 January 2013, 08:01:01 »
Apologies, dirge. Didn't mean to offend. Post edited accordingly.
KMAC :: LZ-GH :: WASD CODE :: WASD v2 :: GH60 :: Alps64 :: JD45 :: IBM Model M :: IBM 4704 "Pingmaster"

http://jd40.info :: http://jd45.info


in memoriam

"When I was a kid, I used to take things apart and never put them back together."

Offline damorgue

  • Posts: 1176
  • Location: Sweden
    • Personal portfolio
Re: GH60 prototype betatesting
« Reply #48 on: Wed, 09 January 2013, 08:36:48 »
To clearify, for the real production run, the things which we have to solder ourselves are the switches and the LEDs, nothing else, correct? I just want to be sure as I don't know if for instance the USB plug is considered to be SMD. Has it been cleared with a fab yet or is it just the plan for now?

Offline komar007

  • Thread Starter
  • Posts: 712
  • Location: Poland
    • komar's blog
Re: GH60 prototype betatesting
« Reply #49 on: Wed, 09 January 2013, 08:40:20 »
To clearify, for the real production run, the things which we have to solder ourselves are the switches and the LEDs, nothing else, correct? I just want to be sure as I don't know if for instance the USB plug is considered to be SMD. Has it been cleared with a fab yet or is it just the plan for now?
The plan is that the buyers have to solder only switches, THT resistor and caps lock LED. I haven't decided for an assembly fab yet, so that's just plans. I'm getting back to the project again today or tomorrow, and I'll be figuring this all out.
GH60 rev. B w/ ali's case|Cherry G80-3000 HFU/05|IBM Model M (51G8572)
Check out the GH60 project! | How to make a keyboard