Ubuntuを20.04にアップグレードした後、音は出ません。

Ubuntuを20.04にアップグレードした後、音は出ません。

sudo alsa force-reload仮想出力のみを表示するには、システムがサウンドカードを検出する必要があります。ただし、再起動するたびに再実行する必要があります。 alsa-baseを再インストールしてみました。

編集する: sudo systemctl status alsa-restore.service 返品:

● alsa-restore.service - Save/Restore Sound Card State
 Loaded: loaded (/lib/systemd/system/alsa-restore.service; static; vendor preset: enabled)
 Active: active (exited) since Wed 2020-10-07 17:23:42 CEST; 1min 19s ago
   Docs: man:alsactl(1)
Process: 1285 ExecStartPre=/bin/mkdir -p /run/alsa (code=exited, status=0/SUCCESS)
Process: 1319 ExecStart=/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore (code=exited, status=99)
Main PID: 1319 (code=exited, status=99)

Okt 07 17:23:42 PhilippN-Vostro-5490 alsactl[1319]: Found hardware: "sof-hda-dsp" "Realtek ALC3204" "HDA:8086280b,80860101,00100000 HDA:10ec0236,10280959,00100002 cfg-dmics:2" "" ""
Okt 07 17:23:42 PhilippN-Vostro-5490 alsactl[1319]: Hardware is initialized using a generic method
Okt 07 17:23:42 PhilippN-Vostro-5490 systemd[1]: Starting Save/Restore Sound Card State...
Okt 07 17:23:42 PhilippN-Vostro-5490 systemd[1]: Finished Save/Restore Sound Card State.

編集2: journalctl -b | grep alsa返品:

Nov 05 16:44:28 Vostro-5490 systemd-udevd[586]: controlC0: Process '/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore 0' failed with exit code 99.
Nov 05 16:44:29 Vostro-5490 alsactl[1353]: alsa-lib parser.c:2157:(load_toplevel_config) Unable to find the top-level configuration file '/usr/share/alsa/ucm2/ucm.conf'.
Nov 05 16:44:29 Vostro-5490 alsactl[1353]: alsa-lib main.c:997:(snd_use_case_mgr_open) error: failed to import hw:0 use case configuration -2
Nov 05 16:44:29 Vostro-5490 alsactl[1353]: Found hardware: "sof-hda-dsp" "Realtek ALC3204" "HDA:8086280b,80860101,00100000 HDA:10ec0236,10280959,00100002 cfg-dmics:2" "" ""
Nov 05 16:44:29 Vostro-5490 alsactl[1353]: Hardware is initialized using a generic method

ベストアンサー1

オプション1

以下のカスタムサービスを使用する前にalsaが設定を再ロードする方法は、起動時に実行されるsystemd(設定を再ロードするため)と終了時に実行されるsystemdを介して設定が存在するか/var/lib/alsa/asound.state、その中に何があるか(サウンドデバイスリスト)確認することです。alsa-restore.service最後の構成を保存するため)

まず、その特定のサービスが存在することを確認する必要があります。

sudo systemctl status alsa-restore.service

状況を報告する必要があります。

alsa-restore.service - Save/Restore Sound Card State
     Loaded: loaded (/lib/systemd/system/alsa-restore.service; static; vendor preset: enabled)
     Active: active (exited) since Sun 2020-09-27 11:43:13 EDT; 5h 43min ago
       Docs: man:alsactl(1)
   Main PID: 755 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 11833)
     Memory: 0B
     CGroup: /system.slice/alsa-restore.service

Sep 27 11:43:13 FOOT systemd[1]: Starting Save/Restore Sound Card State...
Sep 27 11:43:13 FOOT systemd[1]: Finished Save/Restore Sound Card State.

alsa-restore.serviceは/lib/systemd/system/alsa-restore.service次のようになります。


#
# Note that two different ALSA card state management schemes exist and they
# can be switched using a file exist check - /etc/alsa/state-daemon.conf .
#

[Unit]
Description=Save/Restore Sound Card State
Documentation=man:alsactl(1)
ConditionPathExists=!/etc/alsa/state-daemon.conf
ConditionPathExistsGlob=/dev/snd/control*
After=alsa-state.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore
ExecStop=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime store

このサービスが存在するが無効になっている場合は、有効にして開始できます。

sudo systemctl enable alsa-restore.service
sudo systemctl start alsa-restore.service

sudo systemctl status alsa-restore.service障害の原因となる他のエラーが状態に報告されている場合は、そのエラーを最初に解決する必要があります。



オプション2

再確認後は、alsa force-reloadワンタイムコマンドラッパーではありませんが、対応するalsactlalsaサービスを再起動する役割を果たします。これは、まず停止して再開する2つのステップで実行されます。

要約するとsudo alsa force-reload

  1. コマンドが見つかるかどうかを確認し、alsactlそうでない場合はすぐに終了します。
  2. ここにあるスクリプトを実行してください/usr/share/alsa/utils.sh。このスクリプトは、とりわけいくつかの索引付け機能を提供します。
  3. /var/lib/alsa/asound.state存在することを確認
  4. 実行して、検出さalsactl -E HOME="$ALSACTLHOME" -E XDG_RUNTIME_DIR="${ALSACTLRUNTIME}" restore $CARD >/dev/null 2>&1れた各カードのボリューム状態を復元します。asound.state

ステップ4は、alsa-restore.service正しい操作で起動してシャットダウンしたときに実行されるアクションであるため、すべての問題は、そのステップが無効になっているか、単に存在しないことを示しています。

私たちはこれがうまくいくので、alsactlあなたのシステムに存在することをすでに知っています。alsa force-reload次回再起動してもオーディオが自動的に再ロードされない場合は、次のようにalsa force-reload端末で実行してみてください。

sudo /usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore

このコマンドがオーディオを復元する場合、これは開始時にサービスとして実行したいものです(および終了時にも実行される対応するバージョン)。

したがって、alsa-restore.serviceシステムに存在しない場合は、myaudio.service次のように直接作成する必要があり、それだけを作成できます。

sudo nano /etc/systemd/system/myaudio.service

次の内容をコピーしてください。

[Unit]
Description=Start Audio
ConditionPathExists=!/etc/alsa/state-daemon.conf


[Service]
Type=oneshot
ExecStart=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore
ExecStop=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime store
RemainAfterExit=true


[Install]
WantedBy=sound.target

保存したら、次の操作を行います。

sudo systemct enable myaudio.service 
sudo systemctl start myaudio.service 
sudo systemctl status myaudio.service

これにより、新しいサービスの状態がアクティブ、開始、および報告されます。 3つのコマンドがエラーなしで完了したら、再起動してテストできます。

おすすめ記事