Sunday, 9 March 2014

Một số lệnh liên quan đến card sound trên Linux

Cơ bản là tự dưng 1 hôm loa không hát nữa, sửa mãi nó không khỏi.
Nay đã sửa xong, viết hồi ký. Mỗi lần sửa chữa này mất rất nhiều thời gian và học được không ít điều mới.

Bài viết thực hiện trên:
# uname -r
 3.13.5-1-ARCH

ALSA (Advanced Linux Sound Architecture) là một thành phần của Linux Kernel cung cấp driver cho các card sound.

PulseAudio là một "sound server". Máy tớ không dùng pulseaudio. (máy cài Ubuntu 12.04 mặc định là có dùng PulseAudio)

0. alsamixer
Dùng câu lệnh alsamixer để mở bảng "mixer" và chỉnh âm (các loại volume).

1. aplay


$ whatis aplay
aplay (1)            - command-line sound recorder and player for ALSA soundcard driver   

$ aplay -l  # List all soundcards and digital audio devices
**** List of PLAYBACK Hardware Devices ****
card 0: MID [HDA Intel MID], device 0: ALC269VB Analog [ALC269VB Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: MID [HDA Intel MID], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0


$ aplay -L# List all PCMs defined
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
default:CARD=MID
    HDA Intel MID, ALC269VB Analog
    Default Audio Device
sysdefault:CARD=MID
    HDA Intel MID, ALC269VB Analog
    Default Audio Device
front:CARD=MID,DEV=0
    HDA Intel MID, ALC269VB Analog
    Front speakers
surround40:CARD=MID,DEV=0
    HDA Intel MID, ALC269VB Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=MID,DEV=0
    HDA Intel MID, ALC269VB Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
Để phát ra tiếng ì xèo như đài bắt lệch sóng, chạy lệnh:
$ aplay < /dev/urandom # bấm Ctrl C để tắt
Playing raw data 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
^CAborted by signal Interrupt...
aplay: pcm_write:1939: write error: Interrupted system call
Danh sách các module liên quan đến sound đã được load

$ lsmod | grep snd
snd_hda_codec_hdmi     36379  1
snd_hda_codec_realtek    45083  1
snd_hda_intel          37352  4
snd_hda_codec         150017  3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel
snd_hwdep               6332  1 snd_hda_codec
snd_pcm                77822  4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
snd_page_alloc          7298  2 snd_pcm,snd_hda_intel
snd_timer              18718  2 snd_pcm
snd                    59029  13 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_hda_codec,snd_hda_intel
soundcore               5418  1 snd

2. alsactl
Archlinux dùng alsactl để quản lý ALSA.

Lỗi của máy tớ được sửa bằng cách chạy câu lệnh:
# alsactl init
Found hardware: "HDA-Intel" "Intel IbexPeak HDMI" "HDA:10ec0269,10431313,00100100 HDA:80862804,80860101,00100000" "0x1043" "0x1313"
Hardware is initialized using a generic method
init tries to initialize all devices to a default state. If device is not known, error code 99 is returned

Hết.