우분투를 20.04로 업그레이드한 후 소리가 나지 않습니다.

우분투를 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일회성 명령 래퍼가 아니지만 alsactl해당 alsa 서비스를 다시 시작하는 역할을 담당합니다. 이 작업은 먼저 중지하고 다시 시작하는 두 단계로 수행됩니다.

요약하면 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개의 명령이 오류 없이 완료되면 재부팅하고 테스트할 수 있습니다.

답변2

이 메시지 "코드=종료, 상태=99"는 오디오 그룹의 구성원이 아니기 때문에 발생할 수 있습니다.

sudo usermod -a -G 오디오 사용자 이름

그런 다음 재부팅하고 확인하십시오.

로그 ctl -b |

관련 정보