USB 오디오는 백색 잡음 만 출력


9

5 살짜리 노트북에서 OpenBSD / i386 5.1을 실행하고 있습니다. 스피커와 헤드폰 포트는 작동하지만 헤드폰 포트가 약간 느슨해 외부 USB 사운드 카드 (Fiio E17 USB DAC)를 설치하려고합니다. Windows에서 사용하는 데 문제가 없습니다.

장치가 감지되어 /dev와 함께 노드를 만든 sh /dev/MAKEDEV audio1다음 나머지 장치를 연결하여 새 사운드 카드를 가리 켰습니다. 지금까지는 잘 뛸 수 cat /dev/urandom > /dev/audio있고 하얀 소음이 들립니다. 그러나 다른 오디오를 실행할 수는 없습니다.

tail /var/log/messages에서 장치를 연결 한 후 :

Aug 30 10:03:55 s96j /bsd: uhidev0 at uhub1
Aug 30 10:03:55 s96j /bsd:  port 1 configuration 1 interface 0 "FiiO FiiO USB DAC-E17" rev 1.10/0.01 addr 2
Aug 30 10:03:55 s96j /bsd: uhidev0: iclass 3/0
Aug 30 10:03:55 s96j /bsd: uhid0 at uhidev0: input=18, output=27, feature=0
Aug 30 10:03:55 s96j /bsd: uaudio0 at uhub1
Aug 30 10:03:55 s96j /bsd:  port 1 configuration 1 interface 1 "FiiO FiiO USB DAC-E17" rev 1.10/0.01 addr 2
Aug 30 10:03:56 s96j /bsd: uaudio0: ignored setting with type 8193 format
Aug 30 10:03:56 s96j /bsd: uaudio0: audio rev 1.00, 2 mixer controls
Aug 30 10:03:56 s96j /bsd: audio1 at uaudio0

관련 기기 목록 /dev:

lrwxr-xr-x  1 root  wheel         6 Aug 30 09:44 audio -> audio1
crw-rw-rw-  1 root  wheel   42, 128 Aug 30 10:07 audio0
crw-rw-rw-  1 root  wheel   42, 129 Aug 30 10:15 audio1
crw-rw-rw-  1 root  wheel   42, 130 Aug 30 06:40 audio2
lrwxr-xr-x  1 root  wheel         9 Aug 30 09:44 audioctl -> audioctl1
crw-rw-rw-  1 root  wheel   42, 192 Aug 30 06:40 audioctl0
crw-rw-rw-  1 root  wheel   42, 193 Aug 30 09:44 audioctl1
crw-rw-rw-  1 root  wheel   42, 194 Aug 30 06:40 audioctl2
lrwxr-xr-x  1 root  wheel         6 Aug 30 09:45 mixer -> mixer1
crw-rw-rw-  1 root  wheel   42,  16 Aug 30 06:40 mixer0
crw-rw-rw-  1 root  wheel   42,  17 Aug 30 09:44 mixer1
crw-rw-rw-  1 root  wheel   42,  18 Aug 30 06:40 mixer2
lrwxr-xr-x  1 root  wheel         6 Aug 30 09:45 sound -> sound1
crw-rw-rw-  1 root  wheel   42,   0 Aug 30 06:40 sound0
crw-rw-rw-  1 root  wheel   42,   1 Aug 30 09:44 sound1
crw-rw-rw-  1 root  wheel   42,   2 Aug 30 06:40 sound2

데이터가 장치를 통과하는지 확인하기위한 FAQ 의 간단한 테스트 :

# cat > /dev/audio < /dev/zero &
[1] 21098
# audioctl play.{seek,samples,errors}
play.seek=61712
play.samples=1146080
play.errors=0
# audioctl play.{seek,samples,errors}
play.seek=52896
play.samples=1542800
play.errors=0
# audioctl play.{seek,samples,errors}
play.seek=61712
play.samples=1957152
play.errors=0

audioctl -a:

name=USB audio
version=
config=uaudio
encodings=slinear_le:16:2:1,slinear_le:24:3:1
properties=independent
full_duplex=0
fullduplex=0
blocksize=8816
hiwat=7
lowat=1
output_muted=0
monitor_gain=0
mode=
play.rate=44100
play.sample_rate=44100
play.channels=2
play.precision=16
play.bps=2
play.msb=1
play.encoding=slinear_le
play.gain=127
play.balance=32
play.port=0x0
play.avail_ports=0x0
play.seek=8816
play.samples=131988
play.eof=0
play.pause=0
play.error=1
play.waiting=0
play.open=0
play.active=0
play.buffer_size=65536
play.block_size=8816
play.errors=2267
record.rate=44100
record.sample_rate=44100
record.channels=2
record.precision=16
record.bps=2
record.msb=1
record.encoding=slinear_le
record.gain=127
record.balance=32
record.port=0x0
record.avail_ports=0x0
record.seek=0
record.samples=0
record.eof=0
record.pause=0
record.error=0
record.waiting=0
record.open=0
record.active=0
record.buffer_size=65536
record.block_size=8816
record.errors=0

그리고 마지막으로 mixerctl -a:

outputs.aux.mute=off
outputs.aux=255,255

다시 한 번 cat /dev/urandom > /dev/audio화이트 노이즈를 얻을 수는 있지만 다른 방법으로 시도해도 다른 사운드 나 음악을 출력 할 수 없습니다. 나는 또한 시도 cat sample.au > /dev/audio했지만 그것은 침묵했다.

어떤 제안이나 도움도 대단히 감사하겠습니다! 최악의 경우, 누군가 내가 여기서 설명한 단계를 사용하여 자체 사운드 장치의 문제를 해결할 수 있기를 바랍니다.


출력은 mixerctl -v |grep output무엇입니까?

답변:


2

OpenBSD에서 오디오 재생 / 녹음은 기본적으로 sndiod (1) 데몬에 의해 처리됩니다 . 장치 이름은 sndio (7) 에 다음과 같이 문서화 되어 있습니다.

 type      The type of the audio device or MIDI port.  Possible values
           are:

              rsnd      Raw audio(4) device.
              rmidi     Raw midi(4) port.
              snd       Audio device exposed by sndiod(1).
              midithru  MIDI thru box created with sndiod(1).
              midi      MIDI port exposed by sndiod(1).
              default   Default audio device or MIDI port (see below).

의 출력은 dmesgUSB가 켜져 있음을 나타내 audio1므로 /etc/rc.conf.local두 번째를 기본값으로 사용하여 두 개의 원시 오디오 (4) 장치 를 지정 하려면 다음을 추가하십시오 .

sndiod_flags="-f rsnd/1 -f rsnd/0"

그런 다음를 실행하십시오 /etc/rc.d/sndiod restart. 이 -f플래그는 aucat오디오 재생 또는 녹음에도 사용됩니다.

aucat -f rsnd/1 -i my.wav # second "raw" audio device 
aucat -f snd/1 -i my.wav  # second sndiod device

감사합니다! 귀하의 답변과 sndiod(1)매뉴얼 페이지가 나를 올바른 길로 안내했으며 장치가 훌륭하게 작동하고 있습니다. 도와 주셔서 감사합니다.
ssh2ksh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.