Cách đây không lâu,tôi có thử một
phiên bản FC 3 và Slackware 10.1,một điều kì lạ
là cả hai HĐH này đều đồng thời làm việc rất
kém với sound-card của tôi là cs-c4281(nói
chung là cho họ cs42xx).Đặt biệt mà nói trên
cấu hình mặc định nhân của Slackware 10.1 với kernel
2.6.10.x thử nghiệm không có thiết lập cho CONFIG_SND.
(Ở đây dành cho cách sound-card riêng
biệt,không gắn liền trên manboard.Còn trên
các mainboard hiên đại ngày này,chúng
ta không cần phải mua các sound-card riêng biệt bởi
vì nó được trang bị sẵn trên mainboard rồi).
Chiếc sound-card của tôi không làm việc một
cách bình thường. Sau khi cài đặt(lần đầu)
nó hoạt động bình thường.Nhưng sau đó khi khởi
động hệ thống lại,nó lại không hoạt động nữa.Sau đó
khợi động lại thì nó lại chạy.Cứ như thế....lần lượt để
nghe được nhạc phải lần lượt khởi động lại hệ thống một cách
thường xuyên.Điều này rất là khó chịu...phải
nói là rất bực.
Trên kernel 2.6.x tất nhiên là có các
modules cho các loại sound-card trên tuy nhiên
chúng tôi khuyến khích bạn nên biên
dịch cho modules sound-card của mình một cách riêng
biệt.Bạn cần phải có những packages dưới đây:
alsa-lib
alsa-oss
alsa-utils
alsa-driver
Bạn có thể tải chúng ở site http://project-alsa.org/
Bạn copy chúng vào một thư mục riêng biệt.Để untar
nhanh chóng có thể sử dụng scripts sau đây:
for i in *.tar.bz2
do
tar jxf $i
done
Để cài đặt chúng bạn phải sử dụng cấu chúc
cài đặt thông thường
# ./configure && make && make install
I. Vấn đề với sound-card:
Sau khi đăng nhập vào hệ thống.Rất là vui vì bạn
có một hệ thống có thể nói là cập nhật,với
nhân mới,có tính năng cao hơn,làm việc với
nhiều thiết bị hơn.Nhưng ôi thôi,khi thực hiên:
#aumix
Bạn nhận được những thông báo về lỗi sound-card,hoặc no
hardware detected.
II. Định dạng sound-card
Điều cơ bạn ở đây là bạn cần phải có những
thông tin cần thiết về sound-card của mình.Tuy nhiên
trước khi bạn làm điều đó,chúng tôi
khuyên bạn nên mở thùng máy ra và kiểm
tra lại xem sound-card đã thực sụ nằm chắc chắn kết nối với
PCI chưa.Đôi khi có trường hợp kết nối phần cứng
không có(do lỏng hoặc bụi bẩn lâu ngày).
Khi ấy bạn có thể than nhiên kiểm tra xem họ của
sound-card của mình là loại nào.Điều quan trọng
là bạn phải biết được module nào cần thiết cho sound-card
của mình.
Để kiểm tra phần cứng về sound-card bạn có thể làm như
sau:
#/sbin/lspci
00:00.0
Host bridge: VIA Technologies, Inc. VT8605 [ProSavage PM133] (rev c4)
00:01.0 PCI bridge: VIA Technologies,
Inc. VT8605 [PM133 AGP]
00:07.0 ISA bridge: VIA Technologies,
Inc. VT82C686 [Apollo Super South] (rev 40)
00:07.1 IDE interface: VIA
Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master
IDE (rev 06)
00:07.2 USB Controller: VIA
Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a)
00:07.3 USB Controller: VIA
Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a)
00:07.4 Host bridge: VIA
Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40)
00:0a.0 Multimedia
audio controller: Cirrus Logic Crystal CS4281 PCI Audio (rev 01)
00:11.0 Ethernet controller: Realtek
Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
00:14.0 Multimedia video controller:
Brooktree Corporation Bt878 Video Capture (rev 11)
00:14.1 Multimedia controller:
Brooktree Corporation Bt878 Audio Capture (rev 11)
01:00.0 VGA compatible controller:
ATI Technologies Inc Radeon R100 QD [Radeon 7200]
Như trên đây,bạn sẽ thấy sound-card kết nối qua PCI
là :Cirrus Logic Crystal CS4281
PCI Audio.
Bạn có thể lấy được các thông tin rõ
ràng hơn qua dịch vụ procfs như sau:
# cat /proc/pci
PCI
devices found:
Bus 0,
device 0, function 0:
Class 0600: PCI
device 1106:0605 (rev 196).
Prefetchable 32 bit memory at 0xd0000000 [0xd3ffffff].
Bus 0,
device 1, function 0:
Class 0604: PCI
device 1106:8605 (rev 0).
Master
Capable. No bursts. Min Gnt=12.
Bus 0,
device 7, function 0:
Class 0601: PCI
device 1106:0686 (rev 64).
Bus 0,
device 7, function 1:
Class 0101: PCI
device 1106:0571 (rev 6).
Master
Capable. Latency=32.
I/O at
0xd000 [0xd00f].
Bus 0,
device 7, function 2:
Class 0c03: PCI
device 1106:3038 (rev 26).
IRQ 10.
Master
Capable. Latency=32.
I/O at
0xd400 [0xd41f].
Bus 0,
device 7, function 3:
Class 0c03: PCI
device 1106:3038 (rev 26).
IRQ 10.
Master
Capable. Latency=32.
I/O at
0xd800 [0xd81f].
Bus 0,
device 7, function 4:
Class 0600: PCI
device 1106:3057 (rev 64).
IRQ 9.
Bus 0, device 10,
function 0:
Class 0401: PCI
device 1013:6005 (rev 1).
IRQ 5.
Master
Capable. Latency=32. Min Gnt=4.Max Lat=24.
Non-prefetchable 32 bit memory at 0xdb011000 [0xdb011fff].
Non-prefetchable 32 bit memory at 0xdb000000 [0xdb00ffff].
Bus 0, device 17,
function 0:
Class 0200: PCI
device 10ec:8139 (rev 16).
IRQ 11.
Master
Capable. Latency=32. Min Gnt=32.Max Lat=64.
I/O at
0xe000 [0xe0ff].
Non-prefetchable 32 bit memory at 0xdb010000 [0xdb0100ff].
Bus 0, device 20,
function 0:
Class 0400: PCI
device 109e:036e (rev 17).
IRQ 10.
Master
Capable. Latency=32. Min Gnt=16.Max Lat=40.
Prefetchable 32 bit memory at 0xdb012000 [0xdb012fff].
Bus 0, device 20,
function 1:
Class 0480: PCI
device 109e:0878 (rev 17).
IRQ 10.
Master
Capable. Latency=32. Min Gnt=4.Max Lat=255.
Prefetchable 32 bit memory at 0xdb013000 [0xdb013fff].
Bus 1,
device 0, function 0:
Class 0300: PCI
device 1002:5144 (rev 0).
IRQ 11.
Master
Capable. Latency=32. Min Gnt=8.
Prefetchable 32 bit memory at 0xd4000000 [0xd7ffffff].
I/O at
0xc000 [0xc0ff].
Non-prefetchable 32 bit memory at 0xd9000000 [0xd907ffff].
Bạn sẽ nhìn thấy các thông tin chi tiết về
các giá trị của IRQ.Những thông tin sẽ dễ
dàng cho bạn khi thiết lập cấu hình cho sound-card.Tuy
nhiên,bạn phải chắc chắn rằng module của sound-card được
đưa vào trong phiên bản ALSA mà bạn có.Để
xem chúng có trong đó hay không bạn
có thể làm như sau:
# cd /path/to/alsa-driver-<version>
# ./configure --help
Bạn sẽ nhìn thấy nhiều thông tin cần thiết,tuy nhiên
chỉ cần chú ý đến thông tin sau:
--with-cards=<list> compile driver for cards in <list>;
cards may be separated with commas;
'all' compiles all driver
Possible cards are:
dummy, virmidi, serial-u16550, mtpav, mpu401,
als100, azt2320, cmi8330, dt019x, es18xx,
opl3sa2, sgalaxy, sscape, ad1816a, ad1848,
cs4231, cs4232, cs4236, pc98-cs4232, es1688,
gusclassic, gusmax, gusextreme, interwave,
interwave-stb, opti92x-ad1848, opti92x-cs4231,
opti93x, sb8, sb16, sbawe, es968, wavefront,
als4000, azt3328, bt87x, cmipci, cs4281, ens1370,
ens1371, es1938, es1968, fm801, intel8x0,
maestro3, rme32, rme96, sonicvibes, via82xx,
ali5451, cs46xx, emu10k1, ice1712, ice1724,
korg1212, mixart, nm256, rme9652, hdsp, trident,
vx222, ymfpci, powermac, sa11xx-uda1341,
usb-audio, harmony, vxpocket, vxp440, serialmidi,
intel8x0m, hdspm, atiixp, pdplus, msnd-pinnacle,
pdaudiocf, usb-usx2y, au8810, au8820, au8830
Khi cài đặt bạn có thể chi ra sound-card
riêng của mình bằng chọn lựa sau:
#./configure --with-cards=cs4281
Chú ý rằng,trong kernel 2.4.x thì tập tin
để điều khiển quá trình tải modules nhận dạng
sound-card là modules.conf (còn trong kernel 2.6.x
là modprobe.conf)
Bạn sẽ nhìn thấy chúng có dạng như sau:
alias
eth0 8139too
alias snd-card-0
snd-cs4281
options snd-card-0
index=0
install snd-cs4281 /sbin/modprobe
--ignore-install snd-cs4281 && /usr/sbin/alsactl restore
>/dev/null 2>&1 || :
remove snd-cs4281 { /usr/sbin/alsactl
store >/dev/null 2>&1 || : ; }; /sbin/modprobe -r
--ignore-remove snd-cs4281
alias char-major-81 bttv
alias usb-controller uhci-hcd
# --- BEGIN: Generated by ALSACONF,
do not edit. ---
# --- ALSACONF verion @VERSION@ ---
alias snd-card-0 snd-cs4281
alias sound-slot-0 snd-cs4281
# --- END: Generated by ALSACONF, do
not edit. ---
III Kiểm tra modules đã
được khởi động hay không:
Khi khởi động vào hệ thống,bạn có thể thực hiện:
#alsamixer
alsamixer: function snd_ctl_open failed for default: No such device
Nếu bạn nhận được thông báo như trên có nghĩa
là sound-card của bạn làm việc không bình
thường.Bạn cần phải kiểm tra xem các modules sound-card
có hay không.Để làm điều này bạn có
thể làm như sau:
Module
Size Used by
snd_seq_midi
8736 0
snd_seq_midi_event
8832 1 snd_seq_midi
snd_opl3_synth
17412 0
snd_seq_instr
12032 1 snd_opl3_synth
snd_seq_midi_emul
6400 1 snd_opl3_synth
snd_seq
58256 5
snd_seq_midi,snd_seq_midi_event,snd_opl3_synth,snd_seq_instr,snd_seq_midi_emul
snd_ainstr_fm
2816 1 snd_opl3_synth
snd_cs4281
24048 1
snd_rawmidi
27328 2 snd_seq_midi,snd_cs4281
snd_ac97_codec
67320 1 snd_cs4281
snd_pcm_oss
48296 1
snd_mixer_oss
18048 1 snd_pcm_oss
snd_pcm
93064 3 snd_cs4281,snd_ac97_codec,snd_pcm_oss
gameport
4801 1 snd_cs4281
snd_opl3_lib
12160 2 snd_opl3_synth,snd_cs4281
snd_seq_device
9228 5
snd_seq_midi,snd_opl3_synth,snd_seq,snd_rawmidi,snd_opl3_lib
snd_timer
30212 3 snd_seq,snd_pcm,snd_opl3_lib
snd_hwdep
10016 1 snd_opl3_lib
snd
55908 13
snd_opl3_synth,snd_seq_instr,snd_seq,snd_cs4281,snd_rawmidi,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_opl3_lib,snd_seq_device,snd_timer,snd_hwdep
soundcore
9889 2 snd
radeon
120516 2
lp
11565 0
autofs4
24005 0
sunrpc
160421 1
ipt_REJECT
6465 1
ipt_state
1857 1
ip_conntrack
40693 1 ipt_state
iptable_filter
2753 1
ip_tables
16193 3 ipt_REJECT,ipt_state,iptable_filter
vfat
14785 4
fat
45409 1 vfat
dm_mod
54741 0
button
6481 0
battery
8517 0
ac
4805 0
md5
4033 1
ipv6
232577 8
uhci_hcd
31449 0
bt878
11093 0
tuner
18413 0
tvaudio
20961 0
bttv
150541 1 bt878
video_buf
21701 1 bttv
i2c_algo_bit
8521 1 bttv
v4l2_common
5953 1 bttv
btcx_risc
4425 1 bttv
i2c_core
22081 4 tuner,tvaudio,bttv,i2c_algo_bit
videodev
9664 1 bttv
parport_pc
24705 1
parport
41737 2 lp,parport_pc
snd_page_alloc
10120 1 snd_pcm
8139too
26305 0
mii
4673 1 8139too
floppy
58609 0
ext3
116809 1
jbd
74969 1 ext3
Như vậy là ổn,module đã được khởi động những tại sao khi
thực hiện
#alsamixer
alsamixer: function snd_ctl_open failed for default: No such device
Bạn lại nhận được những thông tin trên.Có lẽ
đó là do module của sound-card chi được bật lên khi
hệ thống khởi động,sau đó bạn cần phải khởi động lại modules của
sound-card bằng tay.Hệ thống đã không thành
công khởi động sound-card.
Có nghĩa là phải khởi động lại sound-card để nó
nhận lại ra modules hiện thời(bằng tay).Tuy nhiên bằng
cách nào?.
Bạn có thể làm điều này bằng cách sau:
#/sbin/chkconf --list sound
sau đó:
#/sbin/chkconf --level x sound on
Nếu như không có thông tin về "sound" bạn có
thể thử với snd hoặc snd-cs42xx
Tuy nhiên nếu như tất cả đều không nhận được kết qủa
thì đấy không phải là kết thúc.Chúng
ta tiến đến sử dụng alsaconf
Sau khi cài đặt hết tất cả các packages ALSA mà
liệt kê trên.
Bạn có thể thực hiên:
#alsaconf để thực hiên việc tìm kiếm và thiết
lập sound-card của mình.
Nếu như bạn nhận được thông báo: "command not found". Đừng
có sợ.Bạn sẽ tìm thấy một script về alsaconf trong
package alsa-utils.x.Chạy nố một cách bình thường.
# --- BEGIN: Generated by ALSACONF, do
not edit. ---
# --- ALSACONF verion @VERSION@ ---
alias snd-card-0 snd-cs4281
alias sound-slot-0 snd-cs4281
# --- END: Generated by ALSACONF, do not edit. ---
Đấy là thông tin mà alsaconf làm cho
bạn và bổ sung vào modprobe.conf
Tuy nhiên nếu như bạn không có alsaconf thì
cũng không phải là kêt thúc không thể
nghe được nhạc.Rất đơn giản.Bạn tiến hành cấu hình tập
tin modprobe.conf bằng tay.Rất đơn giản chỉ cần soạn thảo lại tập tin
/etc/modprobe.conf và bổ sung vào dòng sau:
alias snd-card-0 snd-cs4281
alias sound-slot-0 snd-cs4281
Sau đó cần phải khởi động modules của sound-card
Bạn có thể làm bằng các cách sau:
#/sbin/modprobe snd-cs4281
(#modprobe snd-cs42xx)
Hoặc là
#insmod snd-cs42xx
Chúng nằm ở catalog:
/lib/modules/2.6.9-1.667/kernel/sound/pci/snd-cs4281.ko
Sau đó chìa khoá chính là lệnh để
khởi động lại sound-card là:
# /etc/rc.d/init.d/alsasound
restart
Đây chính là chìa khoá
để sound-card hoạt động bình thường khi mà hệ thống
đã không thành công khi khời động
sound-card.Sau đó bạn có thể sử dụng:
#aumix
Bạn nhận được như sau:
Hoặc là alsamixer:
#alsamixer
Bạn nhận được như sau:
Như vậy là mình đã thành công với
sound-card của mình trên FC3 và Slackware10.1
Chúc may mắn.Hi vọng bạn có thể giải quyết được điều
gì đó với sound-card của mình.