[ltp] Sound in FC3 (udev)
wes schreiner
linux-thinkpad@linux-thinkpad.org
Sat, 19 Feb 2005 02:01:08 -0600
Jo Jo wrote:
> I've run ps2.exe on the ThinkPad and all the settings it lists for the
> audio are the same in your modprobe.conf. However, there are a few
> settings in the conf that ps2.exe didn't give:
> index=0: I take it this has nothing to do w/the sound board settings...
> id=CARD_0: nor this.
They do if you have more than one sound device. I also use a USB audio
device and that gets index=1 and id=CARD_1. But with one card those
entries can just be the default settings. So no, PS2 doesn't report
those values, they are something you can set in the driver.
> port=0x530: same
This is the primary audio device port!
> cport=0x538: There's an "ADDress : 538" in the AUDIOCTRL settings
That's it
> sb_port=0x220: same
This is part of the sound device. If you have different settings in
BIOS and driver then you won't be able to control parts of the sound
device, if the driver loads at all.
> fm_port=0x388: ps2.exe doesn't show this
It's always 0x388. This is for the internal FM synth. But the driver
doesn't know that so that's why it is on the options line.
> irq=5: same
This is the main sound device interrupt. If you don't have this right
nothing will work!
> dma1=1 and dma2=0: ps2.exe had "DMA : 0 1". does order matter?
Most definitely it matters. But the order that PS2.EXE gives doesn't
necessarily correspond to what the snd-cs4236 module wants, so if you
think you have everything else right, try swapping the values of dma1
and dma2.
> mpu_port=0x330: There's an "ADDress : 330" in the MIDIport settings
> mpu_irq=9: There's an "IRQ : 9" in the MIDIport settings
> The MIDIport settings also have "Disabled"
Disabled is OK, if you don't want to use external MIDI. If you want
MIDI you need a docking station in order to have the port available.
But it's not needed for basic audio.
>
> But I feel that this has more to do with the driver and chipset. The
> error I get on startup from insmod is that there is no such device. I
> guess I don't blame it for thinking that since lspci also seems to
> think there's a different model in there.
No, it isn't doing any such "thinking" as the snd-cs4236 driver does not
look at the output of lspci. The difficulty here is that until you get
the settings right you will only get misleading error messages. The is
no "almost", it has to be right or nothing happens. Do you also have
"Quickboot" turned off? That is required in order for the BIOS to
actually configure the sound hardware.
Since you seem to doubt that this all does work, here follows the output
from various commands on my 600E. You already have seen the sound
device parts of my /etc/modules.conf (I'm running a 2.4.x kernel, but
that doesn't make a difference here).
lspci output. Yes, this shows a CS 4610/11, but forget about that, you
can't use that driver the way the 600E is wired up. This is with my
wi-fi card inserted.
0000:00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host
bridge (rev 03)
0000:00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP
bridge (rev 03)
0000:00:02.0 CardBus bridge: Texas Instruments PCI1251A
0000:00:02.1 CardBus bridge: Texas Instruments PCI1251A
0000:00:06.0 Multimedia audio controller: Cirrus Logic CS 4610/11
[CrystalClear SoundFusion Audio Accelerator] (rev 01)
0000:00:07.0 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)
0000:00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
0000:00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
0000:00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 02)
0000:01:00.0 VGA compatible controller: Neomagic Corporation NM2200
[MagicGraph 256AV] (rev 12)
0000:02:00.0 Ethernet controller: Atheros Communications, Inc. AR5212
802.11abg NIC (rev 01)
lsmod output. This also shows USB audio modules because I use them
often and thus always have them loaded. ALL of the sound modules are
automatically loaded with "modprobe snd-cs4236" followed by "modprobe
snd-usb-audio", though I just have the two modules listed in
/etc/modules so that the modprobes happen at boot time. This also shows
wi-fi modules, the module for the modem, and USB modules. The madwifi
modules for my atheros wi-fi card taints the kernel.
Module Size Used by Tainted: P
wlan_wep 3744 1 (autoclean)
mwave 32360 4
ath_pci 40464 1
ath_rate_onoe 3976 0 [ath_pci]
wlan 85464 1 [wlan_wep ath_pci ath_rate_onoe]
ath_hal 118992 1 [ath_pci]
usb-uhci 24144 0 (unused)
snd-usb-audio 43520 0 (unused)
snd-usb-lib 8292 0 [snd-usb-audio]
usbcore 65100 1 [usb-uhci snd-usb-audio snd-usb-lib]
snd-cs4236 2272 0
snd-cs4236-lib 11824 0 [snd-cs4236]
snd-pcm-oss 38560 0 (unused)
snd-mixer-oss 13528 0 [snd-pcm-oss]
snd-opl3-lib 6692 0 [snd-cs4236]
snd-hwdep 4640 0 [snd-opl3-lib]
snd-cs4231-lib 17004 0 [snd-cs4236 snd-cs4236-lib]
snd-pcm 62312 0 [snd-usb-audio snd-cs4236-lib
snd-pcm-oss snd-cs4231-lib]
snd-timer 15236 0 [snd-opl3-lib snd-cs4231-lib snd-pcm]
snd-mpu401-uart 3792 0 [snd-cs4236]
snd-rawmidi 13728 0 [snd-usb-lib snd-mpu401-uart]
snd-seq-device 4164 0 [snd-opl3-lib snd-rawmidi]
snd 34692 0 [snd-usb-audio snd-usb-lib snd-cs4236
snd-cs4236-lib snd-pcm-oss snd-mixer-oss snd-opl3-lib snd-hwdep
snd-cs4231-lib snd-pcm snd-timer snd-mpu401-uart snd-rawmidi snd-seq-device]
snd-page-alloc 4968 0 [snd-usb-audio snd-mixer-oss snd-hwdep
snd-cs4231-lib snd-pcm snd-timer snd-rawmidi snd-seq-device snd]
cat /proc/interrupts
See how the sound device interrupt 5 actually gets claimed by "CS4231",
just to be confusing. Also interrupt 9 is claimed by the raw MIDI driver.
CPU0
0: 75126 XT-PIC timer
1: 396 XT-PIC keyboard
2: 0 XT-PIC cascade
5: 0 XT-PIC CS4231
7: 1 XT-PIC parport0
8: 4 XT-PIC rtc
9: 0 XT-PIC MPU401 UART
10: 7 XT-PIC mwave_3780i
11: 1069 XT-PIC Texas Instruments PCI1251A, Texas
Instruments PCI1251A (#2), usb-uhci, ath0
12: 83 XT-PIC PS/2 Mouse
14: 17283 XT-PIC ide0
15: 5 XT-PIC ide1
NMI: 0
ERR: 0
cat /proc/ioports Note how ALL of the ports I have in the options line
(and then some) show up as belonging to some part of the sound hardware.
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0130-013f : mwave_3780i
0170-0177 : ide1
01f0-01f7 : ide0
0220-022f : CS4236+ SB
02f8-02ff : serial(set)
0330-0331 : MPU401 UART
0376-0376 : ide1
0388-0389 : OPL2/3 (left)
038a-038b : OPL2/3 (right)
03bc-03be : parport0
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(set)
0530-0533 : CS4231
0538-053f : CS4232 Control
07bc-07be : parport0
0cf8-0cff : PCI conf1
4000-40ff : PCI CardBus #02
4400-44ff : PCI CardBus #02
4800-48ff : PCI CardBus #05
4c00-4cff : PCI CardBus #05
8400-841f : Intel Corp. 82371AB/EB/MB PIIX4 USB
8400-841f : usb-uhci
d000-dfff : PCI Bus #01
ef00-ef3f : Intel Corp. 82371AB/EB/MB PIIX4 ACPI
efa0-efbf : Intel Corp. 82371AB/EB/MB PIIX4 ACPI
fcf0-fcff : Intel Corp. 82371AB/EB/MB PIIX4 IDE
fcf0-fcf7 : ide0
fcf8-fcff : ide1
cat /proc/asound/cards (USB audio device not inserted at this time, so
just CARD_0 appears)
0 [CARD_0 ]: CS4239 - CS4239
CS4239 at 0x530, irq 5, dma 1&0
cat /proc/asound/devices These are your basic audio devices.
8: [0- 0]: raw midi
4: [0- 0]: hardware dependent
16: [0- 0]: digital audio playback
24: [0- 0]: digital audio capture
0: [0- 0]: ctl
33: : timer
cat /proc/asound/hwdep The FM synth.
00-00: OPL3 FM
cat /proc/asound/pcm The digital audio ins and outs. Again
confusingly, CS4231 and CS4239 are showing, yet one gets this by
modprobing the snd-cs4236 module!
00-00: CS4231 : CS4239 : playback 1 : capture 1
cat /proc/asound/version While this was built last week, I don't think
I've had to touch the config since about version 1.03 or so, over a year
ago.
Advanced Linux Sound Architecture Driver Version 1.0.8.
Compiled on Feb 10 2005 for kernel 2.4.28-lck15 with versioned symbols.
Well there you have it, examples from a working 600E with everything
related to sound configured and working. Sure, you might not care about
MIDI or the FM synth, and those two are optional, but everything else is
required to get the full use out of the sound device. Remember there is
absolutely no auto probing going on here, you have to get the settings
right or nothing happens! That's why getting sound working on a 600E
and others with the same sound hardware is so difficult, there is no
help from the software, you have to get the settings right yourself.
Keep trying and good luck!
wes