The Inquirer-Home

Linux can use Windows drivers shock

OS/2 runs Win2k printer drivers, too
Sun Oct 19 2003, 11:45
"Few write OS/2 drivers, and nobody writes Nextstep, Solaris or Linux drivers." post on comp.sys.powerpc, Sep 1995
"You can't get Win32 drivers port to other operating systems nor run them there" -post on comp.os.os2.programmer.misc, 1996
"OS/2 cannot load Win32 drivers at all", June 1995.
"Using windows drivers in Linux? What you said you want to do is roughly equivalent to nailing horseshoes to the tires of your Buick." comp.os.linux.misc. Oct 2001

THEY SAID it was impossible. First, reaching the "holy grail" was considered achieving compatibility with Windows applications. Those that remember Sun's "WABI" (Windows Application Binary Interface) raise your hand. Then WINE jumped into scene along with other win32 api emulators, "compatibility layers" and the like.

In the meantime, the open source revolution took care of "commoditizing" common desktop software: web browsing, e-mail, html authoring, word processing, spreadsheets, presentations, cd-burning, mp3 playing, and many other tasks that until not long ago required proprietary commercial software can now be carried on by using open source software: Mozilla, OpenOffice, CDRecord, and various open source mp3 players, in that order.

But most importantly: regardless of what operating system you run (the applications mentioned run on Unix, Windows, Linux, even many have been ported to the "dead" IBM OS/2. This availability of portable software has certainly decreased the need to rely on win32 applications when you dump windows for an alternative OS.

It can be said then that desktop applications are now a commodity, also Win32 application emulation has reached maturity -with products like CrossOver Office running the Vole's Windows Office crown jewels seamlessly on another OS. So, what is the "final frontier" in emulation technology?. Yes, you the little guy in the back, you guessed right: device drivers.

Device drivers is an area where emulation was until recently considered "out of the question": writing native code was the only solution. Not anymore.

I came across two very interesting and different projects that tackle the issue in a clever way: running hardware device drivers designed for windows on "foreign" operating systems. Both come from small developers outside Silicon Valley, which makes one wonder why nobody inside the billion-dollar labs of "innovative" mega-corporations like Carly Fiorina's or Palmisano's thoughts about this.

The first comes from Montreal, Canada -- it is called "DriverLoader" and created by Linuxant Inc. Simply put, it is a revolutionary "compatibility wrapper" allowing standard Windows NDIS 5.0 drivers (the network driver standard used by Windows and on an earlier spec revision by OS/2 too) as shipped by hardware vendors for windows users to be used as-is on Linux x86 systems as well.

Driverloader immediately gives Linux users the ability to use network cards "for which no adequate native open source drivers are available" -the company claims. The company has currently released a technology "demo" that allows owners of 802.11g 54mbps Wireless LAN devices (CardBus and PCI) based on Broadcom chipsets to use their devices under Linux.

Currently, and apparently for a limited time, DriverLoader packages can be downloaded and a free trial licence obtained from Linuxant's web site at no cost. It supports the most popular 2.4 and 2.6 kernel based distros like RedHat, SuSE, Mandrake, and Debian.

The company says that discussions are under way with hardware vendors to finance further development costs. Linuxant hopes that DriverLoader will remain free for end users but that hardware manufacturers will foot the bill to have their existing windows LAN drivers to run seamlessly in Linux.

Personally, I'd prefer to see this technology offered free-for-all and DriverLoader incorporated into Linux, with the development costs paid by some Linux consortium. This, in an ironic twist of "embrace and extend" would allow Linux to claim compatibility with "off the shelf Windows LAN drivers", while encouraging hardware vendors that prefer to deliver better (native) Linux drivers to continue writing their own.

Discussions aside, Driverloader proves that creating a "wrapper" around win32 drivers and running them on a foreign operating system is possible, at least for LAN drivers. I remember getting some heat on the Solaris x86 mailing list when I suggested that Sun advocates should embrace, not fight, the Linux movement, and try to develop clever, innovative ways to make porting and running linux software and drivers in unix, rather than bitching about "Gnuish linux-only code". In short, this DriverLoader for linux project confirms my theory that nothing is impossible from a programming point of view. You just have to put enough brains for enough time thinking about clever ways to achieve the goal :o) .... fast CPUs remove the problem of just another software layer between the driver and the operating system.

And just when I thought I had seen everything, OS/2 programmer and hacker extraordinary Vitaliy Timchishin from Ukraine created Win32PRN. It allows IBM OS/2 users run any Windows 2000 printer driver -and Windows XP too, but this possibility is not fully tested yet- on OS/2 via the "Odin" win32 api compatibility layer, as if it where a native printer driver, available for all OS/2 applications.

The project is in its early beta stages, but shows great promise and already works with the Canon LBP-810 printer using Canon drivers for Windows, on the Epson EPL-N2050/PS+ using Epson drivers and with the HP LaserJet 1100 using Windows XP's "UNIDRV" drivers supplied with Windows XP.

While IBM continues currently writing and releasing native OS/2 drivers on a regular basis for most printers out there -OS/2 is in "maintenance mode"- this technology gives them another benefit: IBM or OS/2 licensees Ecomstation could fund this technology, bring it to maturity and then forget about writing printer drivers except perhaps for the generic postscript and PCL5 base code. Users would just be told to download and run Windows printer drivers.

In short, you have seen that it is technically possible to run some windows drivers on foreign operating systems - currently LAN drivers on Linux and printer drivers on OS/2-. So how revolutionary is this approach? Would you use, lacking native drivers, Win32 drivers on linux, unix, or other operating systems? Are printer and network card drivers going to become, over time, a commodity with Win32 drivers one day the 'de-facto standard' run via wrappers?

Can OSes like Unix and Linux gain market share by "piggy-backing" on win32 driver development in an ironic twist of "embrace and extend" that this time takes advantage of Microsoft's driver market share to hurt them and let users move to other platforms? Let me know what you think. µ

Fernando Cassia is the INQ's South America correspondent, he's based in Buenos Aires, Argentina where he lives surrounded by computers in his home LAN running Windows, Solaris x86, Linux, and OS/2


Share this:

blog comments powered by Disqus
Subscribe to INQ newsletters

Sign up for INQbot – a weekly roundup of the best from the INQ

INQ Poll

Coding challenges

Who’s responsible for software errors?