Armadilloフォーラム

bluetoothイヤホンとの接続

okimura.toshio

2019年9月24日 20時59分

Armadillo IoT G3のWLAN+BTコンボモジュールを使用して、
Bluetoothイヤホンで音声を聞こうとしています。
メディアプレーヤーはvlcを使用していますが、
イヤホンから音声が聞こえて来ません。
どなたか私の手順の間違いや漏れなどご掲示いただけますでしょうか?
※私はvlc、bluetoothctlを使用するのが初めてです。

【状況】
Armadilloとイヤホンのbluetoothによるコネクトは成功しています。
 >bluetoothctl
 で
 Pairing successful
 trust succeeded
 Device (MACアドレス) Connected: yes
 が表示されたため。

vlcでの音声ファイル再生にも成功しています。
 > vlc
 で
 > add sample01.mp3
 > play
 > status
 で
 > new input: file:///home/atmark/movie_Test/sample01.mp3
 > audio volume: 307
 > state playing
 が表示されたため。

【環境】
バージョン
 -debian 9.4
 -カーネル 4.9.107-at1
 -bluez 5.43-2+deb9u1
 -vlc 3.0.8-0+deb9u1
 -pulseaudio 10.0-1+deb9u1

インストールしたパッケージ
 -apt install -y vlc
 -apt-get install pulseaudio pulseaudio-module-bluetooth pavucontrol bluez-firmware

コメント

at_syunya.ohshio

2019年9月26日 16時16分

大塩です。

> Armadillo IoT G3のWLAN+BTコンボモジュールを使用して、
> Bluetoothイヤホンで音声を聞こうとしています。
> メディアプレーヤーはvlcを使用していますが、
> イヤホンから音声が聞こえて来ません。
> どなたか私の手順の間違いや漏れなどご掲示いただけますでしょうか?
> ※私はvlc、bluetoothctlを使用するのが初めてです。
>
> 【状況】
> Armadilloとイヤホンのbluetoothによるコネクトは成功しています。
>  >bluetoothctl
>  で
>  Pairing successful
>  trust succeeded
>  Device (MACアドレス) Connected: yes
>  が表示されたため。
>
> vlcでの音声ファイル再生にも成功しています。
>  > vlc
>  で
>  > add sample01.mp3
>  > play
>  > status
>  で
>  > new input: file:///home/atmark/movie_Test/sample01.mp3
>  > audio volume: 307
>  > state playing
>  が表示されたため。
>
> 【環境】
> バージョン
>  -debian 9.4
>  -カーネル 4.9.107-at1
>  -bluez 5.43-2+deb9u1
>  -vlc 3.0.8-0+deb9u1
>  -pulseaudio 10.0-1+deb9u1
>
> インストールしたパッケージ
>  -apt install -y vlc
>  -apt-get install pulseaudio pulseaudio-module-bluetooth pavucontrol bluez-firmware

調査のため、可能であればお客様がご利用になっているArmadillo IoT G3のWLAN+BTコンボモジュールの型番をお教えいただけますでしょうか。

よろしくお願いします。

okimura.toshio

2019年9月26日 17時20分

返信ありがとうございます。
 
型番は「AEH-AR9462-LXB」です。
 
また、改めてArmadilloを操作していて気づいた点があります。
bluetoothctlで入って「show」を実行して表示される
Modalias: usb:v1D6Bp0246d052B
は、USBから音声出力しようとしているのでしょうか?

Controller (***MACアドレス***)
Name: armadillo
Alias: armadillo
Class: 0x000000
Powered: yes
Discoverable: no
Pairable: yes
UUID: Generic Attribute Profile (***UUID***)
UUID: A/V Remote Control (***UUID***)
UUID: PnP Information (***UUID***)
UUID: Generic Access Profile (***UUID***)
UUID: A/V Remote Control Target (***UUID***)
Modalias: usb:v1D6Bp0246d052B
Discovering: no

at_syunya.ohshio

2019年9月30日 18時46分

大塩です。

型番の情報ありがとうございます。

ご利用のBluetoothイヤホンの製品名称はなんでしょうか。
こちらでは「BSHSBE33」を用いて音声が聞こえることを確認しています。
似たような製品であれば、こちらで確認した方法で改善できるかもしれません。

> bluetoothctlで入って「show」を実行して表示される
> Modalias: usb:v1D6Bp0246d052B
> は、USBから音声出力しようとしているのでしょうか?
>
> Controller (***MACアドレス***)
> Name: armadillo
> Alias: armadillo
> Class: 0x000000
> Powered: yes
> Discoverable: no
> Pairable: yes
> UUID: Generic Attribute Profile (***UUID***)
> UUID: A/V Remote Control (***UUID***)
> UUID: PnP Information (***UUID***)
> UUID: Generic Access Profile (***UUID***)
> UUID: A/V Remote Control Target (***UUID***)
> Modalias: usb:v1D6Bp0246d052B
> Discovering: no

