Bối cảnh
Tôi đã chạy archlinux
trên máy tính xách tay của tôi trong nhiều năm và không bao giờ cần micro. Bây giờ tôi cần nó nhưng không thể tìm cách cấu hình nó đúng cách.
Tôi sử dụng alsa
và pulseadio
.
Chạy alsamixer
như một người dùng, tôi có hai đồng hồ đo:
|| ||
Master Capture
Tôi có cả hai trong số chúng không được bật và kích hoạt các giá trị hợp lý (~ 50%).
Chạy alsamixer
bằng root tôi có vài đồng hồ đo:
|| || || || || ||
Master Headphones Speaker PCM Microphone MIC Boot
|| || || || ||
Beep Loopback Internal Internal Capture
Nếu tôi bật Loopback
gốc, tôi có thể nghe thấy micrô qua loa .
Nếu tôi chọn rõ ràng card âm thanh của mình alsamixer
với tư cách là người dùng, tôi sẽ nhận được các lệnh tương tự như chạy bằng root (và nếu tôi bật Loopback
ở đây, tôi cũng nghe thấy micrô từ loa). Tôi nhận được như sau:
(Bên phải là hai Internal
đồng hồ đo nữa , Loopback
(bật / tắt) và có thể thay đổi Off-hook
)
Tuy nhiên, bất kể tôi làm gì và tôi can thiệp bao nhiêu với đồng hồ đo alsa tôi không bao giờ quản lý để chuyển micrô cho ứng dụng người dùng. Về bản chất, mỗi khi tôi chạy, arecord
tôi nhận được kết quả đầu ra như sau:
$ arecord -vv -f dat /dev/null
Recording WAVE '/dev/null' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
ALSA <-> PulseAudio PCM I/O Plugin
Its setup is:
stream : CAPTURE
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
tstamp_type : GETTIMEOFDAY
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 1
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 6755399441055744000
#+ | 00%
aplay
mặt khác, hoạt động hoàn hảo.
Thẻ âm thanh của tôi là ( lspci
):
# lspci| grep -i audio
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA)
Tôi đã xem wiki wiki và thử cài đặt phần sau /etc/modprobe.d/modprobe.conf
(và khởi động lại máy):
options snd-hda-intel model=dell-m6-dmic
(Tôi không thể nhận micrô để gửi dữ liệu đến ứng dụng người dùng có hoặc không có cấu hình đó.)
Các hda
mô-đun hiện tại của tôi là:
# lsmod |grep hda
snd_hda_codec_si3054 16384 1
snd_hda_codec_realtek 69632 1
snd_hda_codec_generic 69632 1 snd_hda_codec_realtek
snd_hda_intel 32768 5
snd_hda_codec 106496 4 snd_hda_codec_realtek,snd_hda_codec_si3054,snd_hda_codec_generic,snd_hda_intel
snd_hda_core 61440 5 snd_hda_codec_realtek,snd_hda_codec_si3054,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
snd_hwdep 16384 1 snd_hda_codec
snd_pcm 86016 4 snd_hda_codec_si3054,snd_hda_codec,snd_hda_intel,snd_hda_core
snd 65536 18 snd_hda_codec_realtek,snd_hda_codec_si3054,snd_hwdep,snd_timer,snd_pcm,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
Để hoàn thiện, đây là pulseaudio
cấu hình của tôi (Tôi chưa thử can thiệp với nó):
$ pulseaudio --dump-conf
### Read from configuration file: /etc/pulse/daemon.conf ###
daemonize = no
fail = yes
high-priority = yes
nice-level = -11
realtime-scheduling = yes
realtime-priority = 5
allow-module-loading = yes
allow-exit = yes
use-pid-file = yes
system-instance = no
local-server-type = user
cpu-limit = no
enable-shm = yes
flat-volumes = no
lock-memory = no
exit-idle-time = 20
scache-idle-time = 20
dl-search-path = /usr/lib/pulse-9.0/modules
default-script-file = /etc/pulse/default.pa
load-default-script-file = yes
log-target =
log-level = notice
resample-method = auto
enable-remixing = yes
enable-lfe-remixing = no
lfe-crossover-freq = 0
default-sample-format = s16le
default-sample-rate = 44100
alternate-sample-rate = 48000
default-sample-channels = 2
default-channel-map = front-left,front-right
default-fragments = 4
default-fragment-size-msec = 25
enable-deferred-volume = yes
deferred-volume-safety-margin-usec = 8000
deferred-volume-extra-delay-usec = 0
shm-size-bytes = 0
log-meta = no
log-time = no
log-backtrace = 0
rlimit-fsize = -1
rlimit-data = -1
rlimit-stack = -1
rlimit-core = -1
rlimit-rss = -1
rlimit-as = -1
rlimit-nproc = -1
rlimit-nofile = 256
rlimit-memlock = -1
rlimit-locks = -1
rlimit-sigpending = -1
rlimit-msgqueue = -1
rlimit-nice = 31
rlimit-rtprio = 9
rlimit-rttime = 200000
Theo nhận xét của Faheem Mitha, tôi tự tin rằng pulseaudio
tmpfs
có quyền:
# ls -la /run/user/861213/pulse/
total 4
drwx------ 2 grochmal users 80 Jul 4 21:44 .
drwx------ 5 grochmal users 120 Jul 4 21:46 ..
srw-rw-rw- 1 grochmal users 0 Jul 4 21:44 native
-rw------- 1 grochmal users 4 Jul 4 21:44 pid
Và pavucontrol
bị tắt tiếng. Tôi đã không nhận thức được pavucontrol
điều gì dẫn đến vấn đề ở nơi đầu tiên:
Câu hỏi
Tôi hết ý tưởng rồi. Tôi tin rằng Loopback
giao diện âm thanh tồn tại trong không gian kernel , do đó, vấn đề của tôi là tôi không thể mang dữ liệu micrô vào không gian người dùng . Tuy nhiên, tôi không chắc chắn 100% về nó.
Tôi có thể cung cấp các tùy chọn nào khác cho snd-hda-intel
(hoặc các mô-đun khác) có thể phù hợp với micrô hoạt động trên giao diện loopback nhưng không truyền đến lớp ứng dụng?
Tôi có thể làm gì sai với pulseaudio
? Nhưng sau đó, một lần nữa, pulseaudio
làm việc chính xác (cùng với alsa
) trong suốt thời gian đó, và tôi sử dụng audacity
khá thường xuyên.
alsamixer
.
alsamixer
. Bây giờ tôi đã thêm ảnh chụp màn hình và xác nhận pulseaudio
quyền của mình (tôi thậm chí đã khởi động lại máy để đảm bảo rằng việc can thiệp của tôi là root không ảnh hưởng đến thứ gì đó). Bây giờ tôi đang cố gắng chơi nhiều hơn với pulseaudio
.
Beep
. Không có niềm vui.
pavucontrol
. Điều đó giải quyết nó. Tôi thực sự tự hỏi làm thế nào điều này xảy ra, tôi có một máy khác sử dụng cùng một mô-đun Intel HDA, cùng hệ điều hành (có cùng các bản cập nhật), cùng alsa và cùng pulseaudio; và nó không bị tắt tiếng ở đó. Trước khi bình luận của bạn pavucontrol
không được cài đặt trên cả hai máy (archlinux có pavucontrol
một gói riêng).