ペアリングなしでBluetooth通信は可能ですか?


36

私は、システムを「瞬時に」ワイヤレスで起動できるデバイスで作業しています。最初に思いついたのは、インスタントで安価な通信の利点を持つRFIDテクノロジーを使用することでした。ただし、代わりに携帯電話のBluetooth機能を使用してこのタスクを実行することに興味があります。

だから私の質問は、Bluetooth通信を使用するために、ペアリングせずに通信する方法はありますか?言い換えれば、非常に単純なレベルで、私のBluetooth受信者がコード「abc123」を期待していると仮定します。電話のようなBluetoothデバイスは、このコードを常に送信するようにプログラムされています。コードが受信されると、システムはアクセスが許可されると想定されていることをすべて開始します。このようなシステムは、もちろんセキュリティを犠牲にしてペアリングの障壁を取り除きます。

それで、この概念は可能ですか?非常に技術的なレベルではBluetoothリンクプロトコルについてほとんど理解していませんが、誰かが私をリードしてくれれば、その時点から学習を始めることができます。制約についての私の限定的な理解を考慮しないでください。


まさにそれを行うBluetoothモードがありますが、それが何と呼ばれるかわかりません。通過する携帯電話にローカル広告を送信するために使用されました。
ジッピー

2
「瞬時に」オン/オフ信号を送信するさまざまな433Mhzモジュールがあります。ガレージのドアオープナーでよく使用されます。また、固有のセキュリティを提供しませんが、安価で操作も簡単です。
pjc50

回答:


25

ええ、それは完全に可能です。私は以前にこれについてコメントし、その後さらに調査しました。トリガーとなるBluetoothデバイスに、フレンドリ名でアクティベーション信号を送信させることができます。

フレンドリ名は、ペアリングするBluetoothデバイスを検索するときにリストに表示される人間が読める名前です。これがアクティブになる速度は、受信デバイスがフレンドリ名をポーリングする速度に依存します。使用している受信デバイスの種類については触れていませんが、このPDF(Pg.35)には、範囲内のBluetoothデバイスのフレンドリ名を更新するプロセスの詳細が記載されています。

フレンドリ名は、必要に応じて何度でもポーリングできます。トリガーするデバイスのフレンドリ名がアクティベーションコードに変更されたabc123場合、受信デバイスはペアリングせずにその名前を確認し、実行しようとしているタスクをアクティブにします。これにより、多数のアクティベーションコードを使用することもできます。フレンドリーなBluetooth名で最大248バイトを取得できると思います。

また、Bluejackingに意図的に自分を開放することも検討できます。私はそれに慣れていませんが、セキュリティが問題にならない場合は機能します。


2
完璧です、これは最も有望なようです。フレンドリネームメソッドのシンプルさが気に入っており、ブルージャックも同様に素晴らしい候補のようです。
カプコン

12

簡単な答えはイエスです。ペアリングせずにBluetoothを使用することは可能です。ただし、それは常にポイントツーポイントリンクのままです。また、ペアリングを使用しない場合の潜在的な問題もあります(主にセキュリティの欠如と、この操作モードに対する適切なサポートの欠如)。それが可能かどうかは、受信機のBluetoothハードウェアによって異なります。Bluetooth低エネルギーの代わりに「標準」のBluetoothを使用していると仮定しています(これは完全に異なり、携帯電話では特にサポートされていません)。低エネルギーを使用している場合、送信機は低エネルギーデバイスになり、受信機はメッセージをリッスンするデバイスになります。私はこれを使用していませんので、これに関する情報を提供することはできませんので、「通常の」Bluetoothに固執します。

私が見ているように、克服すべき2つの問題があります:

  1. ピンペアリングをオフにする

  2. 自動接続開始

これがあなたが本当に興味を持っているものであるという印象を得るので、私は最初に2番をカバーします(これを間違って読んでいるならおifびします)電話または他の「マスター」デバイスからこれを行うには、リモートBluetoothデバイスを継続的に検索する必要があります。該当するものを認識すると、自動的に接続し、必要なアクションを開始するデータなどを送信します。他の人は、このプロセスにBluetoothフレンドリ名を使用することに言及していますが、それは確かにそれを行う1つの方法です。Bluetoothフレンドリ名(特にMicrosoft Bluetoothスタックのみではありません)の私の経験では、それらはそれほど堅牢なスキャン方法ではありません。Bluetoothデバイスクラスを使用する方がはるかに良いでしょう、一意のデバイスアドレスと同時にブロードキャストされます。このデバイスクラスには、携帯電話、ラップトップ、デスクトップなどのようなもののために事前に指定された多数のエントリがあります。非標準のデバイスクラス(たとえば、00:00:00)の1つを使用すると、すぐに大半のBluetoothデバイスを除外します。その後、残りのデバイスに接続し、何らかの要求確認通信を行ってアクションを開始できます。これを適切に曖昧にする(または2番目の考慮事項としてフレンドリ名を確認する)場合、残りの不正なデバイスを暗黙的に除外する必要があります。


