bluetooth – matoken's blog https://matoken.org/blog Is there no plan B? Sat, 28 Sep 2024 20:21:38 +0000 ja hourly 1 https://wordpress.org/?v=7.0.4 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg bluetooth – matoken's blog https://matoken.org/blog 32 32 Debian sid 環境で Bluetooth A2DP になかなか接続できない https://matoken.org/blog/2024/09/29/unable-to-connect-to-bluetooth-a2dp-in-debian-sid/ https://matoken.org/blog/2024/09/29/unable-to-connect-to-bluetooth-a2dp-in-debian-sid/#respond Sat, 28 Sep 2024 20:21:35 +0000 https://matoken.org/blog/?p=4104

最近 Debian sid amd64 環境で Bluetooth オーディオデバイスを接続するとHSP/HFP は選択できますが、音質のいい A2DP が選択肢に出てこないことが多いです。何度か接続し直すと A2DP が選択肢に出ることがあるという感じ。
数回に1回接続し直しで A2DP が利用できていた頃はまだ良かったのですが、最近は10回程接続し直しても駄目です。

少し検索してみると以下のフォーラムを見つけました。

On my system I managed to solve this problem by uninstalling the bluez-alsa-utils package, which was competing with Pipewire.

— debian can’t/won’t find a2dp profile for bluetooth headphones : r/debian
https://www.reddit.com/r/debian/comments/18pmwke/debian_cantwont_find_a2dp_profile_for_bluetooth/’

bluez-alsa-utils パッケージを確認すると存在します。これを削除してみます。

bluez-alsa-utils を確認して削除
$ dpkg-query -W bluez-alsa-utils
bluez-alsa-utils        4.2.0-1
$ sudo apt remove bluez-alsa-utils

この後 Bluetooth オーディオデバイスを接続すると毎回 A2DP が出てくるようになりました。

Bluetuith でオーディオプロファイルの確認

a2dp bluetuith

pavucontrol でオーディオプロファイルを確認

a2dp pavuctrl

3日ほど試していますが今の所毎回 A2DP プロファイルが出てきています。

環境
$ dpkg-query -W bluetooth pipewire* pavucontrol*
bluetooth       5.77-1
pavucontrol
pavucontrol-qt  1.4.0-2
pavucontrol-qt-l10n     1.4.0-2
pipewire:amd64  1.2.4-2
pipewire-bin    1.2.4-2
pipewire-media-session
pipewire-pulse  1.2.4-2
$ lsb_release -dr
Description:    Debian GNU/Linux trixie/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2024/09/29/unable-to-connect-to-bluetooth-a2dp-in-debian-sid/feed/ 0
TUI の Bluetooth マネージャの Bluetuith https://matoken.org/blog/2024/08/23/tui-bluetooth-manager-bluetuith/ https://matoken.org/blog/2024/08/23/tui-bluetooth-manager-bluetuith/#respond Thu, 22 Aug 2024 21:02:47 +0000 https://matoken.org/blog/?p=4092

Bluetuith という TUI の Bluetooth マネージャーを知ったので試してみました.

bluetuith

terminal で Bluetooth 設定を行う場合,いつもは bluez の bluetoothctl コマンドを使っています.これでそう困っていないのですが, TUI の Bluetuith を知ったので試してみました.
Go製 MIT license です.

導入は go install でさくっと入りました.GitHub の release に Linux版 i386/amd64, armv5/armv6/armv7/arm64 のバイナリがあるのでそちらもお手軽です.

go install での導入
$ go install -v github.com/darkhz/bluetuith@latest
$ which bluetuith
/home/matoken/go/bin/bluetuith
$ bluetuith
GitHub release から armv7版を入手
$ wget https://github.com/darkhz/bluetuith/releases/download/v0.2.3/bluetuith_0.2.3_Linux_armv7.tar.gz \
    https://github.com/darkhz/bluetuith/releases/download/v0.2.3/checksums.txt (1)
