
Ubuntu日本語フォーラム

ログインしていません。
題記の通り、18.04から「ソフトウェアの更新」で18.10にデートしたら音が出なくなりました。
設定->サウンド->出力 を見ると「ダミー出力」だけになっているので、まずはここをなんとかしたいです。知恵を貸して下さい。
ぐぐって調べてみた結果は以下のとおりです。
・ハードウェア ・・・ 多分認識できている
・ドライバ ・・・ 多分問題ない
・ALSA ・・・ 微妙
・PulseAudio ・・・ 全然わからない
以下、確認した内容です。
使いたいデバイスは青、気になるところは赤にしています。
■ ハードウェア
・PC本体: HP E8500
・オーディオ系のデバイス:
オンボード ・・・ チップセットがQ45なので多分82xxx系 ← ここから音を出したい
増設 ・・・NVIDIA
USB・・・Webカメラ
USB・・・キャプチャーデバイス(AverMedia) J:COMから映像を取り込むために使用。
■ OS (Ubuntu 18.10)
$ grep VERSION /etc/os-release
VERSION="18.10 (Cosmic Cuttlefish)"
VERSION_ID="18.10"
VERSION_CODENAME=cosmic
$ cat /proc/version
Linux version 4.18.0-13-generic (buildd@lgw01-amd64-048) (gcc version 8.2.0 (Ubuntu 8.2.0-7ubuntu1)) #14-Ubuntu SMP Wed Dec 5 09:04:24 UTC 2018
■ 物理デバイスの認識
$ lspci | egrep -i multimedia\|audio
00:1b.0 Audio device: Intel Corporation 82801JD/DO (ICH10 Family) HD Audio Controller (rev 02)
01:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
■ ドライバ
$ lsmod | grep snd
snd_hrtimer 16384 1
snd_hda_codec_hdmi 49152 1
snd_hda_codec_realtek 106496 1
snd_hda_codec_generic 73728 1 snd_hda_codec_realtek
snd_hda_intel 40960 5
snd_hda_codec 126976 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core 81920 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
snd_usb_audio 225280 4
snd_usbmidi_lib 32768 1 snd_usb_audio
snd_hwdep 20480 2 snd_usb_audio,snd_hda_codec
snd_seq_midi 16384 0
snd_seq_midi_event 16384 1 snd_seq_midi
snd_rawmidi 32768 2 snd_seq_midi,snd_usbmidi_lib
snd_pcm 98304 6 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
snd_seq 65536 3 snd_seq_midi,snd_seq_midi_event
snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi
snd_timer 32768 4 snd_seq,snd_hrtimer,snd_pcm
snd 81920 30 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
soundcore 16384 1 snd
■ カードとドライバ
$ cat /proc/asound/modules
0 snd_hda_intel
1 snd_usb_audio
2 snd_hda_intel
3 snd_usb_audio
$ cat /proc/asound/cards
0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xf3120000 irq 31
1 [U0x46d0x825 ]: USB-Audio - USB Device 0x46d:0x825
USB Device 0x46d:0x825 at usb-0000:00:1a.7-2, high speed
2 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0xf3000000 irq 17
3 [Plus ]: USB-Audio - Live Gamer Portable 2 Plus
AVerMedia Technologies, Inc. Live Gamer Portable 2 Plus at usb-0000:00:1a.7-5,
■ /dev/sndの状態 (controler/pcmが作られているのでたぶん問題なし)
$ ls /dev/snd
by-id controlC1 hwC0D0 pcmC0D0p pcmC2D3p seq
by-path controlC2 hwC2D0 pcmC0D2c pcmC2D7p timer
controlC0 controlC3 pcmC0D0c pcmC1D0c pcmC3D0c
■ ALSAが認識しているカード、デバイス、サブデバイス番号
$ aplay -l
カード 0: Intel [HDA Intel], デバイス 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
サブデバイス: 0/1
サブデバイス #0: subdevice #0
カード 2: NVidia [HDA NVidia], デバイス 3: HDMI 0 [HDMI 0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 2: NVidia [HDA NVidia], デバイス 7: HDMI 1 [HDMI 1]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
■ ALSAのカードに設定されているエイリアス名?(よくわかっていない)
$ aplay -L | grep CARD
sysdefault:CARD=Intel
front:CARD=Intel,DEV=0
surround21:CARD=Intel,DEV=0
surround40:CARD=Intel,DEV=0
surround41:CARD=Intel,DEV=0
surround50:CARD=Intel,DEV=0
surround51:CARD=Intel,DEV=0
surround71:CARD=Intel,DEV=0
dmix:CARD=Intel,DEV=0
dsnoop:CARD=Intel,DEV=0
hw:CARD=Intel,DEV=0
plughw:CARD=Intel,DEV=0
hdmi:CARD=NVidia,DEV=0
hdmi:CARD=NVidia,DEV=1
dmix:CARD=NVidia,DEV=3
dmix:CARD=NVidia,DEV=7
dsnoop:CARD=NVidia,DEV=3
dsnoop:CARD=NVidia,DEV=7
hw:CARD=NVidia,DEV=3
hw:CARD=NVidia,DEV=7
plughw:CARD=NVidia,DEV=3
plughw:CARD=NVidia,DEV=7
■ ALSAの定義 (よくわかっていない)
$ cat /usr/share/alsa/alsa.conf
(大量にあるので一旦割愛。ここが怪しいというご指摘があれば掘り下げます。)
$ cat ~/.asoundrc (存在しない)
$ cat /etc/asound.conf (存在しない)
■ ミュートになっていないか (問題なさそう)
$ alsamixer
■ ALSAから直接音を出してみた (sysdefaultをsudoすれば音が出る)
$ aplay -D sysdefault test.wav
ALSA lib pcm_dmix.c:1063:(snd_pcm_dmix_open) unable to create IPC semaphore
aplay: main:828: オーディオオープンエラー 許可がありません
$ sudo aplay -D sysdefault test.wav
再生中 WAVE 'test.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
⇢スピーカーとヘッドホンの両方から音が出る
$ sudo aplay -D surround21 test.wav
aplay: main:828: オーディオオープンエラー デバイスもしくはリソースがビジー状態です
■ PluseAudioで認識しているデバイス?(よくわかっていない)
$ pactl list cards
カード #0
名前: alsa_card.pci-0000_01_00.1
ドライバー: module-alsa-card.c
モジュール: 7
プロパティ:
alsa.card = "1"
alsa.card_name = "HDA NVidia"
alsa.long_card_name = "HDA NVidia at 0xf3000000 irq 17"
alsa.driver_name = "snd_hda_intel"
device.bus_path = "pci-0000:01:00.1"
sysfs.path = "/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1"
device.bus = "pci"
device.vendor.id = "10de"
device.vendor.name = "NVIDIA Corporation"
device.product.id = "0e0f"
device.product.name = "GK208 HDMI/DP Audio Controller"
device.string = "1"
device.description = "GK208 HDMI/DP Audio Controller"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-pci"
プロフィール:
output:hdmi-stereo: Digital Stereo (HDMI) 出力 (sinks: 1, sources: 0, priority: 5900, available: no)
output:hdmi-surround: Digital Surround 5.1 (HDMI) 出力 (sinks: 1, sources: 0, priority: 800, available: no)
output:hdmi-surround71: Digital Surround 7.1 (HDMI) 出力 (sinks: 1, sources: 0, priority: 800, available: no)
output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) 出力 (sinks: 1, sources: 0, priority: 5700, available: no)
output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) 出力 (sinks: 1, sources: 0, priority: 600, available: no)
output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) 出力 (sinks: 1, sources: 0, priority: 600, available: no)
off: オフ (sinks: 0, sources: 0, priority: 0, available: yes)
有効なプロフィール: off
ポート:
hdmi-output-0: HDMI / DisplayPort (priority: 5900, latency offset: 0 usec, not available)
Properties:
device.icon_name = "video-display"
プロファイルのパーツ: output:hdmi-stereo, output:hdmi-surround, output:hdmi-surround71
hdmi-output-1: HDMI / DisplayPort 2 (priority: 5800, latency offset: 0 usec, not available)
Properties:
device.icon_name = "video-display"
プロファイルのパーツ: output:hdmi-stereo-extra1, output:hdmi-surround-extra1, output:hdmi-surround71-extra1
:
以下、カード1(USB),カード2(USB AverMedia)に続く。
大量にあるので割愛。ご指摘あれば深堀りします
intelのカードが認識されていない様に見えるのが気になる。
$ pacmd list-sinks | grep name:
name: <auto_null>
■ pluseaudioは起動しているの? (2つ起動している。rtkit-daemon?)
$ ps aux | grep pulse | grep -v grep
gdm 1892 0.0 0.1 1198976 17288 ? Ssl 10:06 0:00 /usr/bin/pulseaudio --daemonize=no
kigyousensi 3553 0.4 0.1 2584668 19980 ? S<sl 10:07 0:37 /usr/bin/pulseaudio --daemonize=no
$ pstree -H 1892
systemd -> systemd (sd-pam) -> pulseaudioであることがわかる
$ pstree -H 3553
systemd -> systemd (sd-pam) -> pulseaudioであることがわかる(1892とは別のツリー)
$ grep pulse /var/log/syslog
Dec 24 10:07:27 mypc pulseaudio[3553]: E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.TimedOut: Failed to activate service 'org.bluez': timed out (service_start_timeout=25000ms)
■ 過去のナリッジにあったもの
・alsaの設定をリセットしてみては?
$ sudo alsactl init
-> 変化なし
・PulseAudioの設定をリセットしてみては?
$ killall pulseaudio
$ rm -r ~/.config/pulse/*
-> 変化なし
・PulseAudioがロードしているモジュールを見直してみては?
$ sudo cp -p /etc/pulse/default.pa /etc/pulse/default.pa_20181224
$ sudo vi /etc/pulse/default.pa
-> どこをどう見直せばいいのかわからなかったので保留
・pavucontrolを使ってみては?
$ sudo apt install pavucontrol
$ pavucontrol
-> 出力装置は「ダミー出力」のみ。 Hardware Output devicesには「出力装置がありません」
・JACKを使ってみては?
-> 別の問題が増えそうなので保留。
オフライン
追加 alsa-base.conf
$ cat /etc/modprobe.d/alsa-base.conf
# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7
# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; }
#
# Workaround at bug #499695 (reverted in Ubuntu see LP #319505)
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; }
#
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; }
# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; }
# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; }
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-caiaq index=-2
options snd-usb-ua101 index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
# Ubuntu #62691, enable MPU for snd-cmipci
options snd-cmipci mpu_port=0x330 fm_port=0x388
# Keep snd-pcsp from being loaded as first soundcard
options snd-pcsp index=-2
# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=-2
オフライン
自己解決しました
$ sudo aplay -D sysdefault test.wav
でスピーカーとヘッドホンの両方から音が出ていてデバイスを正しく区別できていない可能性があったので
/etc/modprobe.d/alsa-base.conf
にintelのモジュールを優先的に読み込むように明示的してALSAを再起動したら
設定->サウンド->出力に「内部オーディオ」が表示されて音も出せるようになりました。(ダミー出力は残っていますが)
手順と確認事項は以下のとおりです
$ sudo vi /etc/modprobe.d/alsa-base.conf
options snd-hda-intel index=0 <-追加
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
:
$ sudo alsa force-reload
Terminating processes: 1182 3274.
:
この段階で「設定」に内部オーディオが追加されました
$ cat /proc/asound/modules
0 snd_hda_intel <- intelの優先順位が上がった
1 snd_hda_intel <- intelの優先順位が上がった
2 snd_usb_audio
3 snd_usb_audio
$ cat /proc/asound/cards
0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xf3120000 irq 31
1 [NVidia ]: HDA-Intel - HDA NVidia <- intelの優先順位が上がった
HDA NVidia at 0xf3000000 irq 17
2 [U0x46d0x825 ]: USB-Audio - USB Device 0x46d:0x825
USB Device 0x46d:0x825 at usb-0000:00:1a.7-2, high speed
3 [Plus ]: USB-Audio - Live Gamer Portable 2 Plus
AVerMedia Technologies, Inc. Live Gamer Portable 2 Plus at usb-0000:00:1a.7-5,
$ pactl list cards
->変化無し
$ pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.analog-stereo> <-表示された
オフライン
OSをリブートしたら再発しました。
$ sudo vi /etc/modprobe.d/alsa-base.conf
でalsa-base.confをもとに戻して
$ sudo alsa force-reload
で再び音が出るようになりました。
OS起動時にalsaがちゃんと起動できていないのが原因のようです。
オフライン
追加
OSを再起動したらまた音が出なくなる問題について試行錯誤していましたが心が折れました。
・/lib/systemd/system/alsa*.serviceをいじる
→効果なし
・/etc/systemd/system/alsa-reload.serviceなるサービスを作って起動時に強制リロードさせる
→pulseaudioはユーザーログイン時に起動するので無意味
というわけで、気が進みませんがログイン時にsudo alsa force-reloadを実行することで解決しました。
1) kigyousensiにalsaのsudo権限を付与
$ sudo visudo
kigyousensi ALL=NOPASSWD: /sbin/alsa
2) ログイン時にalsaをリロードするスクリプトを実行させる設定
アプリボタン ->自動起動するアプリケーションの設定で/opt/kigyousensi/alsa-reload.shを登録。
3) /opt/kigyousensi/alsa-reload.shを作成する
$ USR="kigyousensi"
$ sudo mkdir /opt/${USR}
$ sudo touch /opt/${USR}/alsa-reload.sh
$ sudo chown -R /opt/${USR}
$ chmod 0755 /opt/${USR}/alsa-reload.sh
$ vi /opt/${USR}/alsa-reload.sh
#!/bin/sh
## define
## /var/log/syslogに開始メッセージを記録。PulseAudioが起動するまで待つ。
CNT=0 ; FLG="reload" ; WAIT=3
logger -i 'Start alsa-reload.sh'
while [ $(ps -ef | grep pulse | grep -v grep | wc -l) -eq 0 ];do sleep 2;done
## main
## pacmdの結果にalsa_outputがあるか確認。無ければ2回リトライ。それでも無ければalsa force-reloadを実行
while [ ${CNT} -lt 3 ]
do
[ $( /usr/bin/pacmd list-sinks | grep name | grep alsa_output | wc -l ) -eq 0 ] && sleep ${WAIT} || { FLG="already" ; CNT=3 ;}
CNT=$(( ${CNT} + 1 ))
done
[ "${FLG}" = "reload" ] && sudo /sbin/alsa force-reload
## end
## syslogに終了メッセージを記録。
logger -i "End alsa-reload.sh state:${FLG}"何かの参考になれば。
オフライン