最近 Debian sid amd64 環境で Bluetooth オーディオデバイスを接続するとHSP/HFP は選択できますが、音質のいい A2DP が選択肢に出てこないことが多いです。何度か接続し直すと A2DP が選択肢に出ることがあるという感じ。
数回に1回接続し直しで A2DP が利用できていた頃はまだ良かったのですが、最近は10回程接続し直しても駄目です。
タグ: bluetooth
TUI の Bluetooth マネージャの Bluetuith
Bluetuith という TUI の Bluetooth マネージャーを知ったので試してみました.
BluetoorhヘッドセットのSONY MDR-ZX330BTが動かなくなって困る
BluetoothヘッドセットのSONY MDR-ZX330BTですが,充電しておいて充電ランプが消えているので充電が終わってるなとケーブルを外して電源ボタンを押したのですが電源が入りません…….
もしかして壊れた?リセットボタンとかアレばいいのになと思いながら充電ケーブル指し直したりまた電源ボタンを押したりしてみましたがうんともすんとも言いません.
Debian bullseyeでPipeWireに切り替えてPulseAudioに戻したらA2DPが使えなくなった
Debian BullseyeのサウンドサーバのPipeWireですが,experimentalだとかBullseyeのPipeWireは現在の状態を表すものではないとか書かれています.でもちょっと試したいことがあってDebian Wikiを見ながらPulseAudioからPipeWireに切り替えてみました.少し試したあと元のPuleAudioに戻したのですが,以前使えていたBluetooth A2DPに切り替えできなくなりました.
Bluetooth ヘッドセットが A2DP に切り替えられなくて困る
最近Bluetooth ヘッドセットで A2DP に切り替えが出来なくなっていました.オーディオプロファイルを A2DP にしようとすると変更に失敗します.
有線のヘッドホン(セリア製100円!)で使っていたのですが頭に合わなかったり不自由なので調べることに.
以下のページを見つけました.
どうも PulseAudio の自動切り替えがうまく行っていないようでこれを無効にすることで直りました.
具体的な設定は, /etc/pulse/default.pa
ファイルの load-module module-bluetooth-policy
に auto_switch=false
というオプションを付けでデーモンの再起動です.
/etc/pulse/default.pa
を修正.$ sudo git -C /etc diff /etc/pulse/default.pa
diff --git a/pulse/default.pa b/pulse/default.pa
index f670be0..494c1ce 100644
--- a/pulse/default.pa
+++ b/pulse/default.pa
@@ -64,7 +64,7 @@ load-module module-jackdbus-detect channels=2
### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
-load-module module-bluetooth-policy
+load-module module-bluetooth-policy auto_switch=false
.endif
.ifexists module-bluetooth-discover.so
$ pulseaudio -k
$ sudo service bluetooth restart
この後ヘッドセットを接続し直すことでA2DPが使えるようになりました.
今使っているヘッドセットは Aukey EP-B26 で長時間使えていたのが良かったのですが,バッテリーがへたってしまっています.今はUSBケーブルで給電しながら使っています.有線なんだけど細いケーブル(100円ショップの巻取りUSB microBの中の線だけにしたもの)で小さなモバイルバッテリーをポケットに入れて使うと結構自由度高い感じです.
でも出来れば新調したいところ.同じものはもう売ってないようなのでこのへんとかかな?
AfterShokz も気になってるけどちょっとお高いですね.
$ dpkg-query -W pulseaudio* bluez* blueman
blueman 2.1.2-1
bluez 5.53-0ubuntu2
bluez-alsa
bluez-audio
bluez-cups 5.53-0ubuntu2
bluez-gnome
bluez-input
bluez-network
bluez-obexd 5.53-0ubuntu2
bluez-serial
bluez-utils
pulseaudio 1:13.99.1-1ubuntu1
pulseaudio-module-bluetooth 1:13.99.1-1ubuntu1
pulseaudio-utils 1:13.99.1-1ubuntu1
$ lsb_release -dr
Description: Ubuntu Focal Fossa (development branch)
Release: 20.04
$ uname -m
x86_64
$ lsusb -d 0a5c:217f
Bus 001 Device 016: ID 0a5c:217f Broadcom Corp. BCM2045B (BDC-2.1)
$ lspci | grep -i audio
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)
Raspberry Pi Zero Wのbluetoothを無効にする
てことでRaspberry Pi Zero WのBluetoothも無効にしたいなと.
環境はRaspbian stretch lite 2017-09-07で確認しました.
PCで設定した以下のblacklistの手順でもokなはずですが,config.txtで無効にする方法がありそうだと調べてみました.
まずは定番のeLinux
-
There's lots more documentation of available overlays in /boot/config/README. See source on Github for more.
てことでGithubを見に行きます.
それらしいものがありました :)
|
早速設定してみます.
|
な感じで /boot/config.txt
に追記して再起動しました.
lsmodを設定前と比較するとこんな感じで居なくなっています.
|
moduleのblacklistを設定するよりお手軽ですね :)
恐らくRaspberry Pi 3 Bでも同様の設定は使えると思います.(持ってないので未確認)
bluetoothを無効にする(Debian sid amd64)
Bluetooth経由でスマホからPCまで乗っ取れる攻撃手法が発覚 ~Bluetoothがオンになっているだけで攻撃可能 – PC Watch
|
とても怖いです.
手元の端末ではPCとAndroidをBluetoothテザリングをよく利用しています.
PCの対応状況を確認(2017-09-13時点)すると,Debianは未だ未対応.Ubuntuは14.04 LTS, 16.04 LTS, 17.04がリリース済みでした.
とりあえず,手元で使っているDebian sid amd64とRaspberry Pi Zero WのRaspbian stretchでBluetoothを無効にしておくことにしました.
blueman-appletで設定
PCではblueman-appletを利用しています.
システムトレイ上のアイコンを右クリックして
Turn off Bluetooth
を行うと無効に出来てBluetoothのLEDも消灯します.
でも再起動でOnになるので起動のたびに設定しないといけない&そのタイミングで攻撃をされるかもしれないのであまりよろしくない感じがします.
moduleをblucklistに入れて無効にする
Bluetoothのモジュールを読み込まないようにしてみます.これならBluetoothは動作しないはずです.
まずはlsmodコマンドでbluetooth関連モジュールを確認します.手元のLenovo x200の場合は以下のようになりました.
x200のbluetooth module確認
|
モジュールをロードしないように /etc/modprobe.d/blacklist.conf
というファイルに blacklist <modulename>
という形式で書いていきます.
x200 blacklistに設定
|
設定したら再起動してモジュールが読み込まれないのを確認します.
再起動してmoduleがloadされないのを確認
|
しかしPCのBluetooth LEDインジケーターが消えません.動作上は問題ないでしょうけどちょっと気持ち悪いです.
GPIO辺り探すと消せそうですが面倒.
BIOSで無効にする
PCによっては設定できないかもですが,BIOSで無効にします.これだとLEDインジケーターも光らないので良い感じです.
物理的にモジュールを取り外す
これが一番確実でしょうがそう待たずにセキュリティ修正は降りてくると思うので今回は見送りました.
BluemanだけでNetworkManagerを使わずBluetooth tetheringを使う
最近の自転車移動でThinkpad X200を運んでいるのですがちょっと重い. PC使うかわからないようなときも持ち運んでいるのですが重いし壊しそうだしであまり良くない. 最近値崩れしたKINGJIM PORTABOOK(XMC10)や小さくて可愛いGPD-WINとかほしいのですがお金ない.てことで昔買ってあまり使っていないFujitsu FMV-U8250 + 外部キーボードで荷物の軽量化出来ないかなと.
ちなみにGPD-WINを日本で利用する人の技適問題は以下の辺りから買うと大丈夫のよう.(他は多分NG)
ということでとりあえずFujitsu FMV-U8250にUSB-Bluetoothアダプタを接続してBluetooth外部キーボードとBluetooth tetheringな環境を整えようと思ったのですが,OSをDevuan jessieにしてBluemanで繋ごうとすると,
Connection Failed: the name org.freedesktop.NetworkManager was not provided by ant .service files
というエラーで接続できませんでした. NetworkManagerに依存しているようです.
しかしいまのネットワークマネージャーはWicdでNetworkManagerは入っていません.どうにかならないかなーとBluemanの設定を見るとそれらしいものを発見.
- View -> Local Service
- NetworkのPAN SupportとDUN SupportをそれぞれBluemanに
これでNetworkManagerのない環境でもBluetooth tetheringで繋がるようになりました :)
ちなみにX200(9セルバッテリ)の重量は1.7kg近く,FMV-U8250(大容量バッテリ)はで700g近く+キーボード420g…….体積は結構減ってるけど案外軽くなってませんね.キーボードが案外重いです.使い勝手も大分落ちるし微妙?
PulseAudioでライン入力を使う
PCの熱が辛い
最近暖かくなってきました.NotePCにあまり仕事をさせていなくてもCPU温度は65~75度くらい.
$ acpi -ti Thermal 0: ok, 71.0 degrees C Thermal 0: trip point 0 switches to mode critical at temperature 99.0 degrees C
Flash動画をブラウザ経由で再生すると初めのうちはそうでもないけどすぐに130%くらいCPUを使ってPCの動作重く&CPU熱くなります(特にニコ生TS).そして最近は100度を超えてシャットダウンしてしまうように.
-
再生初め
$ top -bn1 | grep -A 3 PID PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21114 mk 20 0 1114852 214732 103616 S 43.8 1.3 0:13.54 plugin-containe 22343 mk 9 -11 588044 12992 9416 S 12.5 0.1 1:30.03 pulseaudio 3816 mk 20 0 561012 172172 147924 S 6.2 1.1 1:51.02 Xorg
-
暫く経ったら
$ top -bn1 | grep -A 3 PID PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21114 mk 20 0 1168452 241256 125892 S 147.1 1.5 2:12.09 plugin-containe 25291 mk 20 0 43820 3936 3176 R 17.6 0.0 0:00.03 top 3816 mk 20 0 574540 171532 146696 S 11.8 1.1 2:08.95 Xorg
※plugin-containeがpepperflashのプロセス.
pepperflashをAdobe Flash Playerに変更するとましになったような気もしましたがよくクラッシュする&スクリーンセーバ自動抑制機能などもないようなのでちょっと使いづらいです.
$ sudo update-alternatives --config flash-mozilla.so alternative flash-mozilla.so (/usr/lib/mozilla/plugins/flash-mozilla.so を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/browser-plugin-freshplayer-pepperflash/libfreshwrapper-flashplayer.so 70 自動モード 1 /usr/lib/browser-plugin-freshplayer-pepperflash/libfreshwrapper-flashplayer.so 70 手動モード 2 /usr/lib/flashplugin-nonfree/libflashplayer.so 50 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:
スマホやChromeCastで動画再生を試みる&PC経由でBluetoothヘッドセットで音声を聞きたい
スマホやChromeCastで再生して外部ディスプレイに映すようにしたらどうだろうと試してみるとニコニコ動画/生放送は画質が悪くなってしまうけど他のサービスでは良さそうです.しかし音声をBluetoothヘッドセットで聞きたいです.それもPCと一緒に.
ということで,以下のような接続を試してみました.PC(Debian)でのBluetoothはblueman-appletを,音声デバイスの切り替えなどはpavucontrolを,Bluetooth音声のプロファイルはA2DPを利用しています.
-
○ Android → Bluetooth → PC(Debian) → Bluetooth HeadSet
-
○ iOS → Bluetooth → PC(Debian) → Bluetooth HeadSet
-
✘ Android → 3.5mmライン → PC(Debian) → Bluetooth HeadSet
-
✘ iOS → 3.5mmライン → PC(Debian) → Bluetooth HeadSet
-
✘ ChromeCast → HDMI → HDMIモニタ → 3.5mmライン → PC(Debian) → Bluetooth HeadSet
Bluetooth ではうまく行くのですが,3.5mmライン入力がうまく行きません.ChromeCastはBluetoothが使えないのでちょっと困ります.
ライン入力の波形は出ているしレコーダアプリでラインからの音の録音は出来るのでPCに音は流れてきているようです.
以下のFAQページによると`module-loopback`モジュールを読み込むと良いようです.
以下のようにすると反映されてライン入力からの音が出るようになりました.
$ pactl load-module module-loopback
ログアウトすると設定は消えるので以下の辺りの設定ファイルに書いておくと良さそうです.
$ man default.pa|grep -A5 'SYNOPSIS' SYNOPSIS ~/.config/pulse/default.pa /etc/pulse/default.pa /etc/pulse/system.pa
/etc/pulse/default.pa
を ~/.config/pulse/default.pa
にコピーして編集してPulseAudioを再起動して反映出来ました.
$ mkdir -p ~/.config/pulse $ cp /etc/pulse/default.pa ~/.config/pulse/default.pa $ vi ~/.config/pulse/default.pa $ diff /etc/pulse/default.pa ~/.config/pulse/default.pa 167a168,170 > > # 3.5mm Juck In > load-module module-loopback $ /usr/bin/pulseaudio -k $ /usr/bin/pulseaudio --start --log-target=syslog
再起動しても問題無さそうです.
とりあえずこの状態でライン入力からの音声とPCの音声が同時にBluetoothヘッドセットで聞ける状態になりました.
しかし問題点がひとつ.ライン入力とBluetooth(A2DP)入力を同時に行おうとするとライン入力の音が聞こえなくなってしまいます.これは要調査ですね…….
<追記>
~/.config/pulse/default.pa
の以下をコメントアウトで行けてるよう.これ出力側だけかと思ってたんですが入力も効くんですかね.
> #load-module module-switch-on-connect
てことでライン入力とBluetooth入力とPCの音声が全部同時に出力できるようになりました :)
</追記>
環境
-
PC : ThinkPad X220
-
PC OS : Debian stretch amd64
-
PC Bluetooth Adapter : Bluetooth ドーター・カード(BDC-3.0)60Y3271/60Y3275 → Broadcom BCM20702A1
-
Android : LGL22
-
iOS : iPad 3rd
-
Bluetooth HeadSet : JABRA CLIPPER Black + ダイソーカナル型ヘッドホン
-
有線ヘッドホン : ダイソーカナル型ヘッドホン