$ sha256sum --ignore-missing -c checksums.txt (2)
bluetuith_0.2.3_Linux_armv7.tar.gz: OK
$ tar tvf bluetuith_0.2.3_Linux_armv7.tar.gz (3)
-rw-r--r-- darkhz/darkhz  1064 2024-04-15 22:41 LICENSE
-rwxr-xr-x darkhz/darkhz 8650904 2024-08-12 20:13 bluetuith
$ tar xvf bluetuith_0.2.3_Linux_armv7.tar.gz -C ~/bin/ bluetuith (4)
bluetuith
$ bluetuith
  1. GitHub release から armv7バイナリと checksum を入手

  2. チェックサム確認

  3. archive 確認

  4. バイナリを好みの場所に展開

Bluetuith を起動すると TUI の画面で大まかな操作方法も書かれています. ? key で help を表示するとこんな感じ.

┌──────────────────────────────────────────────────────────┐
│                          Help                         [X]│
│──────────────────────────────────────────────────────────│
│Device Screen                                             │
│Open the menu                                  Alt+m      │
│Navigate between menus                         Tab        │
│Navigate between devices/options               Up/Down    │
│Toggle adapter power state                     o          │
│Toggle discoverable state                      S          │
│Toggle pairable state                          P          │
│Toggle scan (discovery state)                  s          │
│Change adapter                                 a          │
│Send files                                     f          │
│Connect to network                             n          │
│Progress view                                  v          │
│Show/Hide player                               m/M        │
│Show device information                        i          │
│Connect to selected device                     c          │
│Pair with selected device                      p          │
│Trust selected device                          t          │
│Remove device from adapter                     d          │
│Cancel operation                               Ctrl+X     │
│Show help                                      ?          │
│Quit                                           Q          │
│                                                          │
│File Picker                                               │
│Navigate between directory entries             Up/Down    │
│Enter/Go back a directory                      Right/Left │
│Select one file                                Space      │
│Invert file selection                          a          │
│Select all files                               A          │
│Refresh current directory                      Ctrl+R     │
│Toggle hidden files                            h          │
│Confirm file(s) selection                      Ctrl+S     │
│Exit                                           Esc        │
│                                                          │
│Progress View                                             │
│Navigate between transfers                     Up/Down    │
│Suspend transfer                               z          │
│Resume transfer                                g          │
│Cancel transfer                                x          │
│Exit                                           Esc        │
│                                                          │
│Media Player                                              │
│Toggle play/pause                              Up/Down    │
│Next                                           >          │
│Previous                                       <          │
│Rewind                                         Right      │
│Fast forward                                   Left       │
│Stop                                           ]          │
│                                                          │
│Device Screen                                             │
│Open the menu                                  Alt+m      │
│Navigate between menus                         Tab        │
│Navigate between devices/options               Up/Down    │
│Toggle adapter power state                     o          │
│Toggle discoverable state                      S          │
│Toggle pairable state                          P          │
│Toggle scan (discovery state)                  s          │
│Change adapter                                 a          │
│Send files                                     f          │
│Connect to network                             n          │
│Progress view                                  v          │
│Show/Hide player                               m/M        │
│Show device information                        i          │
│Connect to selected device                     c          │
│Pair with selected device                      p          │
│Trust selected device                          t          │
│Remove device from adapter                     d          │
│Cancel operation                               Ctrl+X     │
│Show help                                      ?          │
│Quit                                           Q          │
└──────────────────────────────────────────────────────────┘

alt+m で上部の Anapter のメニューを開くとこんな感じで,

[Adapter] [Device]
┌──────────────────────┐
│Power Off           o │
│Discoverable On     S │
│Pairable Off        P │
│Stop Scan           s │
│Change              a │
│View Downloads      v │
│Hide Media Player   M │
│Quit                Q │
└──────────────────────┘

更にそこから tabDevice を開くとこんな感じです.

[Device]
┌──────────────────────┐
│Connect             c │
│Pair                p │
│Untrust             t │
│Block               b │
│Send                f │
│Network Options     n │
│Audio Profiles      A │
│Show Media Player   m │
│Info                i │
│Remove              d │
└──────────────────────┘

