재부팅 할 때마다 asoundrc가 수정됩니다.

마이크를 연결하기위한 usb dac가있는 raspberry pi 3가 있고 USB speacker도 있습니다.

파이, mopidy 및 기타 작은 프로젝트에 설치했습니다.

pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } } 

~/.asoundsrc를 수정했습니다. / div>

모든 것이 작동하고 재부팅하면 .asoundrc 파일 끝에 새 구성이 추가됩니다.

pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } } pcm.!default { type hw card 2 } ctl.!default { type hw card 2 } 

이번 수정으로 저의 프로젝트가 작동하지 않습니다. 삭제해야합니다.

pcm.!default { type hw card 2 } ctl.!default { type hw card 2 } 

이 구성이 매번 추가되는 이유를 아십니까? 재부팅 하시겠습니까?

아마도 도와 줄 수 있나요? 🙂

cat /proc/asound/modules 0 snd_usb_audio 1 snd_usb_audio 2 snd_bcm2835 

감사합니다

댓글

  • 테스트 용으로 사용해 보시기 바랍니다. 온보드 오디오를 비활성화하겠습니다.이를 수행하려면 터미널에 다음을 입력하십시오. sudo nano / boot / config.txt 파일의 맨 아래로 내려가 다음과 같은 두 줄을 찾습니다. # 오디오 활성화 (snd_bcm2835로드) dtparam = audio = on 다음과 같은 줄 앞에 (파운드 기호 #)를 배치합니다. dtparam = audio = on 다음과 같이 표시하려면 : # dtparam = audio = on CTRL + x를 누른 다음 Enter 키를 누릅니다. 파일을 저장합니다. 또한 재부팅해야합니다. 우리가 알고 싶은 것은 USB 오디오 및 온보드와 충돌이 있는지 여부입니다. 행운을 빕니다!
  • 안녕하세요. 답변과 도움을 주셔서 감사합니다. 수정은 ‘ 내 문제를 해결하지 못하지만 이제 재부팅하면 pcm.!defaultctl.!default ‘ 카드 2는 없지만 카드 0은 없습니다.

답변

내가 요청한 작업을 실행 취소합니다. 그 후 재부팅하십시오. RPi가 백업되면 파일을 생성합니다.

sudo nano /etc/asound.conf 

해당 파일에 다음을 넣습니다.

pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:1,0" } capture.pcm { type plug slave.pcm "hw:0,0" } } 

완료되면 파일을 저장 한 다음 재부팅하세요.

댓글

  • Jason에게 감사하지만 아니요. 아무도 변경하지 않음 이미 pcm.!defaultctl.!default /home/pi/.asoundrc를 삭제하려고하지만 pcm et ctl /etc/asound.conf

Answer

이 문제를 해결 한 방법은 sudo raspi-config를 실행 한 다음 고급 옵션으로 이동 한 다음 오디오로 이동하는 것입니다.이 옵션은 자동으로 설정되었습니다.이 옵션을 “Force 3.5mm 헤드폰 잭”으로 변경했을 때 재부팅시 .asoundrc 파일 덮어 쓰기를 중지했습니다.

댓글

  • 이 작업을 시도했지만 여전히 .asoundrc 파일을 부팅 할 때마다.

답변

이것은 오래된 문제입니다. 가장 최근에는 Raspian Stretch , 4.14.30-v7+에 대해 최신 커널 및 펌웨어로 업그레이드 한 후 정기적으로 다시 노출됩니다.

p>

부팅 및 종료시 Raspberry Pi가 systemd 서비스를 사용하는 방식과 관련이있는 것 같습니다. 그리고 ALSA 데몬 및 서비스가 초기 (또는 시스템 업그레이드 후) 설정 방법. 내 추측으로는 무언가 에 대한 설치 후 스크립트가 이미 /home/pi/.asoundrc 파일이 있음을 인식하지 못하고 일부 기본값으로 복원하려고 시도한다는 것입니다. 이 기본값의 출처는 명확하지 않습니다. 많은 ALSA 또는 시스템 서비스 구성 파일 또는 관련 매뉴얼 페이지의 주석에 쓰여진 내용은 확실히 아닙니다.하지만 lxpanels 볼륨 애플릿의 버그에서 비롯된 것 같습니다.

제 경우에는 다음으로 문제가 해결 된 것 같습니다.

  • 먼저 lxpanel 에서 볼륨 애플릿을 제거한 다음 :
 # Make sure your .asoundrc is correct, then do: alsactl kill save_and_quit sudo shutdown now  

PS. 재부팅 아닌 종료 를 사용하는 것도 중요해 보입니다. / em>!


디버깅 시도

위의 방법이 작동하지 않으면 이것을 읽으십시오.

systemctl 이 서비스를 처리하는 방식의 버그. 파이의 FS는 다른 데비안 기반 시스템과 (누락 된 부분으로) 다르기 때문에 서비스 스크립트의 위치 및 처리 위치가 자체 man 페이지와 완전히 일치하지는 않습니다.

관련 ALSA 관련 서비스를 보려면 , 수행 :

sudo systemctl status alsa-restore alsa-state 

