NerD60 - TMK Conversion / It works !!!

mohitgarg

18 May 2016, 11:08

Yeah, it's working!

I'd like to add support for it to Easy AVR. If you don't mind, will you test it out please, once I have the configuration file ready for it?

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 11:23

mohitgarg wrote: Yeah, it's working!

I'd like to add support for it to Easy AVR. If you don't mind, will you test it out please, once I have the configuration file ready for it?
I could test it, but please add also a reset to bootloader shortcut because I'd hate to open up the board again just to reset it :)
I have no experience with Easy AVR, the fact that is a GUI and runs on windows put me of, but I know a lot of people fancy that tool and it would a very nice addition, it would be a shame no to document this experiment all the way :)

mohitgarg

18 May 2016, 12:33

Easy AVR has the option to map a key to reset to bootloader. In fact when building your firmware or uploading to device, it will throw a warning if it doesn't find a bootloader key on any of the layers.

THe source code for ti has now been made available on GitHub and can be compiled on any OS, you jsut need python installed, no need for AVR toolchain.

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 13:38

Good to know :) When you have the config ready I will give it a try.
I have found the time to write an article on Wiki here is the link wiki/Converting_NerD60_to_TMK
It's still a work in progress, I have to add one or two things but I wanted to do it now so I don't forget some important things.
A word of warning, do it on your own risk, don't blame me :P I can try and help you if you have problems but if you brake the board it's your own fault :)

User avatar
Stabilized

18 May 2016, 13:56

Thanks so much for the wiki, was keeping track of the thread and for a time I was really put off with your problems with the fuses, etc.
Nice to know it works now though, will definitely try this!
Also cool to know that the LEDs work, is there any modes for them? I have never used TMK so I have no idea what it's support for stuff like this is.

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 14:22

Thanks :) With the wiki I wanted others to have more info than the one I had when I started this project, which was pretty much zero :(
On the LED's I can't say much, so far what I have figured out is that you can turn them on and off. Fancy things like breathing light or something like that ... I don't have a clue. I have to take a look at the code and see what are the options, I think someone with programming skills could add really cool features, I'm not that good.

User avatar
Stabilized

18 May 2016, 14:35

Cool, it's not a big deal about the LEDs, on and off is pretty much all I use on a day-to-day basis anyway.
I have gone ahead and ordered a usb avr programmer, really looking forward to trying this and hopefully I will have a working keyboard in mac (at last).

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 14:57

From what I can say, the keyboard works way better with TMK so I think also the MAC problem will be solved. I don't have a MAC to test with but under Linux and Windows all the problems are gone.
I have updated the wiki page and now the guide should be complete, I will read it once more tomorrow and see if I have missed something. I hope it will help others and that what I have written is detailed enough.
If you are going to do this too take your time, get to know the tools until you feel comfortable with them, don't improvise, use proper tools and if something doesn't work take a break, leave the project a day or two to rest, you will see things in another perspective, and never lose sleep on a piece of hardware is not worth it :D
I hope more people will experiment and we can bring new features to this keyboard because it is worth the effort :)

mohitgarg

18 May 2016, 15:18

About the LED effects, AFAIK TMK doesn't have those fancy LED modes, simple on/off.

The guys working on QMK have started pushing commits to GitHub for breathing effects.

(BTW Easy AVR has a few LED effects)

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 15:38

I think the main problem was how to flash a new bootloader and have a working board. Now we are free to use any open firmware. I don't care about LED's, sometimes backlight come is handy, breathing lights and stuff like that are for kids, I'm getting too old for that. That's why a "vanilla" firmware like TMK is perfect for me :)
But I really encourage people to test and share their results and document :) I'm happy xauser shared his work, without him we wouldn't have NerD support in TMK.

User avatar
ramnes
ПБТ НАВСЕГДА

18 May 2016, 15:53

Awesome wiki article DanielT! Thanks a bunch.

Is that manipulation supposed to work with any ATmega32a based PCB?

mohitgarg

18 May 2016, 16:06

DanielT wrote: I think the main problem was how to flash a new bootloader and have a working board.
This. The main problem with the stock setup from GON is that it locks your device to use his firmware until some reverse engineers the protocol or something. With the stock Atmel DFU installed and fuses set to something meaningful, the users can now do whatever they want.

ramnes wrote: Awesome wiki article DanielT! Thanks a bunch.
Is that manipulation supposed to work with any ATmega32a based PCB?
GON's board are all ATmega32U4, not ATmega32A unlike most other Korean boards and more like the custom boards made in the western world.

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 16:27

Yep, that was the whole point of this project, to make a great piece of hardware to accept open firmware. The quality of GON PCB's is excellent, with support for most common layouts and now people can make full use of this.

@ramnes: the procedure can be used for any AVR controller, but it must be supported also by the firmware you plan to use and if the MCU is supported but no one has written the firmware code for that keyboard you have to write your own code. That is not that easy, GON has made public the matrix of the PCB and some schematics (not the full monty but at least enough to make the work easier), for other PCB's you will have to reverse engineer the matrix and otjer bits and pieces.