よく使うペアリングは s でスキャンを行い,対象デバイスを選んで p でペアリング.
tTrusted
c で接続,切断.

オーディオデバイスだと A でオーディオプロファイルの選択も出来ます.

┌──────────────────────────────────────────────────┐
│  Off                                             │
│  High Fidelity Playback (A2DP Sink, codec SBC)   │
│  High Fidelity Playback (A2DP Sink, codec SBC-XQ)│
│• Headset Head Unit (HSP/HFP, codec CVSD)         │
│  Headset Head Unit (HSP/HFP, codec mSBC)         │
└──────────────────────────────────────────────────┘

ファイル送受信も出来ます.ファイル受信のときの格納ディレクトリは ~/bluetuith/ の下に置かれます.
但し,ファイル受信は Bluetuith が起動している必要があります.

Bluetuith の終了は Q (shift+q) で終了します.

bluetoothctl より使いやすいのはもちろんですが,Bluetuith の方は scan した後などに MAC アドレスではなく名前で表示されるので複数デバイスの扱いのときにとても便利です.

Rust製の同じような bluetui というものもあるようなのでこちらも試してみたいです.

環境1
$ ls ~/go/pkg/mod/github.com/darkhz/
bluetuith@v0.2.2  tview@v0.0.0-20240308094543-6078a888ff79
$ dpkg-query -W golang bluez bluetooth
bluetooth       5.77-1
bluez   5.77-1
golang:amd64    2:1.22~3
$ lsb_release -dr
Description:    Debian GNU/Linux trixie/sid
Release:        n/a
$ arch
x86_64
環境2
$ bluetuith --version
Bluetuith v0.2.3 (5780d74)
$ dpkg-query -W bluez
bluez   5.66-1+rpt1+deb12u2
$ lsb_release -dr
archNo LSB modules are available.
Description:    Raspbian GNU/Linux 12 (bookworm)
Release:        12
$ arch
armv7l
$ cat /sys/firmware/devicetree/base/model ;echo
Raspberry Pi 3 Model B Rev 1.2
]]>
https://matoken.org/blog/2024/08/23/tui-bluetooth-manager-bluetuith/feed/ 0
BluetoorhヘッドセットのSONY MDR-ZX330BTが動かなくなって困る https://matoken.org/blog/2022/05/22/im-having-trouble-with-my-sony-mdr-zx330bt-bluetoorh-headset-getting-stuck/ https://matoken.org/blog/2022/05/22/im-having-trouble-with-my-sony-mdr-zx330bt-bluetoorh-headset-getting-stuck/#respond Sat, 21 May 2022 23:28:57 +0000 http://matoken.org/blog/?p=3646

BluetoothヘッドセットのSONY MDR-ZX330BTですが,充電しておいて充電ランプが消えているので充電が終わってるなとケーブルを外して電源ボタンを押したのですが電源が入りません…….
もしかして壊れた?リセットボタンとかアレばいいのになと思いながら充電ケーブル指し直したりまた電源ボタンを押したりしてみましたがうんともすんとも言いません.

もしかして壊れた?ダメ元で取説を確認してみます.

取扱説明書のなかの「本機の動作がおかしいときは」の部分を見るとリセットボタンがありました.通常時は見えない部分にあって気づきませんでした.
これをSIMピンで押したところ電源が入るようになりました :)

本機の動作がおかしいときはˎ本機をリセットしてください。RESETボタンをピンなどの先の細いものでボタンの感触があるまで押します。機器登録情報は削除されません。

PCとも接続できました.

MDR ZX330BT connect

2015年4月25日発売のようです.結構経っていますね.
Bluetoothのバージョンが古かったり,充電にmicroUSBを使う必要があるあたりが古さを感じますが長時間利用できるのが気に入っています.

環境

