Omnikey Ultra Gen4 - programming software? Way to reset?

Cattlesquat

16 Oct 2023, 22:21

Hi All,

I have a Northgate Omnikey Ultra "Gen 4" keyboard that is notionally programmable. However it has either been "misprogrammed" or else the chip is dead/semi-dead, meaning various silly things like "D key makes an S, G key makes an E, R key makes "Up", etc, etc.

My questions are:
(1) Does anyone have a link or copy of programming software that will work with Windows 7+? (I found a dead link out there somewhere, but so far haven't found a live one)
(2) Does anyone know a way to at least "factory reset" the Gen4?

Thanks,

Brian

User avatar
engr

17 Oct 2023, 00:22

The keyboard shortcuts for reset, etc. should be the same as for Avant Stellar (Press and hold the <Escape> key while turning on your system to do a factory reset). You can try this software if the link still works (I haven't tried it personally). Most likely the ROM chip has gone bad and you will have to desolder it; the keyboard will still work but will not be programmable. Bob Tibbetts used to remove them from all Ultra/Stellar boards he repaired because they are so prone to going bad.

Cattlesquat

17 Oct 2023, 04:04

Thanks - it's funny you mention Bob because I got this keyboard from him years ago. I suppose possibly before he started doing that by default.

Cattlesquat

17 Oct 2023, 04:10

Oh and alas, the software link is indeed dead -- that's the dead link I had found as well.

HOWEVER, I was able to get to the file successfully by going to the directory: https://www.lexitec.fi/xywrite/

kb_nerd

13 Nov 2023, 08:48

The software from the link in your last post is spot-on for Avant keyboards (Stellar, Prime). But, I never got the Avant software to work on any Omnikey keyboards.

This year I worked on a project to get some software running on newer Windows versions to program the Avant keyboards, and I got it running, with some limitations. I'll post the source code and documentation somewhere, when I get time.

As part of that, I did some tests by sending programming bytes to an Omnikey Ultra, and it seemed to respond to some commands but not in the same ways as the Avants. This led me to think the Ultras were in fact programmable somehow...

Just now I ran across this, which is the most complete Omnikey manual I think I've seen:

https://sandy55.telcontar.net/Omnikey_Ultra_102.pdf

It mentions a 'kbutil.exe' program (for DOS, I imagine). But, I couldn't find that anywhere online. I've owned Omnikeys and Avants since the early 90s and I don't remember ever seeing that utility myself. I wonder if someone on the forums has a copy?

I opened up my Ultra and it has an SCN8032 controller, which from what I can tell, is a ROM-less controller. Then it has a 27C64 ROM chip, so that must contain the firmware, but it's only UV-eraseable and so won't hold any programming info.

Based on that, if you pull the ROM chip or unsolder it (mine is in a socket), I wouldn't expect the keyboard to work at all. But I guess you could try it. Another thought might be to burn a new ROM -- there are firmware images I've seen on the web, for various Northgate models. (There are none for the Avants because they use a microcontroller with an on-board flash memory that's read-locked...)

So, getting back to your questions: I still don't know how you can program (or factory-reset) an Ultra through software, or what aspects of it are programmable. It doesn't appear to me that it can retain the programming after being powered off, although the above manual suggests it can.

Have you looked at the DIP switches in the back? At first I thought you might have it set to a Dvorak layout, but that doesn't match with your description.

Other than that... maybe check for shorts or wiring problems in the keyboard matrix? Based on the wrong keystrokes you mentioned, only S/D seem to be in the same row (going by the schematic in the above manual), so that's probably not it... but worth a check?

HTH,

-Paul

User avatar
Polecat

13 Nov 2023, 18:16

I just saw this thread; I've been out of town for a couple weeks. This sounds like a classic case of the EEPROM chip going bad. Removing that chip (the 8 pin 24C16, which is an EEPROM, not a flash chip) is the "sure thing" fix, but that kills the ability of the keyboard to have its keys reassigned by its internal programming routine. That's the closest thing to a factory reset you can do if holding Esc when booting doesn't clear the problem.

The KBUTIL file mentioned in the User's Guide was for earlier models, specifically the Gen2 and Gen3 with dipswitches on the back or under the badge. That file self-extracted and created a program that saved and loaded settings from your hard drive to the keyboard for "14 features" when the computer was booted (in DOS). There is no ability to save settings in the keyboard on Gen2 or Gen3 models like there is on the Gen4. I probably still have a copy of that utility, but it only worked in DOS, and only on the Gen2 or Gen3 models. Those were not true programmable keyboards in the sense that they could save settings internally. Only the Gen4 "P" (Programmable) suffix Northgates (101P, 102P, Ultra-TP) had that capability.

The "14 features" (that number may vary by keyboard and User Guide version) that could be saved on your hard drive by the DOS utility were those mentioned in the book. Typematic rate, function key modifiers, sticky keys, and layout options.

kb_nerd

16 Nov 2023, 00:55

Ok, after reading up on a bunch more of your (Polecat's) posts on these keyboards, I've learned a lot more and I think your assessment is correct.

My Ultra is a Gen2b, has a discrete ROM chip as I mentioned, and no SPI/flash chip, so it's not programmable.

I have a 102 which is a Gen3, with no discrete ROM chip -- it has an 8052B which has a built-in 8KB ROM, also no SPI flash chip, and so is also not programmable.

The OP's Gen4 should be programmable; what I'm curious about is, is its programming protocol the same as on the Avants? In other words, would the CVT/Avant software work for programming it? If so, then my software ought to work on it too...

Using the old Avant software is a pain on modern Windows versions... it doesn't seem to work directly from a VMWare Workstation VM, because VMWare emulates only the basic keyboard 'echo' (0xEE) command but won't pass other commands or responses through, to/from the keyboard.

I recommend running the Win2K/XP version of Avant's software (Avant.exe) to edit the .kbd file -- that runs on Win7, 32-bit or 64-bit, and should also work on Win10/11; then use the DOS USB stick method to run AVANTDWN to push the programming out to the keyboard.

Note this also requires an actual PS/2 port -- none of this works on any USB converter I'm aware of, since those don't have the ability to pass raw bytes between host software and the keyboard. That's another project I want to work on when I get time.

It sounds like the KBUTIL program was meant to run from a DOS autoexec.bat to set up the keyboard as the computer was booting up... but if that wasn't intended for Gen4 boards, I wonder what software they actually provided for those boards?

It seems there was an evolution of the programming capabilities of these boards around the time of the transition from Northgate to CVT... I wasn't aware of it back then -- I always thought the Avants were the first programmable ones. But they were obviously working on it before then...

User avatar
engr

16 Nov 2023, 02:25

I have successfully transplanted an EEPROM chip from Avant Prime into Avant Stellar (or was it the other way around?), and both functioned OK in terms of programmability. However, when I tried transplanting these chips into Northgate-branded Ultra-TP or 101P, the programmability did not work.

That implies that there have been some differences between Northgate-branded Gen4 boards (Ultra-TP, 101P) and CVT boards in terms of programmability.

User avatar
Polecat

16 Nov 2023, 03:36

kb_nerd wrote:
16 Nov 2023, 00:55

The OP's Gen4 should be programmable; what I'm curious about is, is its programming protocol the same as on the Avants? In other words, would the CVT/Avant software work for programming it? If so, then my software ought to work on it too...

Using the old Avant software is a pain on modern Windows versions... it doesn't seem to work directly from a VMWare Workstation VM, because VMWare emulates only the basic keyboard 'echo' (0xEE) command but won't pass other commands or responses through, to/from the keyboard.

I recommend running the Win2K/XP version of Avant's software (Avant.exe) to edit the .kbd file -- that runs on Win7, 32-bit or 64-bit, and should also work on Win10/11; then use the DOS USB stick method to run AVANTDWN to push the programming out to the keyboard.

Note this also requires an actual PS/2 port -- none of this works on any USB converter I'm aware of, since those don't have the ability to pass raw bytes between host software and the keyboard. That's another project I want to work on when I get time.

It sounds like the KBUTIL program was meant to run from a DOS autoexec.bat to set up the keyboard as the computer was booting up... but if that wasn't intended for Gen4 boards, I wonder what software they actually provided for those boards?

It seems there was an evolution of the programming capabilities of these boards around the time of the transition from Northgate to CVT... I wasn't aware of it back then -- I always thought the Avants were the first programmable ones. But they were obviously working on it before then...
I appreciate all the good info you've put together here. That expands on the little bit I had figured out, and it all sounds right to me.

Regarding the Avants being different than the Gen4 Northgates I believe engr has established that to be true. There are, or were bits and pieces online, mostly in old posts by Bill Ingold, who was Northgate's Director of Keyboard Engineering. Unfortunately Mr. Ingold is no longer with us, and some of the online stuff that used to be there is gone now.

The Gen4 Northgates are relatively rare, but I keep hoping someone here will find one "in the box" and share the software and documentation with us. I only own one Gen4 keyboard myself, and it's a (black) Avant Stellar. I'd like to compare the PC board on a Gen4 Northgate to the Avant, but so far I haven't seen a photo of the board on a Gen4.

User avatar
funkmon

16 Nov 2023, 04:48

I didn't even know they were rare. I have a Gen 4 Omnikey with no dip switches and I was like "what the heck is this?" I got it for like 50 bucks. I couldn't figure out how it worked or how to program it, and I'm, to an extent, glad I'm not the only one.

I pulled it out literally last night and went to hit a dip switch and I was like "oh yeah." How rare are they? Should I flip mine on the eBay?

kb_nerd

18 Nov 2023, 21:29

That's very interesting info...

engr - when you took the chips from the Prime/Stellar and tried putting them into the Northgate-branded keyboards, do you mean the 40-pin controller chip or the 8-pin memory chip, or both?

When you did that, did the Northgate keyboards work normally except for not being able to program them through software?

You probably already know this, but on my Avants, the 40-pin controller is an Atmel 89C52 (one's a 20MHz from 1998 and another is a 24MHz from 2006), which has 8KB of flash built in -- at least according to Atmel's current specs, although maybe it was EEPROM back when it was built? I'm going by this, for example:

https://www.mouser.com/datasheet/2/268/ ... 180666.pdf

That on-board 8KB memory stores the firmware for the keyboard, but on mine it was read-locked and so I couldn't read it to see what else might be in there in terms of programming capabilities or anything else.

Then, the 8-pin chip is a 24C16 as Polecat said, an EEPROM, which holds the keyboard's programming info -- key mappings, macros, repeat rate, validation time, comma/period lock and a few others. It sounds like the original ones were EEPROMs which had a limit of maybe 1000 write cycles? Now, there are flash-based replacements which should drop right in and last essentially forever; e.g.:

https://www.farnell.com/datasheets/305352.pdf

So, this all makes me wonder a few more things:

- What chips do the Northgate-branded Gen4s use? In particular, do they use a controller chip that's not read-locked, so that the firmware could be read out?

- Does anyone have software for the Northgate-branded Gen4s? Reverse-engineering that, if feasible, could reveal the programming protocol used on those boards.

To learn the Avant protocol, I approached it from a number of different angles: trying to RE the various versions of Avant's software for DOS, Win9x and Win2K/XP (ultimately it was the Win9x version that provided what was needed); reading the 8-pin chip after programming it in different ways; and deciphering the .kbd file format.

If we can come up with a copy of the original software for the Northgate-branded ones, and/or someone could read the firmware and EEPROM data off a Northgate-branded Gen4, then any or all of that could inform us about the differences between it and the Avant models... then maybe my code could be tweaked to support programming the Northgate ones in addition to the Avants...

User avatar
engr

19 Nov 2023, 02:48

kb_nerd wrote:
18 Nov 2023, 21:29
engr - when you took the chips from the Prime/Stellar and tried putting them into the Northgate-branded keyboards, do you mean the 40-pin controller chip or the 8-pin memory chip, or both?
When you did that, did the Northgate keyboards work normally except for not being able to program them through software?
I transplanted the 8-pin memory chips. I haven't tried the controller chips.
Correct, the keyboards worked as if the chip was completely removed, i.e. they could not be programmed via key combinations. I have never tried programming them through software.
If we can come up with a copy of the original software for the Northgate-branded ones, and/or someone could read the firmware and EEPROM data off a Northgate-branded Gen4, then any or all of that could inform us about the differences between it and the Avant models... then maybe my code could be tweaked to support programming the Northgate ones in addition to the Avants...
You may want to check with @hellothere, he was working on something along those lines.

User avatar
Polecat

19 Nov 2023, 03:37

Just an aside--I searched again and came up with a Geekhack build log which shows a couple photos of a Northgate Gen4 PC board:

https://geekhack.org/index.php?topic=95097.0

It appears the controller is an 80C52. The PC board is markedly different than the one in my Avant Stellar.

kb_nerd

19 Nov 2023, 09:25

Thanks, that's some more good info... aside from @hellothere's ROM dumps (which I think are for Gen1 or Gen2 models?), there are some here too, which you may already know about:

http://bitsavers.org/pdf/northgate/omnikey/firmware/

At some point I'll see if I can set up an 8051 SDK and try to figure out what programmability is in those versions...

Re. @applehugger's 101P - that's cool, I hadn't seen one of those before... and, both sides of the PCB look completely identical to my Avants -- at least I couldn't spot any real differences in the chips, component layout or matrix traces on the bottom.

So Polecat, those are different from your Stellar? Now I'm curious what you've got & how it's different...

Also, the 80C52 in the one in those photos, also has a program-lock capability plus encryption, so it might not be possible to read the firmware from that either.

I had read that you can pull one of these chips and send it to a company in China that will break the chip apart and go in with some kind of tools to read the ROM data from it... it destroys the chip, but then you can in theory burn a new one, modify the code, etc. I don't think I'm willing to go that far with any of my boards though :)

Somewhat related to all this, I'm trying to figure out where to upload all the info and code I have for these keyboards and their hardware, firmware and software... it's way too long for a forum post, probably, but I could put it on the wiki here? Source code too, or maybe put that on github? Any suggestions / guidance?

User avatar
Polecat

19 Nov 2023, 14:22

There were at least two different versions of the Avant PC boards. Probably the easiest way to tell them apart is the LED window in the up-arrow keycap. One version has the window towards the upper part of the cap, the other towards the lower. I can take some photos of the board in my Avant for comparison.

Edit: My Avant (black) has the up arrow LED on the bottom. No provision on the PC board to mount it the other way around. The controller is an Atmel AT89C52. The EEPROM is an RIC 24C16.

User avatar
dotdash

20 Nov 2023, 15:58

kb_nerd wrote:
19 Nov 2023, 09:25
I had read that you can pull one of these chips and send it to a company in China that will break the chip apart and go in with some kind of tools to read the ROM data from it... it destroys the chip, but then you can in theory burn a new one, modify the code, etc. I don't think I'm willing to go that far with any of my boards though :)
There are groups that do this to preserve old arcade games. You might be able to find someone in the emulation community that would be helpful. Here is a page with some great descriptions of the process https://team-europe.blogspot.com/

kb_nerd

21 Nov 2023, 07:58

That's cool... I wouldn't have thought to attempt to take apart one of those chips myself, but I guess it's possible...

I feel like long-term though, since PS/2 ports are already effectively dinosaurs, the best solution for these keyboards is going to be to come up with a PS2-to-USB adapter that includes a capability to send/receive raw bytes to/from the keyboard under software control, so it can be programmed through software; or, to devise a new set of firmware for the 89C52 that's capable of being programmed in some other way.

Polecat, that's interesting, and it kind of sounds like the keyboards with the LED in the upper position are programmable with Avant's software, but the ones with it in the lower position are not, because they use some different programming protocol and software?

As far as resurrecting the EEPROM if it dies: I did a test on my Stellar and pulled the FM24C16 chip (I already had it in a socket for experimenting) and erased it with all FF's (which I think is how they come brand-new?) I put it back in the keyboard and when I powered it up, it blinked all the LEDs about 4-5 times and then it reset itself to the factory keyboard layout. It worked fine, and I was able to reprogram the layout and settings with my software, and that worked fine too.

So, this gives me hope that a replacement 24C16 chip can work in these (at least the Avants). I don't know why the Northgate-branded ones wouldn't work the same way.

I started a wiki page for the Stellar; it's pretty basic and needs photos and a sidebar and more... but hopefully I didn't make any egregious mistakes yet :)

wiki/CVT_Avant_Stellar

User avatar
Polecat

22 Nov 2023, 05:14

kb_nerd wrote:
21 Nov 2023, 07:58
That's cool... I wouldn't have thought to attempt to take apart one of those chips myself, but I guess it's possible...

I feel like long-term though, since PS/2 ports are already effectively dinosaurs, the best solution for these keyboards is going to be to come up with a PS2-to-USB adapter that includes a capability to send/receive raw bytes to/from the keyboard under software control, so it can be programmed through software; or, to devise a new set of firmware for the 89C52 that's capable of being programmed in some other way.

Polecat, that's interesting, and it kind of sounds like the keyboards with the LED in the upper position are programmable with Avant's software, but the ones with it in the lower position are not, because they use some different programming protocol and software?

As far as resurrecting the EEPROM if it dies: I did a test on my Stellar and pulled the FM24C16 chip (I already had it in a socket for experimenting) and erased it with all FF's (which I think is how they come brand-new?) I put it back in the keyboard and when I powered it up, it blinked all the LEDs about 4-5 times and then it reset itself to the factory keyboard layout. It worked fine, and I was able to reprogram the layout and settings with my software, and that worked fine too.

So, this gives me hope that a replacement 24C16 chip can work in these (at least the Avants). I don't know why the Northgate-branded ones wouldn't work the same way.

I started a wiki page for the Stellar; it's pretty basic and needs photos and a sidebar and more... but hopefully I didn't make any egregious mistakes yet :)

wiki/CVT_Avant_Stellar
I'm very happy to see someone taking this several levels beyond my own abilities. Everything, including the wiki page, rings true to me.

For what it's worth all the programmable Northgates and Avants I've documented say "Rev. 1.0" on the label.

One of the previous comments was something to the effect of "only Bill Ingold can program the EEPROMs", so perhaps there's a password or back door to get in and mess with things? If true that's probably the earlier Northgates, since the Avant worked with an erased chip.
Last edited by Polecat on 23 Nov 2023, 03:32, edited 1 time in total.

User avatar
engr

23 Nov 2023, 00:35

Interesting. At one point I tried putting a blank 24C16 chip into one of my Gen4 keyboards (can't remember which one though) and it didn't work. Maybe it wasn't formatted/erased correctly? At one point I emailed Michael Lueck (who used to repair Omnikeys before Bob Tibbetts) and he said that the chip would have to be programmed in a specific way.

Post Reply

Return to “Keyboards”