Carter Temm

KeySoft Emulator

This is a KeySoft Emulator that runs the original KeySoft 9.5 software from a HumanWare BrailleNote Apex on a modern Windows computer. Put another way, it loads the real Windows CE system and KeySoft applications.

Almost everything feels like using the original notetaker, right down to networking, speech, files which save across restarts, and the keyboard window which allows you type in braille.

Listen to a demo (MP3, 11 MB)

Why this exists

The BrailleNote Apex came out in late 2009 and became one of the most common braille notetakers in schools, universities, and workplaces through the 2010s. HumanWare replaced it with the Android based BrailleNote Touch in 2016 and has since ended support for the Apex.

I grew up using the BrailleNote mPower, PK, and later the Apex. The Apex was my computer before I cared about computers, and it is a large part of why I work in technology today. My last unit is stuck in a boot loop at the bottom of a box in my office. I wanted to know how closely I could reproduce its hardware in software.

The answer turned out to be "pretty damn closely."

This is equal parts preservation project, nostalgia trip, and technical rabbit hole. It is free, and I don't accept donations or advertising for it. The project is not affiliated with or endorsed by HumanWare.

The Apex used a Freescale i.MX31 processor and ran Windows CE on a custom board known internally as Everest. KeySoft expects that hardware to be there. Running the applications meant teaching QEMU what an Apex looks like.

The emulator models its flash storage, power management chip, clock, audio interface, keyboard controller, network adapter, memory layout, serial ports, and several other devices. QEMU runs the original ARM kernel while connecting those virtual devices to services on the Windows computer. A firmware extractor rebuilds the Windows CE files and executable modules from an official KeySoft update image.

Persistent virtual flash chips hold KeySoft settings and user files between runs. Audio from the emulated hardware goes to your normal Windows sound device. Networking is translated through the host, including access to KeySoft's Telnet service for anybody who wants to poke around further.

You don't need to understand any of that nerdy stuff to use it. The downloadable version is portable and includes the custom QEMU build, keyboard tool, firmware extractor, and startup program.

Bring your own KeySoft update

The repository and downloads do not contain KeySoft, its ROM, or any other HumanWare firmware. You need a legally obtained KeySoft 9.5.0 or 9.5.1 update file. The public 9.5.0 update can still be found through an archived copy of HumanWare's support site. Version 9.5.1 also works if you already have it. I have linked to the file on the internet archive in the readme on GitHub. It will stay that way until I am told that I shouldn't link to something that was once hosted publicly.

The first time the emulator starts, it finds the update file, verifies it, extracts the firmware, creates the virtual storage, then opens the braille keyboard window. Later starts reuse that storage, much like turning the original Apex off and back on.

Getting started

  1. Download the latest portable zip and unpack it into its own folder.
  2. Put a supported KeySoft 9.5 update file in that folder.
  3. Run start-emu.exe.

F, D, and S act as braille dots 1, 2, and 3. J, K, and L are dots 4, 5, and 6. Space is the braille space bar, while F12 behaves like the Apex power switch. The keyboard supports full chords and has alternatives for PC keyboards that can't detect every key in a seven key combination.

The GitHub README lists the supported firmware files and hashes, the complete keyboard layout, safe shutdown instructions, and build steps for anyone interested in the emulation work.