Panasonic CF-72 Touchscreen and Ubuntu 8.10

I already posted this else where, but it I need a little filler to get this thing started. So here is the end result of a long investigation, minus all the messy misinterpretation and dead ends.

I bought my first CF-72 several years back and liked it so much that I just bought myself another. I started off with gentoo and after much effort got everything working, except for the touch screen and a usb-wifi dongle. I switched over to Ubuntu when the live disk detected the wifi dongle perfectly, and since then I figured out the touchscreen. I now run Ubuntu 8.10 on both my original 1GHz P3 and my current 1.8GHz P4 CF-72, and everything works perfectly.

Specifications

Model Panasonic CF-72XCJWZDM
Processor 1.8 GHz P4
Screen 13.3 inch XGA 1024 x 768
Memory 512 MB DDR (Max 1.25 GB)
Hard Drive 120 GB ATA6
Optical Drive DVD/CDRW (Master mode)
Graphics ATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500
VGA-Out 15-pin standard VGA
Sound Intel 82801CA/CAM AC’97 Audio Controller
USB Intel 82801CA/CAM; (2) USB-1.1
PC Card Ricoh RL5c476; (2) typeII/(1)typeIII
Network Realtek RTL-8139/8139C/8139C+ (rev 10)
Wireless Broadcom BCM4318 802.11g Wireless LAN Controller (rev 02)
Modem Agere Systems LT WinModem (rev 02)

Linux Compatibility

Device Compatibility Comments
Optical Drive Yes must be set to Master mode; most drives are Cable Select
Graphics Yes fglrx driver interferes with touchscreen
Sound Yes
Ethernet Yes
Wireless Yes pulled from an HP DV5000, fits in standard mini-pci
56K Modem Not Tested First one was fried, this one, its a modem. . .
USB Yes
PC Card Yes
Touchscreen Yes have to recompile the driver after an edit
Batteries Yes 11.1V Li 3.2-3.6Ah, Batteries are designed for specific notebook models.

Notes

The chassis is made out of magnesium alloy, and is quite durable. I have tripped over the cord causing the computer to fly from the top of a table or desk to the floor on more than one occasion. However the palm rest and screen bezel are both plastic and quite thin. I cracked the bezel while taking it off and the corner of the palm rest was chipped when it landed on it after taking a dive while open. Luckily the damage was only cosmetic. I found the following resources most useful in learning about this computer.

Although this sight never mentions Linux, it has in depth information about the hardware
http://toughbook.wikispaces.com/CF-72

This the forum were I learned all about the Panasonic touchscreens. The CF-28,CF-29 and CF-72 all have the same Touchscreen.
http://www.linuxquestions.org/questions/linux-laptop-and-netbook-25/panasonic-toughbook-cf-29-touch-screen-485053/page13.html?highlight=touchscreen+toughbook&highlight=touchscreen+toughbook

This is where I learned how to compile a single kernel module
http://ubuntuforums.org/showthread.php?t=1012054

Optical Drive

Any slim(notebook) internal optical drive can be put in the CD sled that pops out of the Media Pocket. However most drives come from the factory set in cable select mode, the way most notebooks are set up. You will have to use an EEPROM program designed for your model of drive to change the Master/Slave/CS setting. There are other ways around this but they all involve soldering the drive sled, something that I have not succeeded at(at the cost of a perfectly good sled!).

Mini-PCI

If you take the computer completely apart (I mean completely) you will find two mini-pci sockets, one for the modem and one for the wireless card. Neither of the CF-72s that I have came with wifi, but any standard mini-pci card will fit. Bonus points if the card has native Linux support. I pulled the wireless card and antenna wires from an old HP, the hardest part was threading the antenna wires up around the hinge and into the lid.

Batteries

The batteries for the various CF-72 models notebooks are NOT compatible despite having identical form factors. This may be as simple as different firmware in the Li charge management chips, or they could have completely different management circuitry. Rechargeable Lithium Ion batteries are smart batteries. If a Li battery discharges below a point it will be ruined and so there is a chip that prevents this from happening. When the battery meter approaches zero it is actually approaching this threshold. The following chart does not include the CF-VZSU25 battery that came with my CF-72T (pentium3) Toughbook. The Battery seems to work, although it only holds a twenty minute charge at this point.

Battery Pack Model (Series)
CF-VZSU14 CF-37, CF-72N, CF-72Q
CF-VZSU14A CF-72T
CF-VZSU14B CF-72V, CF-72X

Touchscreen

