https://www.thinkwiki.org/w/api.php?action=feedcontributions&user=Dooblem&feedformat=atomThinkWiki - User contributions [en]2024-03-29T09:57:52ZUser contributionsMediaWiki 1.31.12https://www.thinkwiki.org/w/index.php?title=Tp_smapi&diff=53621Tp smapi2012-04-15T12:21:20Z<p>Dooblem: </p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
The <tt>tp_smapi</tt> kernel module exposes some features of the ThinkPad hardware/firmware via a <tt>sysfs</tt> interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The tp_smapi software package also includes an improved version of the [[HDAPS]] driver. The underlying hardware interfaces are [[SMAPI support for Linux|SMAPI]] and direct access to the embedded controller.<br />
<br />
This driver uses undocumented features and direct hardware access, so it may work unreliably or even damage your hardware; but so far no such damage has been reported.<br />
|}<br />
<br />
===Features===<br />
*<tt>tp_smapi</tt> driver<br />
**Battery charge/discharge control<br />
**Battery status information<br />
*<tt>hdaps</tt> driver (compared with the standard <tt>hdaps</tt> driver)<br />
**Improved stability<br />
**Improved model support<br />
**Improved functionality<br />
<br />
===Project Homepage / Availability===<br />
* Project page: http://tpctl.sourceforge.net/<br />
* Download page: http://sourceforge.net/projects/tpctl/files/tp_smapi, a newer version 0.41 is available in a fork at https://github.com/evgeni/tp_smapi which is also available in Debian<br />
* You need to download only the <i>tp_smapi</i> package.<br />
<br />
===Installation===<br />
====Installation from source====<br />
You will need the kernel headers and makefiles corresponding to your current kernel version. On {{Fedora}}, this means {{cmdroot|yum install kernel-devel-$(uname -r)}} .<br />
<br />
:{{cmdroot|tar xzvf tp_smapi-0.40.tgz}}<br />
:{{cmdroot|cd tp_smapi-0.40}}<br />
<br />
Then, either compile and load the driver within the current working directory (for testing):<br />
:{{cmdroot|make load}}<br />
OR compile and install into the kernel's module path:<br />
:{{cmdroot|make install}}<br />
<br />
If you use the [[HDAPS]] driver, add <tt>HDAPS=1</tt> to also patch the <tt>hdaps</tt> for compatibility with <tt>tp_smapi</tt> (this requires a kernel source tree matching the current kernel).<br />
Again, either load the driver within the current working directory:<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
OR install into the kernel's module path:<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
To prepare a stand-alone patch against the current kernel tree (including<br />
a patch against <tt>hdaps</tt> and new <tt>Kconfig</tt> entries):<br />
:{{cmdroot|make patch}}<br />
<br />
To delete all autogenerated files:<br />
:{{cmdroot|make clean}}<br />
<br />
The original kernel tree is never modified by any these commands. <br />
The {{path|/lib/modules}} directory is modified only by {{cmdroot|make install}}.<br />
<br />
====Installation in Gentoo====<br />
The {{Gentoo}} portage system carries a [http://packages.gentoo.org/package/app-laptop/tp_smapi tp_smapi package], which follows the latest version pretty closely. On a Gentoo system, you can install and load as follows.<br />
<br />
If you use the [[HDAPS]] driver, do this first:<br />
<br />
* Disable the <tt>hdaps</tt> module in your kernel configuration (Device Drivers &rarr; Hardware Monitoring Support &rarr; IBM Hard Drive Active Protection System)<br />
* Rebuild and install the kernel<br />
* Add the <tt>hdaps</tt> use flag in {{path|/etc/make.conf}}<br />
* {{cmdroot|rmmod hdaps}}<br />
<br />
Then:<br />
* {{cmdroot|emerge tp_smapi}} (or install tp_smapi with hdaps support manually, as above)<br />
* {{cmdroot|echo "tp_smapi" >> /etc/modules.autoload.d/kernel-2.6}}<br />
* {{cmdroot|echo "hdaps" >> /etc/modules.autoload.d/kernel-2.6}}<br />
<br />
Then reboot, or run:<br />
* {{cmdroot|modprobe tp_smapi}}<br />
* {{cmdroot|modprobe hdaps}}<br />
<br />
'''NOTE:''' If {{cmdroot|modprobe}} fails and dmesg says something about <tt>__stack_chk_fail()</tt>, you probably just compiled your modules with <tt>-fstack-protector</tt> and/or <tt>-fstack-protector-all</tt> without having a kernel that supports it. You can either configure your kernel to have <tt>CC_STACKPROTECTOR</tt> enabled (in ''Processor type and features'' if you use {{cmdroot|make menuconfig}}) or edit your <tt>make.conf</tt> (or, if you're using paludis, your <tt>/etc/paludis/bashrc</tt>) and remove <tt>-fstack-protector</tt> and <tt>-fstack-protector-all</tt> from your <tt>CFLAGS</tt>. If you choose to enable it in the kernel, be aware that you need a patched GCC for it (and I do not know if the gcc in stage3 is patched).<br />
<br />
====Installation on Debian unstable (sid), testing (squeeze) or stable (lenny)====<br />
Debian now contains the [http://packages.debian.org/tp-smapi packaged module source] and prebuilt modules for Debian kernels.<br />
<br />
If you use a stock Debian kernel, you can install the tp_smapi modules with:<br />
* {{cmdroot|apt-get install tp-smapi-modules-`uname -r`}}<br />
* in order to make sure the modules package is kept in sync with the kernel one, you may also want to install the <code>tm-smapi-modules-2.6-686</code> or <code>tm-smapi-modules-2.6-amd64</code> package, depending on your architecture <br />
<br />
If you use a custom kernel, you can build tp_smapi with module-assistant:<br />
* {{cmdroot|aptitude install tp-smapi-source}}<br />
* {{cmdroot|m-a -t a-i tp-smapi}}<br />
<br />
====Installation on Debian unstable (sid) or testing (squeeze) (kernel >=2.6.32-5)====<br />
You can use 'dkms' on Debian unstable (sid) or testing (squeeze) (kernel >=2.6.32-5) (Note: If installation seems ineffective, confirm your have the linux-headers of your kernel installed, purge tp-smapi-dkms and reinstall.)<br />
* {{cmdroot|aptitude install tp-smapi-dkms}}<br />
<br />
====Installation on openSUSE====<br />
openSUSE provides rpm packages. Look for them at the package search: [http://software.opensuse.org/search/], search for the package named "tp_smapi".<br />
<br />
A step-by-step guide on how a relative linux newbie installed tp_smapi on a Thinkpad W500 running openSuse 11.1 using YAST Software Manager is available [http://forums.opensuse.org/hardware/laptop/417254-tp_smapi-lenovo-thinkpad-t400-t500-w500-step-step.html#post2005932 here]<br />
<br />
In case you are taking the hard way around, while compiling on 11.0, make complained about not being able to locate the kernel sources. It worked for me after I did this:<br />
<pre><nowiki>cp /usr/include/linux/aio_abi.h /lib/modules/`uname -r`/build/include/linux/</nowiki></pre><br />
<br />
====Installation on Ubuntu====<br />
Ubuntu ships tp_smapi in their <tt>linux-ubuntu-modules-*</tt> package for Hardy, so you don't have to build it yourself. Please note that they have renamed tp_smapi's modified <tt>hdaps</tt> module to <tt>hdaps_ec</tt> so that the two can coexist. You should load <tt>hdaps_ec</tt>, not <tt>hdaps</tt>.<br />
<br />
Ubuntu Intrepid and Jaunty, however, lack the <tt>hdaps_ec</tt> module, as reported [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/297213 here]. It will not be included again until said [[#Bundled hdaps driver|bundled hdaps driver]] is merged into mainline.<br />
<br />
=====Installation on Ubuntu Jaunty=====<br />
I have posted my experiences [http://meandmyubuntu.blogspot.com/2009/05/getting-hdasp-to-work-on-jaunty.html here]<br />
<br />
=====Installation on Ubuntu Karmic=====<br />
Ubuntu does not ship the precompiled module tp_smapi any more. However the source code is still present in the repository. It can be installed through module-assistant :<br />
:{{cmdroot|aptitude install tp-smapi-source}}<br />
:{{cmdroot|module-assistant prepare tp-smapi}}<br />
:{{cmdroot|module-assistant auto-install tp-smapi}}<br />
:{{cmdroot|modprobe tp-smapi}}<br />
<br />
=====Installation on Ubuntu Lucid=====<br />
The Karmic solution above works well.<br />
<br />
As an alternative, one can use the dkms flavour of the packages via<br />
:{{cmdroot|aptitude install tp-smapi-dkms}}<br />
:{{cmdroot|modprobe tp_smapi}}<br />
<br />
{{HINT|This appears to be the ideal solution. A description of DKMS, from [http://linux.dell.com/projects.shtml#dkms Dell]: "DKMS stands for Dynamic Kernel Module Support. It is designed to create a framework where kernel dependent module source can reside so that it is very easy to rebuild modules as you upgrade kernels."}}<br />
<br />
====Installation on older Ubuntu/Debian====<br />
Installation on Ubuntu or Debian is quite easy, but there are a few things to look after:<br />
<br />
To get your system ready for compiling code, install the build-essentials (as root, of course, as all of the following comands; Ubuntu users have to prepend 'sudo' to every line and enter their own password when prompted):<br />
<pre><nowiki>apt-get install build-essential</nowiki></pre><br />
<br />
To get tp_smapi to work, obtain the latest source as mentioned above and unpack it. If you want to use HDAPS, you need to install the kernel source matching te kernel you are running. To do so, issue this:<br />
<pre><nowiki>uname -r</nowiki></pre><br />
This will give you the version of your current kernel. <br />
Debian users execute the following:<br />
<pre><nowiki>apt-get install linux-source-`uname -r`</nowiki></pre><br />
Ubuntu users execute the following using the kernel-version only (exclude -XX-generic; e.g. 'linux-source-2.6.20'):<br />
<pre><nowiki>apt-get install linux-source-`uname -r`</nowiki></pre><br />
<br />
Be sure to unpack the source file. The easiest way is to open Nautilus as root:<br />
<pre><nowiki>sudo nautilus</nowiki></pre><br />
Then browse to /usr/src/ and extract the source file to that directory.<br />
<br />
Now change to the tp_smapi dir:<br />
<pre><nowiki>cd tp_smapi-X.YY</nowiki></pre> (X.YY being the version-number of [[tp_smapi]])<br />
and make and install tp_smapi as instructed above.<br />
<br />
If you get an error that the kernel version isn't matching (or that you need to set KSRC/KBUILD), please check that there is a symlink from the modules dir to the kernel source:<br />
<pre><nowiki>root@localhost:~#ls -l /lib/modules/2.6.20-16-generic<br />
lrwxrwxrwx 1 root root 28 2007-02-02 08:39 build -> /usr/src/linux-source-2.6.20</nowiki></pre><br />
Create the link if the line above does not exist:<br />
<pre><nowiki>root@localhost:~#ln -s /usr/src/linux-source-2.6.20 /lib/modules/2.6.20-16-generic/build</nowiki></pre><br />
<br />
Now the following will build and install the correct modules to their locations:<br />
<pre><nowiki>make install HDAPS=1</nowiki></pre><br />
To make sure your system loads the modules at boot time, do this:<br />
<pre><nowiki>echo "tp_smapi" >> /etc/modules<br />
echo "hdaps" >> /etc/modules</nowiki></pre><br />
and update your initramfs:<br />
<pre><nowiki>update-initramfs -u</nowiki></pre><br />
<br />
To get tp_smapi running now, just load the modules:<br />
<pre><nowiki>modprobe -a tp_smapi hdaps</nowiki></pre><br />
<br />
This description was tested on Kubuntu 'Feisty Fawn' and should work on all Debian-based distros with minor tweaks.<br />
<br />
'''EDIT:''' Works on Kubuntu 7.10 ("Gutsy Gibbon"), too<br />
<br />
===Battery charge control features===<br />
{{NOTE|Not all Thinkpad ECs support these charge control features. If you get the message "Operation not supported" when trying to cat for the status of a given parameter, it means your controller does not support that feature.}}<br />
<br />
To set the thresholds for starting and stopping battery charging (in percent of current full charge capacity):<br />
:{{cmdroot|echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh}}<br />
:{{cmdroot|echo 70 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh}}<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/*_charge_thresh}}<br />
{{HINT|Battery charging thresholds can be used to keep Li-Ion and Li-Polymer batteries partially charged, in order to [[Maintenance#Battery_treatment|increase their lifetime]].}}<br />
To prevent charging for 17 minutes (regardless of thresholds):<br />
:{{cmdroot|echo 17 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
{{HINT|Charge inhibiting can be used to reduce the power draw of the laptop, in order to use an under-spec power supply that can't handle the combined power draw of running and charging. It can also be used to control which battery is charged when [[How to use UltraBay batteries|using an Ultrabay battery]].}}<br />
<br />
To cancel charging preventation:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes}}<br />
<br />
To force battery discharging (even if connected to AC):<br />
:{{cmdroot|echo 1 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
{{HINT|This can be used to choose which battery is discharged when [[How to use UltraBay batteries|using an UltraBay battery]]. For example, see the {{CodeRef|tp-bat-balance}} script.}}<br />
<br />
To cancel forced discharge:<br />
:{{cmdroot|echo 0 > /sys/devices/platform/smapi/BAT0/force_discharge}}<br />
<br />
{{HINT|TPBattStat-Applet is a gnome applet for integrating battery balancing with a graphics and/or text display of both batteries in a panel. Battery balancing improves battery life by not leaving one battery empty while the other discharges. For the latest alpha release, see https://github.com/teleshoes/tpbattstat-applet}}<br />
<br />
====Making the settings permanent on reboot====<br />
<br />
If you always use the same type of battery, then you may want the same settings to be configured each time you boot the machine.<br />
<br />
If you use various types of battery, then you may want to consider writing some scripts to detect the battery type and apply the appropriate settings.<br />
<br />
=====Debian=====<br />
<br />
It is not necessary to create your own init.d script or modify /etc/rc.local - you just need the package sysfsutils:<br />
:{{cmdroot|apt-get install sysfsutils}}<br />
<br />
Now, put your desired settings in /etc/sysfs.conf:<br />
<br />
<pre><nowiki># cat >> /etc/sysfs.conf << EOF<br />
# For a LiIon battery in a Thinkpad<br />
devices/platform/smapi/BAT0/start_charge_thresh = 50<br />
devices/platform/smapi/BAT0/stop_charge_thresh = 80<br />
EOF</nowiki></pre><br />
<br />
The init script supplied by sysfsutils will load these settings on each boot.<br />
<br />
===Battery status features===<br />
To view extended battery status such as charging state, voltage, current, capacity, cycle count and model information:<br />
<br />
<pre><br />
# cat /sys/devices/platform/smapi/BAT0/installed<br />
# cat /sys/devices/platform/smapi/BAT0/state # idle/charging/discharging<br />
# cat /sys/devices/platform/smapi/BAT0/cycle_count<br />
# cat /sys/devices/platform/smapi/BAT0/current_now # instantaneous current<br />
# cat /sys/devices/platform/smapi/BAT0/current_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/power_now # instantaneous power<br />
# cat /sys/devices/platform/smapi/BAT0/power_avg # last minute average<br />
# cat /sys/devices/platform/smapi/BAT0/last_full_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_percent<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_running_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_charging_time<br />
# cat /sys/devices/platform/smapi/BAT0/remaining_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/design_capacity<br />
# cat /sys/devices/platform/smapi/BAT0/voltage<br />
# cat /sys/devices/platform/smapi/BAT0/design_voltage<br />
# cat /sys/devices/platform/smapi/BAT0/manufacturer<br />
# cat /sys/devices/platform/smapi/BAT0/model<br />
# cat /sys/devices/platform/smapi/BAT0/barcoding<br />
# cat /sys/devices/platform/smapi/BAT0/chemistry<br />
# cat /sys/devices/platform/smapi/BAT0/serial<br />
# cat /sys/devices/platform/smapi/BAT0/manufacture_date<br />
# cat /sys/devices/platform/smapi/BAT0/first_use_date<br />
# cat /sys/devices/platform/smapi/BAT0/temperature # in milli-Celsius<br />
# cat /sys/devices/platform/smapi/ac_connected<br />
</pre><br />
<br />
The raw status data is also available, including some fields not listed above (in case you can figure them out):<br />
<br />
:{{cmdroot|cat /sys/devices/platform/smapi/BAT0/dump}}<br />
<br />
In all of the above, replace <tt>BAT0</tt> with <tt>BAT1</tt> to address the 2nd battery.<br />
<br />
Note that the battery status readout conflicts with the stock [[HDAPS|hdaps]] driver, so if you use <tt>hdaps</tt> you will need to load <tt>tp_smapi</tt> using {{cmdroot|1=make load HDAPS=1}} (see [[#Bundled hdaps driver|Bundled hdaps driver]] below).<br />
<br />
On [[ACPI]]-enabled systems, most of above information is also available through the files under {{path|/proc/acpi/battery}}. However, the ACPI interface does not include the instantaneous power and cycle count readouts, and does not work well when [[How to use UltraBay batteries|hotswapping UltraBay batteries]].<br />
<br />
====Scripts====<br />
Some scripts can make it easier to grep the information you need from tp_smapi<br />
* [[battery.rb]]<br />
<br />
===Other features===<br />
<br />
There is also [[sysfs]] attribute for making direct SMAPI requests to the SM BIOS firmware. Don't touch it unless you really know what you're doing. Example:<br />
# echo '211a 100 0 0' > /sys/devices/platform/smapi/smapi_request; cat /sys/devices/platform/smapi/smapi_request<br />
211a 34b b2 0 0 0 'OK'<br />
The "4b" in the 2nd value, converted to decimal, is 75: the current charging stop threshold (stop_charge_thresh).<br />
<br />
===Bundled <tt>hdaps</tt> driver===<br />
<br />
The tp_smapi package includes a modified version of the <tt>hdaps</tt> Linux kernel driver used by the [[HDAPS]] system. It has remained outside the mainline kernel for a few years for several reasons, [https://lists.ubuntu.com/archives/kernel-team/2009-April/005565.html] including the upstream maintainer's assertion that the new code's anonymous author was under a NDA. (Although this would not normally expose the kernel team to litigation.) [http://lkml.org/lkml/2008/9/15/126] [http://lkml.org/lkml/2008/10/7/403] [http://lkml.org/lkml/2008/10/7/428]<br />
<br />
To use <tt>tp_smapi</tt> and <tt>hdaps</tt> concurrently, you '''must''' use the modified version.<br />
<br />
To build the modified version, simply append the <tt>HDAPS=1</tt> parameter to the <tt>make</tt> command (see [[#Installation|Installation]] above):<br />
:{{cmdroot|1=make load HDAPS=1}}<br />
or<br />
:{{cmdroot|1=make install HDAPS=1}}<br />
<br />
If you don't do that, you will not be able to load <tt>tp_smapi</tt> (and its support module <tt>thinkpad_ec</tt>) when <tt>hdaps</tt> is loaded, and vice versa. You can use <tt>rmmod</tt> to switch between these modules.<br />
<br />
Note that some of the battery status is also visible through ACPI ({{path|/proc/acpi/battery/*}}), independently of <tt>tp_smapi</tt>.<br />
<br />
The modified <tt>hdaps</tt> has several changes:<br />
* The <tt>hdaps</tt> driver in mainline kernels conflicts with the extended battery status (they use the same IO ports). The modified <tt>hdaps</tt> coordinates this access through the bundled <tt>thinkpad_ec</tt> driver.<br />
* The modified <tt>hdaps</tt> driver fixes reliability and improves support for recent ThinkPad models (*60 and newer), since unlike the mainline driver, it correctly follows the Embedded Controller communication protocol.<br />
* Several other improvements, such as the ability to control the polling rate.<br />
<br />
===Troubleshooting===<br />
==== <tt>thinkpad_ec: cannot claim io ports 0x1600-0x161f</tt> ====<br />
The "<tt>thinkpad_ec: cannot claim io ports 0x1600-0x161f!</tt>" error message is printed when loading the <tt>thinkpad_ec</tt> module on some recent ThinkPad models. This occurs because the ACPI BIOS DSDT is reserving ports used by tp_smapi.<br />
<br />
As a workaround, add the <tt>force_io=1</tt> module parameter to <tt>thinkpad_ec</tt> in {{path|/etc/modprobe.conf}} (or your distribution's equivalent). Add the line:<br />
: options thinkpad_ec force_io=1<br />
<br />
For transient testing, load the modules as follows:<br />
<br />
: {{cmdroot|1=make load HDAPS=1 FORCE_IO=1}}<br />
<br />
Note: force_io option was added in tp_smapi v0.40 (released 2008-12-16).<br />
<br />
Models which need this option include: {{T400}}, {{T500}}, {{X60s}}, {{X61}}, {{X301}}<br />
<br />
More information:<br />
* http://bugzilla.kernel.org/show_bug.cgi?id=12221<br />
* http://www.nabble.com/thinkpad_ec-fails-to-load-on-Thinkpad-T500-td19932985.html<br />
<br />
==== <tt>thinkpad_ec: no ThinkPad embedded controller!</tt> ====<br />
If you get "<tt>thinkpad_ec: no ThinkPad embedded controller!</tt>" when trying to load the module on a supported model listed below, you should [[BIOS_Upgrade|upgrade your BIOS]]. Some early BIOS (like 1.x on the X31) don't handle the embedded controller.<br />
<br />
==== <tt>T60p writing to start_charge_thresh/stop_charge_thresh does not work!</tt> ====<br />
Writing to /sys/devices/platform/smapi/BAT0/start_charge_thresh succeeds, but the older value does not change. Solution: unknown. If you know a solution please update here.<br />
<br />
UPDATE: Failure to effectively change sysfs values sometimes happens at boot time (through sysfs.conf OR etc/local.start for instance) when the values have never previously been changed manually (ie using echo from a shell). Try initializing the values manually before including them in boot-time scripting.<br />
<br />
===Model-specific status===<br />
<br />
Tip: The <tt>thinkpad-acpi</tt> module reports both the BIOS and EC firmware versions when it loads.<br />
<br />
<div style="font-size: 92%"><br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|+<tt>tp_smapi</tt> feature support matrix<br />
|-<br />
! colspan=12 style="text-align:center;background:#efefef;" |<br />
<br />
=====A series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{A22p}} 2629-USG<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || N/A || N/A || || || ||<br />
|-<br />
! {{A30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! colspan=12 style="text-align:center;background:#efefef;" |<br />
<br />
=====G series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{G41}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || N/A || N/A || || || ||<br />
|-<br />
! colspan=12 style="text-align:center;background:#efefef;" |<br />
<br />
=====R series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{R31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || N/A || N/A || || || || No SMAPI BIOS<br />
|-<br />
! {{R40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || N/A || N/A || || || ||<br />
|-<br />
! {{R50}}<br />
| {{Cunk}} || {{Cno}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || || ||<br />
|-<br />
! {{R50e}} 1834-JAG<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! {{R50e}} 1834-5US<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! {{R50p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || || ||<br />
|-<br />
! {{R51}} 18*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.32 || 3.22 || || Machine types 1829, 1830, 1831 and 1836<br />
|-<br />
! {{R51}} 28*<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || 1.29 || || Machine types 2883, 2887, 2888, 2889, 2894 and 2495<br />
|-<br />
! {{R52}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.33 || 1.29 || 1.06 ||<br />
|-<br />
! {{R60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}} || {{Cno|text=}} 1 || 0.33 || || ||<br />
|-<br />
! {{R61}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cyes}} || {{Cyes|text=}} 1 || 0.35-test1 || 7KETA7WW 2.07 || 7KHT24WW 1.08 || Machine type 8918<br />
|-<br />
! {{R61i}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cunk}} || {{Cunk}} || || || || Machine type 8250<br />
|-<br />
! {{R400}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} ||{{Cyes}} || {{Cyes|text=}} 1 || 0.40-1 || || || Machine type 7443<br />
|-<br />
! {{R500}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} ||{{Cunk}} || {{Cyes|text=}} 1 || 0.40-1 || || ||<br />
|-<br />
! colspan=12 style="text-align:center;background:#efefef;" |<br />
<br />
=====T series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{T20}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || N/A || N/A || || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T22}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || N/A || N/A || || || || Has SMAPI BIOS but no function is supported. EC LPC3 protocol fails.<br />
|-<br />
! {{T23}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! {{T30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! {{T40}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! {{T40}} 2373-72U<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || 0.40 || 3.23 || 1RHT71WW-3.04 ||<br />
|-<br />
! {{T40p}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! {{T41}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.37 || 3.23 || 3.04 ||<br />
|-<br />
! {{T41}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.40 || 3.20 || 3.04 ||<br />
|-<br />
! {{T41}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.40 || 3.23 || 3.04 ||<br />
|-<br />
! {{T41p}} 2373-AM9<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || 3.20 || v3.04 ||<br />
|-<br />
! {{T42}}<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || || ||<br />
|-<br />
! {{T42p}} 2373-KXU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || 3.21 || || Stop charge threshold works in Windows, but dmesg says "__get_real_thresh: cannot get stop_thresh of bat=0: Function is not supported by SMAPI BIOS".<br />
|-<br />
! {{T42p}} 2373-KUU<br />
| {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || || ||<br />
|-<br />
! {{T43}} 2686<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.33 || 1.27 || ||<br />
|-<br />
! {{T43p}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes|text=}} 0 || || || ||<br />
|-<br />
! {{T60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.32 || || ||<br />
|-<br />
! {{T60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.34 || || ||<br />
|-<br />
! {{T60}} 1951-24G<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.36 || 1.09a || ||<br />
|-<br />
! {{T60}} 2007-FSG<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.39 || 1.10 || 1.05b ||<br />
|-<br />
! {{T60}} 1951-CZ1<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.40 || 2.23 || 1.07 ||<br />
|-<br />
! {{T60p}} 8743-CTO<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.32 || || ||<br />
|-<br />
! {{T61}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.32 || || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]<br />
|-<br />
! {{T61p}} 6457-7XG<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 1 || 0.32 || || || [http://ubuntuforums.org/showthread.php?p=3146719 ref]<br />
|-<br />
! {{T400}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.40 || 1.19 || || Requires <tt>force_io=1</tt> parameter to <tt>thinkpad_ec</tt><br />
|-<br />
! {{T400s}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 2 || 0.40 || 1.06 || || Requires <tt>invert=2</tt> paramteter to <tt>hdaps</tt><br />
|-<br />
! {{T410s}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 4 || 0.40 || 1.14 || || Requires <tt>invert=4</tt> accoding to <tt>hdaps-gl</tt><br />
|-<br />
! {{T410}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.40 || 1.25 || ||<br />
|-<br />
! {{T500}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 1 || 0.40 || 2.07 || || Requires <tt>force_io=1</tt> parameter to <tt>thinkpad_ec</tt><br />
|-<br />
! {{T510}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.40 || 1.12 || 1.08 || ||<br />
|-<br />
! {{T510}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.40 || 1.35 || 1.17 || ||<br />
|-<br />
! colspan=12 style="text-align:center;background:#efefef;" |<br />
<br />
=====W series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{W700}} 2757-CTO<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.40 || 2.08 || 1.05 ||<br />
|-<br />
! {{W500}} 4062-4EG<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || 0.40 || {{Cunk}} || {{Cunk}} ||<br />
|-<br />
<br />
! colspan=12 style="text-align:center;background:#efefef;" |<br />
<br />
=====X series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{X22}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || N/A || N/A || || || || no EC controller found<br />
|-<br />
! {{X24}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cunk}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! {{X30}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || 0.34 || 1.09 || ||<br />
|-<br />
! {{X31}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || 0.40 || 3.02 || ||<br />
|-<br />
! {{X32}}<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cyes}} || N/A || N/A || || || ||<br />
|-<br />
! {{X40}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.32 || 2.08 || 1.62 || <br />
|-<br />
! {{X41}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.32 || || ||<br />
|-<br />
! {{X41_Tablet}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.40 || 75ET60WW (2.06 ) || 75HT20WW (1.02) ||<br />
|-<br />
! {{X60}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || || 2.07 || 1.10 || 2.6.20 issue (see discussion)<br />
|-<br />
! {{X60_Tablet}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 3 || 0.34 || 7JET25WW (1.10 ) || 7JHT13WW 1.04 || [http://luke.no-ip.org/x60tablet/ ref] [http://rad.bioinfo.ulaval.ca/hardware/x60tablet ref]<br />
|-<br />
! {{X60s}} 1704-5UG<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cunk}} || {{Cno|text=}} 3 || 0.34 || 7BETD2WW 2.13 || 7BHT40WW 1.13 ||<br />
|-<br />
! {{X60s}} 1704-56G<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cno|text=}} 3 || 0.40 || 7BETD5WW 2.16 || 7BHT40WW 1.13 ||<br />
|-<br />
! {{X61}} 7673-CTO<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 6 || 0.40 || 7NETB9WW (2.19) || 7MHT25WW-1.03 ||<br />
|-<br />
! {{X61}} 7675-4KU<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.34 || 7NET30WW (1.11 ) || 7MHT24WW 1.02 ||<br />
|-<br />
! {{X61_Tablet}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.32 || || ||<br />
|-<br />
! {{X61s}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 / 3 || 0.32 || || || [http://www.slackwiki.org/ThinkPad_X61s ref] says 3 but conflicting report received<br />
|-<br />
! {{X100e}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || 0.40 || 6XET36WW (1.20a) || 6XHT36WW (1.176000) || x100e NTS4UTX, dual-core L625 also works (NTT27MH)<br />
|-<br />
! {{X200}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 7 || 0.40 || 6DET40WW (2.04 ) || 7XHT22WW 1.04 ||<br />
|-<br />
! {{X200s}} 7470-X01<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 5 || 0.40 || 6DET63WW (3.13) || 7XHT24WW 1.06 ||<br />
|-<br />
! {{X201}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 6 || 0.40 || || ECP: ||<br />
|-<br />
! {{X201s}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cno|text=}} 5 || 0.40 || 6QET44WW (1.14 ) || ECP: 1.09/1.09 ||<br />
|-<br />
! {{X220}} 4290-2GW<br />
| {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || {{Cno}} || 0.40 || 8DET46WW (1.16 ) || "unknown" ||<br />
|-<br />
! {{X220}} 4286-CTO<br />
| {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cno}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.41 || 8DET54WW (1.24 ) || {{Cunk}} || HDAPS works fine, don't know wich axis orientation thougth ||<br />
|-<br />
! {{X300}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || 0.37 || 7TET25WW (1.02 ) || 7THT15WW 1.00c ||<br />
|-<br />
! colspan=12 style="text-align:center;background:#efefef;" |<br />
<br />
=====Z series=====<br />
|-<br />
{{tp_smapi/model_status_table_header}}<br />
|-<br />
! {{Z60m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || || ||<br />
|-<br />
! {{Z60t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || {{Cyes}} || {{Cunk}} || {{Cunk}} || || || ||<br />
|-<br />
! {{Z61m}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes|text=}} 0 || 0.32 || || ||<br />
|-<br />
! {{Z61t}}<br />
| {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || || || || [https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/45014 ref]<br />
|-<br />
! {{Z61p}}<br />
| {{Cyes}} || {{Cyes}} || {{Cunk}} || {{Cyes}} || {{Cyes}} || {{Cyes}} || {{Cunk}} || || || ||<br />
|-<br />
! colspan=12 style="text-align:center;background:#efefef;" |<br />
<br />
=====SL series and IdeaPad=====<br />
|-<br />
! colspan=12 style="text-align:left" |<br />
The ThinkPad SL series and IdeaPad series have firmware that is completely different from other ThinkPad models. Neither [[tp_smapi]] nor [[thinkpad-acpi]] support these models.<br />
|}<br />
</div><br />
<br />
<br />
SMAPI capabilities may depend on the BIOS version as well, so upgrading to the latest version of the BIOS might provide more SMAPI functions (especially true for long-lived BIOS with lots of releases, like the TP-1R).<br />
<br />
Please update the above and report your experience on the [[Talk:tp_smapi|discussion]] page. If the module loads but gives a "<tt>not supported</tt>" or "<tt>not implementeded</tt>" error when you try to use some specific file in {{path|/sys/devices/platform/smapi/}}, please report the <tt>dmesg</tt> output and whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that. <br />
<br />
While at it, you may also want to add your laptop to the [[list of DMI IDs]].<br />
<br />
=====HDAPS axis orientation=====<br />
<sup>1</sup> The HDAPS axis orientation is set using the <tt>invert</tt> module parameter (at load time) or sysfs attribute (at runtime). The <tt>hdaps</tt> driver of tp_smapi supports all 8 possible sensor orientations (inversion and swapping). You can use [[HDAPS#Visualisation_of_ThinkPad_orientation|hdaps visualisation]] to check if the settings is correct.<br />
<br />
The <tt>invert</tt> parameter is an integer between 0 and 7, whose meaning is defined below. (This is confusing. Most people will find it easier to just try all 8 possibilities.)<br />
<br />
Let <tt>X</tt> and <tt>Y</tt> denote the hardware readouts. Let <tt>R</tt> denote the laptop's roll (tilt left/right), and let <tt>P</tt> denote the laptop's pitch (tilt forward/backward). The possible values are as follows:<br />
invert=0: R= X P= Y (same as mainline)<br />
invert=1: R=-X P=-Y (same as mainline)<br />
invert=2: R=-X P= Y (new)<br />
invert=3: R= X P=-Y (new)<br />
invert=4: R= Y P= X (new)<br />
invert=5: R=-Y P=-X (new)<br />
invert=6: R=-Y P= X (new)<br />
invert=7: R= Y P=-X (new)<br />
<br />
[[Category:Drivers]] [[Category:Patches]]<br />
<br />
===Tools using this driver===<br />
<br />
The driver's interface can be accessed directly through the files under {{path|/sys/devices/platform/smapi}}, or via the following tools:<br />
* [[KThinkBat]] - display battery status on the KDE <tt>kicker</tt> panel.<br />
* [[gkrellm-ThinkBat]] - battery status plugin for Gkrellm2<br />
* {{CodeRef|thinkpad-smapi.sh}} - script to display various SMAPI information using tp_smapi module.<br />
<br />
===See also===<br />
* https://wiki.archlinux.org/index.php/Tp_smapi#Workaround_for_Partially_Supported_Laptops<br />
<br />
== Headline text ==</div>Dooblemhttps://www.thinkwiki.org/w/index.php?title=Problem_with_fan_noise&diff=45217Problem with fan noise2009-12-19T15:29:36Z<p>Dooblem: /* Software solution - Linux */</p>
<hr />
<div>Information about the fan noise problem in Thinkpad models from 2003/2004/2005.<br />
<br />
==Problem description==<br />
<br />
There seem to be two different issues causing annoyance from fan noise:<br />
<br />
===Acceleration (pulsing) problem===<br />
The Thinkpad fan briefly accelerates in regular intervals (every few seconds), causing an annoying periodic pulse noise.<br />
<br />
See [http://lophiomys.gmxhome.de/Thinkpad_R50_Periodic_Fan_Noise.html here] for audio recordings of this noise on ThinkPad {{R50}} and {{R51}}.<br />
<br />
===Always-on problem===<br />
The fan is always on, even when the laptop is rather cool.<br />
<br />
==Affected Models==<br />
<br />
===Acceleration (pulsing) problem:===<br />
*ThinkPad {{600E}}<br />
*ThinkPad {{R40}}<br />
*ThinkPad {{T40}}, {{T40p}}, {{T41}}, {{T42}}, {{T43}}<br />
*ThinkPad {{X31}}, {{X60}}<br />
<br />
===Always-on problem:===<br />
*ThinkPad {{600X}}<br />
*ThinkPad {{770X}}<br />
*ThinkPad {{A31p}}<br />
*ThinkPad {{R32}}, {{R50}}, {{R50p}}, {{R51}}, {{R52}}<br />
*ThinkPad {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}}, {{T60}}<br />
*ThinkPad {{X32}}, {{X40}}, {{X41}}, {{X60}}, {{X61}}<br />
*ThinkPad {{Z60m}}<br />
*ThinkPad {{Z61m}}<br />
<br />
==Affected Operating Systems==<br />
<br />
===Acceleration (pulsing) problem:===<br />
*All operating systems (this is a firmware bug). Note that some vendors might ship with fan-control workarounds enabled by default.<br />
<br />
===Always-on problem:===<br />
*Linux, all flavours<br />
*FreeBSD 5.3<br />
*OpenBSD 3.7 (Tested with X40)<br />
*Windows XP<br />
*Windows 2000 pro<br />
<br />
==Status==<br />
<br />
===Acceleration (pulsing) problem:===<br />
The pulsing is triggered by the embedded controller when it monitors the fan speed and adjusts the fan control accordingly every few seconds.<br />
<br />
For some models, IBM released an update to the embedded controller program that seems to at least partially solve this problem:<br />
<br />
Version 3.03 - 1RHT70WW<br />
NOTE: This version of Embedded Controller Program will only work with BIOS Version 3.06f (or higher).<br />
* (Fix) Reduced Fan noise in some models.<br />
<br />
The update can be found here: http://www-306.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-50279<br />
<br />
Unfortunately, this update was not correctly ported to the Thinkpad {{T43}} and {{R52}} firmware: someone made a careless typo which generally results in no improvement in behaviour: the fan may continue to pulse every ~4.8s, and for some it may accelerate a great deal every 30 seconds or so, making a lot of noise. An unofficial patched firmware exists in source code format (see below).<br />
<br />
For models which still have broken firmware (e.g., ThinkPad {{T43}} with official firmware), there is a software workaround (see below).<br />
<br />
--<br />
A few weeks ago the fan of my ThinkPad {{T43}} started to get an noncircular rotation which ended in an even louder noise which made the whole laptop vibrate. I knew the 41W5204 fan from a different article since I always hated the fan noise of the {{T43}} and because my model has both 'the always on problem' and 'the pulsing noise problem'. So after all I replaced my old factory fan with the new 41W5204 which is so much batter since this fan is very very silent. (I hear the harddrive for the first time now which wasn't possible with the old fan for the last 3 years). I bought that fan here in Germany for about 29,20 Euro and the part was called 41W5204 - "IBM Ersatzteil Fan Assy Thinkpad T40 41 42 (S)". Search for 41W5204 if you want the same fan.<br />
It's no magic because I can still hear the fan, to make this clear but it's much better now!<br />
<br />
--[[User:Joachim Schiele|Joachim Schiele]] 19:13, 15 April 2008 (CEST)<br />
<br />
===Always-on problem:===<br />
The problem is yet unsolved. But see the partial fix below.<br />
<br />
IBM made a statement regarding this on their homepage:<br />
http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-56504<br />
<br />
==Solutions==<br />
<br />
===Acceleration problem:===<br />
<br />
====Replacing the fan====<br />
Some people reported that they replaced the original fan against one of a similar notebook without the problem has worked for them, i.e. changing a {{T41}}s fan against one from a {{T41p}}.<br />
<br />
====BIOS upgrade====<br />
For relevant models, you can try upgrading your embedded controller program to version 3.03 or newer.<br />
The update can be found here: http://www-306.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-50279<br />
<br />
Also, in late November 2005 IBM released a BIOS and embedded controller update (BIOS 1.24, EC 1.04) for the T43/p<br />
(Machine types 2668, 2669, 2678, 2679, 2686, 2687). Reported results are not consistent and range from cooler sensor readings (some sensors seem to report lower temperatures with this patch), less fan pulsing (also only reported by some users), and slightly different fan behaviour.<br />
The link to this update is: http://www-306.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&lndocid=MIGR-58597#bios<br />
<br />
====Fixing the firmware====<br />
For T43/R52 firmwares 1YHT29WW and 70HT28WW, a fix is available and known to work, but it is not easy to deploy. You have to know enough to modify the firmware yourself. The fix is in the firmware source code (but disabled by default), see [[Embedded Controller Firmware]] for some information to get you started. If you are not at ease programming microcontrollers, please stick to the software workarounds, there's a reason this fix is not just an easy download away.<br />
<br />
====Software workaround====<br />
The problem can be solved through appropriate modulation of the embedded controller, using an [[ACPI fan control script#Variable speed control scripts|ACPI fan control script]].<br />
<br />
There is also a [http://www.gambitchess.org/moin.py/ThinkPad_Fan_Control GTK GUI program (packaged for Ubuntu 7.10 and 8.04)]<br />
<br />
===Always on problem:===<br />
<br />
====Reducing power consumption====<br />
Generally, this problem is triggered by heating due to high power consumption. See [[How to reduce power consumption]].<br />
<br />
It seems like for some people a combination of enabling dynamic frequency scaling and using the most recent radeon drivers (from xorg 6.8.x) with the DynamicClocks option enabled helped lowing the fan rotation and hence making it more quiet.<br />
<br />
Also the fglrx driver from ATI is said to show the same effect when used together with dynamic frequency scaling.<br />
<br />
I can confirm that on my R51, the graphics card seems to be the problem. The fan keeps running most of the time even with AC on, but even though I activated DynamicClocks (with the radeon driver), I can see in /proc/acpi/ibm/thermal that the GPU (4th value) is at 52-53°. The fan stops running as soon as the temperature gets down to 50 degrees and starts again at 53. While debugging, I seemed(!) to be able to reduce the temperature together with the resolution (e.g. "xrandr -s 2" to get from 1400x1050 to 1024x768) or by switching off the graphics with "xset dpms force off". The bottom line is that the below "partial fix" won't work because the GPU temperature is the problem.<br />
<br />
The GPU also seems to be the culprit on the t43p. Even with the fan always on (with speeds of around 4K reported in /proc/acpi/ibm/fan), the temperature never drops below 55. This is with the Xorg driver and DynamicClocks=on. With the ATI's fglrx driver, the GPU temp seems slightly higher (although I haven't performed a careful comparison). Without the fan, the temperature very quickly climbs to above 60. <br />
<br />
With the Pentium M, CPU heat dissipation can be reduced through [[Pentium M undervolting and underclocking|undervolting and underclocking]].<br />
<br />
In regard to the technical side of controlling the fan, see [[How to control fan speed]] for a description of the embedded controller byte at offset 0x2F which controls the fan activity (T4X series and other later models). In addition to these in the discussion to this topic [http://www.thinkwiki.org/wiki/Talk:Problem_with_fan_noise] a user observed hidden temperature sensors. In the ACPI DSDT dump a {{T43}} reports 8 temp values at offset 0x78 (some of which may be off and yield a constant value of 0x80), but there are at least three more values at offset 0xC0 which from observation seem to show temperatures as well. One of these sensors (0xC1) is most likely in the area of the mini PCI slot (related to WLAN activity) and seem to trigger the fan at 43°C ({{T43}}, Windows XP). Another one (0xC2) seems to be located below the power supply (rear left, in the area under the Esc, F1-F3 keys). This one noticeably increases when the battery is charged. Both, the 0xC1 and 0xC2 react quite slowly to fan activity.<br />
<br />
For more information about the thermal sensors that are monitored to decide the fan speed, see [[Thermal sensors]].<br />
<br />
{{NOTE|Unplugging AC and plugging it back may cause the EC to reset the fan control loop, and thus it may cause it to switch off the fan if the ThinkPad is cool enough already, and the fan was activated just due to the built-in hysteresis in the fan control loop.}}<br />
<br />
====Software solution - Windows====<br />
{{WARN|This circumvents the BIOS fan control, so be careful and use at your own risk! Don't toast your ThinkPad.}}<br />
<br />
The ThinkPad Fan Control Utility (http://sourceforge.net/projects/tp4xfancontrol/) actively monitors the CPU Temperature and uses ACPI to manually control the fan speed. It was written for the T43, but works on a number of other models as well. A port of this programme running as a Windows service is available from http://www.cceye.com/index.php?topic=73.0 (download: http://www.cceye.com/index.php?action=dlattach;topic=73.0;id=9 ). Extensive discussion of this utility is available at http://forum.thinkpads.com/viewtopic.php?t=17715<br />
<br />
The version which runs as a Windows service is recommended because the system will restart it if the programme crashes. A crash of either programme could leave your computer without any active cooling, leading to overheating and potentially serious damage.<br />
<br />
ref links <br />
http://www.thinkwiki.org/wiki/Problem_with_fan_noise<br />
http://forum.thinkpads.com/viewtopic.php?t=17715<br />
<br />
Note:<br />
1 The Windows Event log will fill up with repeated errors regarding the Embedded Controller: please clean your event log regularly.<br />
2 The programme may crash from time to time, but the service version should restart after a crash.<br />
<br />
====Software solution - Linux====<br />
<br />
See [[How to control fan speed]] and [[Fan control scripts]].<br />
<br />
{{WARN|This circumvents the BIOS fan control, so be careful and use at your own risk! Don't toast your ThinkPad.}}<br />
<br />
I had this problem on my X24 by using a stock Debian Etch kernel. I solved it by compiling an unpatched kernel myself and leaving the fan module out. But I guess the fan module wasn't responsible for, because the fan started to run before modules were loaded.<br />
<br />
[http://www.gambitchess.org/moin.py/ThinkPad_Fan_Control A GTK GUI program (packaged for Ubuntu Gutsy Gibbon 7.10)] may also help.<br />
<br />
You can use the fan control scripts to [http://en.positon.org/post/For-a-quiet-Thinkpad increase a bit the minimum fan trigerring thresolds].<br />
<br />
====Cleaning the fan or removing obstructions====<br />
<br />
If your ThinkPad is old or has been exposed to dusty environment, it is possible that accumulated dirt on the fan and the heatsink cause abnormal behavior (though the problems have also been reported for brand new units). You can use a combination of a vacuum cleaner and an air dusting spray to clean things up from the outside. Bigger agglomerations of dust may require removing by tweezers through the openings in the fan grill. Getting to the fan itself from the inside is quite tricky and may require removing the keyboard or LCD - see [[Maintenance#Cleaning_the_Interior|Cleaning the Interior]].<br />
<br />
If the fan is especially noisy, there may be some obstruction other than dirt in the way. For instance, in some ThinkPad models, a wire that is not properly taped down can become draped over the CPU fan, slowing down fan rotation and emitting a loud buzzing sound. Moving such an obstruction out of the way can greatly decrease fan noise.<br />
<br />
After you clean things up, power on your ThinkPad. You should hear the fan start up for a bit when booting. If it does not, this means that the cleaning procedure has actually blocked the fan and your computer will overheat at some point (BIOS POST test does not appear to catch obstructed fans). Keep cleaning.<br />
<br />
If cleaning does not fix the problem, the fan can be replaced as described in your laptop's appropriate Hardware Maintenace Manual: select your laptop at the [[Models#Available Models|Models Page]] and follow the links. All that is generally required is some screwdrivers and heat sink thermal grease. Do NOT attempt to install without the silicon grease.<br />
<br />
If you feel comfortable using a soldering iron, you are more than qualified to do the procedure. Just remember do NOT force anything, at several steps there are tiny plastic "tabs" that can break off necessiting a more expensive bezel / keyboard / GPU replacement.<br />
<br />
====Hardware modification====<br />
An extensive forum discussion of this problem for the ThinkPad {{T43}}/{{T43p}}, and possible hardware mods for thermal enhancement, appear [http://forum.thinkpads.com/viewtopic.php?t=14580http://forum.thinkpads.com/viewtopic.php?t=14580 here]. There users who had opened the machine reported uncooled Northbridge and Southbrige chips, having no physical connecting to the heat pipe. Building a hardware copper bridge to these changed the temperature characteristics but did not cure the "always on" problem. In another discussion on that forum a user said that among other areas the WLAN chip may be responsible for generating extra heat and that disabling WLAN (among other unused devices) may help. See also [[how to build a T43 southbridge cooler]].<br />
<br />
A new thread on the forums describes what cannot be called anything other than a major hardware bug in (some?) of the T43/p fans, which causes extra noise (both from airflow and also from direct metal-to-metal contact). It can be fixed by a simple hardware modification (during which time you might as well enhance the effectiveness of the heatsink by applying better thermal grease).<br />
<br />
*[http://forum.thinkpads.com/viewtopic.php?t=69539 HARDWARE FIX: how to fix a design bug in the T43/p fan to make it silent]<br />
*[http://forum.thinkpads.com/viewtopic.php?t=62688 HARDWARE FIX: enhancing the effectiveness of the Thermal Sink]</div>Dooblemhttps://www.thinkwiki.org/w/index.php?title=How_to_configure_the_TrackPoint&diff=39462How to configure the TrackPoint2008-11-02T20:16:47Z<p>Dooblem: /* TrackPoint under Ubuntu 8.10 using HAL */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |The [[Patch to enable advanced trackpoint configuration|kernel trackpoint driver]] is controlled by echoing values to special files. Common configuration options are outlined below.<br />
{{NOTE|<br />
*With kernels 2.6.19 and above config files for this driver are located in <tt>/sys/devices/platform/i8042/serio1</tt>.<br />
*With kernels 2.6.13 (inclusive) to 2.6.19 (exclusive) config files for this driver are located in <tt>/sys/devices/platform/i8042/serio0/serio2</tt>.<br />
*With kernels 2.6.11 (inclusive) to 2.6.13 (exclusive) config files for this driver are located in <tt>/sys/devices/platform/i8042/serio0</tt>.<br />
*With kernels 2.6.9 (inclusive) to 2.6.11 (exclusive) config files for this driver are located in <tt>/proc/trackpoint</tt>.<br />
*Prior to kernel 2.6.9, configuration was not done through files but through command-line options to the psmouse module. (Note this means you must compile psmouse as a module!) See http://stephen.evanchik.com/node/16.<br />
}}<br />
|}<br />
<br />
==General Configuration==<br />
The configuration options are reflected by the files you can find in {{path|/sys/devices/platform/i8042/serio0/serio2}}. See the [[Patch to enable advanced trackpoint configuration|TrackPoint driver page]] for a complete list.<br />
Configuration is done by echoing the appropriate values into these special files.<br />
<br />
If you want to set the sysfs parameters at boot, you can use the [http://linux-diag.sourceforge.net/Sysfsutils.html sysfsutils] and put the preferred value in /etc/sysfs.conf.<br />
<br />
==Most common Features==<br />
The most common settings are '''Press to Select''', '''sensitivity''', '''speed''' and '''scrolling'''.<br />
<br />
===Press to Select===<br />
Press to Select allows you to tap the control stick which will simulate a left click. You can enable this feature by typing the following in to a terminal (you may need to be root):<br />
<br />
:{{cmdroot|echo -n 1 > /sys/devices/platform/i8042/serio0/serio2/press_to_select}}<br />
<br />
Press to Select should now be enabled. You can disable it in a similar manner:<br />
<br />
:{{cmdroot|echo -n 0 > /sys/devices/platform/i8042/serio0/serio2/press_to_select}}<br />
<br />
You can use this script to automate the operation<br />
<br />
#!/bin/bash<br />
if [ "$1" = "1" ]; then<br />
echo "Turning on tap on TrackPoint"<br />
echo -n 1 > /sys/devices/platform/i8042/serio0/serio2/press_to_select<br />
exit 0<br />
fi<br />
if [ "$1" = "0" ]; then<br />
echo "Turning off tap on TrackPoint"<br />
echo -n 0 > /sys/devices/platform/i8042/serio0/serio2/press_to_select<br />
exit 0<br />
fi<br />
echo -n "Tap status: "<br />
cat /sys/devices/platform/i8042/serio0/serio2/press_to_select<br />
<br />
===Sensitivity & Speed===<br />
Adjusting the speed and sensitivity of the TrackPoint requires echoing a value between 0 and 255 into the appropriate file. For example, for a speed of 120 and a sensitivity of 250, type the following into a terminal:<br />
<br />
:{{cmdroot|echo -n 120 > /sys/devices/platform/i8042/serio0/serio2/speed}}<br />
:{{cmdroot|echo -n 250 > /sys/devices/platform/i8042/serio0/serio2/sensitivity}}<br />
<br />
Feel free to experiment with your settings until you find a combination that is comfortable.<br />
<br />
When you satisfy your setting , add the two lines into /etc/rc.d/rc.local in order to avoid restoring the default setting every time the system reboots.<br />
<br />
===Scrolling===<br />
====Using a kernel prior to 2.6.11====<br />
The scrolling action is essentially the same as is used in the TrackPoint Windows drivers. To enable this feature, type the following in to a terminal (you may need to be root): <br />
<br />
:{{cmdroot|echo -n 1 > /proc/trackpoint/scroll}}<br />
<br />
Then press the middle button and push the stick up and down to scroll. Similarly, to disable scrolling:<br />
<br />
:{{cmdroot|echo -n 0 > /proc/trackpoint/scroll}}<br />
<br />
====Using the X server (kernel 2.6.11+)====<br />
The scroll setting has been removed from the trackpoint driver in kernel versions 2.6.11 and above. Scroll emulation should now be handled in the X server.<br />
<br />
A nice side effect of that is, that middle button scrolling applies to any mouse and not just the TrackPoint interface, which can be a quite handy feature for desktop computers or people who prefer to use an external mouse, especially when scrolling through long lists or needing to use horizontal scrolling with a mouse which has only a vertical scroll wheel.<br />
<br />
The necessary functionality, known as "EmulateWheelTimeout" allowing to use button 2 for a middle click, wasn't implemented in Xorg prior to 6.9/7.0. However, there was a patch included in most distributions packages of Xorg, which was announced [http://www.mail-archive.com/devel@xfree86.org/msg03333.html here]. You can find an updated version of the package in the experimental branch of {{Debian}} or try to build the mouse driver yourself with the information in the announcement. This has successfully been tried with FC3's 6.8.2 packages.<br />
<br />
Once this functionality is in the X.org, add these lines to your TrackPoint configuration section in {{path|/etc/X11/xorg.conf}}:<br />
<br />
Option "EmulateWheel" "on"<br />
Option "EmulateWheelButton" "2"<br />
<br />
It may also be necessary to add these lines:<br />
<br />
Option "YAxisMapping" "4 5"<br />
Option "XAxisMapping" "6 7"<br />
<br />
which specify which buttons are mapped to motion in the vertical (Y) and horizontal (X) directions, respectively, in wheel emulation mode (see http://www.xfree86.org/current/mouse.4.html).<br />
<br />
{{HINT| Use the program "xev" to see, what mouse button identifiers are sent by your mouse/touchpad/trackpoint.<br />You might want to try: "xev &#124; grep button"}}<br />
{{HINT| If it does not work see if evdev is installed and remove it. On gentoo do the following:<br /><br />
eix xf86-input-evdev<br /><br />
emerge -C xf86-input-evdev<br /><br />
and then remove the evdev flag in make.conf INPUT_DEVICES}}<br />
<br />
So, a complete mouse section, that implements this nicely and works very well on my R51, even with a simultaneously connected USB mouse, looks like that (tried out today, 20th of September, 2006 on Dapper):<br />
<br />
Section "InputDevice"<br />
Identifier "Configured Mouse"<br />
Driver "mouse"<br />
Option "CorePointer"<br />
Option "Device" "/dev/input/mice"<br />
Option "Protocol" "ExplorerPS/2"<br />
Option "Emulate3Buttons" "on"<br />
Option "Emulate3TimeOut" "50"<br />
Option "EmulateWheel" "on"<br />
Option "EmulateWheelTimeOut" "200"<br />
Option "EmulateWheelButton" "2"<br />
Option "YAxisMapping" "4 5"<br />
Option "XAxisMapping" "6 7"<br />
Option "ZAxisMapping" "4 5"<br />
EndSection<br />
<br />
The mappings for Y and Z are the same, since the "Z-Axis" refers to actual hardware scrolling wheels which usually scroll the screen along the Y-Axis. If there is no hardware scrolling wheel present, horizontal and vertical scrolling using the TrackPoint work fine without the Z-Axis line.<br />
<br />
Now restart X and hold down button 2 and move the mouse to scroll, or just press and release button 2 for a middle click.<br />
<br />
To make this work with the synaptics driver for the touchpad, you can add<br />
Option "GuestMouseOff" "1"<br />
to the synaptics device section. This will make the synaptics driver ignore the Trackpoint, so it will be handled by the mouse driver. This allowed me to disable the touchpad while making the TrackPoint work like it should.<br />
<br />
{{NOTE| With the above mouse section in my xorg.conf all this works like a charm: <br />
*I can press the wheel on my external USB mouse and move the mouse up and down for scrolling<br />
*or I can just use the wheel on the external mouse for scrolling<br />
*or pressing the MMB button of the trackpoint and use the trackpoint for scrolling.<br />
*Even horizontal scrolling works automagically in Konqueror, for Firefox/Opera see below.<br />
<br />
Simultaneously I can use <br />
*a press on the external mouse's wheel <br />
*or the MMB of the trackpoint<br />
<br />
for pasting the buffer. Lovely! :) }}<br />
<br />
{{HINT| If you don't use the middle-mouse-button for pasting and sometimes pasting things by mistake while scrolling (witch is really odd) simply set the "EmulateWheelTimeOut" to "1" as a (bloody) workaround. Middle click will only possible with pressing left and right button simultaneously!}}<br />
<br />
<br />
===== EmulateWheelTimeout temporarily broken (-> fix for Ubuntu Dapper) ===== <br />
<br />
Unfortunately, there was a regression so that EmulateWheelTimeout was broken in X.org 6.9.0, and fixed<br />
on March 20th, 2006. <br />
You can see the [https://bugs.freedesktop.org/show_bug.cgi?id=5071 primary bug report] here, and also reports on the [http://qa.mandriva.com/show_bug.cgi?id=21196 Mandriva] and [http://lists.debian.org/debian-x/2006/01/msg00249.html Debian] ([http://bugs.debian.org/346098 #346098], [http://bugs.debian.org/320136 #320136]) packages.<br />
<br />
Unfortunately, this bug is still present in Ubuntu Dapper Drake's xserver-xorg-input-mouse package (version 1.0.3.1+cvs.20060109-0ubuntu1)!<br />
<br />
{{HINT|xserver-xorg-input-mouse (version 1.0.3.1+cvs.20060109-0ubuntu1.1) is in dapper-updates since July 3rd, 2006. You don't need to patch it anymore.}}<br />
<br />
Use the following procedure to make it (middle button scrolling & middle button pasting) work:<br />
<br />
:{{cmduser|cd /desired/path && mkdir tmp && cd tmp}} (create temporary directory somewhere)<br />
:{{cmduser|sudo nano /etc/apt/sources.list}} (insert/uncomment the deb-src lines, save and exit)<br />
:{{cmduser|sudo apt-get update}}<br />
:{{cmduser|apt-get source xserver-xorg-input-mice}} (in order to get the source code)<br />
:{{cmduser|sudo aptitude install xserver-xorg-dev}} (this package and the packages it depends on are needed in order to compile the source code, use aptitude for easy removal later on)<br />
:{{cmduser|cd xserver-xorg-input-mouse-1.0.3.1+cvs.20060109/}}<br />
:{{cmduser|wget http://librarian.launchpad.net/2639933/xserver-xorg-input-mouse_1.0.3.1+cvs.20060109-0ubuntu2.debdiff}} (downloads the patch that fixes the bug)<br />
:{{cmduser|patch -p1 < xserver-xorg-input-mouse_1.0.3.1+cvs.20060109-0ubuntu2.debdiff}} (applies the bug fix)<br />
:{{cmduser|fakeroot dpkg-buildpackage}} (rebuilds the package... watch out for errors and install other missing packages)<br />
:{{cmduser|sudo dpkg -i ../xserver-xorg-input-mouse_1.0.3.1+cvs.20060109-0ubuntu2_i386.deb}} (installs the rebuilt built package)<br />
:{{cmduser|sudo aptitude remove xserver-xorg-dev}} (removes the packages needed to rebuild the package)<br />
<br />
Hope it works for you, it did work for me!<br />
CrypTom<br />
<br />
===== Older versions of X.org =====<br />
<br />
For older versions of Xorg or for Xfree86 ({{path|/etc/X11/XF86Config}}) try this:<br />
<br />
Option "Emulate3Buttons" "true"<br />
Option "EmulateWheel" "true"<br />
Option "EmulateWheelButton" "2"<br />
<br />
Now restart X and hold down button two and move the mouse for scrolling. To get a middle click, press buttons 1 and 3 simultaneously.<br />
<br />
==Soft Transparent Mode==<br />
If you wish to connect a special device to the external PS/2 port, you should consider using "Soft Transparent Mode" so that the TrackPoint controller does not interpret any commands sent to the external PS/2 port. You can enable soft transparent mode by typing the following in to a terminal:<br />
<br />
:{{cmdroot|echo -n 1 > /sys/devices/platform/i8042/serio0/serio2/transparent}}<br />
<br />
Disabling soft transparent mode is similar:<br />
<br />
:{{cmdroot|echo -n 0 > /sys/devices/platform/i8042/serio0/serio2/transparent}}<br />
<br />
==Modify trackpoint parameter permanently in trackpoint.h==<br />
If you do not want to run a script to reconfigure the trackpoint<br />
you can change the default settings in the trackpoint header file that is located in<br />
/usr/src/<KERNEL_VERSION>/drivers/input/mouse/trackpoint.h.<br />
<br />
First you must convert the values (decimal numbers) you normaly echo to /sys/[...] to hex:<br />
<br />
'''echo -e 'obase=16;<DECIMAL_NUMBER>' | bc'''<br />
<br />
Then simply replace the default hex values in trackpoint.h, run 'make && make modules_install' to recompile and install psmouse.ko (should be compiled as module)<br />
<br />
<br />
Example patch (speed=100, sensitivity=190, press_to_select=1):<br />
<pre><br />
--- trackpoint.h.orig 2006-01-17 16:18:30.000000000 +0100<br />
+++ trackpoint.h 2006-01-17 16:25:47.000000000 +0100<br />
@@ -108,9 +108,9 @@<br />
/*<br />
* Default power on values<br />
*/<br />
-#define TP_DEF_SENS 0x80<br />
+#define TP_DEF_SENS 0xBE<br />
#define TP_DEF_INERTIA 0x06<br />
-#define TP_DEF_SPEED 0x61<br />
+#define TP_DEF_SPEED 0x64<br />
#define TP_DEF_REACH 0x0A<br />
<br />
#define TP_DEF_DRAGHYS 0xFF<br />
@@ -123,7 +123,7 @@<br />
<br />
/* Toggles */<br />
#define TP_DEF_MB 0x00<br />
-#define TP_DEF_PTSON 0x00<br />
+#define TP_DEF_PTSON 0x01<br />
#define TP_DEF_SKIPBACK 0x00<br />
#define TP_DEF_EXT_DEV 0x01<br />
</pre><br />
<br />
==Configure firefox for using trackpoint horizontal scrolling==<br />
Vertical Scrolling seems to work out of the box in firefox if you followed the steps above.<br />
Anyway, there is a problem when you don't scroll exactly vertical, because horizontal scrolling turns into<br />
browser BACK/FORWARD commands. <br />
You can avoid this by typing about:config + ENTER in the address bar of firefox.<br />
You have to adjust the following options:<br />
<br />
<pre><br />
mousewheel.horizscroll.withcontrolkey.action = 3;<br />
mousewheel.horizscroll.withcontrolkey.numlines = 1; <br />
mousewheel.horizscroll.withcontrolkey.sysnumlines = true;<br />
<br />
mousewheel.horizscroll.withnokey.action = 0;<br />
mousewheel.horizscroll.withnokey.numlines = 1;<br />
mousewheel.horizscroll.withnokey.sysnumlines = true;<br />
<br />
mousewheel.horizscroll.withshiftkey.action = 1;<br />
mousewheel.horizscroll.withshiftkey.numlines = 1;<br />
mousewheel.horizscroll.withshiftkey.sysnumlines = true;<br />
</pre><br />
<br />
FWIW, you can change only the following value to remove the browser BACK/FORWARD commands:<br />
<br />
<pre><br />
mousewheel.horizscroll.withnokey.action = 0;<br />
</pre><br />
<br />
With that, you can still go BACK/FORWARD by pressing together the shift or the alt key, while with the control key you increase or decrease the font size.<br />
<br />
==Configure Opera for using trackpoint horizontal scrolling==<br />
You'll experience the same annoying problem with the popular browser Opera. To fix this you need to edit the configfile <tt>standard_mouse.ini</tt> in e.g. /usr/share/opera/ini/ (Debian) or /opt/opera/share/opera/ini/ (Gentoo) and comment out the following lines<br />
<pre><br />
Button6 = Back<br />
Button7 = Forward<br />
</pre><br />
so they look like that<br />
<pre><br />
;Button6 = Back<br />
;Button7 = Forward<br />
</pre><br />
Remember, Button6 and Button7 do not so coincidental correspond with our X configuration we know from above:<br />
<pre><br />
Option "YAxisMapping" "6 7"<br />
</pre><br />
After this change you will be able to scroll vertically and horizontally with your middle button.<br />
<br />
==Fixing trackpoint under Ubuntu 7.10 Gutsy Gibbon==<br />
===Using trackpoint deamon===<br />
My default Ubuntu Gutsy (running on an X61s) would give the following error messages when running the trackpoint daemon. Running<br />
<pre><br />
/etc/init.d/trackpoint restart<br />
</pre><br />
caused a bunch of error messages, as the wrong device was in<br />
<pre><br />
/etc/trackpoint/trackpoint.conf<br />
</pre><br />
<br />
I fixed this by changing:<br />
<pre><br />
echo -n > /sys/devices/platform/i8042/serio0/serio2/sensitivity<br />
</pre><br />
to<br />
<pre><br />
echo -n > /sys/devices/platform/i8042/serio1/sensitivity<br />
</pre><br />
in /etc/trackpoint/trackpoint.conf.<br />
<br />
In addition, Ubuntu ran the appropriate /etc/init.d/trackpoint script on booting, but would give a bunch of errors (which, oddly, I could never find in any of the log files).<br />
<br />
It seems that it was running the scripts too early in the boot sequence. The Gutsy package provided<br />
<pre><br />
/etc/rc2.d/S20trackpoint<br />
</pre><br />
<br />
so I renamed this to S99trackpoint (and in all the other rc.? directories) and it now works on boot.<br />
<br />
===Editing the kernel config files===<br />
Another way of configuring the trackpoint without using the trackpoint daemon is to edit the values of the trackpoint files which, BTW, are located in<br />
/sys/devices/platform/i8042/serio1/serio2.<br />
<br />
The script should be executed during boot. This can be done in an init script (e.g. /etc/bootmisc.sh in some distros)<br />
<br />
Script:<br />
<pre><br />
#! /bin/sh<br />
<br />
#<br />
# configuration du trackpoint<br />
#<br />
<br />
# vitesse<br />
echo -n 120 > /sys/devices/platform/i8042/serio1/serio2/speed<br />
<br />
# sensibilité<br />
echo -n 250 > /sys/devices/platform/i8042/serio1/serio2/sensitivity <br />
<br />
# press to select<br />
echo -n 1 > /sys/devices/platform/i8042/serio1/serio2/press_to_select<br />
</pre><br />
===An Ubuntu/Fedora example===<br />
Another script that I've created seems to work with all versions of Ubuntu/Fedora that I've been able to try (comment out and uncomment the appropriate lines for fedora/ubuntu as necessary)<br />
Place in /etc/rc.local or equivalent for your distro:<br />
<br />
Script:<br />
<pre><br />
#*************************<br />
## START TRACKPOINT CONFIG<br />
#*************************<br />
<br />
# For fedora (the slash after "speed" is returned)<br />
# TRACKPATH=$(find /sys -print0 | grep -FzZ "/serio2/speed" | sed s^speed/^^)<br />
<br />
# For ubuntu (the slash after "speed" is not returned)<br />
TRACKPATH=$(find /sys -print0 | grep -FzZ "/serio2/speed" | sed s/speed//)<br />
<br />
## Select "press_to_select" on the trackpoint input device<br />
## We need to specify the TRACKPATH above because the device under "serio#"<br />
## changes between system boots. (We first test to see if the file we want<br />
## to modify exists, if it does, we make the change<br />
#[ -f $TRACKPATH/press_to_select ] && echo -n 1 > $TRACKPATH/press_to_select<br />
<br />
## Adjust the speed setting of the trackpoint input device<br />
[ -f $TRACKPATH/speed ] && echo -n 120 > $TRACKPATH/speed <br />
## Adjust the sensitivity setting of the trackpoint input device<br />
[ -f $TRACKPATH/sensitivity ] && echo -n 200 > $TRACKPATH/sensitivity<br />
<br />
#***********************<br />
## END TRACKPOINT CONFIG<br />
#***********************<br />
</pre><br />
<br />
==TrackPoint under Ubuntu 8.10 using HAL==<br />
<br />
Because Ubuntu 8.10 uses HAL you must do the following to get the scrolling working:<br />
(see: http://forum.ubuntuusers.de/topic/mouse-wheel-emulation-in-xorg.conf/?highlight=hal+trackpoint#post-1558282 )<br />
<br />
Create the file '''/etc/hal/fdi/policy/mouse-wheel.fdi''' as root with the following content:<br />
<br />
<pre><br />
<match key="info.product" string="TPPS/2 IBM TrackPoint"><br />
<merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge><br />
<merge key="input.x11_options.EmulateWheel" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelButton" type="string">2</merge><br />
<merge key="input.x11_options.YAxisMapping" type="string">4 5</merge><br />
<merge key="input.x11_options.XAxisMapping" type="string">6 7</merge><br />
<merge key="input.x11_options.Emulate3Buttons" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge><br />
</match><br />
</pre><br />
<br />
Note : I needed to reboot my TP for the changes to take effect.<br />
<br />
https://wiki.ubuntu.com/X/Config</div>Dooblemhttps://www.thinkwiki.org/w/index.php?title=How_to_setup_Bluetooth&diff=35449How to setup Bluetooth2007-12-30T15:55:06Z<p>Dooblem: /* Enabling Bluetooth */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#efefef; align:right;"><br />
This HOWTO tells you how to install and configure Bluetooth on your Linux driven ThinkPad and how to make the most common Bluetooth applications (like connecting your mobile phone etc.) work.<br />
</div><br />
|}<br />
<br />
<br />
<br />
<br />
<br />
==Enabling Bluetooth==<br />
If Bluetooth is disabled and you have [[Ibm-acpi]] running you could enable/disable bluetooth by entering:<br />
:{{cmdroot|echo enable > /proc/acpi/ibm/bluetooth}}<br />
or<br />
:{{cmdroot|echo disable > /proc/acpi/ibm/bluetooth}}<br />
<br />
You should also be able to toggle bluetooth with Fn+F5 keys.<br />
<br />
Under Ubuntu Gutsy, in /etc/acpi/ibm-wireless.sh you have to comment "if ! isAnyWirelessPoweredOn; then" and the corresponding "fi" to make the Fn+F5 work.<br />
<br />
==Configuring the kernel==<br />
Since the Bluetooth card is connected to the USB subsystem, you will need to enable USB support in your kernel:<br />
:{{kernelconf|CONFIG_USB|<M>|Support for Host-side USB|USB support|Device Drivers||}}<br />
:{{kernelconf|CONFIG_USB_DEVICEFS|[*]|USB device file system|USB support|Device Drivers||}}<br />
<br />
Choose an appropriate USB host driver, one of: <br />
:{{kernelconf|CONFIG_USB_EHCI_HCD|<M>|EHCI HCD (USB 2.0) support|USB support|Device Drivers||}}<br />
:{{kernelconf|CONFIG_USB_UHCI|<M>|UHCI HCD support|USB support|Device Drivers||}}<br />
:{{kernelconf|CONFIG_USB_OHCI|<M>|OHCI HCD support|USB support|Device Drivers||}}<br />
<br />
Enable Bluetooth subsystem and drivers:<br />
:{{kernelconf|CONFIG_BT|<*>|Bluetooth subsystem support|Networking|||}}<br />
:{{kernelconf|CONFIG_BT_L2CAP|<*>|L2CAP protocol support|Bluetooth subsystem support|Networking||}}<br />
:{{kernelconf|CONFIG_BT_SCO|<*>|SCO links support|Bluetooth subsystem support|Networking||}}<br />
:{{kernelconf|CONFIG_BT_RFCOMM|<*>|RFCOMM protocol support|Bluetooth subsystem support|Networking||}}<br />
:{{kernelconf|CONFIG_BT_RFCOMM_TTY|[*]|RFCOMM TTY support|Bluetooth subsystem support|Networking||}}<br />
:{{kernelconf|CONFIG_BT_BNEP|<*>|BNEP protocol support|Bluetooth subsystem support|Networking||}}<br />
:{{kernelconf|CONFIG_BT_HID|<*>|HID protocol support|Bluetooth subsystem support|Networking||}}<br />
:{{kernelconf|CONFIG_BT_HCIUSB|<M>|HCI USB driver|Bluetooth device drivers|Bluetooth subsystem support|Networking|}}<br />
:{{kernelconf|CONFIG_BT_HCIUSB_SCO|[*]|SCO (voice) support|Bluetooth device drivers|Bluetooth subsystem support|Networking|}}<br />
<br />
Make sure that the according modules are loaded:<br />
:{{cmdroot|modprobe uhci_hcd ; modprobe ehci_hcd ; modprobe hci_usb}}<br />
<br />
==Serial connection over Bluetooth==<br />
One common application is to connect your mobile phone and use it as a modem to connect to the internet via GPRS or 3G (UMTS). A lot of phones do this through using AT-commands on a serial over Bluetooth connection.<br />
<br />
By configuring {{path|/etc/bluetooth/rfcomm.conf}} correctly, you'll get a device {{path|/dev/rfcomm0}}.<br />
<br />
Eventually one could use the command:<br />
:{{cmdroot|rfcomm bind 0 00:15:A0:7A:90:F2 3}}<br />
<br />
The hardware address should be replaced with that of your phone. If you don't know the hardware address of your phone yet, you can get it by running:<br />
:{{cmdroot|hcitool scan}}<br />
<br />
The last parameter ('3') is the channel to use. I spent quite some time fighting before I found out of that one; I didn't find it documented anywhere, but by running<br />
:{{cmdroot|sdptool records 00:15:A0:7A:90:F2}}<br />
I found channel 3 to be the right one for my phone. You will have to experiment to find the right one for your phone setup; for T-Mobile GSM/GPRS carrier in USA this is channel 1.<br />
{{NOTE|By experimenting, the bluetooth stack on the cellphone may crash. Reboot it if that happens.}}<br />
<br />
Alternativly one could use the following to find the right channel:<br />
:{{cmdroot|sdptool search DUN}}<br />
<br />
Inquiring ...<br />
Searching for DUN on 00:11:22:33:44:55 ...<br />
Service Name: Dial-up Networking<br />
Service RecHandle: 0x10001<br />
Service Class ID List:<br />
"Dialup Networking" (0x1103)<br />
"Generic Networking" (0x1201)<br />
Protocol Descriptor List:<br />
"L2CAP" (0x0100)<br />
"RFCOMM" (0x0003)<br />
Channel: 4<br />
<br />
Now {{path|/dev/rfcomm0}} exists.<br />
<br />
At this point you can use an automatic dialing utility such as wvdial, editing the config file to point to the modem at {{path|/dev/rfcomm0}}, and everything should work just like a land line!<br />
<br />
{{NOTE|If you experience strange disconnects while using wvdial, disable "Carrier Check" in your wvdial configuration.}}<br />
<br />
You may directly access the modem (i.e. by using minicom:)<br />
:{{cmduser|minicom -s}}<br />
set the serial device to be {{path|/dev/rfcomm0}}, choose 'exit' and then the AT-commands can be typed in.<br />
With my operator (Telenor, Norway) it seemed simple enough, I just entered <br />
:ATDT *99#<br />
and lots of cryptic letters started dancing across the screen, indicating a ppp session startup.<br />
<br />
To configure pppd create {{path|/etc/ppp/peers/nokia}} with particularly those lines:<br />
/dev/rfcomm0<br />
connect '/usr/sbin/chat -v -f /etc/ppp/chat-nokia'<br />
debug<br />
10.0.1.3<br />
crtscts<br />
noipdefault<br />
ipcp-accept-local<br />
defaultroute<br />
novj<br />
nobsdcomp<br />
novjccomp<br />
nopcomp<br />
noaccomp<br />
usepeerdns<br />
<br />
Furthermore, you need a simple chat script. Create {{path|/etc/ppp/chat-nokia}}:<br />
'TIMEOUT' '5'<br />
'ABORT' 'BUSY'<br />
'ABORT' 'ERROR'<br />
'ABORT' 'NO ANSWER'<br />
'ABORT' 'NO CARRIER'<br />
'ABORT' 'NO DIALTONE'<br />
'ABORT' 'Invalid Login'<br />
'ABORT' 'Login incorrect'<br />
'' 'ATZ'<br />
'OK' 'ATDT*99#'<br />
'~--' ''<br />
<br />
Here's a script that works for Cingular's network:<br />
TIMEOUT 35<br />
ECHO ON<br />
ABORT '\nBUSY\r'<br />
ABORT '\nERROR\r'<br />
ABORT '\nNO ANSWER\r'<br />
ABORT '\nNO CARRIER\r'<br />
ABORT '\nNO DIALTONE\r'<br />
ABORT '\nRINGING\r\n\r\nRINGING\r'<br />
'' \rAT<br />
OK 'AT+CGDCONT=1,"IP","WAP.CINGULAR"'<br />
OK ATD*99***1#<br />
CONNECT ""<br />
<br />
See more [https://help.ubuntu.com/community/BluetoothDialup#preview here]<br />
<br />
Run pppd with:<br />
:{{cmduser|pppd call nokia}}<br />
This should establish the internet connection.<br />
<br />
{{NOTE|Different network operators may require different call strings. For many carriers (including T-Mobile USA) "*99#" works without additional parameters.}}<br />
<br />
For editing phonebook / ringtones / etc., the gammu utils (http://www.gamu.net) has been reported to work well, but this appears to be primarily for Nokia phones.<br />
<br />
==File Transfer==<br />
File transfers are accomplished through OBEX transfer, which I believe is basically an FTP over bluetooth connection. Once you have bonded with your phone (yes, I know you love your sexy RAZR, but here I mean paired it with your laptop via bluetooth), you can easily use "obexftp" to transfer files. As an example,<br />
<br />
:obexftp -b 00:01:02:03:04:05 -l<br />
<br />
will list the root directory of the phone with bluetooth address 00:01:02:03:04:05. Refer to the man page for more of the unique commands. What a wonderful interface! Unfortunately there doesn't seem to be a way to get a standard 'ftp' session using familiar commands (e.g. 'mget').<br />
<br />
For a more user-friendly experience, you can use the kde tools, just launch<br />
:kbtobexclient<br />
<br />
for a file browser. In the Location: option put<br />
:obex://[00:01:02:03:04:05]<br />
<br />
to list the files. Note that the brackets *are* necessary. From there, you can list directories easily and batch download files.<br />
<br />
==Mount a phone as a directory==<br />
You can also mount a phone as a standard directory using obexfs and the FUSE (file system in userspace) utilities.<br />
<br />
{{NOTE|The ibm bluetooth card can work like an usb-dongle. You don't need the bcm203x module.}}<br />
<br />
Configure your kernel as outlined above.<br />
<br />
* Install the required packages<br />
To mount the filesystem we need the fuse program. FuseFS is also implemented in the kernel, but for some reason it only works with 2.6.18. If you run 2.6.17 or earlier, please download it and build the module according to your distro.<br />
<br />
* Emerge or apt-get bluez-utils and obexfs. This should pull other required packages (bluez-libs, openobex, obexftp, sys-fs/fuse) as dependencies.<br />
<br />
:{{cmdroot|emerge bluez-utils obexfs}}<br />
<br />
* Modify /etc/bluetooth/hcid.conf if you haven't already. It can be done as above, or use the following:<br />
options {<br />
autoinit yes"<br />
security user<br />
pairing multi<br />
pin_helper /usr/bin/bluepin<br />
}<br />
device {<br />
name testname<br />
class 0x3e0100<br />
iscan enable<br />
pscan enable<br />
lm accept<br />
lp rswitch,hold,sniff,park <br />
}<br />
<br />
* load the modules:<br />
:{{cmdroot|modprobe fuse}}<br />
:{{cmdroot|modprobe bluetooth}}<br />
:{{cmdroot|modprobe ehci-hcd}}<br />
:{{cmdroot|modprobe uhci-hcd}}<br />
:{{cmdroot|modprobe hci_usb}}<br />
:{{cmdroot|modprobe l2cap}}<br />
:{{cmdroot|modprobe rfcomm}}<br />
<br />
* activate your bluetooth (show howto ibm-acpi for more details) by using fn+f5 or:<br />
:{{cmdroot|echo enable >/proc/acpi/ibm/bluetooth}}<br />
<br />
* start the bluetooth device:<br />
:{{cmdroot|/etc/init.d/bluetooth start}}<br />
<br />
* turn on bluetooth of your mobile phone (visible mode) and get the mac-address of your phone using hcitool.<br />
:{{cmdroot|hcitool scan}}<br />
<br />
=== For non symbian mobile phones ===<br />
<br />
* mount your phone - don't forget to umount it when you're finished<br />
:{{cmdroot|mkdir /mnt/phone}}<br />
:{{cmdroot|mount -t fuse "obexfs#-b00:16:20:32:25:3C -B6" /mnt/phone}}<br />
''use your mac-address instead of my 00:16:20:32:25:3C and don't forget the -b option in front of the mac''<br />
<br />
Works perfectly with IBM T43p, X41, sony ericsson k750i, nokia 6280, samsung z400, sony ericsson k700i.<br />
<br />
<br />
=== Mounting Symbian Phones ===<br />
<br />
* You need network file system support in your kernel<br />
<br />
:{{cmdroot|cd /usr/src/linux}}<br />
:{{cmdroot|make menuconfig}}<br />
<br />
:{{kernelconf|NFS_FS|<M>|NFS file system support|Network File Systems|File Systems|||}}<br />
:{{kernelconf|NFS_V3|<M>|Provide NFSv3 client support|Network File Systems|File Systems|||}}<br />
<br />
:{{kernelconf|NFSD|<M>|NFS server support|Network File Systems|File Systems|||}}<br />
:{{kernelconf|NFSD_V3|<*>|Provide NFSv3 server support|Network File Systems|File Systems|||}}<br />
:{{kernelconf|NFSD_TCP|<*>|Provide NFS server over TCP support|Network File Systems|File Systems|||}}<br />
<br />
:{{cmdroot|make && make modules_install}}<br />
<br />
* Install required programs<br />
<br />
:{{cmdroot|emerge -av p3nfs}}<br />
<br />
* Modify your /etc/bluetooth/rfcomm.conf<br />
<br />
rfcomm0 {<br />
bind yes;<br />
device 00:0F:DE:8C:E6:94;<br />
channel 13;<br />
comment "symbian connection"<br />
}<br />
<br />
* restart your bluetooth device, load kernel modules and start portmap (required for p3nfs)<br />
<br />
:{{cmdroot|/etc/init.d/bluetooth restart}}<br />
:{{cmdroot|modprobe nfs}}<br />
:{{cmdroot|modprobe nfsd}}<br />
<br />
:{{cmdroot|/etc/init.d/portmap start}}<br />
<br />
* get the application for your mobile phone [http://www.koeniglich.de/p3nfs.html here]<br />
<br />
* start bt at your mobile phone, send application to mobilephone, install and launch the nfsapp with bluetooth at channel 13 (default)<br />
<br />
:{{cmdroot|obexftp -b 00:0F:DE:8C:E6:94 -p /home/tava/ablage/nfsapp*}}<br />
<br />
* mount your mobile phone:<br />
<br />
:{{cmdroot|p3nfsd -UIQ -tty /dev/rfcomm0 -dir /mnt/bluetooth}} (-UIQ is only for UIQ-Phones, type p3nfsd --help and get informations for your phone)<br />
<br />
* if doesn't work, make sure rfcomm0 is clean<br />
<br />
:{{cmdroot|rfcomm}}<br />
<br />
<br />
<br />
----<br />
<br />
===Building from source===<br />
Get the source packages from [http://www.bluez.org www.bluez.org].<br />
<br />
Build each of them with the usual steps:<br />
:{{cmduser|./configure && make}}<br />
:{{cmdroot|make install}}<br />
<br />
===Gentoo ebuilds===<br />
Under {{Gentoo}}, install the following ebuilds:<br />
*net-wireless/bluez-bluefw<br />
*net-wireless/bluez-firmware<br />
*net-wireless/bluez-hcidump<br />
*net-wireless/bluez-hciemu<br />
*net-wireless/bluez-libs<br />
*net-wireless/bluez-utils<br />
<br />
{{NOTE|net-wireless/bluez-kernel is not needed, since the current version is included in your kernel.}}<br />
<br />
<br />
<br />
<br />
<br />
===Other distributions===<br />
You will find packages for {{Debian}}, {{Redhat}} and {{Slackware}} on the [http://www.bluez.org/packages.html packages page] of the BlueZ project.<br />
<br />
Bluez packages are included in Debian Sid (bluez-utils, and non-free package bluez-firmware).<br />
<br />
==Troubleshooting==<br />
If you cant get hci0 up with a /etc/init.d/bluetooth restart (or similar) then you might want to try a<br />
:{{cmdroot|hciconfig hci0 down && hciconfig hci0 up}} <br />
(solved the problem on a X60s and T60 (debian/testing))<br />
<br />
==External Links==<br />
*[http://www.holtmann.org/linux/bluetooth/ Bluetooth and Linux]: Marcel Holtmann's list of bluetooth HOWTOs.<br />
*http://gagravarr.org/series-60/<br />
*http://www.polycon.fi/~laa/biblo/linux_gprs.html<br />
*[http://www.gentoo.org/doc/en/bluetooth-guide.xml Guide on how to set up Bluetooth in Gentoo]<br />
*[http://www.linux.ie/articles/bluetoothheadset.php www.linux.ie:Linux and Bluetooth Headset howto (AKA: Fedora, BTSCO, Bluez, Jabra and Skype)]<br />
<br />
<br />
[[Category:A30]] [[Category:A30p]] [[Category:A31]] [[Category:A31p]] [[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:T30]] [[Category:T40]] [[Category:T40p]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:T61]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:Z60m]] [[Category:Z60t]]</div>Dooblemhttps://www.thinkwiki.org/w/index.php?title=Problem_with_hard_drive_clicking&diff=33508Problem with hard drive clicking2007-09-28T23:35:55Z<p>Dooblem: /* External links */</p>
<hr />
<div>Many users have reported a '''problem with hard drive clicking''', sometimes described as a repeating '''tick tick tick''' type of ticking sound.<br />
The [[Hitachi Travelstar 5K80]] series which shipped with many T series Thinkpads in particular is reported to suffer from this problem. The clicks occur rapidly, and are quiet but noticeable. While in use in a quiet environment the clicks can be relatively loud and very irritating to some users. The clicks seem to happen when the drive is idle and the power has been on for a significant period of time. The clicking is also reported on other vendor's laptop hard drives too and is therefore almost certainly a hard drive related rather than a laptop chassis related.<br />
<br />
The clicking sound appears to only occur when the drive is idle. Forcing the drive to be busy silences the ticking while the drive is busy. Launching programs that access the hard drive such as searching or defragmenting the drive helps for a time. Cycling the power on the hard drive such as through a full power off reboot of the system stops the ticking for the moment and has been used as a temporary solution. Also see use of hdparm for another way to reset the drive without a power off reboot.<br />
<br />
Others recommend using Hitachi's drive feature tool to increase the acoustic management level, and/or set power management settings.<br />
<br />
===Possible Cause and Speculation===<br />
<br />
Laptop drives (especially Hitachi [[Hitachi Travelstar 5K80]], [[Hitachi Travelstar 5K100]] and SAMSUNG MP0804H) can unload heads very often, and they can produce a noticeable click when doing that. Some ThinkPad BIOSes can be very eager to program the HD Advanced Power Management feature (hdparm -B) even when told to always keep the HD in "Maximum Performance mode" and will do so every time AC state changes, and when coming out of suspend (be it S3 or S4). Unless you reset the HD's APM mode, it will unload its heads eventually thus producing the clicks.<br />
<br />
Another proposed possible cause is the drive firmware running a low level surface media check periodically during drive idle time.<br />
<br />
It is not known whether the problem is a sign of impending drive failure. The root cause of the problem is not yet known. It is quite likely to be a normal mode of drive operation. The problem is very prevalent.<br />
<br />
Do not confuse this with regular activity. Many daemons poll (config) files every few seconds. Despite files being cached, POSIX-compliant filesystems like ext2 or ext3 must update (=write) the last access time. More details and workaround in [[How to reduce power consumption#Hard_Drives]].<br />
<br />
===Tracking down the cause of the clicks===<br />
<br />
Using "'''smartctl -A'''", it is possible to check if any of the drive's attributes related to platter spin-up/down or head unload are increasing when a click is heard.<br />
That can help pinpointing the cause of the clicks.<br />
<br />
===Possible solution (Linux)===<br />
<br />
Temporary relief has been seen by using '''hdparm''' to reset the drive. But note the warning in the hdparm man page indicating that it is a dangerous operation. This is very likely due to the possibility of losing data in the write cache not yet stored to the hard drive. This would be dependent upon the particular hard drive. When used in the following to stop the clicking I have not seen any data loss. YMMV.<br />
<br />
# hdparm /dev/hda<br />
# sync<br />
# sleep 5<br />
# sync<br />
# hdparm -w /dev/hda<br />
<br />
The clicking noise apparently occurs when the drive is parking its heads (and ramping them off the drive surface in the process) after a timeout after the last disk access. Try turning off power management for the drive; that should stop the drive from parking the heads except when turning off:<br />
<br />
# hdparm -B 255 /dev/hda<br />
<br />
You can also try<br />
<br />
# hdparm -B 254 /dev/hda<br />
<br />
which doesn't turn power management off, but is the least agressive setting: it will still unload heads, but far less often. The drives '''are''' prepared to withstand a great number of head unloads (200k unloads are typical, Hitachi drives tolerate about 600k unloads).<br />
<br />
These commands have immediate effect, and need to be re-issued at every boot, after resuming from disk or RAM, and after hotswapping. '''You have to reissue the -B commands every time the ThinkPad BIOS might have tried to override them'''.<br />
<br />
===Specific models===<br />
<br />
====Hitachi C4K60 (HTC426060G9AT00)====<br />
<br />
On a Thinkpad X41 with a has a 60GB Hitachi C4K60 (HTC426060G9AT00) hard-disk that had the clicking problem (even in Windows), the hdparm solution above did not work. The problem was indeed caused by the hard-disk unloading the heads when idle, and the Load_Cycle_Count SMART statistic could be seen increasing when the clicks occurred.<br />
<br />
hdparm -B settings did not seem to help, and a check of the harddrives specs (available in [http://www.hitachigst.com/tech/techlib.nsf/products/Travelstar_C4K60 hitachigst.com]) verified that setting the APM mode off (hdparm -B 255) would set it actually to the lowest APM mode (the same as hdparm -B 254). In this drive, even the lowest APM mode unloads the heads very aggressively causing the clicking sounds. Another problem is that the drive is rated only for 600000 unload/load cycles, which means that the drive will break in at most a couple of years. <br />
<br />
{{NOTE|This observation is only about the specific model (Hitachi C4K60), and is not true for more recent Hitachi drives, which do disable APM with -B 255.}}<br />
<br />
====Samsung MP0804H 80GB====<br />
<br />
On this drive, the ''clicking noise'' can be immediately stopped just by enabling ''automatic offline tests'' using<br />
# smartctl -o on /dev/hda <br />
Even more strange is that SMART wasn't enabled by default, although the drive supports it.<br />
<br />
The drive had already performed 15.539 load cycles (out of 600.000) within only one week.<br />
<br />
Note that enabling SMART (-s on) without enabling ''offline tests'' -- which is what I did immediately after observing the ''clicks'' -- did not solve the problem, but made it quite clear that the drive was ''badly in need of some care''.<br />
<br />
<br />
<br />
===Firmware upgrades===<br />
<br />
There are two HD firmware upgrades on Lenovo's support website. One is specific to X41's, and will upgrade Hitachi's to Release A0L0 (document [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67238 MIGR-67238], 2007/01/24). The upgrade comes in three forms: diskette, windows executable or ISO CD-ROM image.<br />
IBM's latest posted firmware, A5DA, does not appear to solve the problem. <br />
<br />
A newer upgrade set ([http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-62282 MIGR-62282], 2007/05/02) updates HD firmwares of several brands, including Hitachi. The patch upgrades firmware for HTC4260xxG9AT00 to A0L2 (according to program output, from 00P3A0B5 to 00P3A0L2). The upgrade comes in a large (20 MB) ISO format, or as several diskettes. There is seemingly no windows executable; therefore upgrading a diskless machine can be problematic (it involves making a DOS-based USB bootable drive).<br />
<br />
The upgrade caused one X41 Tablet HTC426060G9AT00 drive to stop clicking.<br />
<br />
===Another Possible Solution===<br />
<br />
IBM, when notified about this occurance, may replace the drive with a Fujitsu 5k 80GB hard drive, as to them the sound is indicative of a potential hard drive failure.<br />
<br />
==External links==<br />
*Ubuntu reported bugs: [https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695 59695] [https://bugs.launchpad.net/ubuntu/+bug/104535 104535]<br />
*[http://www.hitachigst.com/hdd/support/download.htm Hitachi Global Storage Technologies Downloads] - The drive feature tool may help with this problem.<br />
*[http://forum.thinkpads.com/viewtopic.php?t=7462 Thread on thinkpads.com]<br />
*[http://notebookforums.com/showthread.php?t=46058 Thread on notebookforums.com]<br />
*[http://forums.silentpcreview.com/viewtopic.php?p=143203 Thread on silentpcreview.com]<br />
*[http://forum.thinkpads.com/viewtopic.php?t=15769 Another Thread on thinkpads.com]<br />
*[http://www.tabletpcbuzz.com/forum/topic.asp?TOPIC_ID=28538&whichpage=1 Thread on tabletpcbuzz.com]<br />
*[http://thinkpad-forum.de/forum/viewtopic.php?t=2255 German Thread on thinkpad-forum.de (Containing an interesting remark about a possible problem with the Cache)]<br />
<br />
[[Category:T40]] [[Category:T41]] [[Category:T42]] [[Category:T43]] [[Category:X41]] [[Category:G41]]</div>Dooblemhttps://www.thinkwiki.org/w/index.php?title=How_to_change_the_BIOS_bootsplash_screen&diff=32394How to change the BIOS bootsplash screen2007-08-24T21:13:08Z<p>Dooblem: /* Share your custom bootsplash image */</p>
<hr />
<div>{| width="100%"<br />
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__<br />
|style="vertical-align:top" |<br />
<div style="margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#efefef; align:right;"><br />
This page describes how to replace the standard IBM BIOS Bootsplash (The one with the ThinkPad- and Pentium M-Logo), without access to Microsoft Windows or a floppy drive.<br />
<br />
Windows users who want to have a custom splash image when they start up should try [[How to change the BIOS bootsplash screen (under Windows) | this guide]] instead.<br />
</div><br />
|}<br />
== Getting the Files ==<br />
You'll need the bios upgrade file from the IBM website.<br />
<br />
=== Method 1: Using a Non-Diskette-File and cabextract ===<br />
<br />
For ThinkPads {{R50}}, {{R50p}}, {{R51}} (1829, 1830, 1831, 1836), {{R52}}, {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}} this file is suitable:<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj28us.exe 1ruj28us.exe]<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj29us.exe 1ruj29us.exe]<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj30us.exe 1ruj30us.exe]<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj33us.exe 1ruj33us.exe]<br />
There may be a more recent file on the IBM website.<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj35us.exe 1ruj35us.exe]<br />
<br />
For Thinkpads {{T61}}, {{R61}} 14.1 inch screen<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/7luj05us.exe 7luj05us.exe]<br />
<br />
<br />
You need the cabextract tool to extract files from the exe:<br />
:{{cmdroot|apt-get install cabextract}}<br />
<br />
Do this to get the ibm file and extract the disk image from it:<br />
:{{cmdroot|cd /tmp}}<br />
:{{cmdroot|wget ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj35us.exe}}<br />
:{{cmdroot|cabextract -F "*.IMG" 1ruj35us.exe}}<br />
:{{cmdroot|mv 1RUJ35US.IMG floppy.bin}}<br />
<br />
=== Method 2: Using a Diskette-File and dosemu ===<br />
Another option is to use the "Diskette BIOS file".<br><br />
For ThinkPads {{R50}}, {{R50p}}, {{R51}} (1829, 1830, 1831, 1836), {{R52}}, {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}} this file is suitable:<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj28ud.exe 1ruj28ud.exe]<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj29ud.exe 1ruj29ud.exe]<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj30ud.exe 1ruj30ud.exe] Released 2005-05-26 <br />
<br />
For Thinkpads {{T61}}, {{R61}} 14.1 inch screens<br />
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/7luj05us.exe 7luj05ud.exe] Released 2007-07-16 '''NEW!'''<br />
<br />
The file is an OS/2 executables and don't run with wine, so you need to install dosemu to run it and create the image.<br><br />
:{{cmdroot|apt-get install dosemu dosemu-freedos}}<br />
(for non-debian-users: Get dosemu and freedos somewhere and make it work somehow).<br />
<br />
With dosemu, you can run this executable, but this program unfortunately<br />
needs a floppy drive to write to. So use the loopback device, to create a virtual floppy. <br />
:{{cmdroot|1=dd if=/dev/zero of=/tmp/floppy.bin bs=1024 count=1440}}<br />
:{{cmdroot|losetup /dev/loop0 /tmp/floppy.bin}}<br />
Put this block device ({{path|/dev/loop0}}) into the dosemu configuration as the floppy disk device. <br />
Now you can run the extractor executable, which makes {{path|/tmp/floppy.bin}} the desired floppy image .<br />
:{{cmdroot|dosemu 1ruj27ud.exe}}<br />
:{{cmdroot|losetup -d /dev/loop0}}<br />
<br />
For 2.6.12+ if you have dosemu error:<br />
:{{cmdroot|echo 0 > /proc/sys/kernel/randomize_va_space}}<br />
<br />
== Adding the custom image ==<br />
Mount your floppy.bin as a loopback device.<br />
:{{cmdroot|mkdir /tmp/mnt}}<br />
:{{cmdroot|1=mount -o loop,umask=000 /tmp/floppy.bin /tmp/mnt}}<br />
Create a 16 color 640x480 BMP (4 Bit/pixel VGA palette) (for example with Gimp) and save it to {{path|/tmp/mnt/logo.bmp}}.<br />
<br />
When creating your image, keep in mind that on the T43p (and others??), regardless of your custom bootsplash screen there will be a superimposed black "Centrino" logo (~100x100 pixels) on the upper right of your display, so you might want to keep that area clear. You might also want to reserve the bottom 150 pixels for the "boot options" / "Entering BIOS setup" message(s) too, which will also be displayed.<br />
<br />
Now prepare the image with <tt>prepare.exe</tt> using wine: (This does not work with dosemu!)<br />
:{{cmdroot|wine prepare.exe logo.scr}}<br />
<br />
The image must compress to <10k. If you receive an error, you can try reducing the number of colors in your image palette (step down to an 12 or 8 color palette for a very significant reduction in image size.) When successful, there should be a new {{path|logo.mod}} and your {{path|logo.bmp}}. If so, you are set, don't forget to unmount your loopback device:<br />
:{{cmdroot|umount /tmp/mnt}}<br />
<br />
== Fake a floppy ==<br />
Now you need to put the image on a floppy and boot from it. Since recent ThinkPads don't have a<br />
floppy drive, we can use a CD-R (or a CD-RW, actually, for the cheap ones, like me) and burn it with the following command:<br />
:{{cmdroot|1=mkisofs -b floppy.bin floppy.bin <nowiki>|</nowiki> cdrecord dev=<device> - }}<br />
(<tt><device></tt> being your cd writer device)<br />
<br />
== The exciting part ==<br />
After this worked, reboot your ThinkPad from the cdrom by pressing F12 while booting <br />
and wait for the IBM tool to start. <br />
Be sure to have your ThinkPad on AC power and say ''Yes'' to the questions the BIOS Upgrade Tool asks.<br />
It will then flash the BIOS, which will take about a minute. <br />
<br />
Suddenly the laptop turns itself off with two beeps.<br />
When booting, you'll have your bootsplash picture.<br />
<br />
Unfortunately, you won't see it really long, but it's better<br />
than the standard one, so it was worth the action.<br />
<br />
Have fun!<br />
<br />
BTW next time you have to flash the BIOS the IBM BIOS updater will detect a custom boot splash and ask you if you want to preserve it or restore the original.<br />
<br />
== Share your custom bootsplash image ==<br />
If you've created your own bootsplash image and want to share it with other you can post it here.<br />
<br />
* Schnappi bootsplash: Bow to the power of [http://folk.uio.no/igorr/t43/final.bmp Schnappi]. The BMP image compressed to about 6KB. Schni, schna, schnappi!<br />
* IBM Tux: An image of [http://users.tkk.fi/~jpaalija/stuff/filestorage/ibm-tux.bmp Tux with the IBM logo] written on its tummy.<br />
* [[Media:Eris.png|Eris]], the goddess of discordia. To use it as bios bootsplash convert it to bmp with just a few (<8) colors (thinkwiki does not allow bmp uploads).<br />
* [[Media:simple_tux.png|Simple Tux]] - Just convert it to bmp.</div>Dooblemhttps://www.thinkwiki.org/w/index.php?title=File:Simple_tux.png&diff=32393File:Simple tux.png2007-08-24T21:12:40Z<p>Dooblem: </p>
<hr />
<div></div>Dooblem