Phil's free Solaris device drivers

This is the place where I keep drivers I've written. I also keep a page with tips on developing solaris drivers


USB drivers

Now available:

Wacom USB Graphire 2 tablet driver (June 14th, 2002)

OLD Binary package for Sol8 x86(pen only)
NEW Binary package for Sol8 x86(v0.9.2) (see note #1 below)

pkgadd -d BOLTwtblt*.pkg
and you will then be able to use programs that are XINPUT aware. Unfortunately, there arent many.

The two I have found are gsumi, and The GIMP

Critical Note #1

If upgrading from the original version (if 'pkginfo -l BOLTwtblt' says you have version 0.9 installed), make a backup of /usr/openwin/server/etc/OWconfig before doing pkgrm BOLTwblt . After pkgrm is complete, if the original file is no longer there, copy the backup over, and hand-edit out the bits at the bottom about BOLTwacom.
This should not be neccessary if you already have v0.9.1 or later.

Critical Note #2

The driver only allows use of the tablet as a secondary device. You will need a regular mouse, in addition to the tablet hardware, to use X normally. The good news is, you will be able to use the graphire2 pen, eraser, AND 'mouse', as separate brushes. I sugest using the 'eraser' for a brush, and the mouse as an eraser

Critical Note #3

gsumi works great out of the box, once you use "File->Input Dialog" menu to select the TABLET to mode=Window.

Unfortunately, there is some wierdness with 'gimp', where it grabs the pointer once you press down on the pen, and wont let you move it until you release. So you can only make dots, until you apply a patch.

To use gimp successfully, you will need to do the following:

  [First, recompile libgtk to enable xinput, with --with-xinput=xfree.
   Then...]
  Download and extract gimp-1.2.3
  Apply this patch, with
    $ cd gimp-1.2.3/app ; patch -c  < /tmp/gimp-1.2.3.diffs
For the record, I belive this to be a bug in the gimp, not a bug in my driver. I hope the gimp team will release an 'official' patch for gimp1.2.x.

Once you have gimp running, you will have to pull up

File->Dialogs->Input Devices
to set the mode for each tablet device to 'Window'. Then use
File->Dialogs->Device Status
to set the 'brush' for your pen, eraser, and tabletmouse.

If you already have gimp version 1.2.X installed on sol8 x86, (for example, from the companion CD) you may wish to try updating these two files, rather than recompiling:

/opt/sfw/lib/libgdk-1.2.so.0.9.1
/opt/sfw/bin/gimp (gunzip this one before replacing)

Critical Note #4

Do not remove the tablet from the system while the Xserver is running, or you may crash your system.

Epson USB scanner driver (June 20th, 2002)

Epson USB Scanner driver, written primarily for a "Perfection 610", but may work with other USB scanners.

Logitech USB wheel driver (Nov 23rd, 2001)

Logitech "driving force" USB wheel driver, written in conjunction with my playstation 2 wheel :-)

USB base driver (Nov 23rd, 2001)

Basic USB driver. This can be a starting point for any new USB driver. Or it can simply be a diagnostic tool to tell you what type of endpoints are available on a USB device that does not have a driver already.

USB driver writer's primer

As an additional resource for anyone else interested in writing USB drivers for solaris, I am writing a USB driver orientation guide.

Other drivers

CPU temperature monitoring(intel only)

If you have a "winbond w83781d" chip in your system, you can use my "health" driver.

"SB128/SB16" driver

(Jointly developed with Juergen Keil)

If you have a "soundblaster PCI 128" or PCI 16 card lying around , you can download the sbpci driver. There is also a link to that page on a framework for other soundcard support, along with an Intel i810 sound chip driver.

AGP driver

This provides access to AGP memory functions, for motherboards with AGP support. Unfortunately, the only currently supported motherboards are intel 440bx based motherboards. If you'd like to add support for YOUR favourite AGP chipset, email me. Similarly, if you'd like to try tweaking your favourite AGP video card, and you are an experienced coder, email me.

The current v0.9 release is the initial public version. It needs testing against actual AGP video cards. However, AGP-accessible memory has successfully be allocated and de-allocated.

Download: agpgart0.9.tar.gz

OpenGL hardware acceleration

Related to AGP: I'm reviving Utah-GLX. Its an older GLX module for xfree that used to only work under xfree3.x. I've ported it to work under xfree4. There are currently binaries available for limited 3d hardware acceleration, for use with a stock xfree4 X server.


Driver tools and partial frameworks

Generic PCI driver base

PCIbase.tar (Jan 21, 2002)

This is a generic starting point for all non-STREAMS drivers that will be controlling a PCI device. Amoung other things, it contains a utility script called "printregs" that will print out possible register mappings for any particular PCI device on your system that you specify. It also has a TIPS HTML doc which I copy from time to time here for easy reference.

Contributed GLD driver "framework"

Michael Rice was kind enough to contribute RGDT, the "Rice GLD Driver Template" :-)

If you're looking to start your own GLD driver, his generic template is a lot more commented than my one below!


Unfinished drivers

Partial GLD-based netgear network driver

I have the framework of a GLD-based driver. It uses's Sun's "Generic Link Device" API. It loads as a GLD-compliant driver, but doesnt do anything, since three's nothing specific to any hardware. I originally intended it as a starting point for all those unsupported dlink/netgear cards, so I call it my fanet driver, after the "fa310" card. Its untested, and may have a few bugs in it. You may be better off with Michael Rice's template, above.

If you're more ambitious and you want to write a full "DLPI" driver for some network hardware, I recomment you use the "psli" sample driver from sun as a base., rather than the "ae" sample driver. But it is still probably wise to LOOK at how the sample ae driver handles things.

UDMA driver for HPT controller

Details about my HPT driver can now be found on the separate Highpoint 366 Solaris driver page.

Aiptek USB videocam driver (OV511/OV7260 hardware)

This one seems to have a little trouble doing reads of the main USB bridge hardware. There are registers that have default values, that are showing up as 0. There are checks in the code that show it is failing. For example,
"USB reg at 1a should be 0x4f: is ..."
If someone can find a way to get that bit working, it should be almost done. I have it transmitting isochronous packages of the expected size. Trouble is, they're all zero length right now.

Download aipcam.tar.gz


Drivers I have not written

The "aperture driver" from xfree86 is NOT written by me, but by Doug Anson and David Holland. I have it here because it is not easy to find, otherwise. The "aperture" driver does essentially what "xsvc" does in solaris 2.5.1 and later. But xsvc source is not publically available, whereas this source IS available. So I put it here in hopes of aiding anyone looking to do a DRI port for Solaris.

Along those lines, I have a page with guesses on what is needed to do a DRI port for Solaris. Feel up to a challenge?

To aide in that effort, I am working on a driver to provide /dev/agpgart under Solaris. See my AGP driver, above.


If you have written a driver and would like to get it 'certified' by Sun (on intel) look at Sun's IHV Drivers Page (Independant Hardware Vendor).

Even if you are not a "Hardware Vendor", you can still download and use the test suites for free.


Did your system crash?

Well, I'm sorry about that. I dont guarantee my drivers to be bug-free. I dont get paid for this, ya know :-) But if you'd like to help me get rid of the bug, see my page on generating a kernel stack trace


PS: If you're looking for a part-time consultant, you can look at my resume :-)
Bolthole Top - Solaris Pages - Search Bolthole.com
Written by:Philip Brown