$ bluetoothctl info 00:18:09:FF:FF:FF
Device 00:18:09:FF:FF:FF (public)
        Name: MDR-ZX330BT
        Alias: MDR-ZX330BT
        Class: 0x00240404
        Icon: audio-card
        Paired: yes
        Trusted: yes
        Blocked: no
        Connected: yes
        LegacyPairing: no
        UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
        UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
        UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
        UUID: Handsfree                 (0000111e-0000-1000-8000-00805f9b34fb)
]]>
https://matoken.org/blog/2022/05/22/im-having-trouble-with-my-sony-mdr-zx330bt-bluetoorh-headset-getting-stuck/feed/ 0
Debian bullseyeでPipeWireに切り替えてPulseAudioに戻したらA2DPが使えなくなった https://matoken.org/blog/2021/12/16/debian-bullseye-can-no-longer-use-a2dp/ https://matoken.org/blog/2021/12/16/debian-bullseye-can-no-longer-use-a2dp/#respond Thu, 16 Dec 2021 13:40:56 +0000 http://matoken.org/blog/?p=3440

Debian BullseyeのサウンドサーバのPipeWireですが,experimentalだとかBullseyeのPipeWireは現在の状態を表すものではないとか書かれています.でもちょっと試したいことがあってDebian Wikiを見ながらPulseAudioからPipeWireに切り替えてみました.少し試したあと元のPuleAudioに戻したのですが,以前使えていたBluetooth A2DPに切り替えできなくなりました.

Bluetoothプロファイルの切り替えにいつもはblueman-managerやpavuctrlを使っていますがどちらでもHSP/HFPかoffしか設定できずA2DPに切り替えようとするとうまく行きません.
pacmdではこんなメッセージ.

$ pacmd set-card-profile 4 a2dp_sink
Failed to set card profile to 'a2dp_sink'

ヘッドセットのペアリング設定を削除して設定し直ししても動作変わらず.
以下のページを見て同じ常用でGDMが掴んでしまうことがあるよう.GDM3を使っているけどプロセスは残ってないし関係なさそう.でも一応設定して動作変わらず.

以前遭遇した以下の設定も試してみましたが動作変わらず.

プロセスを見るとPipeWireのものが残っています.
これのせいかな?とPipeWireのプロセスを止めたあとPulseAudioを再起動してBluetoothヘッドセットを接続するとA2DPでつながるようになりました.

$ systemctl --user stop pipewire.service pipewire.socket
$ systemctl --user restart pulseaudio

PipeWire pkgを消してしまおうと思ったがGnomeなどが依存しているようなのでそのままにして次ログイン以降も大丈夫なようにPipeWireを無効化しました.

$ systemctl --user disable pipewire pipewire-pulse

追記)
再起動したらPipeWireのプロセスが起動してきました./etc/systemd/user の下にシステムワイドの設定があるのでこれも削除して再起動して起動してこなくなるんのを確認しました.

$ sudo rm /etc/systemd/user/sockets.target.wants/pipewire.socket \
/etc/systemd/user/default.target.wants/pipewire.service
環境
$ bluetoothctl info 00:18:09:FF:FF:FF
Device 00:18:09:FF:FF:FF (public)
        Name: MDR-ZX330BT
        Alias: MDR-ZX330BT
        Class: 0x00240404
        Icon: audio-card
        Paired: yes
        Trusted: yes
        Blocked: no
        Connected: yes
        LegacyPairing: no
        UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
        UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
        UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
        UUID: Handsfree                 (0000111e-0000-1000-8000-00805f9b34fb)
$ dpkg-query -W pipewire* pulseaudio* bluetooth* blueman* pavucontrol
blueman 2.1.4-1+b1
bluetooth       5.55-3.1
pavucontrol     4.0-2
pipewire:amd64  0.3.19-4
pipewire-bin    0.3.19-4
pulseaudio      14.2-2
pulseaudio-module-bluetooth     14.2-2
pulseaudio-module-jack  14.2-2
pulseaudio-module-zeroconf
pulseaudio-utils        14.2-2
$ lsb_release -dr
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
$ arch
x86_64
]]>
https://matoken.org/blog/2021/12/16/debian-bullseye-can-no-longer-use-a2dp/feed/ 0
Bluetooth ヘッドセットが A2DP に切り替えられなくて困る https://matoken.org/blog/2020/04/10/im-having-trouble-switching-my-bluetooth-headset-to-a2dp/ https://matoken.org/blog/2020/04/10/im-having-trouble-switching-my-bluetooth-headset-to-a2dp/#comments Fri, 10 Apr 2020 13:02:31 +0000 http://matoken.org/blog/?p=2716

