arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
211 lines (138 loc) • 15.4 kB
Markdown
เอกสารเรื่องนี้จะแนะนำท่านในการติดตั้งโปรแกรม Alsa ซึ่งเป็นระบบการจัดการเสียง กับ Kernel เวอร์ชัน 2.6 ท่านอาจจะอยากศึกษา [วิธีการทำให้หลายๆ โปรแกรมส่งเสียงพร้อมกัน](/index.php/Allow_multiple_programs_to_play_sound_at_once "Allow multiple programs to play sound at once")
## Contents
* [1 การติดตั้ง](#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87)
* [1.1 Kernel drivers](#Kernel_drivers)
* [1.2 โปรแกรมส่วนของผู้ใช้](#.E0.B9.82.E0.B8.9B.E0.B8.A3.E0.B9.81.E0.B8.81.E0.B8.A3.E0.B8.A1.E0.B8.AA.E0.B9.88.E0.B8.A7.E0.B8.99.E0.B8.82.E0.B8.AD.E0.B8.87.E0.B8.9C.E0.B8.B9.E0.B9.89.E0.B9.83.E0.B8.8A.E0.B9.89)
* [2 การตั้งค่า](#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87.E0.B8.84.E0.B9.88.E0.B8.B2)
* [2.1 การตรวจสอบว่า Module ระบบเสียงได้ถูกเรียกใช้งานแล้ว](#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.A3.E0.B8.A7.E0.B8.88.E0.B8.AA.E0.B8.AD.E0.B8.9A.E0.B8.A7.E0.B9.88.E0.B8.B2_Module_.E0.B8.A3.E0.B8.B0.E0.B8.9A.E0.B8.9A.E0.B9.80.E0.B8.AA.E0.B8.B5.E0.B8.A2.E0.B8.87.E0.B9.84.E0.B8.94.E0.B9.89.E0.B8.96.E0.B8.B9.E0.B8.81.E0.B9.80.E0.B8.A3.E0.B8.B5.E0.B8.A2.E0.B8.81.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99.E0.B9.81.E0.B8.A5.E0.B9.89.E0.B8.A7)
* [2.2 เปิดใช้งาน channel และทดสอบการ์ดเสียง](#.E0.B9.80.E0.B8.9B.E0.B8.B4.E0.B8.94.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99_channel_.E0.B9.81.E0.B8.A5.E0.B8.B0.E0.B8.97.E0.B8.94.E0.B8.AA.E0.B8.AD.E0.B8.9A.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.8C.E0.B8.94.E0.B9.80.E0.B8.AA.E0.B8.B5.E0.B8.A2.E0.B8.87)
* [2.3 การตั้งค่าสิทธิ](#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87.E0.B8.84.E0.B9.88.E0.B8.B2.E0.B8.AA.E0.B8.B4.E0.B8.97.E0.B8.98.E0.B8.B4)
* [2.4 การตั้งค่าระดับเสียงอัตโนมัติเมื่อระบบเริ่มต้น](#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87.E0.B8.84.E0.B9.88.E0.B8.B2.E0.B8.A3.E0.B8.B0.E0.B8.94.E0.B8.B1.E0.B8.9A.E0.B9.80.E0.B8.AA.E0.B8.B5.E0.B8.A2.E0.B8.87.E0.B8.AD.E0.B8.B1.E0.B8.95.E0.B9.82.E0.B8.99.E0.B8.A1.E0.B8.B1.E0.B8.95.E0.B8.B4.E0.B9.80.E0.B8.A1.E0.B8.B7.E0.B9.88.E0.B8.AD.E0.B8.A3.E0.B8.B0.E0.B8.9A.E0.B8.9A.E0.B9.80.E0.B8.A3.E0.B8.B4.E0.B9.88.E0.B8.A1.E0.B8.95.E0.B9.89.E0.B8.99)
* [2.5 การใช้งาน SPDIF](#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99_SPDIF)
* [3 ยังคงไม่มีเสียงอะไรออกมา](#.E0.B8.A2.E0.B8.B1.E0.B8.87.E0.B8.84.E0.B8.87.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.A1.E0.B8.B5.E0.B9.80.E0.B8.AA.E0.B8.B5.E0.B8.A2.E0.B8.87.E0.B8.AD.E0.B8.B0.E0.B9.84.E0.B8.A3.E0.B8.AD.E0.B8.AD.E0.B8.81.E0.B8.A1.E0.B8.B2)
* [4 การตั้งค่ากับ KDE](#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87.E0.B8.84.E0.B9.88.E0.B8.B2.E0.B8.81.E0.B8.B1.E0.B8.9A_KDE)
## การติดตั้ง
### Kernel drivers
Alsa ได้ถูกรวมมาใน Kernel เวอร์ชัน 2.6 และได้ถูกรวมมาใน Kernel ของ Arch ที่ขึ้นต้นด้วย kernel26 หากคุณกำลังสร้าง kernel ของคุณเอง อย่าลืมเพิ่มความสามารถ alsa มาด้วย
Module ที่สำคัญๆ ควรจะถูกตรวจพบและติดตั้งโดยอัตโนมัติโดย udev คุณไม่ควรที่จะต้องตั้งค่าอะไรเพิ่มเติมอีก นอกจากคุณกำลังใช้การ์ด ISA **โปรดอย่าเรียกใช้** alsaconf ถ้าคุณกำลังใช้การ์ดเสียงชนิด PCI หรือ ISAPNP เนื่องจาก alsaconf อาจจะทำให้ระบบการตรวจสอบของ udev มีปัญหาได้
### โปรแกรมส่วนของผู้ใช้
* โปรแกรมที่ต้องติดตั้ง
```
# pacman -S alsa-lib alsa-utils
```
* โปรแกรมที่ควรติดตั้ง หากต้องการใช้โปรแกรมที่ต้องการความสารถของ OSS และ dmix
```
# pacman -S alsa-oss
```
โปรแกรมที่เกี่ยวข้องกับ Alsa น่าจะบังคับให้คุณลง alsa-lib ด้วย
## การตั้งค่า
### การตรวจสอบว่า Module ระบบเสียงได้ถูกเรียกใช้งานแล้ว
คุณสามารถปล่อยให้ udev ตรวจสอบระบบเสียงของคุณให้อัตโนมัติ พร้อมทั้งตรวจสอบความเข้ากันได้กับ OSS หากต้องการตรวจสอบ ก็ใช้คำสั่งดังนี้
```
$ lsmod|grep '^snd'
snd_usb_audio 69696 0
snd_usb_lib 13504 1 snd_usb_audio
snd_rawmidi 20064 1 snd_usb_lib
snd_hwdep 7044 1 snd_usb_audio
snd_seq_oss 29412 0
snd_seq_midi_event 6080 1 snd_seq_oss
snd_seq 46220 4 snd_seq_oss,snd_seq_midi_event
snd_seq_device 6796 3 snd_rawmidi,snd_seq_oss,snd_seq
snd_pcm_oss 45216 0
snd_mixer_oss 15232 1 snd_pcm_oss
snd_intel8x0 27932 0
snd_ac97_codec 87648 1 snd_intel8x0
snd_ac97_bus 1792 1 snd_ac97_codec
snd_pcm 76296 4 snd_usb_audio,snd_pcm_oss,snd_intel8x0,snd_ac97_codec
snd_timer 19780 2 snd_seq,snd_pcm
snd 43776 12 snd_usb_audio,snd_rawmidi,snd_hwdep,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
snd_page_alloc 7944 2 snd_intel8x0,snd_pcm
```
หากคุณได้ผลลัพธ์คล้ายๆ กับแบบนี้ แสดงว่า driver ของระบบเสียงคุณได้ถูกตรวจพบและติดตั้งเป็นที่เรียบร้อยแล้ว (โปรดสังเกตว่าในตัวอย่างนี้ snd_intel8x0 และ snd_usb_audio เป็น driver สำหรับ hardware)คุณสามารถดู directory **/dev/snd** สำหรับไฟล์ device
```
$ ls -l /dev/snd/
total 0
crw-rw---- 1 root audio 116, 0 Apr 8 14:17 controlC0
crw-rw---- 1 root audio 116, 32 Apr 8 14:17 controlC1
crw-rw---- 1 root audio 116, 24 Apr 8 14:17 pcmC0D0c
crw-rw---- 1 root audio 116, 16 Apr 8 14:17 pcmC0D0p
crw-rw---- 1 root audio 116, 25 Apr 8 14:17 pcmC0D1c
crw-rw---- 1 root audio 116, 56 Apr 8 14:17 pcmC1D0c
crw-rw---- 1 root audio 116, 48 Apr 8 14:17 pcmC1D0p
crw-rw---- 1 root audio 116, 1 Apr 8 14:17 seq
crw-rw---- 1 root audio 116, 33 Apr 8 14:17 timer
```
ถ้าอย่างน้อยคุณมี **controlC0** และ **pcmC0D0p** หรือที่คล้ายๆ กัน แสดงว่าระบบเสียงของคุณได้ถูกตรวจพบและติดตั้งเป็นที่เรียบร้อยแล้ว
หากไม่เป็นไปตามนี้ แสดงว่าการ์ดเสียงของคุณยังไม่ถูกตรวจพบ **หากคุณต้องการความช่วยเหลือจาก IRC กรุณาใส่ผลลัพธ์จากการใช้คำสั่งข้างต้นไว้ด้วย** การแก้ปัญหาในตอนนี้คือ คุณสามารถสั่งให้เครื่อง load driver ของระบบเสียงด้วยตัวคุณเอง
* ค้นหา module สำหรับการ์ดเสียงของคุณที่ [http://www.alsa-project.org/alsa-doc/](http://www.alsa-project.org/alsa-doc/) โดยโมดูลจะนำหน้าด้วย 'snd-' เช่น 'snd-via82xx'
* Load โมดูล
```
# modprobe snd-ชื่อของโมดูลของคุณ
# modprobe snd-pcm-oss
```
* ตรวจสอบหา device file ใน **/dev/snd** (ดูรายละเอียดทางด้านบน) และ/หรือ ทดลองใช้คำสั่ง **alsamixer** หรือ **amixer** แล้วดูผลลัพธ์ที่ออกมา
* เพิ่ม **snd-pcm-oss** และ **snd-ชื่อโมลดูล** เข้าไปในส่วนของ MODULES ในไฟล์ **/etc/rc.conf** เพื่อให้ระบบเรียกใช้โมดูลเหล่านี้ในการเริ่มทำงานครั้งหน้า
### เปิดใช้งาน channel และทดสอบการ์ดเสียง
ในส่วนนี้ โปรดเข้าใช้งานเป็น root หากคุณต้องการใช้งานส่วนนี้ โดยไม่เป็น root โปรดข้ามไปอ่านขั้นตอนการตั้งค่าสิทธิก่อน
* เปิดใช้งานการ์ดเสียง
เราแนะนำให้คุณใช้ 'alsamixer' ในการตั้งค่าระดับเสียงและเปิดใช้งาน channel
**คำแนะนำ** หากคุณกำลังใช้ **alsamixer** โปรดแน่ใจว่าคุณได้ **unmute** หรือเปิดใช้งาน channel นั้นๆ (กด M) ด้วย เพื่อให้สามารถใช้งานเสียงได้
คุณสามารถใช้งาน 'amixer' ก็ได้ แต่มันเป็นวิธีที่สะดวกน้อยกว่า
```
# amixer set Master 75 unmute
# amixer set PCM 75 unmute
```
* ทดลองเล่นไฟล์เสียง
```
# aplay mywav.wav
```
* [การตั้งค่าให้หลายๆ โปรแกรมสามารถใช้งานเสียงได้พร้อมกัน](/index.php/Allow_multiple_programs_to_play_sound_at_once "Allow multiple programs to play sound at once")
### การตั้งค่าสิทธิ
การอนุญาตให้ผู้ใช้ธรรมดาสามารถตั้งค่าเสียงได้ ทำตามขั้นตอนดังนี้
* เพิ่มผู้ใช้เข้าไปในกลุ่ม audio:
```
# gpasswd -a ชื่อผู้ใช้ audio
```
* ให้ผู้ใช้ของท่านออกจากระบบ แล้วเข้าสู่ระบบอีกครั้ง เพื่อให้ระบบตั้งค่าสิทธิ
### การตั้งค่าระดับเสียงอัตโนมัติเมื่อระบบเริ่มต้น
* ใช้งานคำสั่ง 'alsactl' หนึ่งครั้งเพื่อสร้างไฟล์ '/etc/asound.state'
```
alsactl store
```
* แก้ไขไฟล์ '/etc/rc.conf' เพิ่ม 'alsa' เข้าไปในส่วนของ DAEMONS โดยมันจะเก็บรายละเอียดการตั้งค่าเสียงของคุณทุกครั้งที่ปิดเครื่อง และเรียกใช้ใหม่เมื่อเริ่มต้นใช้เครื่อง
### การใช้งาน SPDIF
(ได้มาจากผู้ใช้ชื่อ gralves ในกระดานข่าวของ Gentoo)
* ใน Gnome Volume Control, เปลี่ยน IEC958 ให้เป็น PCM ในส่วนของ Options tab
* แก้ไฟล์ **/etc/asound.state** ซึ่งเป็นไฟล์ที่เก็บการตั้งค่าของ Alsa
* หาบรรทัดที่เขียนว่า : 'IEC958 Playback Switch'. ใกล้ๆ กันนั้นคุณจะเจอบรรทัดที่เขียนว่า value:false เปลี่ยนมันให้เป็น value:true
* หาบรรทัด 'IEC958 Playback AC97-SPSA' และเปลี่ยนค่ามันเป็น 0
* Restart alsa
อีกวิธีหนึ่งในการเรียกใช้งาน SPDIF อัตโนมัติ (ใช้งานได้บน SoundBlaster Audigy)
* เพิ่มคำสั่งนี้ในไฟล์ /etc/rc.local:
```
# Use COAX-digital output
amixer set 'IEC958 Optical' 100 unmute
amixer set 'Audigy Analog/Digital Output Jack' on
```
คุณสามารถดูชื่อของการ์ดเสียงของคุณได้จากคำสั่ง
```
amixer scontrols
```
## ยังคงไม่มีเสียงอะไรออกมา
ถ้าคุณติดตั้ง driver เรียบร้อยแล้ว ตั้งค่าระดับเสียงแล้ว และไม่มี channel ใดๆ ที่ปิดเสียงอยู่ แล้วคุณยังไม่ได้ยินเสียงอะไรเลย การใส่บรรทัดเหล่านี้เข้าไปในไฟล์ `/etc/modprobe.d/modprobe.conf` อาจจะช่วยแก้ปัญหาได้ (อย่างน้อยก็กับโมดูล `via82xx`)
```
options snd-ชื่อของโมดูล ac97_quirk=0
```
## การตั้งค่ากับ KDE
* เรียกใช้ KDE
```
# startx
```
* ตั้งค่าเสียงสำหรับผู้ใช้แต่ละคนด้วยคำสั่ง
```
# alsamixer
```
* **KDE 3.3** ไปที่ K Menu > Multimedia > KMix
* เลือก Settings > Configure KMix...
* ไม่เลือกตัวเลือก "Restore volumes on logon"
* กด OK เป็นอันเสร็จสิ้น