mmmtouch - XFree86 driver for 3M touch screens
These are add on drivers for the 3M (formerly Dynapro) touch screens running under XFree86. These drivers provide support for the SC3 and SC4 controllers as well as inter-active calibration.
NOTE:
It's come to my attention that 3M has purchased a number of other touch screen companies in addition to Dynapro. These drivers are designed only for the Dynapro touch screens utilizing the SC3 or SC4 controller. If the touch screen comes from a different origin company (i.e. microtouch, etc), these drivers will not work.
History
When I first started building touch screens for home automation, the Dynapro touch panel had a lot going for it. It had support in XFree86 and Dynapro (then 3M) seemed like good folks to deal with. The original driver is still available with the stock XFree86 driver as xf86Dyna_drv.so - the Dynapro driver.
This is a very nice driver, but does not have interactive calibration abilities. After fiddling with numbers in the XF86Config file for 3 days, I finally gave up and wrote an interactive calibrator. However, to make it really interactive (i.e. calibration takes effect immediately instead of after a restart), I had to redo the driver. Once I started down this path, the scale of the changes became larger and larger until very little of the original xf86Dynapro driver was left. 3M helped me on the protocol information and overall were great to deal with.
The current driver works for XFree86 4.0, 4.1 and 4.2 under Linux. The plan is to eventually submit the source to the XFree86 project, but as of now, I just don't seem to find the time. Until then, you can download the drivers here.
If you'd like to take a look at what I was doing with these touch panels, check out the story about them and/or the house renovation project.
Note on 3M NFI Touch Screens
If you are using a NFI based 3M touch screen, you can set the drivers to treat it as a SC4 controller and it will work. However, at this time, you will need a Windows machine to load the baseline and do linearization. I had been working with 3M to get a NFI system to work on so I could add in support for these functions and do away with needing windows at all. Unfortunately, I think 3M has lowered the priority of linux support and has "gone dark" (i.e. repeated queries stopped being answered). I know they were up for this and hope that at some point in the future, they'll be up for it again. When that happens, I'll add support and post it here.
Downloads
Ideally, I'd have more online content for this page, including the install docs, man page, etc. However, as you can see, I've not had much time to work on this page. So for now, you'll have to download the tar file to read the info.
On the upside, there are install directions, troubleshooting tips and man pages to go along with the driver and calibrator, so you won't be completely in the dark.
Finally, while some folks won't appreciate it it, I'm not currently releasing the source code. What I have is various binary packages. Even though there is no source, these drivers are FREE and currently have no distribution restriction. They do, however, remain copyrighted by Gerald Duprey.
Pick the appropriate download:
mmmtouch_40x.tar.gz - driver for XFree86 4.0 - built on a RedHat 7.2 i386 system
mmmtouch_41x.tar.gz- driver for XFree86 4.1 - built on a RedHat 7.2 i386 system
mmmtouch_42x.tar.gz - driver for XFree86 4.2 - built on a RedHat 7.2 i386 system
mmmtouch_43x.tar.gz - driver for XFree86 4.3 - build on a RedHat 7.2 i386 system
It's pretty important to be running a reasonably recent kernel - at least a 2.4.8 kernel, though a 2.4.20 or later is going to be much better.
The USB touch screens will hopefully identify themselves as SERIAL devices. One way to check on this is to plug a touch screen into the linux machine, wait a moment and then use the "dmesg" command (which prints out messages from the Linux kernel) to see what it reported when the Touch Screen was plugged in.
Another way to do this is use a the /sbin/lsusb command (as root) to list the USB devices currently plugged in. Note: Not all systems will have this command loaded.
Still another way is to download and install the USBView GUI tool available at http://www.kroah.com/linux-usb.
You need to create device entries to access the USB interface for that device. Some good information on this is available here http://www.linux-usb.org/USB-guide/x356.html. If your device doesn't seem to work, re-read the section on using insmod usb-serial with the proper vendor and product values (if you plug the device in and look at the dmesg output, those values will probably be displayed).
Change History
January 25, 2004 - Updated to support XFree 4.3
April 2, 2002 - put this page up :-)
If you have any questions/concerns or problems, please feel free to contact me at gerry@cdp1802.org. I'll respond as soon as I can, but please be aware this isn't my job and I may not always be able to respond as quickly as I'd like.
Last updated 2/25/2004