最近Bluetooth ヘッドセットで A2DP に切り替えが出来なくなっていました.オーディオプロファイルを A2DP にしようとすると変更に失敗します.

20200410 03:04:39 1847144

20200410 03:04:39 1847144 2

有線のヘッドホン(セリア製100円!)で使っていたのですが頭に合わなかったり不自由なので調べることに.
以下のページを見つけました.

どうも PulseAudio の自動切り替えがうまく行っていないようでこれを無効にすることで直りました.

具体的な設定は, /etc/pulse/default.pa ファイルの load-module module-bluetooth-policyauto_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
daemonを再起動(Pulseaudioは自動復帰した)
$ 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)
]]>
https://matoken.org/blog/2020/04/10/im-having-trouble-switching-my-bluetooth-headset-to-a2dp/feed/ 2
Raspberry Pi Zero Wのbluetoothを無効にする https://matoken.org/blog/2017/09/13/disable-raspberry-pi-zero-w-bluetooth/ https://matoken.org/blog/2017/09/13/disable-raspberry-pi-zero-w-bluetooth/#respond Wed, 13 Sep 2017 14:42:58 +0000 http://matoken.org/blog/?p=1662
  • Bluetooth経由でスマホからPCまで乗っ取れる攻撃手法が発覚 ~Bluetoothがオンになっているだけで攻撃可能 – PC Watch

  • てことでRaspberry Pi Zero WのBluetoothも無効にしたいなと.
    環境はRaspbian stretch lite 2017-09-07で確認しました.

    PCで設定した以下のblacklistの手順でもokなはずですが,config.txtで無効にする方法がありそうだと調べてみました.

    まずは定番のeLinux

    • RPiconfig – eLinux.org

      There's lots more documentation of available overlays in /boot/config/README. See source on Github for more.

    てことでGithubを見に行きます.

    それらしいものがありました :)

    Name:   pi3-disable-bt
    Info:   Disable Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15
            N.B. To disable the systemd service that initialises the modem so it
            doesn't use the UART, use 'sudo systemctl disable hciuart'.
    Load:   dtoverlay=pi3-disable-bt
    Params: <None>

    早速設定してみます.

    $ echo 'dtoverlay=pi3-disable-bt' | sudo tee -a /boot/config.txt
    dtoverlay=pi3-disable-bt

    な感じで /boot/config.txt に追記して再起動しました.
    lsmodを設定前と比較するとこんな感じで居なくなっています.

    $ diff lsmod lsmod_pi3-disable-bt
    2,6d1
    < cmac                    3134  1
    < bnep                   11949  2
    < hci_uart               21190  1
    < btbcm                   7885  1 hci_uart
    < bluetooth             374820  24 hci_uart,bnep,btbcm
    9d3
    < snd_bcm2835            23131  0
    10a5,6
    > snd_bcm2835            23131  0
    > rfkill                 21373  4 cfg80211
    12d7
    < rfkill                 21373  6 bluetooth,cfg80211
    16d10
    < fixed                   3029  0
    18a13
    > fixed                   3029  0

    moduleのblacklistを設定するよりお手軽ですね :)

    恐らくRaspberry Pi 3 Bでも同様の設定は使えると思います.(持ってないので未確認)

    ]]>
    https://matoken.org/blog/2017/09/13/disable-raspberry-pi-zero-w-bluetooth/feed/ 0
    bluetoothを無効にする(Debian sid amd64) https://matoken.org/blog/2017/09/13/disabled-bluetooth_debian-sid-amd64/ https://matoken.org/blog/2017/09/13/disabled-bluetooth_debian-sid-amd64/#comments Wed, 13 Sep 2017 14:29:49 +0000 http://matoken.org/blog/?p=1660 Bluetooth経由でスマホからPCまで乗っ取れる攻撃手法が発覚 ~Bluetoothがオンになっているだけで攻撃可能 – PC Watch

    BT搭載デバイスは、ペアリング済みのデバイスだけでなく、つねにあらゆるデバイスからの着信接続を探知しているため、デバイスをまったくペアリングせずにBT接続を確立できる。このため、BlueBorneは攻撃を検知されない潜在的攻撃となっている。
    
     BlueBorne攻撃では、まず周囲のアクティブなBT接続を探知する。このさい、ペアリングのための「発見可能」モードでなくても、BTがオンになっていれば識別が可能となる。

    とても怖いです.
    手元の端末では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確認

    $ lsmod|grep -i bluetooth
    bluetooth             544768  14 btrtl,btintel,bnep,btbcm,rfcomm,btusb
    crc16                  16384  2 bluetooth,ext4
    rfkill                 24576  6 bluetooth,thinkpad_acpi,cfg80211

    モジュールをロードしないように /etc/modprobe.d/blacklist.conf というファイルに blacklist <modulename> という形式で書いていきます.

    x200 blacklistに設定

    $ echo 'blacklist btrtl
    > blacklist btintel
    > blacklist bnep
    > blacklist btbcm
    > blacklist rfcomm
    > blacklist btusb
    > blacklist bluetooth' | sudo tee -a /etc/modprobe.d/blacklist.conf

    設定したら再起動してモジュールが読み込まれないのを確認します.

    再起動してmoduleがloadされないのを確認

    $ lsmod|grep -i bluetooth

    しかしPCのBluetooth LEDインジケーターが消えません.動作上は問題ないでしょうけどちょっと気持ち悪いです.
    GPIO辺り探すと消せそうですが面倒.


    BIOSで無効にする

    PCによっては設定できないかもですが,BIOSで無効にします.これだとLEDインジケーターも光らないので良い感じです.


    https://farm5.staticflickr.com/4435/37206157365_ab607c3943.jpg


    物理的にモジュールを取り外す

    これが一番確実でしょうがそう待たずにセキュリティ修正は降りてくると思うので今回は見送りました.

    ]]>
    https://matoken.org/blog/2017/09/13/disabled-bluetooth_debian-sid-amd64/feed/ 1
    BluemanだけでNetworkManagerを使わずBluetooth tetheringを使う https://matoken.org/blog/2016/12/04/with-blueman-alone-use-bluetooth-tethering-without-using-networkmanager/ https://matoken.org/blog/2016/12/04/with-blueman-alone-use-bluetooth-tethering-without-using-networkmanager/#respond Sun, 04 Dec 2016 14:33:26 +0000 http://matoken.org/blog/?p=1471 最近の自転車移動で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に

    blueman01

    blueman02

    これでNetworkManagerのない環境でもBluetooth tetheringで繋がるようになりました :)

    ちなみにX200(9セルバッテリ)の重量は1.7kg近く,FMV-U8250(大容量バッテリ)はで700g近く+キーボード420g…….体積は結構減ってるけど案外軽くなってませんね.キーボードが案外重いです.使い勝手も大分落ちるし微妙?

    ]]>
    https://matoken.org/blog/2016/12/04/with-blueman-alone-use-bluetooth-tethering-without-using-networkmanager/feed/ 0
    PulseAudioでライン入力を使う https://matoken.org/blog/2016/05/13/pulseaudio-line-in/ https://matoken.org/blog/2016/05/13/pulseaudio-line-in/#respond Fri, 13 May 2016 03:33:58 +0000 http://matoken.org/blog/?p=1357

    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の音声が全部同時に出力できるようになりました :)

    </追記>

    環境

    ]]>
    https://matoken.org/blog/2016/05/13/pulseaudio-line-in/feed/ 0