Trying to get the sound working on my Thinkpad 600. The sound chip is the Crystal 4237B, on the ISA bus. I have lots of information from users of previous versions of Slackware, as to all the settings needed. What I lack is a coherent plan to get all of the puzzle pieces in place in the proper order.
I would prefer to enable the sound as a module, loaded when the system goes multiuser, rather than automatically being enabled at bootup. If I'm not doing anything that requires sound, I'd rather just leave it.
It looks to me as if the sound chip is being picked up by the BIOS, but it is not detected by ALSA, as the options are not correctly set up.
What I would like to do in this thread is tap the knowledge of the masses, and distill a coherent narrative of the steps required to detect, configure, modularize, and use the sound card.
What is frustrating me at the moment is what I have found to be consistent in the Linux world - the documentation for individual pieces is excellent, but there is a desperate lack of general, overall guidance.
I'll post here the steps I've taken so far, and which tools I've used, and what results I've gotten. I will use
only tools that are available in the native Slackware 12.0 distro. My goal is that a reader of the thread would be able to work their way through the examples and the tools and then go on to apply a similar strategy to find their own solutions to their own problems.
What I've done so far:
1. Installed Slackware 12.0. (Dual boot with Windows 2000 pro)
2. Used the bash shell command man to learn the options to the uname command. "man uname"
3. Results of "uname -a"
"Linux darkstar 2.6.21.5 #2 Tue Jun 19 15:22:48 CDT 2007 i686 Pentium II (Deschutes) GenuineIntel GNU/Linux
(I suppose that I should also point out that I am using a virtual terminal from the XFCE desktop to copy and paste command line commands and results.)
4. Googled linux sound thinkpad 600, and found
http://www.levien.com/tp600.html , among others. Lots of good information there, but out of date for the Slack12.0 setup.
5. Read the Slackware Linux Essentials book - several times. Read Scott Granneman's book 'Linux Phrasebook' to learn some basics (ISBN 0-672-32838-0). Used Ken Burch's 'Linux Shell Scripting With Bash' - (ISBN 0-672-32642-6) to fill in some of the details in rc.* scripts.
6. Tried alsaconf to configure soundcard. alsaconf searches and detects the sound card, but misidentifies it as a cs4232. We know that this is a CS4327B chip. The drivers that we should be using are the cs4236, which according to the notes in /usr/src/linux/Documentation/sound/alsa/ALSA-Configuration.txt covers the chip we are interested in. alsaconf then modifies /etc/modprobe.d/sound , and /etc/modprobe.conf . According to the notes in /etc/modprobe.conf, that file is deprecated, and so we won't try to use it. In /etc/modprobe.d/sound , we find
alias snd-card-0 snd-cs4232
alias sound-slot-0 snd-cs4232
The alsa configurator finishes with a set of error messages which are pushed off screen by a message saying that everything is working fine.
Thus:
Loading driver...
ALSA warning: No mixer settings found in /etc/asound.state.
Sound may be muted. Use 'alsamixer' to unmute your sound card,
and then 'alsactl store' to save the default ALSA mixer settings
to be loaded at boot.
Setting default volumes...
amixer: Mixer attach default error: No such device
Saving the mixer setup used for this in /etc/asound.state.
/usr/sbin/alsactl: save_state:1253: No soundcards found...
===============================================================================
Now ALSA is ready to use.
For adjustment of volumes, use your favorite mixer.
Have a lot of fun!
But, alsamixer returns the error message -
root@darkstar:/# alsamixer
alsamixer: function snd_ctl_open failed for default: No such device
tail -25 /var/adm/syslog shows us the following
...
Dec 31 11:57:12 darkstar kernel: CS4236+ soundcard not found or device busy
Dec 31 11:57:14 darkstar kernel: CS4236+ soundcard not found or device busy
Which is curious. Where did syslog get the CS4236+ from? Perhaps the card
is identified correctly, but alsaconfig displays it incorrectly?
7. Next we look at lspci:
root@darkstar:/# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) (rev 02)
00:02.0 CardBus bridge: Texas Instruments PCI1250 (rev 02)
00:02.1 CardBus bridge: Texas Instruments PCI1250 (rev 02)
00:03.0 VGA compatible controller: Neomagic Corporation NM2160 [MagicGraph 128XD] (rev 01)
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 01)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
lspci -v (verbose)
...
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 01)
Flags: bus master, medium devsel, latency 0
...
So the chip is there - and the PCI bus can see it. But, as it isn't properly configured, alsa can't use it.
So where should we put the configuration information? On a good Slackware setup, we should be putting the configuration into the rc.d directory - but where? rc.alsa? , rc.M? , perhaps rc.local? , or maybe rc.modules-2.6.21.5 ? Reading all the notes in the various files suggests that /usr/src/linux/Documentation might be a good place to look for some guidance. In /usr/src/linux/Documentation/sound/alsa/ALSA-Configuration.txt we find many suggestions, among them to make the device with /dev/MAKEDEV or snddevices. (I can't find either.) Details on the CS4236 settings are in this file under Module snd-cs4236.
At this point, I've burrowed down far enough that I've completely lost sight of where I started.
Shall we try modprobe snd-cs4236 -C /etc/sound/configuration ? I'll put all the configuration info into /etc/sound/configuration, and we'll give it a whirl.
Contents of /etc/sound/configuration - stolen from
http://www.levien.com/tp600.html and modified per my best guesses based on usr/.../ALSA-Configuration.txt .
alias char-major-116 snd
alias snd-card-0 snd-card-cs4236
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-3 snd-pcm1-oss
alias sound-service-0-12 snd-pcm1-oss
options snd snd_major=116 snd_cards_limit=1 snd_device_gid=0 snd_device_uid=0
alias sound snd-card-cs4236
options snd-card-cs4236 snd_port=0x534 snd_cport=0x120 snd_mpu_port=0x300 snd_fm_port=0x388 snd_irq=5 snd_mpu_irq=9 snd_dma1=1 snd_dma2=0
root@darkstar:/# modprobe snd-cs4236 -C /etc/sound/configuration
FATAL: Error inserting snd_cs4236 (/lib/modules/2.6.21.5/kernel/sound/isa/cs423x/snd-cs4236.ko): No such device
root@darkstar:/#
So now I'm out of ideas. Where to next?