こちらについては、コンボモジュールがusbとして接続されているため
このような情報が表示されます。

okimura.toshio

2019年10月1日 11時21分

> ご利用のBluetoothイヤホンの製品名称はなんでしょうか。
> こちらでは「BSHSBE33」を用いて音声が聞こえることを確認しています。
> 似たような製品であれば、こちらで確認した方法で改善できるかもしれません。
 
ELEGIANT製で、ELEGIANTXm67XEuvVです。
このイヤホンがA2DP対応かの表記はみつけられませんが、
このイヤホンをスマホと接続したときに、コーデックがSBCであることを確認しているので、
A2DPに対応していると判断しています。
 
なお、後出しで申し訳ありませんが、vlcを実行直後に下記のエラーが表示されています。
イヤホンから音声が出ない原因につながるものはありますか?
※RaspberryPiでも同様に、bluetoothで音声が聞こえるか試したときに、vlc実行直後にいくつかエラーが発生していましたが、
 それでも同じイヤホンで音声を聞くことが出来たので、Armadilloでの試行時のvlcのエラー発生は軽視していました。
 発生していたエラーは同じ雰囲気でしたが、同じエラーであるかの確認は出来ていません。
 
VLC media player 3.0.8 Vetinari (revision 3.0.8-0-gf350b6b5a7)
[0128cad8] dbus interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
[0128cad8] main interface error: no suitable interface module
[01211110] main libvlc error: interface "dbus,none" initialization failed
[0128d830] main interface error: no suitable interface module
[01211110] main libvlc error: interface "globalhotkeys,none" initialization failed
[01211110] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[0128d898] skins2 interface error: cannot initialize OSFactory
[01277370] main playlist: playlist is empty
[0128d898] [cli] lua interface: Listening on host "*console".
VLC media player 3.0.8 Vetinari
Command Line Interface initialized. Type `help' for help.

at_syunya.ohshio

2019年10月1日 17時34分

大塩です。

> ELEGIANT製で、ELEGIANTXm67XEuvVです。
> このイヤホンがA2DP対応かの表記はみつけられませんが、
> このイヤホンをスマホと接続したときに、コーデックがSBCであることを確認しているので、
> A2DPに対応していると判断しています。

情報ありがとうございます。
確認したメーカーが違うため、動作の補償はできませんが
以下方法をお試しいただけますでしょうか。

音声が出ない問題について、bluetoothctlのConnectまで成功しているようなので
pulseaudio のデフォルト入出力先設定が、ご利用のBluetoothイヤホンを指定していない可能性があります。
bluetoothctlのConnectまで成功した状態で以下のコマンドを実行し、
bluetoothctlで接続したMACアドレスを含むデバイス名が存在することを確認してください。

[armadillo]:~# pacmd list-sinks | grep -e 'name:'
(コマンド結果例)

その後、pacmd set-default-sinkで取得したデバイス名を指定します。

[armadillo]:~# pacmd set-default-sink bluez_sink.(MACアドレス).headset_head_unit

こちらでは、この後vlcで音声を再生し、聞こえることを確認しました。

>  
> なお、後出しで申し訳ありませんが、vlcを実行直後に下記のエラーが表示されています。
> イヤホンから音声が出ない原因につながるものはありますか?
> ※RaspberryPiでも同様に、bluetoothで音声が聞こえるか試したときに、vlc実行直後にいくつかエラーが発生していましたが、
>  それでも同じイヤホンで音声を聞くことが出来たので、Armadilloでの試行時のvlcのエラー発生は軽視していました。
>  発生していたエラーは同じ雰囲気でしたが、同じエラーであるかの確認は出来ていません。
>  
> VLC media player 3.0.8 Vetinari (revision 3.0.8-0-gf350b6b5a7)
> [0128cad8] dbus interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
> [0128cad8] main interface error: no suitable interface module
> [01211110] main libvlc error: interface "dbus,none" initialization failed
> [0128d830] main interface error: no suitable interface module
> [01211110] main libvlc error: interface "globalhotkeys,none" initialization failed
> [01211110] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
> [0128d898] skins2 interface error: cannot initialize OSFactory
> [01277370] main playlist: playlist is empty
> [0128d898] [cli] lua interface: Listening on host "*console".
> VLC media player 3.0.8 Vetinari
> Command Line Interface initialized. Type `help' for help.
>

上記エラーについては、映像等を表示するディスプレイの情報がないためのエラーです。
音声のみ再生するのであれば、問題はありません。

