Armadilloフォーラム

armadillo-640にUSBスピーカー(SANWAのMM-ADUSB)を接続したが、音声ファイルを再生できない件について

s-ota

2021年11月1日 11時03分

大田と申します。

armadillo-640を使用して音声ファイルを再生しようと試行錯誤しております。
下記フォーラム内容にて、Armadillo-640には、オーディオ再生に必要なハードウェアが一部ないとのことですので、
https://armadillo.atmark-techno.com/forum/armadillo/3911
USBサウンドカード(SANWAのMM-ADUSB)とスピーカーを使用して、オーディオ再生を行いましたが、再生されませんでした。
USBサウンドカードによる再生方法について、ご教示お願いできないでしょうか。

以下に、Armadillo-640のバージョン、前提条件と実行時の状況、発生後に試したことを記載いたします。

<バージョン>
Linuxカーネル :linux-v4.14-at35.tar.gz
ブートローダー :u-boot-a600-v2018.03-at9.tar.gz

<前提条件>
・カーネルで「USB Audio/MIDI driver」を有効に設定している
・alsa-utils、gst-launch-1.0 に必要なライブラリは存在する
・スピーカーのUSBケーブルは、CON5(下段)とCON9(RTCオプション)に接続している
・カード番号は「aplay -l」コマンドで表示される(カード番号:0)
・hw、plughw について、「aplay -L」コマンドで表示される
・カード番号0のストリームは「cat /proc/asound/card0/stream0」コマンドで以下のとおりに表示される

C-Media Electronics Inc. USB PnPnd Device at usb-ci_hdrc.0-1, full speed : USB Audio
 
Playback:		←再生
  Status: Stop		
  Interface 1		
    Altset 1		
    Format: S16_LE		
    Channels: 2		
    Endpoint: 1 OUT (ADAPTIVE)		
    Rates: 48000, 44100		
 
Capture:		←録音
  Status: Stop		
  Interface 2		
    Altset 1		
    Format: S16_LE		
    Channels: 1		
    Endpoint: 2 IN (ADAPTIVE)		
    Rates: 48000, 44100		

<状況>
 ・aplay、gst-launch-1.0 を使用して音声を再生しようとするとエラーになり、再生されない
[aplayコマンド実行結果]

root@armadillo:/home/atmark# aplay /home/atmark/data/Sound/shutter.wav -D hw:0	
Playing WAVE '/home/atmark/data/Sound/shutter.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo	
[ 1213.685386] usb 2-1: 1:1: usb_set_interface failed (-71)
aplay: set_params:1363: Unable to install hw params:	
ACCESS:  RW_INTERLEAVED	
FORMAT:  S16_LE	
SUBFORMAT:  STD	
SAMPLE_BITS: 16	
FRAME_BITS: 32	
CHANNELS: 2	
RATE: 48000	
PERIOD_TIME: 125000	
PERIOD_SIZE: 6000	
PERIOD_BYTES: 24000	
PERIODS: 4	
BUFFER_TIME: 500000	
BUFFER_SIZE: 24000	
BUFFER_BYTES: 96000	
TICK_TIME: 0	

<試したこと>
・MM-ADUSBのUSBケーブル2本の接続先を入れ替え
  同じエラーになる。なお、接続先を変更したため「[ 1213.685386] usb 2-1: 1:1: usb_set_interface failed (-71)」の「usb 2-1」部分が「usb 1-1」などに変わる。
・armadillo本体の再起動
・aplayコマンドのオプション「-D hw:0」を「-D plughw:0」、「-D hw:0,0」、「-D plughw:0,0」などに変更する
・aplayコマンドのオプション「-D hw:0」を「--device=hw:CARD=xxxxx」、「--device=plughw:CARD=xxxxx」などに変更する
・aplayコマンドに次のオプションを追加する。「-c 2」(チャンネル数)、「-f S16_LE」(フォーマット)、「-r 48000」(レート)

 → いずれも「usb_set_interface failed (-71)」のエラーになり、音声を再生できない

尚、USBサウンドカードを抜き差しした際に以下のメッセージが表示されます。

[   55.085529] usb 1-1: device descriptor read/all, error 10
[   55.604388] hid-generic 0003:0D8C:013C.0003: unknown main item tag 0x0
[   55.611435] hid-generic 0003:0D8C:013C.0003: unknown main item tag 0x0
[   55.618454] hid-generic 0003:0D8C:013C.0003: unknown main item tag 0x0
[   55.625423] hid-generic 0003:0D8C:013C.0003: unknown main item tag 0x0
[   55.632372] hid-generic 0003:0D8C:013C.0003: unknown main item tag 0x0
[   55.639334] hid-generic 0003:0D8C:013C.0003: unknown main item tag 0x0
[   55.646298] hid-generic 0003:0D8C:013C.0003: unknown main item tag 0x0
[   55.653226] hid-generic 0003:0D8C:013C.0003: unknown main item tag 0x0
[   57.075533] usb 1-1: can't restore configuration #1 (error=-71)
[   60.468531] usb 1-1: 2:1: cannot set freq 48000 to ep 0x82
[   60.826525] usb 1-1: 13:0: cannot get min/max values for control 2 (id 13)
[   61.153533] usb 1-1: 9:0: cannot get min/max values for control 2 (id 9)
[   61.480537] usb 1-1: 10:0: cannot get min/max values for control 2 (id 10)
[   61.903596] usb 1-1: can't restore configuration #1 (error=-71)
[   62.314578] usb 1-1: can't set config #1, error -71
コメント