The touchscreen is the trickiest part. We will need to edit the source and compile the driver, its easier than it sounds. Lets install some packages.

We need the evtouch module, the latest kernel headers and the kernel source.

# apt-get install xserver-xorg-input-evtouch linux-source linux-headers-`uname -r`

The fglrx video driver needs to be removed because it doesn’t play nice with the touchscreen driver.

# apt-get remove xorg-driver-fglrx

Then we need to unpack the source code.

# cd /usr/src
# tar -xvjf linux-source-2.6.27.tar.bz2

Since I only want to compile one module and not mess up the makefile in the linux source , I will copy the mouse directory to my home folder for testing and compiling. We only need about half the files but, but its easier to just grab them all. *NOTE* your linux-source version number may differ.

# cp -R /usr/src/linux-source-2.6.27/drivers/input/mouse ~/mouse
# cd ~/mouse

The File that we need to edit is lifebook.c

# gedit ./lifebook.c

Search for :

		DMI_MATCH(DMI_PRODUCT_NAME, "CF-72"

Right below that you will see:

	.callback = lifebook_set_serio_phys,
	.driver_data = "isa0060/serio3",

Delete both lines and put in this:

	.callback = lifebook_set_6byte_proto,

Save and exit. Now we need a Makefile, there is one in the folder already but it is designed to work with a full kernel compile. Open it in your preferred text editor.

# gedit ./Makefile

you should see this:

#
# Makefile for the mouse drivers.
#
# Each configuration option enables a list of files.

obj-$(CONFIG_MOUSE_AMIGA)	+= amimouse.o
obj-$(CONFIG_MOUSE_APPLETOUCH)	+= appletouch.o
obj-$(CONFIG_MOUSE_BCM5974)	+= bcm5974.o
obj-$(CONFIG_MOUSE_ATARI)	+= atarimouse.o
obj-$(CONFIG_MOUSE_RISCPC)	+= rpcmouse.o
obj-$(CONFIG_MOUSE_INPORT)	+= inport.o
obj-$(CONFIG_MOUSE_LOGIBM)	+= logibm.o
obj-$(CONFIG_MOUSE_PC110PAD)	+= pc110pad.o
obj-$(CONFIG_MOUSE_PS2)		+= psmouse.o
obj-$(CONFIG_MOUSE_SERIAL)	+= sermouse.o
obj-$(CONFIG_MOUSE_HIL)		+= hil_ptr.o
obj-$(CONFIG_MOUSE_VSXXXAA)	+= vsxxxaa.o
obj-$(CONFIG_MOUSE_GPIO)	+= gpio_mouse.o 

psmouse-objs := psmouse-base.o synaptics.o 

psmouse-$(CONFIG_MOUSE_PS2_ALPS)	+= alps.o
psmouse-$(CONFIG_MOUSE_PS2_LOGIPS2PP)	+= logips2pp.o
psmouse-$(CONFIG_MOUSE_PS2_LIFEBOOK)	+= lifebook.o
psmouse-$(CONFIG_MOUSE_PS2_TRACKPOINT)	+= trackpoint.o
psmouse-$(CONFIG_MOUSE_PS2_TOUCHKIT)	+= touchkit_ps2.o 

obj

It looks real complicated, but it is for all the mouse drivers, we are only compiling one, the psmouse module. Basically we are only concerned with the lines that contain ‘psmouse’. Theses lines tell us witch files to include in our Makefile. I wrote my own make file at the bottom and then deleted the top, that way I had a handy reference. This is what I ended up with:

#
# Makefile for the psmouse driver.
#
obj-m := psmouse.o
psmouse-objs := psmouse-base.o synaptics.o alps.o lifebook.o trackpoint.o logips2pp.o

all:
	$(MAKE) -C /lib/modules/`uname -r`/build M=`pwd` modules
clean:
	$(MAKE) -C /lib/modules/`uname -r`/build M=`pwd` clean
	$(RM) Module.markers modules.order

OK, save it and then:

# make

If you don’t get any errors then you should have a functioning psmouse.ko file in there. If you get errors, then:

# make clean

Investigate the error and try ‘make’ again until it goes without errors. It took me about ten tries. OK, we got the driver, lets put it where it’s supposed to go, after backing up the original first of course.

# cd /lib/modules/`uname -r`/kernel/drivers/input/mouse
# mv ./psmouse.ko ./psmouse.bak
# cp ~/mouse/psmouse.ko ./psmouse.ko

Xorg.conf

We are almost done! The Driver won’t work unless we put the right setup in the xorg.conf file. Ubuntu 8.10 has a dynamic xorg.conf, most setting are automatically detected, this leaves the file mostly empty. If everything works as it should then incorrect setting are ignored in favor of automatically detected ones, so no risks here! I figured out these settings years ago through trial and error.

# cp /etc/X11/xorg.conf /etc/X11/xorg.bak
# gedit /etc/X11/xorg.conf

Now copy and paste:

# xorg.conf (X.Org X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf manual page.
# (Type "man xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# Note that some configuration settings that could be done previously
# in this file, now are automatically configured by the server and settings
# here are ignored.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "Module"
Load "i2c"
Load "bitmap"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "GLcore"
Load "int10"
Load "type1"
Load "vbe"
EndSection

Section "InputDevice"
	Identifier 	"Generic Keyboard"
	Driver 		"kbd"
	Option 		"CoreKeyboard"
	Option 		"XkbRules" "xorg"
	Option 		"XkbModel" "pc105"
	Option 		"XkbLayout" "us
	Option 		"XkbOptions" "lv3:ralt_switch"
EndSection

Section "InputDevice"
	Identifier 	"touchscreen"
	Driver 		"evtouch"
	Option 		"Device" "/dev/input/by-path/platform-i8042-serio-1-event-mouse"
	Option 		"DeviceName" "touchscreen"
	Option 		"MinX" "230" #"230"
	Option 		"MinY" "220" #"220"
	Option 		"MaxX" "3900" #"3900"
	Option 		"MaxY" "3850" #"3850"
	Option		"MoveLimit"	"5"
	Option 		"ReportingMode" "Raw"
	Option 		"SendCoreEvents" "true"
	Option 		"Emulate3Buttons" "true"
	Option 		"Emulate3Timeout" "40"
EndSection

Section "InputDevice"
	Identifier 	"Synaptics Touchpad"
	Driver 		"mouse"
	Option 		"Mode" "Relative"
	Option 		"CorePointer" "true"
	Option 		"Device" "/dev/input/mice"
	Option 		"Protocol" "ExplorerPS/2"
	Option 		"Emulate3Buttons" "true"
	#Option 	"HorizScrollDelta" "0"
EndSection

Section "Device"
	Identifier	"Configured Video Device"
EndSection

Section "Monitor"
	Identifier	"Configured Monitor"
EndSection

Section "Screen"
	Identifier	"Default Screen"
	Monitor		"Configured Monitor"
	Device		"Configured Video Device"
EndSection

Section "ServerLayout"
	Identifier 	"Default Layout"
	Screen 		"Default Screen"
	InputDevice 	"Generic Keyboard"
	InputDevice 	"Synaptics Touchpad" "CorePointer"
	InputDevice 	"touchscreen" "SendCoreEvents"
EndSection

Section "DRI"
Mode 0666
EndSection

Save the xorg.conf file, and then reload the psmouse module.

# rmmod psmouse
# modprobe psmouse

Save any open work and restart X with ctrl-alt-backspace
You should now have a functioning touchscreen, if not, is it enabled in the BIOS? If there is no Touchscreen setting in th BIOS then you don’t have one and the module compile/xorg.conf portion of this should be disregarded.

Summary

Occasionally the touchscreen driver malfunctions and needs to be unloaded and reloaded, this doesn’t happen that often and is easily fixed:

$ sudo rmmod psmouse
$ sudo modprobe psmouse

and that should do it.

Advertisements

2 thoughts on “Panasonic CF-72 Touchscreen and Ubuntu 8.10

  1. I am thinking about putting Ubuntu on a CF-27 Toughbook I found in a closet. I wanted to know if I did that would there be any way I can get the touchscreen to work. Also where I should look for a better ram card (if that’s even possible).

    Its a 2001 Panasonic CF-27 with a pentium 3

    1. The CF-72 and CF-28 share a lot of hardware; essentially the 28s are the fully ruggedized 72s. The CF-27 on the other hand is a completely different beast. For one thing they top out at 500Mhz processor speed. Considering that the latest versions of Ubuntu make even the 1.6Ghz processor in my (now dead) CF-72 struggle a bit at times, I would counsel against it. Maybe try Lubuntu, or something like Puppy, CrunchBang, or fluxbuntu

      The only one of those I have tried was fluxbuntu -on an ancient 233Mhz laptop with 64MB of RAM; it worked but was a little underwhelming. I am planning to try Lubuntu on my current elderly notebook (an HP dv1000) as soon as its replacement arrives in the mail.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s