okimura.toshio

2019年10月1日 19時23分

pulseaudioが起動していなかったようで、
atmark@armadillo:~$ pulseaudio --start
を実行したのち、
atmark@armadillo:~$ pacmd list-sinks | grep -e 'name:'
の実行結果は、
name:
でした。全体を表示すると以下の通りです。
 
atmark@armadillo:~$ pacmd list-sinks
1 sink(s) available.
* index: 0
name:
driver:
flags: DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY
state: SUSPENDED
suspend cause: USER IDLE
priority: 1000
volume: front-left: 78643 / 120% / 4.75 dB, front-right: 78643 / 120% / 4.75 dB
balance 0.00
base volume: 65536 / 100% / 0.00 dB
volume steps: 65537
muted: no
current latency: 0.00 ms
max request: 344 KiB
max rewind: 344 KiB
monitor source: 0
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
module: 13
properties:
device.description = "Dummy Output"
device.class = "abstract"
device.icon_name = "audio-card"

※「suspend cause: USER IDLE」となっているのは、試しに
 > pacmd suspend-sink 0 true
 を実行したからです。実行前は「IDLE」でした。

auto_nullという名前に怪しさを覚えながらも、下記を実行しました。
atmark@armadillo:~$ pacmd set-default-sink auto_null
 
これは、indexの前に「*」を付与する目的でしょうか?
私の環境では、set-default-sinkの実行前の時点で「*」が付いていました。
 
(参考)
https://sites.google.com/site/teyasn001/home/pulseaudio

okimura.toshio

2019年10月1日 19時32分

特殊文字が正しく表示されていないため、部分的に再掲載します。

* index: 0
name: <auto_null>
driver: <module-null-sink.c>

画面キャプチャも添付します。

ファイル ファイルの説明
list-sinksの結果.PNG

at_syunya.ohshio

2019年10月2日 18時35分

大塩です。

> これは、indexの前に「*」を付与する目的でしょうか?
お送りいただいた参考資料にもある通り、デフォルトで使用する機器を示すマークであるため
このマークを使用したいBluetoothデバイス名につける目的です。

> auto_nullという名前に怪しさを覚えながらも、下記を実行しました。
> atmark@armadillo:~$ pacmd set-default-sink auto_null

auto_nullということなので、デバイスを認識できていない可能性があります。

> pulseaudioが起動していなかったようで、
> atmark@armadillo:~$ pulseaudio --start

こちらで確認した環境では、「pulseaudio --start」コマンドを実行した後でなければ
「bluetoothctl」の「connect」が出来ませんでした。

「bluetoothctl」の「scan」「pair」「connect」をもう一度ご確認いただけますでしょうか。
可能であれば、その際のログをいただけますでしょうか。

okimura.toshio

2019年10月7日 15時43分

ご対応ありがとうございます。

> こちらで確認した環境では、「pulseaudio --start」コマンドを実行した後でなければ
> 「bluetoothctl」の「connect」が出来ませんでした。
 
伝えておりませんでしたが、今まで「connect」を実行するとエラーが発生していました。
初回だけはエラーにならず成功した記憶があるのですが、2回目(?)以降は、
「connect」するとエラーが発生するのもの、イヤホンの電源を入れ直すなどすると、
イヤホンからコネクションが成功した旨の音声が流れるのと合わせて、
Armadilloのコンソールでも、「Device (MACアドレス) Connected: yes」が
表示されるの見て、コネクションできているとみなしていました。
今回、事前に「pulseaudio --start」を実行することで、「connect」実行時にエラーにならなくなりました。
 
「pulseaudio --start」コマンドを実行後に、
「bluetoothctl」の「scan」「pair」「connect」の結果をファイルで添付します。

connect実行後に多数表示されている、
Bluetooth: hci0 SCO packet for unknown connection handle **
は、今まで表示されていなかったログだと思います。
変わったことと言えば、connect実行前に「pulseaudio --start」を実行したことです。

よろしくお願いします。

尚、添付ファイル内に表示されるMACアドレスやデバイス名のうち、私とは関係ない情報は、
MACアドレス1、デバイス名1のように変換しています。

ファイル ファイルの説明
Armadiilo_Bluetooth_connection_log2.txt

at_syunya.ohshio

2019年10月7日 18時46分

大塩です。

ログ送付ありがとうございます。
内容を確認しました。

こちらでは「unknown connection handle」は確認できますが、「submission failed」は出現しませんでした。
その後の「pacmd list-sinks」コマンドでも「auto_null」になっているため、LinuxとELEGIANT製 ELEGIANTXm67XEuvV がlinuxで動作しない可能性も考えられます。

もし可能であれば、Linux PCと接続して動作するか お試しいただけますでしょうか。