How do you rate this laptop with Linux?
71% (5)
0% (0)
14% (1)
0% (0)
14% (1)

Panasonic Toughbook CF-72

by: bnr ( )

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 9.10 on both my original 1GHz P3 and my current 1.8GHz P4 CF-72, and everything works perfectly.


ModelPanasonic CF-72XCJWZDM
Processor1.8 GHz P4
Screen13.3 inch XGA 1024 x 768
Memory512 MB DDR (Max 1.25 GB)
Hard Drive120 GB ATA6
Optical DriveDVD/CDRW (Master mode)
GraphicsATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500
VGA-Out15-pin standard VGA
SoundIntel 82801CA/CAM AC'97 Audio Controller
USBIntel 82801CA/CAM; (2) USB-1.1
PC CardRicoh RL5c476; (2) typeII/(1)typeIII
NetworkRealtek RTL-8139/8139C/8139C+ (rev 10)
WirelessBroadcom BCM4318 802.11g Wireless LAN Controller (rev 02)
ModemAgere 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. . .
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.


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

This the forum were I learned all about the Panasonic touchscreens. The CF-28,CF-29 and CF-72 all have the same Touchscreen.

This is where I learned how to compile a single kernel module

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!).


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.


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


The touchscreen is the trickiest part. Lucky for you I assembled all the steps into a bash script you can find here . If you still want to fix it the old fashioned way you 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 :


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 

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 elantech.o hgpk.o

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

If you are using Ubuntu previous to 9.04 you will need to remove :

elantech.o hgpk.o

from the end of the 'psmouse-objs' line.

OK, now 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


** this section can be skipped if you prefer to use hal to configure Xorg

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"

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

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"

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"

Section "Device"
	Identifier	"Configured Video Device"

Section "Monitor"
	Identifier	"Configured Monitor"

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

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

Section "DRI"
Mode 0666

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

Configure Xorg with hal

You can completely replace the '/etc/X11/xorg.conf' file with a xml file for hal. Copy and paste the following lines into a text editor and save as '/etc/hal/fdi/policy/10-x11-input.fdi'

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
Pointer inputs for the Panasonic CF-72 w/ Touchscreen. 
Models without touchscreen do not need this file as they are automatically configured by hal
<deviceinfo version="0.2">
<match key="info.capabilities" contains="input.mouse">
<match key="info.product" contains="Touchpad">
<merge key="input.x11_driver" type="string">mouse</merge>
<merge key="input.x11_options.Mode" type="string">Relative</merge>
<merge key="input.x11_options.Device" type="string">/dev/input/mice</merge>
<merge key="input.x11_options.Protocol" type="string">PS/2</merge>
<merge key="input.x11_options.CorePointer" type="string">true</merge>
<match key="info.product" contains="LBPS/2 Fujitsu Lifebook TouchScreen">
<merge key="input.x11_driver" type="string">evtouch</merge>
<merge key="input.x11_options.Device" type="string">/dev/input/by-path/platform-i8042-serio-1-event-mouse</merge>
<merge key="input.x11_options.ReportingMode" type="string">Raw</merge>
<merge key="input.x11_options.MinX" type="string">240</merge>
<merge key="input.x11_options.MinY" type="string">220</merge>
<merge key="input.x11_options.MaxX" type="string">3900</merge>
<merge key="input.x11_options.MaxY" type="string">3800</merge>
<merge key="input.x11_options.MoveLimit" type="string">5</merge>
<merge key="input.x11_options.SendCoreEvents" type="string">true</merge>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_driver" type="string">evdev</merge>

If you chose to use hal and the 10-x11-input.fdi XML file instead of xorg.conf, you will need to reboot the computer before the touchscreen is usable.

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, 10-x11-input.fdi/xorg.conf portions of this should be disregarded.



Lawrence Shafer, 2009/11/03 21:50

Does anyone know if this is fixed in the new “Karmic” 9.04 release of ubuntu?

Abner, 2009/11/16 03:24

The script that automates this process works with Ubuntu “Karmic Koala” 9.10
and can be found here;

The incorrect code in the kernel driver that the script fixes is still present. One of these days I suppose I should send a diff file off to the kernel dev team . . .

Tony, 2010/01/26 05:26

I am a complete idiot about computers. I didn't even know how to work windows but I hated it and decided to try ubuntu when I got This cf-72. I am learning but I can't get this to work.What am I supposed to do with this after it downloads?

ASn, 2009/11/03 21:19

This works also fine with Debian testing (Kernel 2.6.30). Many thanks to the author!

Abner, 2009/02/24 19:47

I have not tried this on jaunty, so I can only make a few guesses. The four warnings appear to reflect a undefined variable, this either means that a source file reference is missing from the make file, or that one of the source files is missing some information.

In the first case try look at the original makefile from the source and see if it associates any other files with the psmouse.o file. All files associated with psmouse.o in the original makefile will need to be in your new one.

The second case could happen if you where mixing source files (or maybe because jaunty is still beta). Make sure that all the files are from the same place, either Ubuntu Repos or, not both. I'd just go with the repos myself.

Good luck with jaunty, and report back your results. I tend to wait a few weeks (or months) after the official release from ubuntu. Every time I don't wait, I end up regretting it.

bnr, 2009/05/08 21:47

I just wrote a shell script that automates this whole process for Ubuntu 8.10. I then upgraded to 9.04 and found that you need to add 'elantech.o hgpk.o' to the Makefile. That will fix your errors, otherwise the rest is the same.

Details here:

Lawrence Shafer, 2009/05/09 01:12

Thanks! I'll try that in a day or so. Care to share your script?

bnr, 2009/05/28 22:58

I completed the script for patching the mouse driver and configuring X with hal.

Details here:

Lawrence Shafer, 2009/02/22 05:33

Thanks for getting this all in one place! I'm just having one problem. This is on jaunty with a 2.6.28-8 kernel. This is what I get when I issue “build”. Did you have any problems like this, or know what might be wrong? You can see my full post here.

WARNING: “hgpk_detect” [/root/mouse/psmouse.ko] undefined!
WARNING: “elantech_detect” [/root/mouse/psmouse.ko] undefined!
WARNING: “elantech_init” [/root/mouse/psmouse.ko] undefined!
WARNING: “hgpk_init” [/root/mouse/psmouse.ko] undefined!

Enter your comment. Wiki syntax is allowed:
If you can't read the letters on the image, download this .wav file to get them read to you.
panasonic_toughbook_72.txt · Last modified: 2016/11/06 05:57 by
Contact Us Sister Sites Privacy Policy Terms of Use
Copyright © 2006-2013 and other authors