시작 스크립트에서 USB 오디오를 사용할 수 없습니다.

시작 스크립트에서 USB 오디오를 사용할 수 없습니다.

저는 Python 스크립트가 백그라운드에서 실행되고 mp3키보드 입력을 재생하는 매우 간단한 Raspberry Pi 프로젝트를 진행하고 있습니다. SSH를 통해 장치에 연결된 동안 스크립트를 수동으로 시작하면 모든 것이 잘 작동합니다. 하지만 스크립트가 항상 실행되기를 원합니다. 처음에는 에 추가한 rc.local다음 crontab 을 통해 실행되도록 전환했습니다 @reboot. 두 경우 모두 스크립트가 확실히 실행 중입니다. 키 누르기가 성공적으로 인식될 때마다 로그를 얻으므로 스크립트가 실행되고 소리가 납니다. 그러나 아무런 소리도 나오지 않았습니다. 저는 Python playsound모듈을 사용해 보고 mpg321하위 프로세스를 실행해 보았습니다. 수동으로 실행하면 두 출력 모두 소리가 나지만 시작 시에는 작동하지 않습니다.

이는 부팅 시 USB 스피커를 사용하여 자동으로 스크립트를 실행할 때만 발생합니다. 로그인한 상태에서 수동으로 실행하면 스피커가 작동합니다. 시작 시 스피커를 3.5mm 포트에 연결한 상태에서 실행해도 작동합니다. USB 스피커로 부팅할 때는 작동하지 않습니다.

스크립트가 실행되는 동안 인쇄하고 출력합니다 lsusb. aplay -lUSB 스피커(https://www.amazon.com/dp/B075M7FHM1)는 스크립트가 실행될 때 존재해야 합니다.

lsusb결과(Jieli는 확실히 연설자입니다):

2023-09-17 19:37:45.976133: Bus 001 Device 005: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 001 Device 004: ID 4c4a:4155 Jieli Technology UACDemoV1.0
Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

aplay -l출력(카드 1:UACDemoV10이 스피커인 경우):

card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: UACDemoV10 [UACDemoV1.0], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

모든 것에 절대 경로를 사용하고 스크립트가 확실히 실행되고 오디오 파일을 찾을 수 있습니다. 실제로 소리가 나오지 않는다는 것입니다. 스크립트가 실행되면 USB 스피커가 인식됩니다. 부팅 시 스크립트를 자동으로 시작하는 더 좋은 방법이 있습니까? rc.local환경에 cronUSB 장치에 대한 권한이나 액세스가 부족합니까? 내 다른 질문 중 하나에 대한 의견은 "rc.local은 루트에 의해 실행되므로 사용자 I/O에 액세스할 수 없습니다"라고 말했지만 사용자의 crontab에 이 문제가 있을 것이라고는 생각하지 않습니다.

관련 정보