本記事のゴール
- AirTagの位置測位データを取り出す!
- 最終的に得られる結果の例
+timestamp x y z 16466.153469 1.526608 -90.042649 -8.601441 16466.273513 1.543757 -90.120226 -1.454071 16466.395865 1.551355 -89.938739 9.001518 16466.553616 1.547471 -89.873304 15.544009 16466.673660 1.547786 -88.254214 15.305837 16466.793704 1.542401 -88.072648 8.913718 16466.913749 1.529785 -89.061435 -3.331561 16467.033793 1.533102 -90.601608 -17.429219 16467.173845 1.525131 -93.156616 -31.547601 16467.293889 1.537368 -96.305077 -43.633401 ... ... ... ...
背景
- Ultra Wide Band (UWB) を用いることで,iPhoneからAirTagの位置を高精度に測位できるようになった
- iPhoneのFind Myというアプリを通じてAirTagの位置を知ることができる
- その位置情報を生データとして収集することは一般に難しい
- 本記事ではその生データを有線または無線で取得する方法を紹介
- AirTagの位置測位データを研究者や開発者が活用できますように...
今回の準備物
- Mac mini
- iPhone 12 Pro
- AirTag (iPhoneとのペアリング済)
- USB-Lightningケーブル
共通の手順
- iPhone上でApple公式サイトからAirTagプロファイルをダウンロード
- Apple Developer未登録の場合はアカウントを作成 (無料)
- AirTags for iOSのProfileを選択してダウンロード
- これがないとデータが暗号化されたままで見れない
- 以下の手順でiPhoneにプロファイルをインストール
- ホーム画面から「設定」>「VPNとデバイス管理」を開く
- AirTags Logging Profileを選択してインストール
- Macのターミナルを開く
- Homebrewをインストールしていない場合はインストールする
- こちらを参考にすると良い
- コマンド
brew install libimobiledevice
を実行してlibimobiledeviceをインストール- このライブラリがiOSのシステムログを出力してくれる
- iPhoneをUSBケーブルでMacに接続
- 「このコンピュータを信頼しますか?」が出てきたら「信頼する」を押す
- 出てこない場合は一旦気にしなくてOK
有線接続時の手順
- iPhoneのロックを解除して画面をつけたままにする
- ターミナルでコマンド
idevicepair pair
を実行してiPhoneをMacとペアリング- Errorが出た場合
- iPhone画面上に「このコンピュータを信頼しますか?」が出ていたら「信頼する」を押す
- 上記コマンドを再実行
- Errorが出た場合
- コマンド
idevice_id
を実行してiPhoneが有線で認識されているかチェック- <8桁-16桁のUDID> (USB) と表示されたらOK
- 表示されない場合はケーブルを再接続するかデバイスの再起動を図る
- コマンド
idevicesyslog -u <UDID> | grep nearbyd
を実行してAirTagデータを受信- nearbydというプロセスがiPhoneのFind Myアプリに相当
- grepを用いてそのプロセスのシステムログのみを抽出
- iPhoneでFind Myアプリを起動してAirTagを探す
- 画面上に生データが勢いよく流れる!!
無線接続時の手順
- iPhoneのロックを解除して画面をつけたままにする
- iPhoneとMacを同じWi-Fiネットワークに接続
- MacのFinderを開いて左側のバーからiPhoneを選択
- 最近のMacOSにはiTunesが入っていない
- いくつかのアプリにiTunesの機能が分割されてFinderが同期機能を担っている
- 一般から「Wi-FiがONになっているときにこのiPhoneを表示」にチェックを入れる
- これで無線データ抽出が可能になる
- iPhoneのケーブルをMacから外す
- コマンド
idevice_id
を実行してiPhoneが無線で認識されているかチェック- <8桁-16桁のUDID> (Network) と表示されたらOK
- 表示されない場合はWi-Fiを繋ぎなおすなど
- コマンド
idevicesyslog -n -u <UDID> | grep nearbyd
を実行してAirTagデータを受信- 有線と違って無線接続のオプションである-nをコマンドに追加
- iPhoneでFind Myアプリを起動してAirTagを探す
- 画面上に生データが勢いよく流れる!!
補足
- Windowsでも同様の手順を踏めば実現可能と思われる
- Ubuntuは個人的に非推奨
- iTunesを使ってiPhoneの無線同期をONにする必要がある
- iTunesはUbuntuに対応していない
- Wineを使って仮想的にiTunesをインストールならありかもだが面倒
- 生データを整形して位置データを取り出すプロセスは今後追記予定 (2023/11/01現在)