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
다음과 같다
- 명령을 찾을 수 있는지 확인하고
alsactl
그렇지 않으면 즉시 종료하십시오. - 여기에 있는 스크립트를 실행합니다
/usr/share/alsa/utils.sh
. 이 스크립트는 무엇보다도 일부 인덱싱 기능을 제공합니다. /var/lib/alsa/asound.state
존재 하는지 확인- 실행하여
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 |