at_akihito.irie

2021年11月2日 14時07分

入江です。

断定はできませんが、疑わしい以下の2点についてご確認いただけますでしょうか。

1. Armadillo-640のVBUSの供給能力が足りない
2. USB Audioが壊れている

1は、給電HUBを介して接続した上で動作確認していただけると切り分けできます。
2は、ご使用のUSB AudioをPCなど別なデバイスでご使用いただくことで切り分けできます。

以上、お手数おかけしますがご確認よろしくお願いいたします。

at_akihito.irie

2021年11月2日 14時35分

入江です。

五月雨式に申し訳ございませんが、以下のカーネルコンフィギュレーションを
有効にしていただくことで改善するかも知れません。

Device Drivers --->
  USB support --->
    [*] ECHI HCD (USB 2.0) support
	  [*] Improved Transaction Translator scheduling  <- これを有効化

大田と申します。
ご返信ありがとうございます。

> 1. Armadillo-640のVBUSの供給能力が足りない
USBHUB(U2H-Y4BBK/RS)をCON5(下段)に接続して、USBハブを介して接続すると音が再生できました。
ただ、HUBは給電HUB(別の電源から供給されるもの?)ではなく拡張HUB

> 2は、ご使用のUSB AudioをPCなど別なデバイスでご使用いただくことで切り分けできます。
WindowsPC等では、正常の動作しておりました。

尚、追加でいただいた以下のカーネルコンフィギュレーションですが、有効無効ともに関係しませんでした。
> 以下のカーネルコンフィギュレーションを
> 有効にしていただくことで改善するかも知れません。
>
> Device Drivers --->
> USB support --->
> [*] ECHI HCD (USB 2.0) support
> [*] Improved Transaction Translator scheduling <- これを有効化

結果、USBHUBを介して接続すると音が再生できたのですが、気になる点がございます。
介したHUBが給電HUB(別の電源から供給されるもの?)ではなく拡張HUBで動作したのですが、
Armadillo-640のUSBに直接接続するのと、HUBを介して接続するとの違いについて、ご教示いただけないでしょうか。

at_akihito.irie

2021年11月9日 17時08分

入江です。

回答が遅くなってしまい申し訳ございません。

> 結果、USBHUBを介して接続すると音が再生できたのですが、気になる点がございます。
> 介したHUBが給電HUB(別の電源から供給されるもの?)ではなく拡張HUBで動作したのですが、
> Armadillo-640のUSBに直接接続するのと、HUBを介して接続するとの違いについて、ご教示いただけないでしょうか。

断定はできませんが、Armadillo-640とUSBサウンドカードを直接接続した際に
動作しないのは、相性問題であることが考えられます。

USBHUBは単純にパススルーしているのではなく、host-HUB間で通信し、
HUB-device間で通信します。
HUB-device間通信時に、HUBによってUSBの信号がUSBサウンドカードのタイミ
ングを満たすように調整されたため、HUBを介することで通信できるようになっ
たのかもしれません。

大田と申します。
ご回答ありがとうございます。

> 断定はできませんが、Armadillo-640とUSBサウンドカードを直接接続した際に
> 動作しないのは、相性問題であることが考えられます。
>
> USBHUBは単純にパススルーしているのではなく、host-HUB間で通信し、
> HUB-device間で通信します。
> HUB-device間通信時に、HUBによってUSBの信号がUSBサウンドカードのタイミ
> ングを満たすように調整されたため、HUBを介することで通信できるようになっ
> たのかもしれません。

相性問題とUSBHUBに対しての理解ができました。単純なものではないのですね。
armadillo-640にUSBスピーカー(SANWAのMM-ADUSB)の再生について、解決したため、closeさせていただきます。
<(_ _)>

大田と申します。

Armadillo-640のUSBに直接接続するのと、HUBを介して接続するとの違いについて、何かご存じでしょうか。
以前の状態で追加で試したことを以下に記載します。

<試したこと>
・Armadillo-640のHUB接続先をCON5(下段)とCON9(RTCオプション)入れ替えても同様。
<<音声が再生可能パターン>>
・Armadillo-640にHUBを接続して、HUBにUSBサウンドカードとスピーカを接続する。
・Armadillo-640にHUBを接続して、HUBにUSBサウンドカード接続、Armadillo-640本体にスピーカーを接続する。
・Armadillo-640にHUBを接続して、HUBにUSBサウンドカード接続、スピーカを別の箇所から電源供給。
<<音声が再生不可能パターン>>
・Armadillo-640にHUBを接続して、Armadillo-640本体にUSBサウンドカード接続、HUBにスピーカーを接続する。
・Armadillo-640にUSBサウンドカードとスピーカを直接接続する。
・Armadillo-640にUSBサウンドカードを直接接続して、スピーカを別の箇所から電源供給。