The board I have converted is a v.1.6 I have also a v.2.0 and I have to test also on that one. I will take it easy because that is a board I REALLY don't want to break!
Anyway, now I'm more comfortable about this, I have the tools and some experience and it was fun :) I think the whole project took around 6 months with a lot of breaks (work, life ...) can't believe I'm typing on this board right now :)

User avatar
Wodan
ISO Advocate

18 May 2016, 16:27

Atmega32A is not supported by TMK. Unlike the Atmega32u4, the Atmega32a does not include native USB functionality and needs a library for USB communication.

DanielT: Epic article, that's that makes this community great!

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 16:41

Thanks :) I thought it would have been a shame not to share this work. I believe that if you share information more people can contribute to that project without loosing time to discover the things you already know.
I believe now more people can contribute to TMK/QMK/Easy AVR in order to add more features to these boards.
In the TMK code also the NerD80 (TKL) is supported and the same procedure can be used, it's not only NerD60.

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 17:03

Just had a look at the TMK code for backlight and there is support for both Switch LED's and PCB(underlight I think) LED's .
So it's just a matter of adding an extra function in the example on Wiki (I don't have that on my keyboard so I can't test) :

Code: Select all

 [2] = ACTION_BACKLIGHT_LEVEL(BACKLIGHT_PCB)
On a side note, maybe someone who has a GitHub account can make a push request and make updates to the TMK code with a link to the Wiki and maybe the alternate keymaps , I think this would be useful to people who are not active on DT.

User avatar
Stabilized

18 May 2016, 19:04

DanielT wrote: If you are going to do this too take your time, get to know the tools until you feel comfortable with them, don't improvise, use proper tools and if something doesn't work take a break, leave the project a day or two to rest, you will see things in another perspective, and never lose sleep on a piece of hardware is not worth it :D
I hope more people will experiment and we can bring new features to this keyboard because it is worth the effort :)
This is great advice, and can be applied to a great number of things.
DanielT wrote: Just had a look at the TMK code for backlight and there is support for both Switch LED's and PCB(underlight I think) LED's .
That is exactly what I am looking for really, I have ordered some SMD LEDs and are planning to have both PCB LEDs on both the top and bottom.

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 19:41

Cool, I'm curious to see how it works also with underlight. I will take a look at the code and see if you can play also with the levels/intensity of the LED's.

User avatar
flabbergast

18 May 2016, 20:12

Nice writeup! I'm glad it worked in the end.
One thing that I'd say may work if the programmer is too fast and doesn't have a 'slow clock' jumper (I don't think I've seen any other ISP with a jumper like this other than the official USBASP), is to use '-B 10' or '-B 50' parameter to avrdude. {If you have a chance to try it at some point, I'd like to know one way or the other.}
BTW there are quite a few nicely done AVR ISP programmers, e.g. usbtiny based, by SparkFun, Adafruit, and lots of homebrew ones on tindie.

xauser

18 May 2016, 20:42

Congratulations DanielT!

Happy to see you've made it. You'll find the latest sources of the tmk nerd sources at this location Repo. hasu's nerd sources are a bit outdated. I worked on some bug reports (missing keys) that were reported by users. Hasu won't accept pull requests that target the nerd subtree. So send your pull requests to my repo, if you have any changes.

Have fun with your *new* board ;)

User avatar
DanielT
Un petit village gaulois d'Armorique…

18 May 2016, 21:14

@flabbergast: Thanks :) you helped a lot! I will try that setting when I start working on the other board. I saw that there are tons of ISP programmers out there, but I liked USBasp, don't know why I was atracted by the design.

@xauser: I will have a look at your repo, I'm curious about the changes , thanks for the info :) I remember when we first talked almost 1 year and a half ago when you asked me what controller has the NerD60 board and you wanted to put TMK on it, back then I thought "why ?!" Now I know why :)

User avatar
DanielT
Un petit village gaulois d'Armorique…

27 May 2016, 10:05

A quick update. Today I was able to test the procedure also on NerD60 PCB v2.1 and it works, I'm typing on it right now :) Will update also the wiki.

User avatar
dorf

29 May 2016, 19:23

I was quite disturbed to find this thread. I've just ordered, and hopefully soon it will arrive, a Gon NerD 60 from LeandreN's group buy. From what I've read Gon's work is outstanding and people are very satisfied with his work. His NerDy GUI has been well spoken of. Apparently he's drowned in orders and working his way back so working on programming bugs I would imagine is not his priority at the moment.
From your experience you can see a number of problems with his current firmware, two that I really see as a problem. I do set up a lot of computers and working/updating BIOS is something I do a lot. So a NerD 60 doesn't work in BIOS? What does Gon himself say about this?
Next, issues on mac. At home I have a mac, professionally I work with programs that require windows so at home I like to relax. What's up with this? Any comments from Gon?

You seem to have put a lot of work in to this. And working towards open source is always appreciated, I can only say thank you. After reading this thread it seems like I'm putting TMK on my NerD as well. Already ordered the USBasp.

User avatar
DanielT
Un petit village gaulois d'Armorique…

30 May 2016, 09:58

