Android の音を Bluetooth でPCへ転送
Androidデバイスは普段はこんな風にデスクトップ付近にアームで固定して、ニュースを見たり動画を見たりして活用しています。
気兼ねなく音を出せる状況ならば、各デバイス単体で音を出したり、Bluetoothのスピーカーを使用したりしてデバイスの音声を再生しています。
しかし、深夜のような周りに配慮する必要のある状況だと、写真の様に各デバイスにイヤホンを付けて必要に応じて付け替えるなんて面倒な事をしていました。
それを打破すべくこんな物を購入してみました。
LBT-UAN04C2
Elecom Logitec LBT-UAN04C2、USBに接続するBluetoothのホストアダプターです。Windows 8 対応なんてエンブレムも付いていたため、コストパフォーマンスがよさそうだと買ったわけですが、実は久々に引き当てた地雷製品です。
内部には CSR社 の CSR8510 A10 が使用されています。オーディオコーデックのatpXでも知られるメーカーなので外れは無いだろうと安心をしていました。
ところが、ソフトウェアの出来が今一つで、新旧のドライバがインストール時にコンフリクトする等のトラブルがあり、ややハードルが高い製品となっています。
そんな訳で、実際に使えるようになるまでの過程を綴っていきましょう。
Bluetoothアダプタのセットアップ
Logitec製という事で、 Windows Update 経由でセットアップが完了し、挿すだけで使えます。ベンダードライバで使用したい方は前もってインストールしておくといいでしょう。
標準ドライバの場合
デバイスの認識が終わったら、コントロールパネルのデバイスとプリンターに Bluetooth アダプタが表示されるので、「□Bluetooth デバイスによる、コンピューターの検出を許可する」のオプションにチェックを入れます。
これで外部デバイスからこのホストアダプタを発見することが出来、ペアリングを行うことが出来ます。
ペアリングが終わったらチェックを外しておきましょう。
Android デバイスとのペアリング
Android デバイスの Bluetoothを有効にするとWindowsのタスクトレイに通知が入ります。
Android の設定→Bluetoothを確認すると現在接続可能なデバイスが列挙されているのでタップしてペアを設定します。この時、Windowsの方にペアコードの確認、又はペアコードの入力ダイアログが開くので指示に従います。
撮影の都合上、ペアリングコードが変わっていますがご了承ください。
ペアリングが終わり接続が確立するとデバイスドライバがインストールされていきますが、Nexus 7 (2013) は標準ドライバだとリモコンデバイス以外が周辺デバイスとして認識されドライバがインストールされませんでした。
CSR社のドライバ(CSR Harmony stack) の場合
付属CDからインストールしてもいいのですが、より新しいバージョンが使える事を期待してWebからドライバソフトをダウンロードする事にします。今回のトラブルもあって、同チップの他社製品のドライバをダウンロードしてみましたが中身は同じもののようです。
インストール過程でエクスプローラーを強制的に再起動させられるので、作業をしている方は気を付けてください。ドライバのインストールは特に問題なく終了し、ペアリングも問題なく行える感じです。
ですが、やはりBluetoothで接続した Nexus 7に関しては2つのデバイスのドライバがインストールされず使用不可能なままです。
今回使用した Elecom Logitec LBT-UAN04C2 ですが、コアチップがCSR Harmony製でインストールによるトラブルが多いそうで、漏れることなく遭遇してしまいました。
デバイスマネージャで確認すると、周辺デバイスはEnumratorが各デバイスに振り分けてくれましたがドライバはインストールされていません。
個別に手動インストールを試みるも、「その名前は、サービス名またはサービス表示名として既に使われています。」なんてメッセージが出てエラーIDすら表示されません。
仕方がないのでセットアップAPIのログを見てみます。
dvi: {Writing Device Properties - Complete} inf: {Install Inf Section [AVFilter.NT.Services]} inf: AddService=csr_bthav,0x00000002,csr_bthav_Service_Inst (csrbthav.inf line 108) inf: ServiceType=1 (csrbthav.inf line 112) inf: StartType=3 (csrbthav.inf line 113) inf: ErrorControl=1 (csrbthav.inf line 114) inf: ServiceBinary=C:\Windows\system32\drivers\csrbthav.sys (csrbthav.inf line 115) inf: DisplayName="Bluetooth AVプロファイル" (csrbthav.inf line 111) !!! dvi: Add Service: Failed to create service 'csr_bthav'. !!! dvi: Error 1078: The name is already in use as either a service name or a service display name. !!! inf: {Install Inf Section [AVFilter.NT.Services] exit(0x00000436)} !!! inf: Error 1078: The name is already in use as either a service name or a service display name. !!! dvi: Error while installing services. !!! dvi: Error 1078: The name is already in use as either a service name or a service display name. !!! dvi: Cleaning up failed installation !!! dvi: Error 1078: The name is already in use as either a service name or a service display name. dvi: {Install DEVICE exit (0x00000436)} !!! dvi: Cleaning up failed installation (00000436) !!! dvi: Class installer: failed(0x00000436)! !!! dvi: Error 1078: The name is already in use as either a service name or a service display name. dvi: CoInstaller 1: Enter (Post Processing) 12:21:08.483 dvi: CoInstaller 1: Exit (Post Processing) dvi: {DIF_INSTALLDEVICE - exit(0x00000436)} 12:21:08.484 !!! ndv: Error(00000436) installing device! ndv: Device install status=0x00000436 ndv: Performing device install final cleanup... ! ndv: Queueing up error report since device installation failed... ndv: {Core Device Install - exit(0x00000436)} 12:21:08.488 dvi: {DIF_DESTROYPRIVATEDATA} 12:21:08.488 dvi: CoInstaller 1: Enter 12:21:08.488 dvi: CoInstaller 1: Exit dvi: Class installer: Enter 12:21:08.489 dvi: Class installer: Exit dvi: Default installer: Enter 12:21:08.490 dvi: Default installer: Exit dvi: {DIF_DESTROYPRIVATEDATA - exit(0xe000020e)} 12:21:08.490 ump: Server install process exited with code 0x00000436 12:21:08.496 <<< Section end 2015/05/21 12:21:08.505 <<< [Exit status: FAILURE(0x00000436)] dvi: Manufacturer=Cambridge Silicon Radio Limited dvi: Matching DeviceID={128cfe23-5667-45db-9c1b-23370da73831}\csravrcp_110e dvi: Strong Name=oem113.inf:csravrcp_Mfg.NTamd64:csravrcp_DDI:2.1.51.0:{128cfe23-5667-45db-9c1b-23370da73831}\csravrcp_110e dvi: {Writing Device Properties - Complete} inf: {Install Inf Section [csravrcp_DDI.NT.Services]} inf: Addservice=csravrcp,0x00000002,csravrcp_Service (csravrcp.inf line 57) inf: ServiceType=0x00000001 (csravrcp.inf line 63) inf: StartType=0x3 (csravrcp.inf line 64) inf: ErrorControl=0x00000001 (csravrcp.inf line 65) inf: ServiceBinary=C:\Windows\system32\DRIVERS\csravrcp.sys (csravrcp.inf line 66) inf: DisplayName="Bluetooth AVRCPプロファイル" (csravrcp.inf line 62) inf: LoadOrderGroup="Extended Base" (csravrcp.inf line 67) !!! dvi: Add Service: Failed to create service 'csravrcp'. !!! dvi: Error 1078: The name is already in use as either a service name or a service display name. !!! inf: {Install Inf Section [csravrcp_DDI.NT.Services] exit(0x00000436)} !!! inf: Error 1078: The name is already in use as either a service name or a service display name. !!! dvi: Error while installing services. !!! dvi: Error 1078: The name is already in use as either a service name or a service display name. !!! dvi: Cleaning up failed installation !!! dvi: Error 1078: The name is already in use as either a service name or a service display name. dvi: {Install DEVICE exit (0x00000436)} !!! dvi: Cleaning up failed installation (00000436) !!! dvi: Default installer: failed! !!! dvi: Error 1078: The name is already in use as either a service name or a service display name. dvi: {DIF_INSTALLDEVICE - exit(0x00000436)} 12:20:50.351 !!! ndv: Error(00000436) installing device! ndv: Device install status=0x00000436 ndv: Performing device install final cleanup... ! ndv: Queueing up error report since device installation failed... ndv: {Core Device Install - exit(0x00000436)} 12:20:50.389 ump: Server install process exited with code 0x00000436 12:20:50.447 <<< Section end 2015/05/21 12:20:50.830 <<< [Exit status: FAILURE(0x00000436)]
ぱっと見ると csrbthav.inf csravrcp.inf でエラーが出ている事が見て取れます。ただ、やはりエラーはサービス名か表示名がコンフリクトしている旨を伝える物しか無く、Bluetooth AVプロファイル、Bluetooth AVRCPプロファイルがインストール出来ないという症状が出ています。
csrbthav.infやcsravrcp.infはインストールされる際にoem???.infというファイル名に置換されますが、先のエラーログを辿る事で発見することが出来ます。インストールの設定を参照する事で解決のヒントが得られるかも知れません。
コンフリクト原因
コンフリクトという事で単純にInf内の文字列を検索してみたところ、古いドライバを発見しました。
ファイルのタイムスタンプがデバイスを購入した日なっていたのでWindows Updateにより取り寄せられたOS標準のドライバだと思われます。これがCSR Harmony stackとコンフリクトしてエラーが出ているようです。
もう片方のドライバも同じ理由によるものなので、双方の古いドライバーをドライバーストア(oem???.infとしてインストールされているもの)から削除すれば正しくインストールが進むはずです。
ドライバーパッケージの削除
ドライバーストアからドライバを削除方法に関してはThecNetで解説されていました。
ドライバー パッケージをドライバー ストアから削除する
https://technet.microsoft.com/ja-jp/library/cc730875.aspx?f=255&MSPPError=-2147217396
今回の例だと、管理者権限でコマンドプロンプトを起動して"pnputil.exe -d Oem98.inf"または"pnputil.exe -f -d Oem98.inf"を実行すると目的の物が削除できます。
再セットアップ
そして再びセットアップを試みると…、
Bluetoothオーディオはインストールが成功しましたが、Bluetooth AVRCPプロファイルのインストールに失敗しました。
原因はどうやらドライバ削除時にサービスが削除出来なかったためらしく、以下のレジストリを削除しWindowsを再起動します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\BthAvrcp
再起動後に再びデバイスを認識させると、今度は無事にインストールが完了しました。
実際にA2DPの音声ソースをPCで聴いてみましたが、急激な処理負荷でノイズが載りがちです。他のネットワーク越し等のオーディオストリームが安定して再生できるような状態でもプチノイズが載ったりします。
音質に関しては聞くに堪えないというほどでは有りませんが小さなホワイトノイズが気になる感じでしょうか、比較的良い音質の部類には入ると思います。
同期やバッファリングに問題があるような気がしますが、遅延の程度と音質から行くと許容範囲なんですかね…、aptXが使えるデバイスを買ってきて試してみたいような気もします。
総評としてはドライバさえインストール出来てしまえば悪い製品では無いという気がします。
因みにA2DPでAndroidから受けた音声をA2DPでBluetoothのサウンドバーから流そうとしましたが、どちらか片方しか接続できないようです。まぁ…、そういう使い方をするものじゃありませんね;p
ディスカッション
コメント一覧
まだ、コメントがありません