google tag

My Soundcloud Channel --- Testing :D

Wednesday, November 16, 2011

今日の USBサウンド bandwidth エラー のナゾ

Linuxメモ
USBマウスが刺さっているとUSBサウンドカードの動作に悪影響を与える事がありUSBマウスを外付けのUSBハブで分離してやると問題がなくなった....

---
新しいPC, NECの安サーバーを使い始めたのだが、USBサウンドにちょっとした問題があったのでメモとして書いておく事にする。

オンボードのサウンドをBIOSでDisableにして外付けのUSBサウンドカード (SBDMULX変造品)を使っていて、もちろんALSAのUSBドライバ問題なく使えているのであるが、 jackd というサウンドサーバーが起動しない。 jackdは普段は使っていないのであるが、ardour2というjackd必須のDAWを使ってみようとjackdを動かしてみたのだが動かない..という事になった。で、qjackctlで起動パラメータをあれこれ弄ってみたが全然使えない。よくわからないのだが、jackdを起動させようとするとカーネルが次のようなエラーを吐く、のである。

cannot submit datapipe for urb 0, error -28: not enough bandwidth
USBのデータを送る帯域幅が不足、というエラーなのだと思うが、USB1.1のサウンドカードであり、PCはUSB2.0仕様の、つまり高速なUSBなので帯域不足というのが不可思議だ。

実はインストール直後に、 サウンドカードを使う、acfax という無線faxデコードソフトを動かしたらカーネルがエラー吐きまくってPC操作不能、という事を経験していた。その時はacfaxのビルドの問題かなぁ、という事で滅多に使わないソフトでもあり、audacityなどでの音声録再などは問題なくできたので追求せずにアンインストールで放置していた。しかしこの時のエラーも、今思い返してみると、たしかbandwidthだった気がする...

---
ということで、ACFAXは使わなくても構わないのだが、jackdは音楽録音関係では動いて欲しいので、ちょっと調べてみる事になった.. というのが今回のお題なのだが、早速全く同じ症状のレポートに行きあたる..

bandwidth allocation problems with external USB audio device


で、ここにあるように、これは EHCI 関係のトラブルというかバグらしいのだが、さてどうやって回避するか..ehci_hcd 読むの止めるとUSB自体が使えなくなるし.. 上のリンクの ehci_hcdをunbindするってのは試してみたのだが、実行するとUSBが止まる.. USB1.1にゃならなかった..

---
普段PCのUSBには、このサウンドカードと、ロジクールのUSB無線マウス (VX-R) が繋がっているのだが..なんとなくマウスの方を抜いてみたら... 何事もなくjackdが起動、先のエラーも吐かない事がわかった.. サウンドは本体裏、マウスは本体表の別のポートに繋げてある.. 

今度はポートの位置をあれこれ変えてみたのだが、ポートの位置にかかわらずマウスが刺さっているとjackdは起動しない。 マウスを抜くと問題がなくなる。

USBカード買ってきてマウスとサウンドを分けたら治るのか? 他に方法は...?? とあれこれ考えてる時に、ふと、手持ちの4ポートUSBハブをPC本体に刺し、マウスをそのUSBハブ経由で使ってみると..


ビンゴ.. 今度はマウスが刺さっててもjackdが何事もなかったかのように起動した。bandwidthエラーももちろん出ない。先のacfaxを起動しても何のエラーも動作不良も起きない...マウスは本体に直接刺してはいけない、という事なのだろうか.. 

どうしてマウスがサウンドの動作に干渉するのか、ドライバのバグかマウスやサウンドカード、あるいはチップセットの問題なのか、さっぱりわからないのだが、とにかくマウスをUSBハブを通して接続する事で問題が回避できる事がわかった..

ちなみにUSBサウンドをUSBハブ経由で出すと今度は xrun エラーが出てうまくなかった.. なんだかよくわからないが、USBサウンドはPCIカードを増設してそれ専用のUSBポートを設けるのが安全そうな気もする.. 

---
よく、USBハブ経由で機器を接続すると問題が出る、というのは聞くが、本件ではUSBハブで問題を解決できた。

高速なデバイス(ビデオとかHDDなど)だとハブの不具合が出そうなきもするし、実際USBサウンドだとxrunが出たりしたのだが、マウスという低速なものでは、逆に間に挟むハブはPCとマウスとの"バッファ"になっている、のかもしれない..

なんだか全然良くわからない、納得しがたい事象なのだが、とりあえず動いたからよし、とする。