web-dev-qa-db-ja.com

Bluetooth over IP?

USB over IPを実行することは可能であるようです。一部のLinuxディストリビューションの一部であるusbipを使用します。 https://www.archlinux.org/packages/?q=usbip

Bluetooth over IPにも同様のものはありますか? (NOT:IP over Bluetooth)。

これにより、たとえば、BT対応のスマートフォンをBT対応のヘッドセットからインターネットで物理的に分離できます。

Linux bnep でそれができるかもしれませんが、その方法の説明を見つけることができませんでした。

13
Johannes Ernst

私たちの技術の世界では今日すべてが可能であるように見えますが、私が知る限り、真のBluetooth-to-Bluetooth-over-IPは実装されていません。乗り越えられないわけではないが、この状況の原因である困難を試して説明します。

Bluetooth 自体は、短距離でデータを交換するためのワイヤレス技術標準です。これは通常、デバイス間の接続に使用され、セキュリティ上の目的でペアリングの概念が含まれます。 Bluetoothプロトコルは非常に用途が広く、多くの目的に使用できます。その人気は、それがグローバルにライセンスされていない(しかし規制されていない)周波数で動作するという事実から生じています。

真のBluetooth-to-Bluetooth-over-IPを使用するには、2つのBluetoothデバイスがIPでペアリングする必要があります。これは、たとえば、ヘッドセットがコンピューターではなくお互いにペアリングされているため、Skypeを使用してBluetoothヘッドセット経由でインターネット経由で話す2人と同じではありません。

ウィキペディアの記事 OSIモデル からの抜粋を以下に示します。

レイヤー1:物理レイヤー

パラレルSCSIの物理層はこの層で動作し、イーサネットの物理層やトークンリング、FDDI、ITU-T G.hn、IEEE 802.11(Wi-Fi)などの他のローカルエリアネットワークも同様に動作します。 BluetoothおよびIEEE 802.15.4などのパーソナルエリアネットワークとして.

レイヤー4:トランスポートレイヤー

標準インターネットスタックのトランスポート層プロトコルの例は、通常インターネットプロトコル(IP)の上に構築された伝送制御プロトコル(TCP)です。

TCPとUDPはトランスポートレベル4プロ​​トコルですが、Bluetoothは下位の物理レベル1プロトコルです。したがって、TCPまたはUDPをBluetoothの上で使用するのと同じように、TCPおよびUDPをイーサネットの上で使用するのと同じですが、その逆ははるかに困難です。

Bluetoothプロトコルスタックには、独自のトランスポートプロトコル(L2CAPおよびRFCOMM)が含まれています。RFCOMMリンクはL2CAPレイヤーを使用します。 RFCOMMリンクを介して、UDPパケットをカプセル化するBluetoothを介してIPトンネリングを機能させることができます。

純粋なOSI用語を使用すると、レイヤー4でレイヤー1プロトコルを使用することは不可能であり、用語の矛盾さえあります。

実際的に言えば、クライアント側のLinuxに物理Bluetoothデバイスとして宣言し、サーバー側Linuxの別のそのような仮想BluetoothデバイスとIP経由で通信するソフトウェアで作成された仮想アダプターを想像できます。しかし、OSIレイヤーのエミュレーションに伴う複雑さと、非常に用途の広いBluetoothプロトコルとそのマスタースレーブアーキテクチャを実装するために必要なプログラミング作業により、このような一般的な実装を作成することは、現時点では起こりそうにない非常に困難な作業になります。そのようなソフトウェアの需要はありません。

7
harrymc

私は実際にこれを試したことはありませんが、「Bluetooth over IP」について語っていることがわかりました。

Linux Kernel Networking は非常に専門的ですが、「Bluetooth over IP」の実行方法について説明しています。

サーバー側:

pand --listen --role=NAP

クライアント側:

pand --connect btAddressOfTheServer

これにより、仮想インターフェイスが作成されますbnep0

どうやら、これはL2CAPを提供するだけで、「ピコネット」経由でのみパケットを送信できます。しかし、L2CAPについては、IP経由でそれらを送信する方法についての考えがあります IETFドラフト:Bluetoothネットワーク経由のIPパケットの送信

IETFは、新しいプロトコルを使用して、ホストコントローラーを介してL2CAP over IPを実行することを検討する場合があります。

                       +------------+
                       |    L2CAP   |
                       +------------+
                       |     IP     |
                       +------------+
                       | Foo2 Proto.|
                       +------------+
                       | Host Cont. |
                       +------------+

図4.3.3-3番目。 IPネットワーキングの可能なBluetoothプロトコルスタック

そして、私は biPAN:A Bluetooth Extended Personal Area Network も見つけました。これは、「Bluetooth over IP」について言及していますが、残念ながら、UbiPANがフリーソフトウェアとしてリリースされているようには見えません。

3
kqw

私は最近、同じ(または同様の)考えに基づいています。私がやりたいのは、残念ながら単一ロケーションのラジオでは家全体に届かないホームオートメーションハブを使用することです。

私のセットアップは次のとおりです:bluezを実行しているコンピューター+ usbipクライアント<-LAN->物理的なbluetooth USBドングル+ usbipサーバーを備えた他のコンピューター。

これはうまく機能することがわかりました。 Bluezの観点から見ると、ローカルとリモートのUSBドングルを区別することはできません。

(Linux 4.9.80を実行しているマシン+ up-todate-usbip + Bluez 5.48; arm)

1
Lukas

わかりました、これについてもう少し調査しました。それは不可能。

理由は次のとおりです。これが機能するためには、コンピュータにBluetoothチップが必要です。情報に応答するのではなく、情報を中継する必要があります。

この機能はまだ存在しません。

ドキュメントは所有権があり機密情報であるため、現時点では共有できません。

BT SIGのメンバーである場合は、bluetooth.orgのパノラマセクションでbluetoothロードマップを表示できます。

0
Jon Carlstedt

Harrymcは正しいです。

これは不可能であるか、少なくとも実現不可能です。

スマートフォンをコンピューターとペアリングし、ヘッドセットを別のコンピューターとペアリングして、2つのBluetooth接続を確立できます。コンピュータ間の接続は、思い通りの方法でブリッジでき、すべてのBluetooth通信を中継できます。これにより、IPを介してbluetoothをブリッジしたように見え、おそらくそれらを互いに対話させ、実行しようとしていることのいくつかを実行することができます。

しかし、実際には2つのデバイス間にBluetooth接続はありません。

デバイスAはコンピューターにBluetooth接続しています。

デバイスBは別のコンピューターにBluetooth接続しています。

2つのデバイスは、ペアリングして互いに直接接続することができません。理論的には、直接のBluetoothリンクを設定できるものを構築できますが、レイヤーをトラバースしてリンクキー管理を行うことは、解決するのが悪夢であり、それはほんの始まりにすぎません。パッケージ管理と頻度を解決する方法がわかりませんホッピング、ブルートゥース周波数ホッピングレートは、単一スロットパケットで1600ホップ/秒です。

誰かが実際にこれを行ったとしたら、私は非常に感銘を受けて、内部をよく見てみたいと思います。

0
Jon Carlstedt