Linux & the Unichrome Families (Part 1)

Linux & the Unichrome Families (Part 1)

Linux & the Unichrome Families (Part 1)

Much has been said of the suitability of VIA’s Nano-, Pico-, and Mini-ITX mainboards for embedded and appliance computing. To a large extent, Linux has an application overlap in that domain. The combination of a modern Linux distribution with the small, yet powerful Mini-ITX platform is popular because the two are so well-suited to the challenges posed by an emerging set of applications requiring more computational power and platform flexibility than the embedded platforms of the past, but with much of the size, efficiency, and cost advantages that embedded applications have always sought after.

Thus, it is along this boundary that VIA’s EPIA mainboards will need to prove their viability as a platform for application development. Feasibility is largely a consequence of operating system support for the hardware. However, with open-source operating systems like Linux, implementing that support requires working with a community of developers. As VIA, like other manufacturers in the industry, continues to adjust to this model, the pace of development fluctuates rapidly. This is compounded by development upheavals in related open-source projects.

Historically, Linux support for the VIA Unichrome and Unichrome Pro families of graphics controllers has been highly indicative of some of these trends. I’ll investigate the events that led up to the current situation in this post.

The Devices

This device list was compiled by the Unichrome Project:

Originally named CastleRock.  Found on the VIA CLE266 northbridge.
First use of the name Unichrome. Found on the KM400, KM400A, KN400, and P4M800.
Unichrome Pro, later renamed Unichrome Pro B, on the K8M800 and K8N800.
Unichrome Pro A on the CN400, PM800, PM880, and PN800.
Yet another Unichrome Pro on the P4M800Pro, VN800, CN700, and P4M800CE.
Unichrome Pro on the CX700, CX700M, VX700, and CX700M2.
Chrome9 IGP (but effectively a Unichrome) on the K8M890.
Unichrome Pro on the P4M890 and VN890.
Unichrome Pro on the CN750 and CN800.
Chrome 9 HC IGP on the P4M900, VN896, and CN896.


April, 2003
VIA releases source for CLE266 driver, and it is imported into the XFree86 tree.
December, 2003 tree up to date with XFree86 4.4 RC2.
February, 2004 forks from XFree86.
March, 2004
Unichrome Project started
April, 2005
openChrome Project forks

I’ve provided the time line to the right for reference. Some of the historical details are hard to come by, but here’s what I’ve managed to piece together:

Several years ago, VIA had written a Linux driver for the Unichrome device present in the CLE266 chipset that it released in binary-only form. As anyone that’s been involved with the Linux kernel will tell you, binary-only drivers rarely last very long in the Linux community due to the simple fact that no one in the community can keep them up to date as the kernel continues to develop and interfaces change. This is equally true of XFree86 (and Eventually, VIA was convinced to release the driver in source form, and it did so. In April of 2003, this driver was imported into XFree86.

The XFree86 developers continued to improve the driver, and it remains in the XFree86 tree to this day. When forked from the XFree86 tree in early 2004, the driver was carried over into the new fork, and the developers, where it also continues to see active development.

VIA occasionally releases its own updates. Some of these updates are binary-only, and some are source releases. Not all source releases are licensed appropriately for inclusion into open-source projects.

In March of 2004, shortly after the fork, the Unichrome Project was started. The purpose of the Unichrome project was to move forward with development of the driver that was currently in the tree. It was to be a forum for more experimental development of that driver, and would contribute changes back to the tree when they were deemed stable and appropriate enough.

As development progressed within the Unichrome Project, a conflict regarding development philosophy arose. While most of the developers were primarily interested in continuing to add features and support for new devices to the Unichrome driver, the founding developer wanted to pursue another path. Something of a driver purist, he wanted to strip out major driver features whose design he was dissatisfied with, as well as remove driver dependence on VESA BIOS Extensions (VBE).

This conflict resulted in yet another fork. In April of 2005, the openChrome Project was born. Its goal was to continue implementation of the Unichrome driver without introducing regressions.

The Drivers

After all that, the open-source community was left with the following driver

  • VIA binary-only drivers
  • VIA source drivers
  • XFree86 driver
  • driver
  • Unichrome driver
  • openChrome driver

At this point, the VIA binary and source drivers are largely considered valuable
reference implementations, but not practically useful on most systems. Further,
since most modern distributions now ship with the server, using the
XFree86 driver probably doesn’t make a lot of sense. Thus, the choices are
limited to the in-tree driver, the Unichrome driver, and the openChrome

In my next post, I’ll look at the differences between these three drivers, the
limitations of each, and the what we can expect to see as development of each
driver carries on.

References & Further Reading

Leave a Comment

Your email address will not be published.