View more guides at Linux Wiki Guides
by: bnr ( http://caramengobativitiligosite.wordpress.com/ )
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.
|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)|
|Optical Drive||Yes||must be set to Master mode; most drives are Cable Select|
|Graphics||Yes||fglrx driver interferes with touchscreen|
|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. . .|
|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
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 http://1bnr.wordpress.com/2009/11/07/cf-72-touchscreen-script-2-0/ . 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 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 elantech.o hgpk.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
If you are using Ubuntu previous to 9.04 you will need to remove :
from the end of the 'psmouse-objs' line.
OK, now save it and then:
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" 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 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"> <device> <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> </match> </device> <device> <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> </device> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_driver" type="string">evdev</merge> </match> </device> </deviceinfo>
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.
Occasionally in Ubuntu 8.10 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.