2015年7月2日木曜日

Bluetooth A2DP の認識が劇的に改善された7月1日(悲報:だけれども、7月5日にはもっと最悪な状態になっていた)

幻だったのではないかとおもう記憶::Bluetooth A2DP の認識が劇的に改善されたあの日

3年前のできごとだったのか。遠い目。こんなに円滑な完璧な状態は一度も再現することはありませんでした。3年ですよ。だから、この記事は少年の日の思い出とタグをつけてもいいくらいです。技術文書としては読まないほうがいいかも。笑) 事実の羅列ではあります。BT/A2DP機器はその後3年の間5つ位買いましたがどれもこのレベルではないです。SONYなどの2万円超えから、3000円程度の安いバチモノまで。W10でもありませんから、そんなものだとあきらめましょう。笑) 

A2DP電源オンオフ。瞬時に認識、切り替わる=音が出る。至高状態。再現映像です。


以下は、過去の記録です。現在16.04で、まぁまぁごきげんです。Windows10と比較して繋がるまでの手間はubuntuの方が少ないですから、期待しすぎるのもだめなのかもとは思いますが、XPERIA/Nexusでの接続性と比較するとやはりいまいちかな。十分です。

「再現GIF動画」にしたような状態がベストなのですが、二度とこのような快適さを味わったことはありません。あはは。数日の幸福でした。


(追記:7月5日日本時間早朝、まったく接続しなくなりました。解散。解散。これが糠喜びというやつか。そうなのか。――回避方法。これまでどおりで、一旦[これまでの接続情報]を削除して、最初のネゴからやり直します。これでうまくいきます。数秒の世界から60秒はかかる世界に逆戻りです。)

14.04LTS時代のお話


びっくりなんてものじゃありません。

Bluetooth A2DPデバイスの認識がもうひどくて、使えるようになるのに自前のスクリプトを用意しても良い時で30秒、普通に2分。最悪リブートして同じ手順を踏むという状態が続いていましたが、一挙に改善されました。

当方には、SONYのふたつのBluetooth A2DP機器があります。電源をいれて数秒内で認識し音が鳴り出します。瞬時です。生Windowsより良いです。有効なサウンドデバイスをつないでない状態になぜ私が設定しているのか理解していただけるかと思います。もしかしてそれも不要かもしれません。

OSからみて複数使えるサウンドデバイスがあった場合に[どれを使ったらいいのかできるだけ悩まなくてもいいようにするためです。ひとつなら、どれをメインにするかは簡単。

Cinnamonで最初に現象に気がつき、MATEでも念の為、確認しました。画像はMATEです。Linux系全体で恩恵があるのであればうれしいですね。(半年間を返せ。笑) (糠喜びでした。)

※あえて注記:16.04LTSでは、設定ファイルはまったくいじっていません。audio.conf もありません。このアーティクルは14.04LTSでおきた現象の記録です。


参考:現在の設定ファイルの記述
変更する場合はオリジナルのバックアップを取得しておきましょう。

/etc/bluetooth/hcid.conf
device FC:F1:AA:BB:00:FF {
name "MDR-ZX750BN"
auth enable;
encrypt enable;
}


/etc/bluetooth/audio.conf
# Configuration file for the audio service
# sudo gedit /etc/bluetooth/audio.conf
# This section contains options which are not specific to any
# particular interface
[General]
# Switch to master role for incoming connections (defaults to true)
Master=true

# If we want to disable support for specific services
# Defaults to supporting all implemented services
#Disable=Gateway,Source,Socket

#可能でもつながったが、DISABLEにしてみるとか。#Enable=Socket
#Disable=Socket
#Enable = Sink,Source

Enable = Sink

#If PulseAudio fails when changing the profile to A2DP with bluez 4.1+ and PulseAudio 3.0+, you can try disabling the Socket interface from /etc/bluetooth/audio.conf by removing the line Enable=Socket and adding line Disable=Socket.

# SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA)
# Defaults to HCI
SCORouting=PCM
#SCORouting=HCI
# でもOKだった。

# Automatically connect both A2DP and HFP/HSP profiles for incoming
# connections. Some headsets that support both profiles will only connect the
# other one automatically so the default setting of true is usually a good
# idea.
####
AutoConnect=true
#AutoConnect=false

# Headset interface specific options (i.e. options which affect how the audio
# service interacts with remote headset devices)
[Headset]
# Set to true to support HFP, false means only HSP is supported
# Defaults to true

#HFP=true

HFP=false

HSP=false
# 無効。HSP HFP 

# Maximum number of connected HSP/HFP devices per adapter. Defaults to 1
MaxConnected=0

# Set to true to enable use of fast connectable mode (faster page scanning)
# for HFP when incoming call starts. Default settings are restored after
# call is answered or rejected. Page scan interval is much shorter and page
# scan type changed to interlaced. Such allows faster connection initiated
# by a headset.
####FastConnectable=false
FastConnectable=true

# Just an example of potential config options for the other interfaces
[A2DP]
#SBCSources=1
#MPEG12Sources=0
SBCSources=0       #SBC
MPEG24Sources=1 #AAC
MPEG12Sources=0 #MP3
#ATRACSources=1 SONYを2つもっているが何れも対応していない。笑うわ。

※所詮圧縮Codec。aptX(これも圧縮だけど)がLinuxではライセンスの都合で使えないので、AACを次善で選ぶようにした(MAC OS ,iPhones並)。正しい設定なのかどうかはわからない。androidのBluezも同じ書式。 お風呂BTスピーカーでBGMを鳴らすならSBCでもOK。
#MAC OS Xは、aptXが使えるようにできるらしい。



この改善の立役者は、たぶん、以下のパッケージに含まれている気がします。Cinnamon環境でリストアップしました。ただ、bluemanは関係なさそうです。アンインストールしようと思います。
ii blueman 1.23-git201403102151-1ubuntu1
ii bluetooth 4.101-0ubuntu13.1
ii cinnamon-bluetooth 3.8.8-20150701012003-trusty
ii gir1.2-gnomebluetooth-1.0 3.8.2.1-0ubuntu4.2
ii gnome-bluetooth 3.8.2.1-0ubuntu4.2
ii libbluetooth-dev 4.101-0ubuntu13.1
ii libbluetooth3:amd64 4.101-0ubuntu13.1
ii libbluetooth3-dbg 4.101-0ubuntu13.1
ii libgnome-bluetooth11 3.8.2.1-0ubuntu4.2
ii pulseaudio-module-bluetooth 1:4.0-0ubuntu11.1
ii pulseaudio-module-bluetooth-dbg 1:4.0-0ubuntu11.1
ii python-bluez 0.18-2