HN 日本語サマリー

← 一覧へ戻る
プログラミング

Findphone: 信号強度で近くのBluetoothデバイスを見つける

Findphone: Locate a nearby Bluetooth device by signal strength (github.com)

24 pointsby helsinkiandrew12 コメント

要約

Findphoneは、コマンドラインから近くのBluetoothデバイスを信号強度に基づいて見つけるためのツールです。MDMによって「探す」機能が無効化されている場合でも、デバイスがBluetooth範囲内にあれば、その位置を特定するのに役立ちます。このツールはmacOS 13以降で動作し、信号強度をRSSI値で表示し、オプションで音によるガイダンスも提供しますが、デバイスを鳴らしたり、方向を示したりすることはできません。

全文翻訳

Findphone 信号強度で近くのBluetoothデバイスを、コマンドラインから見つけます。 「探す」機能が利用できない場合、例えばMDMによってデバイスが無効化されているものの、デバイスがまだBluetooth範囲内にあり、部屋のどこにあるかを知る必要がある場合に構築されました。 インストール Releasesからユニバーサルバイナリを入手してください: tar -xzf findphone-macos-universal.tar.gz xattr -dr com.apple.quarantine findphone ./findphone --help これは署名されていないため、macOSはダウンロード時にそれを隔離します。xattr行でそれをクリアします。 macOS 13以降が必要です。 ビルド swift build -c release cp .build/release/findphone ~/bin/findphone Xcode Command Line ToolsのSwiftツールチェーンが必要です。 依存関係はありません。 ユニバーサル arm64 + x86_64バイナリ(CIが出荷するもの)の場合: ./scripts/build-universal.sh dist findphoneの使用法 # サーベイモード: 信号強度で近くのAppleデバイスをすべて表示 findphone iphone # ハントモード: 名前(大文字小文字を区別しない)で1つのデバイスを追跡 findphone --list # ペアリング済みのデバイスとそのアドレス ハントモードで --sound を追加すると、駐車センサーのように近づくにつれて速くなるクリック音が鳴ります。部屋の反対側では約1秒に1回、信号強度が約 -50 dBm(電話の上にラップトップが置かれているような状態)に達するとブザー音に変わります。これにより、画面を見ずに耳で部屋をスキャンできます。信号が途絶えるとクリック音は止まるため、無音はデバイスがないことを意味します。 これは、少し似ていますが、ガイガーカウンターではありません。カウンターは検出された粒子ごとに1回クリックし、そのレートが測定値となります。ここではレートは平滑化された信号から計算されます。パケットは固定の0.3秒のポーリングタイマーで到着するため、その到着レートは距離についてほとんど何も語りません。 画面を録画している場合は --redact を追加してください。これはBluetoothアドレスをマスクし、サーベイモードでは検出されたデバイス名をデバイスの種類に置き換えます。なぜなら、それらの名前は必ずしもあなたのものではないからです。パブリックアドレスは安定したハードウェア識別子であり、BLEアドバタイジングアドレスとは異なりローテーションしないため、ビデオに残す価値があります。 意図的に表示されたままになるものが2つあります。ハントモードで入力した名前と、--list の名前です。なぜなら、ターゲットを選択するにはそれらを読み取る必要があるからです。--redact を使用しても、--list は撮影に安全ではありません。 ゆっくり歩いてバーを見てください。 表示されるのはdBm単位の信号強度です。これは負の値で、ゼロに近いほど近くにあります。 dBm おおよその意味 -45 腕の届く範囲 -60 同じテーブル -72 同じ部屋 -85 遠い、またはカバーの後ろ 以下 とても遠い、またはシールドされている 信号強度は距離の粗い代理です。金属、壁、人体はそれを大きく減衰させるため、2メートル離れたファイルキャビネット内のデバイスは、開けた場所で15メートル離れたデバイスと同じ読み値になることがあります。単一の数値ではなく、移動中のトレンドを信頼してください。 仕組み 3つのソースが1つの読み値に供給され、品質の高い順に並んでいます。 1. GATTリンク — BLE経由でデバイスに接続した後、readRSSI() は約3秒に1回、新しい測定値を返します。これが良い方です。 2. BLEアドバタイズメント — 受動的に観測されます。Appleデバイスは約15分ごとにアドバタイジングアドレスをローテーションし、 occasional packets にのみデバイス名を含めるため、このソースはまばらです。 3. クラシックリンク RSSI — system_profiler SPBluetoothDataType から読み取られ、ペアリング済みデバイスの安定したパブリックアドレスでキー付けされます。 ソース3には知っておくべき落とし穴があります。macOSは、その値を3秒から12秒ごとにしかリフレッシュせず、その間はキャッシュされた数値をサービスします。より速くポーリングしても、より多くの情報は得られません。0.4秒間隔で112回のポーリングで測定したところ、すべてのポーリングで値が返されましたが、同じ値が8から31回のポーリングで繰り返されました。したがって、ツールは値が実際に変化したときにのみ測定値をカウントします。これが、報告される測定値のカウントがポーリングレートよりもはるかに低く、正直である理由です。 権限 実行するターミナルでBluetoothアクセスが必要です。System Settings > Privacy & Security > Bluetooth で設定します。不足している場合はその旨が表示されます。 制限事項 デバイスを鳴らすことはできません。「探す」機能なしではそのパスはありません。 方位を与えることはできません。1つの無線は距離のみを提供し、方向は提供しません。 Bluetoothがオンになっており、範囲内にあるデバイスのみを見つけることができます。屋内では約10〜20メートル、壁を透過する場合はそれよりずっと少なくなります。