2016-10-05 35 views
1

Rasbian Jessie LiteをRaspberry Pi 3でUSB/Bluetoothドングル(blueZ)5.4で実行しています。Bluetoothプロファイルをプログラムで有効/無効にする

/etc/bluetooth/main.confは、クラス= 0x0c0408です。 私は、Bluetoothデバイスを有効にし、すべての着信ペアリング要求を受け入れるQt5アプリケーションを持っています。

スマートフォンから有効なすべてのBluetoothプロファイル(A2DPおよびHFP)に正常に接続できます。

ここでは、ユーザーにどのプロファイルを有効にするかを選択させたいと考えています。したがって、私は、オンザフライでA2DPとHFPを有効/無効にする方法を探しています。 C++、bash、pythonスクリプトからは大丈夫です。

私はbluetoothサービスを再開できないので、私はクラス値を変更できません - 私はGATTサーバを稼働し続けなければなりません。

+0

Mark、あなたの問題の解決策を見つけましたか? – wojciii

+0

実際にはありません。私は商用のBTスタックを使用してしまったので、接続の前に利用可能なサービスを選択する必要があります(または、ユーザーに手動で接続を解除させる必要があります)。 – Mark

答えて

2

Bluezで任意のプロファイル/サービスを有効または無効にするには、sdptoolコマンドを使用します。あなたはどのプロファイル/サービスを有効にしたい場合は、使用することができます。同様に

sdptool add A2SRC

を使用できるプロファイル/任意のサービスを無効にする:

sdptool del A2SRC 

詳細情報は、ヘルプを使用して見つけることができますsdptoolの

sdptool - SDP tool v5.37 
Usage: 
    sdptool [options] <command> [command parameters] 
Options: 
    -h  Display help 
    -i  Specify source interface 
Commands: 
    search  Search for a service 
    browse  Browse all available services 
    records  Request all records 
    add   Add local service 
    del   Delete local service 
    get   Get local service 
    setattr  Set/Add attribute to a SDP record 
    setseq  Set/Add attribute sequence to a SDP record 

Services: 
    DID SP DUN LAN FAX OPUSH FTP PRINT HS HSAG HF HFAG SAP PBAP MAP 
    NAP GN PANU HCRP HID KEYB WIIMOTE CIP CTP A2SRC A2SNK AVRCT AVRTG 
    UDIUE UDITE SEMCHLA SR1 SYNCML SYNCMLSERV ACTIVESYNC HOTSYNC 
    PALMOS NOKID PCSUITE NFTP NSYNCML NGAGE APPLE IAP ISYNC GATT 

これで、どのようなプロファイル/サービスを有効にしたり無効にしたりできるかを説明します。

スマートフォンのユーザーにリモートからプロファイルを有効または無効にする方法を、2番目の質問に移動します。これは、Bluetoothのシリアルポートプロファイル(SPP)を通じて実現できます。簡単に説明すると、SPPはBluetooth経由のシリアルポートエミュレーションです。これはRFcommプロトコルに基づいており、A2DPおよびHFPと並行して使用できます。

ここでは、スマートフォンからRSPへのSPP接続を作成し、プロファイルを有効または無効にするコマンドを送信することを考えています。 Bluezで利用可能なrfcommコマンドを使用してコマンドラインからSPPを使用することができます。コマンドの使用方法についての詳細情報はここで見つけることができます:

https://unix.stackexchange.com/questions/92255/how-do-i-connect-and-send-data-to-a-bluetooth-serial-port-on-linux

任意のさらなる明確化は、あなたがこの上で必要な場合は、私に教えてください。

+0

答えをありがとう。私はsdptoolコマンドを試してみるつもりです。リモートコマンドについては、私はすでにこれを行うためにGATTサーバーを使用しています。だから私はそれを走らせ続ける必要があるのです! – Mark

+0

あなたはリモートコマンドの問題を解決できることを知っておいてください。あなたのプロジェクトのすべてのベスト.. – aksonlyaks

+0

私はこの答えが間違っていると思います。 sdptoolのmanページを読むと、 "del record_handle ..注:ローカルアダプタの設定は更新されず、このコマンドはSDPテストにのみ使用するべきです"(Ubuntu 16.04)。接続デバイスが "sdptool del"を使用して削除したプロファイルにうまく接続するhcidumpの出力を見ると、サービスを削除しても何の効果もありません。 – wojciii

関連する問題