Elchinator / pixabay.com

Open Source Software

Having made a living from managing commercial projects in the embedded world, someday I got involved in several open source software projects. What a different world it is to develop software without time and budget constraints imposed by customers and managers, who may not always understand, what you are doing, but know that it will take too long and cost too much . . .

I enjoyed these projects because they allowed and allow me to learn new technologies and development methodologies. And of course, to keep my confidence that I can not only teach students and consult others, but also get some real work done . . .

However, even if they don't pay you for your work, users of open software can still have demanding requirements and urge you to support them . . . So, after nearly 20 years and more than 300,000 downloads, I finally decided that life is too short to continue maintaining these open software projects and answering all these "how do I . . ." questions and new feature requests.

Thanks to all the users of my software packages and their feedback! Even more thanks to all those out there, who spend a lot of time and effort to provide all these valuable open source packages that we all use ...

Some of my open-source projects were:

Linux Kernel Module AZTCD for CDROM Drives

My first open-source project was a Linux kernel driver for a CDROM drive. Back in 1994 when I tried to install the 0.9.x (!) version of Linux on my PC I discovered that my CDROM drive was not supported. In the first half of the 1990s, CDROM drives used proprietary hardware and software. Guided by E. Mönkeberg (GWDG) I wrote aztcd.c, which Linus Torvalds himself approved to integrate into the Linux kernel. After several more years of development, my software supported my Aztech drive and those from Orchid, Okano, Wearnes, TXC and CyCDROM. Fortunately, by the end of the 1990s, the CDROM drive industry stopped using proprietary solutions and moved on to standardized, hard disk-compatible interfaces. Today, CDROM/DVDs can be considered completely outdated. Thus, aztcd.c was no longer needed and now peacefully rests in the graveyards of ftp.kernel.org.


The LTOOLS are a set of programs to read and write Linux Extended filesystem partitions from within Windows without booting into Linux. They were one of the first tools to enable interoperability between Windows and Linux. The LTOOLS started as a bundle of command line tools and were extended by Java, a .NET and web browser-based Graphical User Interfaces. A server component even allowed remote access. The LTOOLS were featured in the Linux Journal, in the Linux User magazine, and here.

IOlib for Matlab/Simulink and CrackNT

The IOlib library allows access to ports, kernel memory, timers and interrupts to control lab hardware and implement soft real-time applications in Matlab/Simulink. I also had to develop the Windows kernel driver crackNT.sys, as the Windows operating system restricts such functions in user mode to a large extent. Fortunately, newer Matlab/Simulink releases provide similar functions out of the box or via a toolbox (although not for free ...), so IOlib no longer is required. 

Real-time OS HEOsek

To support lab experiments, I developed a real-time operating system HEOsek, which uses a subset of the OSEK/OS and AUTOSAR OS application programming interface. Besides a port for Freescale's HCS12 microcontrollers and the Dragon12 evaluation board, a Windows and a Linux version were developed to enable more flexible debugging of applications than what an embedded microcontroller environment would provide. Additionally, a Hardware Abstraction Library HAL12 for the HCS12 was implemented. HEOsek benefited from experience from my previous Windows and Linux ports of uCOS-II.

Windows Class Library ZWinLib

As I frequently needed small tools for my students' lab projects and didn't like solutions like MFC, wxWidgets or gtk available at the time, I developed a set of lightweight class libraries for the Windows WIN32 API. ZWinLib allows building graphical user interfaces and helps with TCP/IP and serial communication. ZWinSQL provides C++ classes to deal with SQLite databases. ZWinXML encapsulates libXML and ZWinCrypt implements some crypto algorithms like RSA, AES and hash functions. The latter is not encouraged. You should always use established and well-tested Crypto libraries like OpenSSL!

Because we have powerful cross-platform solutions like QT and others today, none of my libraries is needed, but you can learn a lot when implementing it yourself - and my solutions are much more lightweight, think Kilobytes rather than Mega- or even Gigabytes ...

Interested in my projects? Well, please remember, none of the software packages is available for download anymore. So use these projects as inspiration, but do as I did with AZTCD, the LTOOLS or IOlib: As there was no solution available at the time, I developed my own. That is what engineering is all about ...

If you have any comments, click here.