<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TedTso</id>
	<title>ThinkWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TedTso"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/TedTso"/>
	<updated>2026-04-18T23:50:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=21986</id>
		<title>Talk:How to enable integrated fingerprint reader with BioAPI</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:How_to_enable_integrated_fingerprint_reader_with_BioAPI&amp;diff=21986"/>
		<updated>2006-04-29T11:50:53Z</updated>

		<summary type="html">&lt;p&gt;TedTso: Add section: No sources for bioapi 1.2.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== chmod 777 -R /usr/local/var/bioapi/ ==&lt;br /&gt;
&lt;br /&gt;
Is the above necessary? I just made a debian package of xscreensaver with the patch applied, and when using the bioapi debian pacakge from [http://www.qrivy.net/~michael/temp/ Michael R. Crusoe's site] which has this directory put in /usr/var/bioapi I had not to change the permissions to world-writeable there. Write access to the logfile and usb device are necessary, but that directory works with 755 as well (even though it comes with 777 in Michael's package), and all files and subdirectories are 644/755 too.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 00:08, 11 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Qt Compilation Success ==&lt;br /&gt;
&lt;br /&gt;
Here it worked with qt ;)&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
I didn't get it to work anyway, but I'm curious about your Qt version(s) as it seemed to want Qt 3 when I was playing with it.&lt;br /&gt;
&lt;br /&gt;
--[[User:Keegan|keegan]] 05:07, 24 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== using absolute paths for commands ==&lt;br /&gt;
&lt;br /&gt;
I don't know whether using absolute paths in the articles is a good idea, at least not for tools like {{cmd|lsusb|}} which are not established utilities (i.e. used for more than a decade or something ;)) and happen to be in different locations in different distributions. E.g. said {{cmd|lsusb|}} resides in {{path|/usr/sbin|}} on Debian systems.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 16:45, 12 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'm using debian testing and it's in {{path|/usr/bin|}}.  I agree that the confusion is bad; dropping the absolute paths and adding a general note about checking {{cmd|$PATH|}} in case of problems is probably good.&lt;br /&gt;
&lt;br /&gt;
--[[User:keegan|keegan]]&lt;br /&gt;
&lt;br /&gt;
== BioAPI error #3 ==&lt;br /&gt;
&lt;br /&gt;
Its kind of strage it used to work with everythig (kdm,console,lock,etc)&lt;br /&gt;
Now it only works with kdm. It allways gives back:&lt;br /&gt;
&lt;br /&gt;
pam_bioapi[8113]: Unable to initialize Bioapi framework, BioAPI error #:3.&lt;br /&gt;
&lt;br /&gt;
Even when I set the right permissions on /proc/bus/usb.&lt;br /&gt;
&lt;br /&gt;
I am able to run the Sample program as normal user after setting the permissions, but when I change within a user session by su I amnot able to run the Sample program a also get an error Code #3.&lt;br /&gt;
&lt;br /&gt;
From an other terminal (alt+strg+Fx) I am able to run the Sample program but at the login I still get the error #3.&lt;br /&gt;
&lt;br /&gt;
I cant remember to have changed anything an d bevor I was able to login in a console with my fingerprint now only kdm is working even kde lock-session       &lt;br /&gt;
isnt working anymore.&lt;br /&gt;
&lt;br /&gt;
Any suggestions ?&lt;br /&gt;
&lt;br /&gt;
==Permission errors exclusive to xscreensaver==&lt;br /&gt;
&lt;br /&gt;
I followed the instructions above and got everything working, including non-root programs like xscreensaver.  However, the script to change usbfs permissions is finicky and fails to work with a lot of things like suspend/resume.  Therefore, I switched to specifying &amp;lt;tt&amp;gt;devgid=108,devmode=0660,busgid=108,busmode=0770,listgid=108,listmode=0660&amp;lt;/tt&amp;gt; as mount parameters for usbfs, where group 108 is a group I created and added my normal user to.  This seems like a much better way of doing things, and it almost works.  However, xscreensaver (using the newer patch) gives the familiar &amp;lt;tt&amp;gt;Unable to load BioAPI BSP with UUID of &amp;lt;nowiki&amp;gt;{&amp;lt;/nowiki&amp;gt;5550454b-2054-464d-2f45-535320425350&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;, BioAPI error #194d.&amp;lt;/tt&amp;gt; error in {{path|/var/log/auth.log|}}.  I don't think this is a straightfoward permissions problem because&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;the permissions in {{path|/proc/bus/usb|}} are correct by inspection&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;I can write to the device file as my normal user&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;other programs like {{cmd|test_verify-pam_bioapi|}} and [http://pamtester.sourceforge.net/ {{cmd|pamtester|}}] work as my normal user&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;the weirdest one: xscreensaver works when the {{cmd|xscreensaver|}} daemon is launched from within {{cmd|strace|}}.  It's still running as my normal user ({{cmd|strace|}} is not setuid root).  I have absolutely no idea what would cause this.  I thought it might be an environment issue, but the difference in environment between the {{cmd|strace|}} session and my normal session is trivial.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point I'm hoping it's something dumb, but I'm out of ideas.  The {{cmd|xscreensaver|}} error is &amp;lt;tt&amp;gt;pam_authenticate (...) ==&amp;amp;gt; 7 (Authentication failure)&amp;lt;/tt&amp;gt;, for the record.&lt;br /&gt;
&lt;br /&gt;
--[[User:keegan|keegan]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Could you provide all the log lines between pam_start and pam_end when running {{cmd|xscreensaver -verbose|}}?&lt;br /&gt;
&lt;br /&gt;
BTW, the idea with using the mount options for usbfs is very good, maybe you should add that info to the article page? I use the permission changing script without problems, also after resume, but the usbfs version is probably easier to set up, most people will be able to find {{path|/etc/fstab|}}.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 10:12, 23 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xscreensaver: 20:56:01: alternative_pam:  1 -&amp;gt; pam service: xscreensaver-alternative&lt;br /&gt;
xscreensaver: 20:56:01: pam_start (&amp;quot;xscreensaver-alternative&amp;quot;, &amp;quot;keegan&amp;quot;, ...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:01:   pam_set_item (p, PAM_TTY, &amp;quot;:0.0&amp;quot;) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:01:     PAM ECHO_OFF(&amp;quot;Password: &amp;quot;) ==&amp;gt; password&lt;br /&gt;
xscreensaver: 20:56:03:   pam_authenticate (...) ==&amp;gt; 7 (Authentication failure)&lt;br /&gt;
xscreensaver: 20:56:03: pam_end (...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:03: prompting for password.&lt;br /&gt;
xscreensaver: 20:56:03: 0: creating password dialog.&lt;br /&gt;
xscreensaver: 20:56:03: 0: mouse is at 442,412.&lt;br /&gt;
xscreensaver: 20:56:03: grabbing server...&lt;br /&gt;
xscreensaver: 20:56:03: 0: ungrabbing mouse (was 0x48).&lt;br /&gt;
xscreensaver: 20:56:03: 0: grabbing mouse on 0xe0002b... GrabSuccess.&lt;br /&gt;
xscreensaver: 20:56:03: ungrabbing server.&lt;br /&gt;
xscreensaver: 20:56:05: alternative_pam:  12582928 -&amp;gt; pam service: xscreensaver&lt;br /&gt;
xscreensaver: 20:56:05: pam_start (&amp;quot;xscreensaver&amp;quot;, &amp;quot;keegan&amp;quot;, ...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05:   pam_set_item (p, PAM_TTY, &amp;quot;:0.0&amp;quot;) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05:     PAM ECHO_OFF(&amp;quot;Password: &amp;quot;) ==&amp;gt; password&lt;br /&gt;
xscreensaver: 20:56:05:   pam_authenticate (...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05:   pam_acct_mgmt (...) ==&amp;gt; 9 (Authentication service cannot retrieve authentication info.)&lt;br /&gt;
xscreensaver: 20:56:05:   pam_setcred (...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05: pam_end (...) ==&amp;gt; 0 (Success)&lt;br /&gt;
xscreensaver: 20:56:05: password correct.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
So we've got the first attempt with {{cmd|pam_bioapi|}}, which fails immediately (no sign of the GUI fingerprint prompt, nor a &amp;quot;silent&amp;quot; chance to swipe the finger as with xdm), then the fallback to {{cmd|pam_unix|}} which succeeds.  Earlier I had xscreensaver set up to only try {{cmd|pam_bioapi|}}, with essentially the same result -- it gives up on pam entirely and does unix auth itself.&lt;br /&gt;
&lt;br /&gt;
I'd really like to strace the pam module and see what it's attempting to do to {{path|/proc/bus/usb|}}, but as that actually fixes the problem I'm kinda at a loss.  Maybe there's some kernel option to print debugging info for usbfs?  I'd be all for changing the article to suggest using mount options in {{path|/etc/fstab|}}, if it weren't for this one weird bug.  Has anyone else had the same problem?&lt;br /&gt;
&lt;br /&gt;
-- [[User:keegan|keegan]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open(&amp;quot;/dev/bus/usb&amp;quot;, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 13&lt;br /&gt;
fstat64(13, {st_mode=S_IFDIR|0755, st_size=140, ...}) = 0&lt;br /&gt;
fcntl64(13, F_SETFD, FD_CLOEXEC)        = 0&lt;br /&gt;
getdents64(13, /* 7 entries */, 4096)   = 168&lt;br /&gt;
getdents64(13, /* 0 entries */, 4096)   = 0&lt;br /&gt;
close(13)                               = 0&lt;br /&gt;
open(&amp;quot;/dev/bus/usb/003&amp;quot;, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 13&lt;br /&gt;
fstat64(13, {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0&lt;br /&gt;
fcntl64(13, F_SETFD, FD_CLOEXEC)        = 0&lt;br /&gt;
getdents64(13, /* 4 entries */, 4096)   = 96&lt;br /&gt;
open(&amp;quot;/dev/bus/usb/003/002&amp;quot;, O_RDWR)    = -1 EACCES (Permission denied)&lt;br /&gt;
open(&amp;quot;/dev/bus/usb/003/002&amp;quot;, O_RDONLY)  = 14&lt;br /&gt;
ioctl(14, USBDEVFS_CONNECTINFO, 0xafd5bd34) = -1 EPERM (Operation not permitted)&lt;br /&gt;
read(14, &amp;quot;\22\1\0\1\0\0\0\10\203\4\26 \1\0\1\2\0\1&amp;quot;, 18) = 18&lt;br /&gt;
read(14, &amp;quot;\t\2\'\0\1\1\0\240&amp;quot;, 8)       = 8&lt;br /&gt;
read(14, &amp;quot;2\t\4\0\0\3\377\0\0\0\7\5\201\2@\0\0\7\5\2\2@\0\0\7\5\203&amp;quot;..., 31) = 31&lt;br /&gt;
close(14)                               = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is all the excitement from the strace on xscreensaver.  As I originally thought, you cannot get away with just playing with the proc entries :P  You also need to deal with the counterpart in /dev.  I'm currently working on a udev approach to this, I'll keep you all posted.&lt;br /&gt;
&lt;br /&gt;
I created a 'bioapi' group and configured pam to add groups to anyone logging in ''locally''.  Now &amp;quot;chgrp bioapi /proc/bus/usb/00x/00y /dev/bus/usb/00x/00y&amp;quot; and then all you need to do is amend the pam configuraion files below.  We use 'wdm', but of course its as applicable for all those resource hungry touchy-feely gdm/kdm folk out there too ;)&lt;br /&gt;
&lt;br /&gt;
/etc/security/group.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local group settings&lt;br /&gt;
login; tty*; *; al0000-2400; audio,floppy,video,cdrom,nvram,plugdev,bioapi&lt;br /&gt;
wdm; :*; *; al0000-2400; audio,floppy,video,cdrom,nvram,plugdev,bioapi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/pam.d/login&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[snipped]&lt;br /&gt;
&lt;br /&gt;
# group *has* to go here&lt;br /&gt;
auth       optional   pam_group.so&lt;br /&gt;
&lt;br /&gt;
# fingerprint action&lt;br /&gt;
auth       sufficient /usr/local/lib/security/pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
&lt;br /&gt;
# Standard Un*x authentication.&lt;br /&gt;
@include common-auth&lt;br /&gt;
&lt;br /&gt;
# This allows certain extra groups to be granted to a user&lt;br /&gt;
# based on things like time of day, tty, service, and user.&lt;br /&gt;
# Please edit /etc/security/group.conf to fit your needs&lt;br /&gt;
# (Replaces the `CONSOLE_GROUPS' option in login.defs)&lt;br /&gt;
#auth       optional   pam_group.so&lt;br /&gt;
&lt;br /&gt;
[snipped]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/pam.d/wdm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#%PAM-1.0&lt;br /&gt;
auth            required        pam_nologin.so&lt;br /&gt;
auth            required        pam_env.so&lt;br /&gt;
&lt;br /&gt;
# local tweak&lt;br /&gt;
auth       optional   pam_group.so&lt;br /&gt;
&lt;br /&gt;
# fingerprint action&lt;br /&gt;
auth       sufficient /usr/local/lib/security/pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi1.10/pam/&lt;br /&gt;
&lt;br /&gt;
@include common-auth&lt;br /&gt;
@include common-account&lt;br /&gt;
@include common-session&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' as with all pam related things, the order is important&lt;br /&gt;
&lt;br /&gt;
-- [[User:Jim diGriz|Jim diGriz]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Driver Expiring!!!==&lt;br /&gt;
Don't anyone notice that both betas of the UPEK driver is expiring in&lt;br /&gt;
about a month in the new year, Jan 1st 2006? They really mean it! &lt;br /&gt;
I set my computer date to next year and get a message &amp;quot;the driver has expired&amp;quot; when using fingerprint reader! This is a grave threat to our computer lifestyle, i.e. for those of us who got it working and use it&lt;br /&gt;
daily:) &lt;br /&gt;
Is there any workaround other than setting the date back a year when&lt;br /&gt;
new year come and wait for new driver? Is there a way to figure out where exactly in the driver it checked the date and how? The must have set it &lt;br /&gt;
somewhere in file libtfmessbsp.so, but it is binary and I can't figure out how to Reverse Engineer it.&lt;br /&gt;
&lt;br /&gt;
---Jiang&lt;br /&gt;
&lt;br /&gt;
Yes, the beta driver will expire. The final version (which is due REALLY soon now) will not.&lt;br /&gt;
&lt;br /&gt;
Sumedha&lt;br /&gt;
&lt;br /&gt;
Any news? Just 9 days left to expiry. --[[User:Thinker|Thinker]] 21:36, 22 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
The final is out, get it at [http://www.upek.com/support/dl_linux_bsp.asp UPEK's download page]. And how does one edit the industry watch section of the main page?&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:39, 22 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
Ah, great! Both the article page and the driver page it points to are out of date... For the news, just follow the &amp;quot;[[ThinkWiki:News|News]]&amp;quot; link in the main page. &lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:44, 22 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
As this is now very soon I've updated the article page to link to the final driver, which is better in a few ways anyway.  This is unless anyone minds (are there any unresolved issues with the final that don't exist in the betas?).&lt;br /&gt;
&lt;br /&gt;
--[[User:Keegan|keegan]] 05:06, 24 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== Updated xscreensaver patch ==&lt;br /&gt;
&lt;br /&gt;
I've tried to address some usability issues with the old patch, e.g. that it calls the PAM bioapi module twice before falling back to the normal authentication methods. It can be found on my [http://linux.spiney.org/debian_gnu_linux_on_an_ibm_thinkpad_t43p_fingerprint_reader Fingerprint Reader] page, feedback is very welcome.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 20:36, 22 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fingerprint or password ==&lt;br /&gt;
&lt;br /&gt;
Is there any way to have PAM accept either a password or a finger swipe, right away? Sometimes one is more convenient, sometimes the other, so and it's a lot of trouble to wait for the UPEK scanner prompt and then cancel it in order to reach the password entry.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 19:27, 24 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== KDE screensaver ==&lt;br /&gt;
&lt;br /&gt;
If you get the following in {{path|/var/log/secure}} when you try to unlock the KDE screensaver, it means you forgot to set the USB device permissions.&lt;br /&gt;
 localhost pam_bioapi[24981]: Unable to load BioAPI BSP with UUID of {5550454b-2054-464d-2f45-535320425350}, BioAPI error #194d.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:21, 24 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== fingerprint reader in action. ==&lt;br /&gt;
&lt;br /&gt;
small video with fingerprint reader in action with login: http://chao.ch/tmp/mov01302.mpg&lt;br /&gt;
&lt;br /&gt;
--[[User:62.202.35.30|62.202.35.30]] 17:57, 29 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
==A little feedback...==&lt;br /&gt;
...for all the editors of this article:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;[[How to enable the fingerprint reader]] over at ThinkWiki.org is some real exhaustive documentation for getting the fingerprint scanner working on the ThinkPads. There is also a troubleshooting section towards the end that might be very useful to anyone messing around with it.&lt;br /&gt;
&lt;br /&gt;
Thanks to those responsible for taking the time to write up this excellent guide.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Those thanks come from [http://linuxbiometrics.com/modules/news/ LinuxBiometrics.com]&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 01:24, 9 Jan 2006 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==pam_bioapi.so is not linked to libbioapi100.so==&lt;br /&gt;
I downloaded the pam_bioapi package and patched the file by following the wiki. However, I got the following result:&lt;br /&gt;
&lt;br /&gt;
    ~/soft/thinkpad/pam_bioapi-0.2.1/libpam_bioapi/.libs$ ls -la&lt;br /&gt;
    total 48&lt;br /&gt;
    drwxr-xr-x  2 louis users   248 2006-01-12 01:18 ./&lt;br /&gt;
    drwxr-xr-x  4 louis users   312 2006-01-12 01:18 ../&lt;br /&gt;
    lrwxrwxrwx  1 louis users    16 2006-01-12 01:18 pam_bioapi.la -&amp;gt; ../pam_bioapi.la&lt;br /&gt;
    -rw-r--r--  1 louis users   824 2006-01-12 01:18 pam_bioapi.lai&lt;br /&gt;
    -rw-r--r--  1 louis users 19716 2006-01-12 01:18 pam_bioapi.o&lt;br /&gt;
    lrwxrwxrwx  1 louis users    19 2006-01-12 01:18 pam_bioapi.so -&amp;gt; pam_bioapi.so.0.0.0*&lt;br /&gt;
    lrwxrwxrwx  1 louis users    19 2006-01-12 01:18 pam_bioapi.so.0 -&amp;gt; pam_bioapi.so.0.0.0*&lt;br /&gt;
    -rwxr-xr-x  1 louis users 21789 2006-01-12 01:18 pam_bioapi.so.0.0.0*&lt;br /&gt;
    &lt;br /&gt;
    ~/soft/thinkpad/pam_bioapi-0.2.1/libpam_bioapi/.libs$ ldd pam_bioapi.so&lt;br /&gt;
            linux-gate.so.1 =&amp;gt;  (0xffffe000)&lt;br /&gt;
            libc.so.6 =&amp;gt; /lib/tls/libc.so.6 (0x40025000)&lt;br /&gt;
            /lib/ld-linux.so.2 (0x80000000)&lt;br /&gt;
    ~/soft/thinkpad/pam_bioapi-0.2.1/libpam_bioapi/.libs$&lt;br /&gt;
&lt;br /&gt;
pam_bioapi.so is NOT linked to libbioapi100.so. The latter is in the ld path:&lt;br /&gt;
&lt;br /&gt;
    ~/soft/thinkpad/pam_bioapi-0.2.1/libpam_bioapi/.libs$ ldconfig -p |grep bioapi&lt;br /&gt;
            libtfmessbsp.so (libc6) =&amp;gt; /opt/bioapi/lib/libtfmessbsp.so&lt;br /&gt;
            libpwbsp.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libpwbsp.so.0&lt;br /&gt;
            libpwbsp.so (libc6) =&amp;gt; /opt/bioapi/lib/libpwbsp.so&lt;br /&gt;
            libmds_util.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libmds_util.so.0&lt;br /&gt;
            libmds_util.so (libc6) =&amp;gt; /opt/bioapi/lib/libmds_util.so&lt;br /&gt;
            libbioapi100.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi100.so.0&lt;br /&gt;
            libbioapi100.so (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi100.so&lt;br /&gt;
            libbioapi_mds300.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi_mds300.so.0&lt;br /&gt;
            libbioapi_mds300.so (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi_mds300.so&lt;br /&gt;
            libbioapi_dummy100.so.0 (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi_dummy100.so.0&lt;br /&gt;
            libbioapi_dummy100.so (libc6) =&amp;gt; /opt/bioapi/lib/libbioapi_dummy100.so&lt;br /&gt;
&lt;br /&gt;
and the Sample program also works allowing me to enroll and test a fingerprint.&lt;br /&gt;
&lt;br /&gt;
My system is SuSE 10 with the kernel of 2.6.13-15. Any ideas?&lt;br /&gt;
&lt;br /&gt;
Thanks.&lt;br /&gt;
&lt;br /&gt;
--[[User:Tyne|Tyne]] 09:51, 12 Jan 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
==xscreensaver 4.23+fingerprint.patch causes xscreensaver-gl to crash kernel==&lt;br /&gt;
&lt;br /&gt;
I've gotten bioapi and 'Sample' to allow me to enroll my fingerprint, and I've also experienced the 'two logon' issue. &lt;br /&gt;
&lt;br /&gt;
I compiled xscreensaver 4.23 (though it seemed that apt came with 4.24) and applied the patch. My goal was to have the fingerprint prompt come up and to see the &amp;quot;bad image&amp;quot; of the fingerprint scan.&lt;br /&gt;
&lt;br /&gt;
The first time I did this, xscreensaver-gl took a dump and was causing kernel crashes. So I went and got the newest xscreensaver source and patches, and applied the bioapi patch to those. It worked (meaning it didnt crash the kernel anymore ;b )&lt;br /&gt;
&lt;br /&gt;
It would seem that there is a /etc/pam.d/xscreensaver, so I commented everything out of that except the bioapi line. &lt;br /&gt;
&lt;br /&gt;
Locking xscreensaver, then attempting to unlock didnt show me any fingerprint requirements, and my password didnt work.&lt;br /&gt;
&lt;br /&gt;
I'm wondering if theres something that was left out of the xscreensaver howto? or if theres anyone out there who's gotten the xscreensaver portion of this to work, who would be willing to help me out :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Viss|Viss]] 11:15am, 5 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== gdm hangs on kde logout ==&lt;br /&gt;
&lt;br /&gt;
Hi.&lt;br /&gt;
&lt;br /&gt;
I am using a Thinkpad t43, installed with gentoo.&lt;br /&gt;
I run gdm as the login manager, with kde 3.4 and enlightenment dr16 as the window manager.&lt;br /&gt;
&lt;br /&gt;
I followed the steps in the wiki, and the biometric scanner is now working fine, appart from the fact that when I close/end the session I just get a blank screen, in place of the gdm login screen.&lt;br /&gt;
&lt;br /&gt;
Disabling the biometrics (by setting the pam.d file back to their originals), the session ends fine. I do this for a few times, and then set the biometrics back again, and it work fine for a few logouts, and then back to the blank screen again.&lt;br /&gt;
&lt;br /&gt;
I can do ctrl+shift+f1 to get to a console window and from there I can issue a shutdown.&lt;br /&gt;
Although this works ok, it is a bit of a pain.&lt;br /&gt;
&lt;br /&gt;
Any ideas ?&lt;br /&gt;
&lt;br /&gt;
== 'gksudo' Doesn't show biopam finger swipe prompt... ==&lt;br /&gt;
&lt;br /&gt;
Hey all,&lt;br /&gt;
&lt;br /&gt;
First off... this is an excellent how-to!  I have no real interest in using fingerprint scanner with xscreensaver, but it was up and working with everything else on my system pretty much effortlessly.&lt;br /&gt;
&lt;br /&gt;
I'm running Ubuntu Breezy Badger 5.10 on an IBM T43p (2678) and have run into two oddities:&lt;br /&gt;
1) /etc/pam.d/xscreensaver - as it is initially configured, if you have an xscreensaver session set to require password (or xlock with screensaver) then you get prompted for the normal text-password entry and then will be prompted to swipe your finger... This is easily fixed by commenting out the '@include common-auth' line in /etc/pam.d/xscreensaver and adding the line 'auth required pam_unix.so nullok_secure'.  After that change it only prompts for the text-password entry challenge.&lt;br /&gt;
&lt;br /&gt;
2) gksudo - This is more of a pain... I can use the fingerprint scanner with gksudo, but gksudo doesn't prompt with the (ugly-but-functional) finger swipe dialog the way that gdm does during login or xscreensaver does when configured as mentioned above (pre-fix).  So, if I start a Gnome app launcher that is prepended with gksudo, nothing appears to happen until I swipe my finger and then the app gets launched.  That's cool and all, but there are times (esp. when multi-tasking) when I forget to swipe and then go &amp;quot;what happened to xxxxx? oh yeah...&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Anyway... does anyone have an idea of what I can do to get the dialog to appear?&lt;br /&gt;
&lt;br /&gt;
thanx&lt;br /&gt;
&lt;br /&gt;
--[[User:JELaVallee|JELaVallee]] 05:56, 20 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
The gksudo problem is a restriction from the X server. It doesn't allow to grab the display for other users than the logged-in one. And the pam_bioapi is invoked as root.&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 13:10, 20 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
That makes sense... so, now I have to wonder, is there a patchable work-around like the xscreensaver one that could allow for this to work?  Where should I research such?  gksu's project or is this more an issue at the X11-level?&lt;br /&gt;
&lt;br /&gt;
--[[User:JELaVallee|JELaVallee]] 19:38, 27 February 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
I got it working. Grab out the newer pam-bioapi from CVS (http://savannah.nongnu.org/cvs/?group=pam-bioapi). This version supports &amp;quot;multi-finger&amp;quot; when using the sqlite3 database. And it supports defining the used display.&lt;br /&gt;
Change your line in your /etc/pam.d/ files like this:&lt;br /&gt;
&lt;br /&gt;
auth            sufficient      pam_bioapi.so   {5550454b-2054-464d-2f45-535320425350}  /etc/bioapi/pam/bioshadow.db :0&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 14:27, 1 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Very cool... Did you run into any issues rebuilding/installing this?  I'll give it a shot this evening... THANKS!&lt;br /&gt;
&lt;br /&gt;
--[[User:JELaVallee|JELaVallee]] 21:07, 1 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Invoke 'xhost +local:' should be able to let gksudo work. Or just blindly sweap the finger. ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:YChao|YChao]] 21:25, 7 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== Multifinger ==&lt;br /&gt;
&lt;br /&gt;
Wow, theres a new version of pam_bioapi which supports multifinger enrollment and user identification.&lt;br /&gt;
I'll break my system with that this evening :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes, but I'm searching the patch for xdm. The download page from Josef Hajas (http://nax.hn.org/pub/bioapi/) is down. Does anybody have it?&lt;br /&gt;
&lt;br /&gt;
Update: The patch can be found here: http://www.qrivy.net/~michael/blua/xdm_bio.patch&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 17:43, 1 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Tried the newest pam-bioapi from CVS (http://savannah.nongnu.org/cvs/?group=pam-bioapi) on FC3. Failed on enrolling fingerprints: ({{path|/var/log/secure|}})&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Mar  9 15:30:40 localhost pam_bioapi[32407]: Can't open database: library routine called out of&lt;br /&gt;
sequence&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Could anyone help?&lt;br /&gt;
&lt;br /&gt;
--[[User:Ychao|Ychao]] 00:38, 10 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
I don't know how to solve it. It seems to be a problem with sqlite3. Which version do you use? Under Ubuntu Breezy, it's 3.2.1.&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 12:27, 10 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Did anybody tried multifinger with BioAPI? I am interested in multifinger at all, not only PAM.&lt;br /&gt;
&lt;br /&gt;
Updated:&lt;br /&gt;
&lt;br /&gt;
succesfully installed pam_bioapi with multifinger support, some info:&lt;br /&gt;
&lt;br /&gt;
use: &amp;lt;code&amp;gt;auth sufficient pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi/pam/bioshadow.db :0&amp;lt;/code&amp;gt; in pam.d, the bioshadow column is path to bioapi sqlite database.&lt;br /&gt;
&lt;br /&gt;
if authentication doesn't work, edit /etc/syslog.conf and write line *.alert /var/log/syslog, so you see pam_bioapi messages in /var/log/syslog&lt;br /&gt;
most common error is missing biodata table, newest pam_bioapi version should create it automatically, but if it doesn't, go to /etc/bioapi/pam/ and run command &amp;lt;code&amp;gt;sqlite3 bioshadow.db&amp;lt;/code&amp;gt;, then insert this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CREATE TABLE biodata (id INTEGER PRIMARY KEY,uid INTEGER,uuid TEXT,header BLOB,data BLOB,signature BLOB,type INTEGER,other BLOB);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you must then enroll at least one fingerprint to the database, do it using test_enroll-pam_bioapi from pam_bioapi distribution. note that you must have root user enrolled in order to use &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
--[[User:MeBa|MeBa]] 16:58, 22 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== GNOME Screensaver support ==&lt;br /&gt;
&lt;br /&gt;
Did anybody try to port the xscreensaver patch to gnome-screensaver? Since Ubuntu Dapper will be shiped with it, it would be nice to have it working then with the fingerprint reader.&lt;br /&gt;
&lt;br /&gt;
--[[User:Whoopie|Whoopie]] 12:36, 16 March 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== No sources for bioapi 1.2.3 ==&lt;br /&gt;
&lt;br /&gt;
There doesn't seem to be any sources available for the recommended Debian package bioapi-1.2.3.  That's rather distressing since this is security-related software.  A google search doesn't seem to be turning up anything, either.  Anybody have a lead on where to find sources?&lt;br /&gt;
&lt;br /&gt;
--[[User:TedTso|TedTso]] 7:47, 29 Apri 2006 (EDT)&lt;/div&gt;</summary>
		<author><name>TedTso</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13509</id>
		<title>Talk:SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13509"/>
		<updated>2005-12-19T19:56:55Z</updated>

		<summary type="html">&lt;p&gt;TedTso: /* &amp;quot;thinkpad&amp;quot; module kernel compatibility */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feedback ==&lt;br /&gt;
&lt;br /&gt;
Great, great work! Really! This completely rocks. I just stopped my battery from charging at 77% and restarted charging a bit later, no problems whatsoever. BTW, this is on kernel 2.6.14.3.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:25, 5 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
None of the fuctions is working on my T40, kernel 2.6.14-mm2.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lammic|lammic]], 2005.12.05&lt;br /&gt;
&lt;br /&gt;
Works for me on a T41 running 2.6.12-10-686 (Ubuntu 5.10).&lt;br /&gt;
&lt;br /&gt;
--[[User:berndtnm|berndtnm]], 2005.12.06&lt;br /&gt;
&lt;br /&gt;
Including stop_charge_thresh? That one seems to be missing on the T42p.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:46, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
tp_smapi works just fine on an R52 with Ubuntu Breezy stock kernel.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 12:52, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''To set the thresholds for starting and stopping battery charging (in percent of current capacity):''&lt;br /&gt;
&lt;br /&gt;
'''current''' really? That'd be weird, I'd expect it to be percent of '''total''' capacity.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 14:39, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Current full charge capacity&amp;quot;, as opposed to &amp;quot;current remaining capacity&amp;quot; or &amp;quot;designed full charge capacity&amp;quot;...&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 15:05, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Battery features don't work with my T41p. I can't check this with windows. Can anybody try these features?&lt;br /&gt;
&lt;br /&gt;
-- Nils, 7 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nils, does cdrom_speed work for you on the T41p? Could you provide the details requested in the README (dmesg etc.)?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:57, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
CDRom Speed seems to work. (I see no warnings, but I have to do a speed test.) Now, I've send all outputs to the email-address in the readme.&lt;br /&gt;
&lt;br /&gt;
-- Nils, 8 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
All the features except the stop_charge_thresh seem to work here on a t42p. &lt;br /&gt;
One note, the start_charge_thresh seems to really be stop_charge_thresh. Ie, If I set that to lower than my current battery %, it will never charge, &lt;br /&gt;
and if I set it to 100 the battery charges all the way. &lt;br /&gt;
&lt;br /&gt;
--[[User:Nirik|Nirik]] 16 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nirik, &amp;quot;all the features&amp;quot; as of which version? For example, do the force_discharge{1,2} in tp_smapi 0.12 also work for you? See the table in the article page. About start_charge, that's odd. Can you send me a log of what you did, what was the result a what was the dmesg output for each operation?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 14:16, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
System T40p:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fairlight:/sys/devices/platform/smapi/BAT0# echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge1&lt;br /&gt;
fairlight:/sys/devices/platform/smapi/BAT0# echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge2&lt;br /&gt;
fairlight:/sys/devices/platform/smapi/BAT0# dmesg   &lt;br /&gt;
tp_smapi: req_in: BX=2118 CX=100 DI=0 SI=0&lt;br /&gt;
tp_smapi: req_out: AX=8680 BX=2118 CX=100 DX=b2 DI=0 SI=0 ret=-38&lt;br /&gt;
tp_smapi: SMAPI error: Function is not supported by SMAPI BIOS (func=2118)&lt;br /&gt;
tp_smapi: cannot get force_discharge1 of battery 0: Function is not supported by SMAPI BIOS&lt;br /&gt;
tp_smapi: req_in: BX=2104 CX=100 DI=0 SI=0&lt;br /&gt;
tp_smapi: req_out: AX=80 BX=2103 CX=100 DX=78 DI=0 SI=0 ret=0&lt;br /&gt;
tp_smapi: cannot get force_discharge2 of battery 0: bx=2103&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So it seems force_discharge1 is not supported at all. But force_discharge2? By the way, i think wiki is a _very_ good idea for collecting information, but not for discussion. I would prefer a maillinglist. We can use sourceforge.&lt;br /&gt;
&lt;br /&gt;
--[[User|StefanSchmidt]]&lt;br /&gt;
&lt;br /&gt;
force_discharge2 is indicating a real error condition (bx=2103 which has bit 0x02 on), but I have no idea what the error is or how to fix it. Sorry. If you can trigger this function under Windows and have SoftICE or equivalent, maybe it can be worked out.&lt;br /&gt;
&lt;br /&gt;
About the Wiki discussion, I'm not sure a mailing list is justified yet, but you can use the linux-thinkpad list or the e-mail address in the README. &lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:42, 16 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
OK, then i use linux-thinkpad to get more people involved. I'am away the next weeks, but i hope to find some time to hacking on tp_smapi.&lt;br /&gt;
&lt;br /&gt;
--[[User:StefanSchmidt]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Someone reported cd_speed works on T42 but on mine, it doesn't: this is 2378DXU&lt;br /&gt;
&lt;br /&gt;
--[[User:eBug]] 22:55, 17 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
eBug, how does it fail? If the file doesn't exist, it means you didn't enable PROVIDE_CD_SPEED (see the README). If it does exist, can you provide the dmesg output when you read an write to the file?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 11:53, 18 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Changing the CD speed when the CD is being accessed will hang your computer==&lt;br /&gt;
&lt;br /&gt;
I don't have this problem on my T40p. CDROM is mounted and file on CD is opened. Change speed do '''not''' hang my system.&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
An open file looks fine if you're not reading/writing at that point. But my T43 does hangs on this:&lt;br /&gt;
 # dd if=/dev/scd0 of=/dev/null &amp;amp;&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/smapi/cdrom_speed&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:41, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
OK, sorry. I was to fast. My system hangs on this commands, too. :(&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
&lt;br /&gt;
Works well. Great.&lt;br /&gt;
&lt;br /&gt;
T42 2373-8zh. Working :cdrom_speed and start_charge_thresh. Untest : inhibit_charge_minutes.&lt;br /&gt;
&lt;br /&gt;
-- Haifeng Chen&lt;br /&gt;
&lt;br /&gt;
cdrom_speed works on my T40.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Lammic|lammic]], 2005.12.09&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;thinkpad&amp;quot; module kernel compatibility ==&lt;br /&gt;
&lt;br /&gt;
Ajunge, how do you compile the &amp;quot;thinkpad&amp;quot; module compile on kernel &amp;gt;=2.6.9? The latest thinkpad version (5.8) still uses &amp;quot;get_cpu_ptr&amp;quot; and &amp;quot;set_cpu_ptr&amp;quot;, which were removed in 2.6.9.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 13:53, 10 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The Debian thinkpad-source package in unstable (version 5.8-4) works just fine; I'm compiling it with 2.6.14 without any problems.  And get_cpu_ptr is present; it's defined in include/linux/percpu.h.&lt;br /&gt;
&lt;br /&gt;
--[[User:TedTso|TedTso]] 18:56, 17 Dec 2005 (EDT)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Stock thinkpad_5.8.tar.gz doesn't #include percpu.h anyway, and doesn't compile on vanilla 2.6.14.3 or 2.6.15-rc5. Maybe Debian patched it? In that case the article page should ref the patch.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 11:50, 18 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Oops, my mistake.  I forgot that I had patched my copy of thinkpadpm.c.   I replaced the use of get_cpu_ptr and set_cpu_ptr with get_cpu_val() and set_cpu_val().  I just double checked, and it tpctl is working for me on 2.6.15-rc5.&lt;br /&gt;
&lt;br /&gt;
--[[User:TedTso|TedTso]] 14:45, 19 Dec 2005 (EDT)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kernel Patch? ==&lt;br /&gt;
&lt;br /&gt;
Hello Thinker,&lt;br /&gt;
&lt;br /&gt;
would it be possible to provide the SMAPI support as kernel patch as well? Something along the lines of: (0.12 against 2.6.15-rc5)&lt;br /&gt;
&lt;br /&gt;
''(deleted, see below for how to create a patch file)''&lt;br /&gt;
&lt;br /&gt;
Deleted the tp_smapi.c file at the end, out of obvious reasons, and I'm not sure about the placement in the ACPI section, OTOH there it would be found easily next to ibm_acpi.&lt;br /&gt;
&lt;br /&gt;
Providing a patch would help when recompiling the kernel often, I hate recompiling external modules every time (even got me a kernel-upgrade script to do most of it automatically). But of course it's up to you. :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 09:52, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'll be glad to add this, but I don't want to go through additional manual steps in the release process (there are already quite a few). Can you add a &amp;quot;make patch&amp;quot; functionality to the Makefile, or something of the sort, to automatically generate a full patch (including tp_smapi.c) against current kernel sources?&lt;br /&gt;
&lt;br /&gt;
Also, this shouldn't be under drivers/acpi, since it doesn't use ACPI at all (that's why I didn't make it a patch to ibm_acpi). I think the right place is drivers/firmware, like the dell_rbu driver for Dell laptops.&lt;br /&gt;
&lt;br /&gt;
BTW, the convention for kernel patches is to start them once level higher:&lt;br /&gt;
  diff -Nurp kernel-2.6.14-vanilla kernel-2.6.14-patched&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 17:12, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Of course it's from the wrong level, as usual I was just lazy/inattentive. And at one point I'll remember who likes what patch format, promise. ;)&lt;br /&gt;
&lt;br /&gt;
A patch target as in &amp;quot;create a new file holding a correct diff to current kernel source&amp;quot; would be rather difficult, since line numbers might change etc., but applying the patch should be straighforward with a bit of sed. Of course I could just do that, create a patch with the diff command and then apply the new patch file in reverse. ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 18:36, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
If it does that on a local copy (no changes the original kernel tree) and cleans up after itself, that's fine with me. :-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:50, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Ok, here's a shell script that creates the patch, feel free to use it under the terms of the GPL. For example call it from your Makefile with the patch target: (I didn't want to put all the script into the Makefile, since the rules about escaping in Makefiles, well, escape me ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
KDIR=/lib/modules/$(uname -r)/build&lt;br /&gt;
FDIR=drivers/firmware&lt;br /&gt;
OPWD=$(pwd)&lt;br /&gt;
&lt;br /&gt;
TMPDIR=$(mktemp -d)&lt;br /&gt;
cd $TMPDIR&lt;br /&gt;
&lt;br /&gt;
mkdir -p a/$FDIR&lt;br /&gt;
cp $KDIR/$FDIR/{Kconfig,Makefile} a/$FDIR&lt;br /&gt;
cp -r a b&lt;br /&gt;
sed -i -e '/endmenu/i\&lt;br /&gt;
config IBM_SMAPI\&lt;br /&gt;
        tristate &amp;quot;IBM ThinkPad SMAPI Support&amp;quot;\&lt;br /&gt;
        depends on X86\&lt;br /&gt;
        ---help---\&lt;br /&gt;
        This adds SMAPI support on IBM ThinkPads, mostly used for battery\&lt;br /&gt;
        charge control. For more information about this driver see\&lt;br /&gt;
        &amp;lt;http://www.thinkwiki.org/wiki/SMAPI_support_for_Linux&amp;gt; .\&lt;br /&gt;
\&lt;br /&gt;
        If you have an IBM ThinkPad laptop, say Y or M here.\&lt;br /&gt;
' b/$FDIR/Kconfig&lt;br /&gt;
sed -i -e '$a\&lt;br /&gt;
obj-$(CONFIG_IBM_SMAPI)            += tp_smapi.o' b/$FDIR/Makefile&lt;br /&gt;
cp $OPWD/tp_smapi.c b/$FDIR&lt;br /&gt;
diff -Nurp a b &amp;gt; $OPWD/tp_smapi-$(uname -r).patch&lt;br /&gt;
rm -r a b&lt;br /&gt;
cd $OPWD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BTW, [http://qbnz.com/highlighter/ GeSHi]-based syntax-highlighting would be great...&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 19:28, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Ah, neat sed foo. How about [http://tpctl.sourceforge.net/tmp/Makefile this] escapade, then? &lt;br /&gt;
&lt;br /&gt;
What's the sed spell needed to replace the Makefile's&lt;br /&gt;
 VER  := 0.13&lt;br /&gt;
with auto-parsing of&lt;br /&gt;
 #define TP_VERSION &amp;quot;0.13&amp;quot;&lt;br /&gt;
from tp_smapi.c?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 20:37, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hmm, something like&lt;br /&gt;
 VERFROMC=$(sed -ne 's/^#define TP_VERSION &amp;quot;\(.*\)&amp;quot;/\1/gp' tp_smapi.c)&lt;br /&gt;
 sed -i -e &amp;quot;s/^VER := .*$/VER := $VERFROMC/&amp;quot; Makefile&lt;br /&gt;
should do (untested, from the top of my head, maybe the temporary variable isn't even necessary?). And neat Makefile wizardry, at one point I'll learn the syntax.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 20:44, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Makefile escaping is horrible, keep avoiding it... Anyway, the updated [http://tpctl.sourceforge.net/tmp/Makefile make patch] seems to do the right thing.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:36, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>TedTso</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13467</id>
		<title>Talk:SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13467"/>
		<updated>2005-12-18T00:10:57Z</updated>

		<summary type="html">&lt;p&gt;TedTso: /* &amp;quot;thinkpad&amp;quot; module kernel compatibility */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Feedback ==&lt;br /&gt;
&lt;br /&gt;
Someone reported cd_speed works on T42 but on mine, it doesn't: this is 2378DXU&lt;br /&gt;
&lt;br /&gt;
--[[User:eBug]] 22:55, 17 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Great, great work! Really! This completely rocks. I just stopped my battery from charging at 77% and restarted charging a bit later, no problems whatsoever. BTW, this is on kernel 2.6.14.3.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:25, 5 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
None of the fuctions is working on my T40, kernel 2.6.14-mm2.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lammic|lammic]], 2005.12.05&lt;br /&gt;
&lt;br /&gt;
Works for me on a T41 running 2.6.12-10-686 (Ubuntu 5.10).&lt;br /&gt;
&lt;br /&gt;
--[[User:berndtnm|berndtnm]], 2005.12.06&lt;br /&gt;
&lt;br /&gt;
Including stop_charge_thresh? That one seems to be missing on the T42p.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:46, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
tp_smapi works just fine on an R52 with Ubuntu Breezy stock kernel.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 12:52, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''To set the thresholds for starting and stopping battery charging (in percent of current capacity):''&lt;br /&gt;
&lt;br /&gt;
'''current''' really? That'd be weird, I'd expect it to be percent of '''total''' capacity.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 14:39, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Current full charge capacity&amp;quot;, as opposed to &amp;quot;current remaining capacity&amp;quot; or &amp;quot;designed full charge capacity&amp;quot;...&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 15:05, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Battery features don't work with my T41p. I can't check this with windows. Can anybody try these features?&lt;br /&gt;
&lt;br /&gt;
-- Nils, 7 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nils, does cdrom_speed work for you on the T41p? Could you provide the details requested in the README (dmesg etc.)?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:57, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
CDRom Speed seems to work. (I see no warnings, but I have to do a speed test.) Now, I've send all outputs to the email-address in the readme.&lt;br /&gt;
&lt;br /&gt;
-- Nils, 8 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
All the features except the stop_charge_thresh seem to work here on a t42p. &lt;br /&gt;
One note, the start_charge_thresh seems to really be stop_charge_thresh. Ie, If I set that to lower than my current battery %, it will never charge, &lt;br /&gt;
and if I set it to 100 the battery charges all the way. &lt;br /&gt;
&lt;br /&gt;
--[[User:Nirik|Nirik]] 16 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nirik, &amp;quot;all the features&amp;quot; as of which version? For example, do the force_discharge{1,2} in tp_smapi 0.12 also work for you? See the table in the article page. About start_charge, that's odd. Can you send me a log of what you did, what was the result a what was the dmesg output for each operation?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 14:16, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
System T40p:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fairlight:/sys/devices/platform/smapi/BAT0# echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge1&lt;br /&gt;
fairlight:/sys/devices/platform/smapi/BAT0# echo 1 &amp;gt; /sys/devices/platform/smapi/BAT0/force_discharge2&lt;br /&gt;
fairlight:/sys/devices/platform/smapi/BAT0# dmesg   &lt;br /&gt;
tp_smapi: req_in: BX=2118 CX=100 DI=0 SI=0&lt;br /&gt;
tp_smapi: req_out: AX=8680 BX=2118 CX=100 DX=b2 DI=0 SI=0 ret=-38&lt;br /&gt;
tp_smapi: SMAPI error: Function is not supported by SMAPI BIOS (func=2118)&lt;br /&gt;
tp_smapi: cannot get force_discharge1 of battery 0: Function is not supported by SMAPI BIOS&lt;br /&gt;
tp_smapi: req_in: BX=2104 CX=100 DI=0 SI=0&lt;br /&gt;
tp_smapi: req_out: AX=80 BX=2103 CX=100 DX=78 DI=0 SI=0 ret=0&lt;br /&gt;
tp_smapi: cannot get force_discharge2 of battery 0: bx=2103&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So it seems force_discharge1 is not supported at all. But force_discharge2? By the way, i think wiki is a _very_ good idea for collecting information, but not for discussion. I would prefer a maillinglist. We can use sourceforge.&lt;br /&gt;
&lt;br /&gt;
--[[User|StefanSchmidt]]&lt;br /&gt;
&lt;br /&gt;
force_discharge2 is indicating a real error condition (bx=2103 which has bit 0x02 on), but I have no idea what the error is or how to fix it. Sorry. If you can trigger this function under Windows and have SoftICE or equivalent, maybe it can be worked out.&lt;br /&gt;
&lt;br /&gt;
About the Wiki discussion, I'm not sure a mailing list is justified yet, but you can use the linux-thinkpad list or the e-mail address in the README. &lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:42, 16 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
OK, then i use linux-thinkpad to get more people involved. I'am away the next weeks, but i hope to find some time to hacking on tp_smapi.&lt;br /&gt;
&lt;br /&gt;
--[[User:StefanSchmidt]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Changing the CD speed when the CD is being accessed will hang your computer==&lt;br /&gt;
&lt;br /&gt;
I don't have this problem on my T40p. CDROM is mounted and file on CD is opened. Change speed do '''not''' hang my system.&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
An open file looks fine if you're not reading/writing at that point. But my T43 does hangs on this:&lt;br /&gt;
 # dd if=/dev/scd0 of=/dev/null &amp;amp;&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/smapi/cdrom_speed&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:41, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
OK, sorry. I was to fast. My system hangs on this commands, too. :(&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
&lt;br /&gt;
Works well. Great.&lt;br /&gt;
&lt;br /&gt;
T42 2373-8zh. Working :cdrom_speed and start_charge_thresh. Untest : inhibit_charge_minutes.&lt;br /&gt;
&lt;br /&gt;
-- Haifeng Chen&lt;br /&gt;
&lt;br /&gt;
cdrom_speed works on my T40.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Lammic|lammic]], 2005.12.09&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;thinkpad&amp;quot; module kernel compatibility ==&lt;br /&gt;
&lt;br /&gt;
Ajunge, how do you compile the &amp;quot;thinkpad&amp;quot; module compile on kernel &amp;gt;=2.6.9? The latest thinkpad version (5.8) still uses &amp;quot;get_cpu_ptr&amp;quot; and &amp;quot;set_cpu_ptr&amp;quot;, which were removed in 2.6.9.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 13:53, 10 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The Debian thinkpad-source package in unstable (version 5.8-4) works just fine; I'm compiling it with 2.6.14 without any problems.  And get_cpu_ptr is present; it's defined in include/linux/percpu.h.&lt;br /&gt;
&lt;br /&gt;
--[[User:TedTso|TedTso]] 18:56, 17 Dec 2005 (EDT)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Kernel Patch? ==&lt;br /&gt;
&lt;br /&gt;
Hello Thinker,&lt;br /&gt;
&lt;br /&gt;
would it be possible to provide the SMAPI support as kernel patch as well? Something along the lines of: (0.12 against 2.6.15-rc5)&lt;br /&gt;
&lt;br /&gt;
''(deleted, see below for how to create a patch file)''&lt;br /&gt;
&lt;br /&gt;
Deleted the tp_smapi.c file at the end, out of obvious reasons, and I'm not sure about the placement in the ACPI section, OTOH there it would be found easily next to ibm_acpi.&lt;br /&gt;
&lt;br /&gt;
Providing a patch would help when recompiling the kernel often, I hate recompiling external modules every time (even got me a kernel-upgrade script to do most of it automatically). But of course it's up to you. :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 09:52, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'll be glad to add this, but I don't want to go through additional manual steps in the release process (there are already quite a few). Can you add a &amp;quot;make patch&amp;quot; functionality to the Makefile, or something of the sort, to automatically generate a full patch (including tp_smapi.c) against current kernel sources?&lt;br /&gt;
&lt;br /&gt;
Also, this shouldn't be under drivers/acpi, since it doesn't use ACPI at all (that's why I didn't make it a patch to ibm_acpi). I think the right place is drivers/firmware, like the dell_rbu driver for Dell laptops.&lt;br /&gt;
&lt;br /&gt;
BTW, the convention for kernel patches is to start them once level higher:&lt;br /&gt;
  diff -Nurp kernel-2.6.14-vanilla kernel-2.6.14-patched&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 17:12, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Of course it's from the wrong level, as usual I was just lazy/inattentive. And at one point I'll remember who likes what patch format, promise. ;)&lt;br /&gt;
&lt;br /&gt;
A patch target as in &amp;quot;create a new file holding a correct diff to current kernel source&amp;quot; would be rather difficult, since line numbers might change etc., but applying the patch should be straighforward with a bit of sed. Of course I could just do that, create a patch with the diff command and then apply the new patch file in reverse. ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 18:36, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
If it does that on a local copy (no changes the original kernel tree) and cleans up after itself, that's fine with me. :-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:50, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Ok, here's a shell script that creates the patch, feel free to use it under the terms of the GPL. For example call it from your Makefile with the patch target: (I didn't want to put all the script into the Makefile, since the rules about escaping in Makefiles, well, escape me ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
KDIR=/lib/modules/$(uname -r)/build&lt;br /&gt;
FDIR=drivers/firmware&lt;br /&gt;
OPWD=$(pwd)&lt;br /&gt;
&lt;br /&gt;
TMPDIR=$(mktemp -d)&lt;br /&gt;
cd $TMPDIR&lt;br /&gt;
&lt;br /&gt;
mkdir -p a/$FDIR&lt;br /&gt;
cp $KDIR/$FDIR/{Kconfig,Makefile} a/$FDIR&lt;br /&gt;
cp -r a b&lt;br /&gt;
sed -i -e '/endmenu/i\&lt;br /&gt;
config IBM_SMAPI\&lt;br /&gt;
        tristate &amp;quot;IBM ThinkPad SMAPI Support&amp;quot;\&lt;br /&gt;
        depends on X86\&lt;br /&gt;
        ---help---\&lt;br /&gt;
        This adds SMAPI support on IBM ThinkPads, mostly used for battery\&lt;br /&gt;
        charge control. For more information about this driver see\&lt;br /&gt;
        &amp;lt;http://www.thinkwiki.org/wiki/SMAPI_support_for_Linux&amp;gt; .\&lt;br /&gt;
\&lt;br /&gt;
        If you have an IBM ThinkPad laptop, say Y or M here.\&lt;br /&gt;
' b/$FDIR/Kconfig&lt;br /&gt;
sed -i -e '$a\&lt;br /&gt;
obj-$(CONFIG_IBM_SMAPI)            += tp_smapi.o' b/$FDIR/Makefile&lt;br /&gt;
cp $OPWD/tp_smapi.c b/$FDIR&lt;br /&gt;
diff -Nurp a b &amp;gt; $OPWD/tp_smapi-$(uname -r).patch&lt;br /&gt;
rm -r a b&lt;br /&gt;
cd $OPWD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BTW, [http://qbnz.com/highlighter/ GeSHi]-based syntax-highlighting would be great...&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 19:28, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Ah, neat sed foo. How about [http://tpctl.sourceforge.net/tmp/Makefile this] escapade, then? &lt;br /&gt;
&lt;br /&gt;
What's the sed spell needed to replace the Makefile's&lt;br /&gt;
 VER  := 0.13&lt;br /&gt;
with auto-parsing of&lt;br /&gt;
 #define TP_VERSION &amp;quot;0.13&amp;quot;&lt;br /&gt;
from tp_smapi.c?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 20:37, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hmm, something like&lt;br /&gt;
 VERFROMC=$(sed -ne 's/^#define TP_VERSION &amp;quot;\(.*\)&amp;quot;/\1/gp' tp_smapi.c)&lt;br /&gt;
 sed -i -e &amp;quot;s/^VER := .*$/VER := $VERFROMC/&amp;quot; Makefile&lt;br /&gt;
should do (untested, from the top of my head, maybe the temporary variable isn't even necessary?). And neat Makefile wizardry, at one point I'll learn the syntax.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 20:44, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Makefile escaping is horrible, keep avoiding it... Anyway, the updated [http://tpctl.sourceforge.net/tmp/Makefile make patch] seems to do the right thing.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:36, 16 Dec 2005 (CET)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>TedTso</name></author>
		
	</entry>
</feed>