@dorf: don't take it so seriously :) In my opinion NerD60 is the best 60% PCB on the market at this moment, the issues with the firmware are not something that big, most users are not bothered by this otherwise we would see a lot of complains.
Back in the time when GON was more active I have talked with him about some of the issues, some have been addressed some are still there, I guess he just doesn't have the time to take care of it.
The NerDY GUI is very good but has the huge downside that it works only on Windows and needs also .Net , I have tried to make it work on Linux and MAC with no results.

My advice for anyone who owns a GON keyboard is to first give a try to the original firmware, if you are not pleased that you have also other options. I have used my NerD60 boards for almost 2 years with the original firmware, for me it wasn't the best choice so I have decided to make this conversion. Don't do it because you have read it on a forum, do it because you feel it's the best option for you.
I have written the procedure in order to give a well documented option for people who feel they need something else, if you are pleased with the original FW there is no reason to do it (you have to consider that you loose official support, not that there is a lot of this but anyway, also TMK does not support yet pulsating/breathing lights ).

For me this project was a lot of fun and was something I really felt I needed to do and I'm happy with it.
Just for the record ,I own 4 NerD60 boards (different revisions and editions ), and never regretted buying any of them, these are my best keyboards and if someone would ask me which 60% PCB to buy it would be NerD60 :)
Last edited by DanielT on 30 May 2016, 13:37, edited 1 time in total.

User avatar
dorf

30 May 2016, 13:07

Ok, thanks. I will try it out and if I find that it's not working for me I will convert to TMK.

User avatar
DanielT
Un petit village gaulois d'Armorique…

30 May 2016, 18:08

dorf wrote: Ok, thanks. I will try it out and if I find that it's not working for me I will convert to TMK.
That's the best way to do it and you know what your options are.
Anyway you won't be disappointed with the board, it's very nice :)

User avatar
Stabilized

07 Jun 2016, 18:05

Just finished with my conversion using your tutorial, now the keyboard works great! None of the lag in Mac like I had before :D

I did start out the whole process on a Mac and kept getting errors with the verification stage when using avrdude to write the bootloader. This meant that the fuses were all set weird after the installation. This was the output:
Spoiler:

Code: Select all

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x7000
         0x00 != 0x0c
avrdude: verification error; content mismatch

avrdude: safemode: lfuse changed! Was df, and is now fe
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: hfuse changed! Was d8, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: efuse changed! Was c3, and is now fe
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: Fuses OK (E:C3, H:D8, L:DF)
If I chose to change the fuses back it would just hang forever. Because of this when you plugged it in through USB the keyboard wouldn't always be in DFU mode. I used the bootloader from Atmel and used CrossPack to install the AVR utilities.
Consequently, I swapped over to Ubuntu and everything worked absolutely fine! Make of that what you will, but being on Mac OS X 10.11 seemed to make the whole process more complicated.

Also, the underglow lights work with the supplied extra function command. Wish there was brightness controls though, as mine are very bright as they are.

User avatar
DanielT
Un petit village gaulois d'Armorique…

07 Jun 2016, 18:23

Cool :) I don't have underlight, yet :D, so I wasn't able to test that part. Also it is really great that the whole lag thing on Mac is gone, it was a shame for such a great board and not being able to use it.
Considering that the bootloader thing is a one time job it not such a big deal the fact that it doesn't work as it should on Mac, from what I have read more people were complaining about that.

I will try and play with QMK firmware, they have more features implemented for light controll, and I think it's worth the effort.

User avatar
kekstee

09 Jun 2016, 01:49

Hah, I investigated into this topic a little bit last year as well but quickly gave up since I had other boards to play with and avoided actual bugs somehow. Only really missed lock layer modifiers (which seem to work as I'd like with TMK on a GH60) and configuration from Linux so far.

Thank you and flabbergast for digging into this, I will definately switch to TMK :)

axtran

19 Jun 2016, 05:44

Stabilized wrote: Just finished with my conversion using your tutorial, now the keyboard works great! None of the lag in Mac like I had before :D

I did start out the whole process on a Mac and kept getting errors with the verification stage when using avrdude to write the bootloader. This meant that the fuses were all set weird after the installation. This was the output:
Spoiler:

Code: Select all

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x7000
         0x00 != 0x0c
avrdude: verification error; content mismatch

avrdude: safemode: lfuse changed! Was df, and is now fe
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: hfuse changed! Was d8, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: efuse changed! Was c3, and is now fe
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: Fuses OK (E:C3, H:D8, L:DF)
If I chose to change the fuses back it would just hang forever. Because of this when you plugged it in through USB the keyboard wouldn't always be in DFU mode. I used the bootloader from Atmel and used CrossPack to install the AVR utilities.
Consequently, I swapped over to Ubuntu and everything worked absolutely fine! Make of that what you will, but being on Mac OS X 10.11 seemed to make the whole process more complicated.

Also, the underglow lights work with the supplied extra function command. Wish there was brightness controls though, as mine are very bright as they are.
Did you get underglow working? Could you share your changes to make the controls for it?

Post Reply

Return to “Workshop”