番号1に関しては、一時的な接続を作成している場合、ピンペアリングは特に論理的ではありませんが、それでも目的の処理を実現する最良の方法である可能性があります。ピンのペアリングを回避する場合は、ピンをオフにして、ペアリングされていない接続を確立できます。これを行う方法は、Bluetoothレシーバーの実装に依存しますが、ここにいくつかの例を示します。

  1. Bluegiga WT12:SET BT AUTHコマンドを使用*
  2. National Semiconductor LMX9838:セキュリティモード1でGAP_SET_SECURITY_MODEコマンドを使用(ペアリングなし)

その後、ペアリングせずにデバイスに接続できます。接続を開始するデバイスが受信機と同じ場合、これは非常に簡単です。Windows PCを使用している場合は、面倒な新しい接続プロセスを作成し、「ピンを使用しない」を選択できますが、Windowsはおそらく接続時にピンを要求します(通常は0000ですが、非常に不安定です)。pybluezでpythonを使用している場合、非常に簡単です:

import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))

ただし、携帯電話から接続する場合は、はるかに複雑になります。Android SDKは、ペアになっていない接続を実際にサポートしていないようです。

現在のAndroid Bluetooth APIでは、RFCOMM接続を確立する前にデバイスをペアリングする必要があります。(Bluetooth APIとの暗号化接続を開始すると、ペアリングが自動的に実行されます。)

http://developer.android.com/guide/topics/connectivity/bluetooth.htmlから)。これを回避する方法はありますが、それらは非常に複雑であり、十分にサポートされていません。iPhoneを使用している場合、Bluetooth接続はまったく異なる種類のワーム(ライセンス供与など)であるため、今のところは残しておきます。


すべてのことを言ったが、私が今まで見たほとんどすべてのAPIは、ペアリングペアリング解除を実行します(python / pybluezの注目すべき例外はありますが、これはWindows上のMicrosoftスタックの単なるラッパーなので、常に低レベル関数を直接呼び出すことができます)。そのため、適切なデバイスクラスのデバイスを見つけたら、(事前に定義されたペアリングピン番号で)自動的にペアリングし、接続し、必要なデータを送信し、切断してからペアリングを解除します。これはユーザーの介入を必要とせず、何千回も実行していない限り(EEPROMの摩耗の問題を引き起こす可能性があります)、問題を引き起こすことはありません。また、Bluetoothを使用する非標準の方法として認識されている方法でさまざまなAPIをうまく動作させることで、多くの手間を省くことができます。


1
素晴らしい反応をありがとう!私が今調べなければならないことがたくさんあります。
カプコン

10

これは、Bluetooth Smart(またはBluetooth Low Energy / Bluetooth 4.0)と呼ばれるBluetoothブランドのテクノロジーを使用して実現できます。また、お使いの携帯電話にも依存します。

通常のBluetoothと比較した場合のLow Energyの主な利点は、消費電力がはるかに少ないことです。また、デバイスの予想寿命は、接続間隔とコインセルバッテリーでの宣伝量によって異なります。

この問題を解決するには、問題のコードをチップの広告データ内に配置します。(Bluetooth 4.0 Core Spec。Volume 3、Part C、セクション11.1.4または11.1.10)

低エネルギーチップ(TI、CSR、Nordic Semiconductor)を製造する3つの主要なチップメーカーがあります。

Nordicには、nRF8001(接続チップ、完全修飾デバイス)と呼ばれる接続チップとSoC nRF51822があります。nRF8001を使用する利点は、選択したプロセッサを使用でき、チップで処理されるため、Bluetoothの仕様を気にする必要がないことです。nRF51822の利点は、システムオンチップであり、BOMを削減し、Cortex-M0を実行しているため、リリース時に完全に認定される必要があることです。

TIには8051 SoCチップcc2540があり、CSRにはSoCチップCSRμEnergyがあります

それはすべて、プロセッサと機能/コストのニーズと好みに帰着します



1

ペアリングが成功すると、リンクキー、ペアリングされたデバイスが共有し、通信できるようにする秘密が得られます。

システムでリンクキーを設定できる場合は、はい、ペアリングは不要です。両方のデバイスで同じリンクキーを設定するだけです。この接続は、2つのデバイスがペアリングされたかのように正常にオープンエンドできます。

たとえば、Linuxの場合、ペアリング後のinfoファイルは、/ var / lib / bluetooth / local-device-address / remote-device-address /の下に各ペアリングされたデバイスに対して保存されます

Generalセクションに以下が含まれた後: [LinkKey] Key=FF00112233445566778899AABBCCDDEE Type=5 PINLength=0

これは、ペアリングせずに直接設定できます。同じことがリモートデバイスに書き込まれている場合。デバイスがペアリングされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.