ALSA does work, as I mentioned here, but it seems to have problems across a suspend-resume, i.e. it doesn’t work post-resume.
Previously used patches don’t seem to apply to newer Alsa modules.
SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed FROM nucleus_item as i, nucleus_member as m, nucleus_category as c WHERE i.iblog=1 and i.iauthor=m.mnumber and i.icat=c.catid and i.idraft=0 and i.itime<="2008-12-05 04:12:38" AND i.iblog = 1 AND i.inumber IN (31,14) ORDER BY i.itime DESC LIMIT 1,5
stdClass Object
(
[itemid] => 14
[title] => Fixing Sound/Suspend-Resume on IBM T23 for Gentoo
[body] => ALSA does work, as I mentioned here, but it seems to have problems across a suspend-resume, i.e. it doesn’t work post-resume.
Previously used patches don’t seem to apply to newer Alsa modules.
[author] => erin
[authorname] => Erin Schnabel
[itime] => 2003-12-19 16:01:00
[more] => Gentoo installs apmd_proxy in /etc/apm, with suspend.d and resume.d directories for handling special suspend/resume operations. Even better, event.d handles both.. 
So, based on some searching around, I ended up adding apmd to the list of services to start (rc-update add apmd default), and added the following script to get alsa to behave on resume:
bq. /etc/apm/event.d/alsa:
#!/bin/sh
<br />
case "$1" in
resume)
/usr/sbin/alsactl power off
/usr/sbin/alsactl power on
;;
suspend|standby)
;;
esac
Found this lovely snippet that answers why apm -s works better than Fn-F4 [emphasis added]:
The APM BIOS rejects suspend (or hibernate) requests under certain conditions: e.g., on my TP600, when my Xircom Ethernet/modem card is inserted and the machine is on AC power. If I do “apm -suspend” then the kernel apm driver hears about the request first and tells apmd which runs apmd_proxy which runs the scripts in /etc/apm/event.d which do things like eject the PCMCIA cards; only then does the apm driver pass the request on to the BIOS. (I think.) If I do “tpctl—suspend” on the other hand, the BIOS hears about the request first and, if the PCMCIA card is still inserted, it rejects the request with a couple of beeps (high—low). “apm—suspend” is therefore to be preferred to “tpctl—suspend”. Unfortunately there is no alternative to “tpctl—hibernate” : the apm program and the kernel apm driver don’t know how to ask for hibernation. Solution: write a little script that does “cardctl eject ; tpctl—hib”. Fn-F4 does the same as “tpctl—suspend” and Fn-F12 does the same as “tpctl—hibernate”.
The mention of the BIOS rejecting the suspend request when a PCMCIA card is inserted is exactly what I was seeing – I’m using my wireless card right now.
So after all that, I learned that I should suspend using apm -s and not with the thinkpad buttons if I have a pcmcia card active. With no PCMCIA card, the suspend request will be handled correctly by APM and apmd, and everything should be happy.
References:
Various records of Linux Installation attempts:
- How to set up an IBM Thinkpad T30 Debian GNU/Linux
- Debian GNU/Linux on an IBM Thinkpad T23
- Linux on A30p – Sound
- SuSE Linux 8.0 on IBM T30 Thinkpad
- Re: ThinkPad 600, kernel 2.2.17pre6, and hibernation
- [ltp] APMD and Standby on the TP-T21
- artsshell permissions
Older Alsa drivers:
Information for Linux on IBM Laptops
APM / Other tools
Everywhere I looked, things would reference debian’s /etc/apm/event.d/alsa script. Thing is, I don’t run debian, and I’ll be damned if I could find the contents of the script anywhere…
For future reference, I’ve attached the source here.
[authorid] => 1
[authormail] => erinschnabel@gmail.com
[authorurl] => http://ebullientworks.com/
[category] => General
[catid] => 1
[closed] => 0
)
ALSA does work, as I mentioned here, but it seems to have problems across a suspend-resume, i.e. it doesn’t work post-resume.
Previously used patches don’t seem to apply to newer Alsa modules.