정상적인 상황에서는 다음과 같은 방법으로 의심되는 정적 서비스를 종료 할 수 있습니다.

sudo systemctl mask --system alsa-state.service --now sudo systemctl mask --system alsa-restore.service --now 

그러나 [system,user,runtime, global]의 런타임 위치는 다음과 같습니다.

/etc/systemd/system-preset/*.preset /run/systemd/system-preset/*.preset /lib/systemd/system-preset/*.preset /etc/systemd/user-preset/*.preset /run/systemd/user-preset/*.preset /usr/lib/systemd/user-preset/*.preset 

man systemd.preset에 설명 된대로 존중되지 않습니다.
모든 서비스와 현재 상태를 보려면 다음을 사용하십시오.

systemctl list-unit-files -t service -all 

다음을 사용하여 역 종속성을 사용할 수도 있습니다.

systemctl list-dependencies --reverse alsa-restore.service alsa-restore.service ● └─basic.target ● └─multi-user.target ● └─graphical.target 

어쨌든 mask로 서비스를 비활성화 할 때 파일을 /dev/null, 이것은 올바른 위치에서 발생하지 않습니다 (위에 따라). 대신 파일을 수동으로 제거 (이전에 백업) 한 다음 링크를 만들어야합니다.

 cp /etc/systemd/system/alsa-restore.service ~/alsa-restore_service.bak cd /etc/systemd/system/ sudo rm alsa-restore.service sudo ln -s /dev/null alsa-restore.service # It should look something like: ls -al /lib/systemd/system |grep alsa lrwxrwxrwx 1 root root 9 Apr 25 13:23 alsa-restore.service -> /dev/null lrwxrwxrwx 1 root root 9 Apr 25 13:26 alsa-state.service -> /dev/null lrwxrwxrwx 1 root root 9 Jan 23 2017 alsa-utils.service -> /dev/null  

이제 alsa-state.service에 대해서도 위의 과정을 반복해야합니다. 디렉토리의 동일한 파일 : /lib/systemd/system/ (아직없는 경우)

면책 사항

위의 방법은 올바른 방법이 아닐 가능성이 큽니다. 따라서 버그가있는 동작이 해결 될 때까지 매우 실험적인 해결 방법으로 간주하십시오. ALSA 기능이 완전히 중단 될 수 있습니다.

답변

Raspberry pi 환경을 업데이트하여 비슷한 상황을 해결했습니다. 단계는 다음과 같습니다.

  • Raspberry pi에서 데이터 백업
  • 현재 버전 확인 $ uname -a
  • 패키지 정보 업데이트 $ sudo apt-get 업데이트
  • 설치된 패키지 업데이트 $ sudo apt-get upgrade
  • 최신 배포판으로 업데이트 $ sudo apt-get dist-upgrade
  • 라즈베리 파이 펌웨어 업데이트 $ sudo rpi-update
  • reboot $ sudo reboot
  • 최신 버전 확인 $ uname -a

그 후, 내 Raspberry pi에서 이러한 문제가 해결되었습니다. “재부팅 후 수정 된 .asoundrc가 다시 작성되었습니다”로. NOOBS 버전은 2018-4-24에 2.8.1로 업데이트되었습니다. 제 의견으로는 이러한 현상에 대한 정보를 수집하고 시도하고 실패했기 때문에 일종의 ALSA 버그라고 생각합니다.

답변

Ok 비슷한 문제가 발생하여 블루투스 스피커로 Pi에 연결했습니다. 부팅하기 전에 스피커가 켜져 있지 않으면 .asoundrc 파일이 재설정됩니다. 너무 짜증나. 위의 모든 것을 시도한 다음 올바른 설정을 지정하고 읽기 전용으로 설정하면 어떻게 될지 생각했습니다. 이상하게도 이것은 작동했습니다. 내가 한 것은 sudo chmod 0444 ./.asoundrc 그리고 그게 다입니다. 이제 모든 것이 잘되었습니다.

댓글

  • 이것은 저에게 효과적이었습니다. Raspbian Stretch에서 파일을 변경하는 것이 시스템 (예 : 루트)이라고 생각했기 때문에 권한 설정이 작동하는 것이 이상합니다.
  • 이제 pyaudio를 호출 할 때 아래 오류가 발생합니다. ” 표현식 ‘ alsa_snd_pcm_hw_params_set_period_size_near (pcm, hwParams, & alsaPeriodFrames, & dir) ‘가 ‘ src / hostapi / alsa / pa_linux_alsa.c ‘, 줄 : 924 ”

Answer

메뉴> 환경 설정> 오디오 장치 설정> 사운드 카드에서 기본 오디오 장치를 변경하는 경우 사운드 카드를 선택하고> 기본값으로 ~ / .asoundrc 파일이 변경됩니다.

댓글 h3>

  • 내 문제인 것 같습니다. Stretch로 재부팅 할 때 .asoundrc를 덮어 씁니다. 시스템이 더 이상 덮어 쓰지 않도록이 확인란의 선택을 ‘ 실행 취소 ‘ 할 수있는 아이디어가 있습니까?

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다