ファラデーケージでAirPods Pro 2の補聴器機能の地域制限を回避する
(lagrangepoint.substack.com)- iOS 18.1以降、AirPods Pro 2を補聴器のように使えるようになったが、地域制限のため、インドでは難聴のユーザーが中核機能をすぐには利用できなかった
- 制限条件は、対応国に居住しているかどうか、iOS 18.1以上、ファームウェア7B19以上といった複数の軸にまたがっており、デバイスはIP・ロケール・GPS・モバイルネットワーク・WiFi位置情報を総合して位置を判断できた
- プロキシ操作とXcodeのCoreLocationシミュレーションは失敗し、
locationdのログと設定の手掛かりから、シミュレーション位置は規制ドメイン判定に使われていないように見えた - 最終的にWigleのデータとESP32でカリフォルニア州Menlo ParkのWiFi環境を模倣し、アルミホイルの箱と電子レンジで周辺信号を減らすファラデーケージ実験が行われた
- 一度有効化されたHearing Aid機能はiCloudアカウントに同期され、他のデバイスでも利用できた。地域制限された機能を実際の利用者に開放するための再現手順が、重要な課題として残った
AirPods Pro 2の補聴器機能における地域制限
- iOS 18.1アップデート直後、難聴のある祖父母のためにAirPods Pro 2を購入したが、AppleがHearing Aid機能を米国と一部の国に制限していたため、インドでは事実上利用できなかった
- 一般的な補聴器は補正能力に応じて、₹50,000から₹8L以上まで費用がかかることがある
- Appleは、AirPodsの補聴器機能が特に音声周波数付近で最大60dbHLまで聴力を補正できると宣伝している
- 対応地域にいて、AirPods Pro 2を所有し、iOS 18.1以上とファームウェア7B19以上を使用している場合、Healthアプリで該当機能の画面を見ることができた
- iOS 18.1以上のデバイスで機能を「有効化」すると、ファームウェア7A294のようなより古いバージョンのデバイスにも機能をプッシュできた
iOSが位置を判断する経路
- 初期調査では、iOSデバイスは複数の経路でユーザーの国と地域を判断できた
https://gspe1-ssl.ls.apple.com/pep/gccへGETリクエストを送り、IP位置に基づく国コードを受け取る- Apple Storeの地域設定を確認する
- デバイスのロケール、タイムゾーン、言語を参照できる
- GPSとモバイルネットワークを備えたデバイスでは、より直接的な位置判定も可能だった
- GPS信号に基づく位置
- MCC/MNCを内部データベースと比較する、モバイルネットワークベースの位置判定
- 実験範囲を絞るため、通信機能のないiPad第10世代WiFiモデルを使用した
- GPSと基地局をスプーフィングする方法も、ファラデーケージを作れば不可能ではないが、はるかに多くの作業が必要だった
失敗した回避策:プロキシと位置シミュレーション
- まずiOS設定でロケールと地域を変更し、デバイスのネットワークトラフィックをノートPC経由でプロキシして、地理位置エンドポイントの応答が
INではなくUSのように見えるようにした - Xcodeのシミュレーション位置機能でCoreLocationもスプーフィングしようとした
- この方法は動作しなかった
- 証明書ピンニング(certificate pinning)のため、複数のアプリや設定画面でAppleサーバーへの接続が失敗した
- 機能有効化に必要なAppleサーバー接続が遮断された可能性はあったが、完全には検証できなかった
- コンソールログには機能が有効化されるはずに見えるメッセージが表示されていたが、実際のHearing Aid設定画面は開かなかった
locationdから見えた手掛かり
- 翌日ログを再確認すると、IP位置とロケールをスプーフィングしていたにもかかわらず、デバイスが米国にいないと判断しているようなメッセージが見えた
countrydとlocationdのバイナリを抽出し、関連文字列を探したlocationd内でAllowSimulatedLocationというブール設定が確認され、デフォルト値は0だったskipUpdatingRegulatoryDomainのgetterも見つかり、sendUpdateToRDIfAllowedで規制ドメイン更新の可否を判断するために使われていると推測された- Xcode内蔵ツールでCoreLocationをシミュレーションしても、Hearing Aidの規制ドメイン判定には通用しないという結論に至った
- Hearing Aid機能はmacOSから制御できるが、有効化はiOSデバイス経由で行う必要があった
- SIPを無効化したmacOSでバイナリを修正し、機能を直接有効化する方法も可能性として残ったが、この方向は探らなかった
WiFi位置情報をだます方法
- 最新デバイスは周辺のWiFi SSID、ルーターやデバイスのMACアドレス、GPSを組み合わせて、都市単位の位置を三角測量できる
- WiFi専用iPadがGPSやセルラーなしでもアプリで正確な位置を表示できた理由も、WiFi測位だった
- 公開WiFi位置データベースの1つであるWigleに登録し、カリフォルニア州Menlo Parkのデータを取得した
- Skyliftをフォークして修正し、ESP32がWiFi SSIDを高速に巡回してブロードキャストするよう構成した
- ESP32が別地域の無線環境を模倣する方式である
- 巡回するSSID数を10個から100個に増やした
- Lagrange Point周辺の家々から実際のWiFiネットワークが多数出ていたため、この信号を弱めるか圧倒しなければ、iPadが他の周辺ネットワークを報告する可能性があった
ファラデーケージと電子レンジの実験
- 初期のファラデーケージは、段ボール箱をアルミホイルで包んで作った
- 箱の中にはカリフォルニアのSSIDをブロードキャストするESP32とiPadを入れ、iPadはコンソールログとインターネットアクセスのためにノートPCへ接続した
- WiFiと電子レンジがどちらも2.4GHz帯を使用する点を利用し、漏れのある電子レンジを最大出力で動かして、周囲のしつこいネットワーク信号を遮断しようとした
- iPadを箱の中に入れた後、5分後に再起動してネットワークをオンにするスクリプトを構成した
- 最初の試行ではiPadがまだ
IN地域として認識されたが、ファラデーケージ・電子レンジによる妨害・再起動の過程を何度も調整した後、コンソールで目的の地域変更メッセージが確認された - その後iPadを取り出してAirPodsを開くと、すぐにHearing Aid設定プロセスが表示された
反復可能な手順と大量有効化計画
- 概念実証が終わった後、機能を必要とする人々に開放するため、より安定した再現手順を作り始めた
- 数日間実験を繰り返し、より恒久的なファラデーケージを製作した
- BengaluruでAirPodsを補聴器のように使えると助けになる人々のため、Lagrange Pointで小規模な有効化キャンプを運営する計画を立てた
- 参加やアップデートはXアカウントとツイートスレッドを通じて受け付けることにした
有効化後の動作
- Hearing Aid機能はAirPodsにプッシュされるイコライザープリセットのように見え、透明モードを置き換えるものだった
- 一度Hearing Aid機能を有効化すると、機能フラグがiCloudアカウントに同期される
- この同期のおかげで、すべてのデバイスで同じ手順を繰り返さなくても機能を利用できた
1件のコメント
Hacker News のコメント
Hearing Aid 機能は実際には AirPods にプッシュされるイコライザープリセットで、透明モードを置き換えるもののように見える。
Apple がこれを「補聴器」としてマーケティングしたり、医療用語を使ったりしなければ、規制当局が飛びつくことはなかったのではないか。パラメトリックイコライザーと透明モードを備えた他の完全ワイヤレスイヤホンでも同じことはできる。
その代わりマーケティング上の優位性は失っただろうが、おそらくそれ自体が計算済みの大きなリスクだったのかもしれない。こうしたデバイスには、処理性能と柔軟性がとてつもなく詰め込まれている。悪名高い JieLi SoC を使う10ドル未満の製品でさえ、耳ごとに 160MHz の32ビットコンピューターが入っているようなものだ。
まだ オープンソースファームウェアを掲げた完全ワイヤレスイヤホンがないのは意外で、中国・ロシアのコミュニティ方面ではカスタマイズ作業が一部あったように見える。
Apple が「補聴器のようにある程度動作する」程度にしか言わなければ、店頭販売の目立つ場所にポスターを貼る他ブランドに比べてかなり不利になる。もちろんオンライン販売や、高い信頼性を必ずしも必要としない人たちには、Apple がなお勝てるかもしれない。
https://electronics.sony.com/otc-hearing-aids
https://audiochamps.com/what-does-tws-mean/
つまり Bluetooth イヤホンということだ。
音量のような別の規制上の問題があるのではと心配したが、具体的に何があるのかは思いつかない。
「WiFi と電子レンジは同じ 2.4GHz の周波数で動作するので、漏れのある電子レンジを最大出力で動かし、空中の継続的なネットワーク信号を遮断した」という部分があるが、興味深いことに WiFi はこうした干渉を意図的に避けようとする。
電子レンジは駆動している交流電源のゼロクロス時点では出力せず、その区間には電波を妨害する信号が空中にない。WiFi は送信前にまず待ち受けるため、他のデバイスと衝突しないようにしようとし、電子レンジの信号はこの検知を引き起こすのに十分だ。
電子レンジが半波方式で 1/120 秒の区間が毎秒60回生じるのか、それともゼロクロス付近で干渉するには出力が足りないしきい値区間だけがあるのかは覚えていない。ここでは電子レンジは実際には大した役割を果たしていなかった可能性が高そうだ。
ただし別のときには、目立つ影響がなかったケースもあった。
Reddit で誰かが、特殊な URL で 聴力テスト機能に直接アクセスできると教えてくれた。
x-apple-health://HearingAppPlugin.healthplugin/HearingTest
Hearing Aid モードをオンにする似たようなディープリンクも見つけられるのか気になる。
https://www.reddit.com/r/AirpodsPro/comments/1gftyqo/is_the_...
ある程度は、今の方法のほうが単に簡単なアプローチだった。
確かに何かありそうではある。Apple が iOS 18 で URL ハンドラースキームを変えたため、以前のリポジトリのうちこれを参照していたものは、もう動作しない。
執筆者の1人、Rithwik です。質問があれば答えます。
Apple 基準では、今でも完全に「カナダ人」だ。EU に地域制限されたサードパーティ App Store 関連機能はまったく見えず、EU で使えない Apple Intelligence のような機能にはアクセスできる。
補聴器機能はカナダとスペインのどちらでも提供されていないのでテストできないが、補聴器の地域制限が Apple の他の地域制限・地域アクティベーション機能とどう違うのか気になる。
どうやって始めたのか、勧められる資料があるのか気になる。それから結局、とても高価なイヤホンを買うことになったわけではないと言っていたが、実際にはどんなイヤホンを使っている、あるいは買いたいと思っているのかも気になる。
この設定は一定時間が経つとリセットされるのか、それとも一度やれば終わりなのか気になる
iPad や AirPods が、自分たちはインドに長くいすぎると判断して機能を削除してしまうのではないかと心配している
機能が有効になると iCloud アカウントにフラグが設定されるので、どこへ旅行しても動作し続けます。同時に、AirPods の外部音取り込みモードにイコライザープロファイルがプッシュされ、補聴器機能がオンになります
一度完了すれば、AirPods を初期化しない限り維持されます
ただし興味深い特殊ケースがあります。他人の AirPods でこの機能を有効化したものの、その人のデバイスやアカウントでは機能が「利用可能」状態でない場合、その人は自分のデバイスから設定を調整できません
この事例は、自由ソフトウェアがなぜ重要なのかをよく示している。地域ロックはここではまったく筋の通らない敵対的な慣行だ
ソフトウェアやファームウェアが自由でオープンであれば、地域ロックをパッチで取り除くか無効化できたはずだ。そもそもそうした制限が入らなかった可能性も高い
承認済みの国では、規制当局がこれを医療補助機器として承認する必要があったはずだ。医療補助機器などが承認なしに販売できるなら、実際に人を傷つけたり死なせたりし得るものまで医療補助機器の名目で売られてしまう
ここでの問題は、この事例が害のない補助機能のように見えるため、禁止するのが滑稽に見える点だ。しかし規制が機能しなければ何の役にも立たない
結局、他国の規制当局が遅いのか、最悪の場合 Apple が承認を申請していないのかもしれない
Hearing Protection モードが実際に何をしているのか知っている人がいるのか気になる。ノルウェー、そして北米以外では提供されていない
AirPods Pro 2 を以前から耳の保護用に使っていて、かなりうまく機能していた。単に「Hearing Protection」という表現を米国でしか使えないからなのか、それとも通常の Pro 2 のノイズキャンセリングより実際に優れた機能なのかが気になる
Hearing Protection が動作しているのを聞くと、マルチバンドコンプレッションのように聞こえる。つまり可聴周波数帯域を複数の帯域に分け、それぞれの帯域に個別に圧縮をかける方式だ。ただ、これも以前からすでに行っていたように思う
これが補聴器機能の発表前からあったアクセシビリティのカスタマイズされた外部音取り込みモードと実際に違うのか気になる
ヘルスケアアプリに保存されたオージオグラムを使うことができた。ただし、カスタマイズされた外部音取り込みモードの音はかなり悪く、くし形フィルターのように聞こえた
本当に素晴らしい。i3Detroit でウォークインクローゼット大のファラデーケージを作っている。もちろん米国にあるのでこのハック自体には必要ないが、1つあると面白い理由は山ほどある
最大の理由は、すぐ近くに WOMC の送信機があり、EIRP が 135,000 ワットだという点だ。これがあらゆる機器に入り込み、ほかの無線周波数測定を難しくしている。増幅器の調整のような作業をするときは、静かな環境で基本をしっかり固めてから、相互変調のような潜在的原因を追加するのがよい
WiFi、Bluetooth などの無線機器を、周囲の大量のノードなしにデバッグできる。スニファー出力でフィルタリングすることもできるが、入力そのものをフィルタリングする方が楽しい
周波数免許の心配をせずに 1G や 2G の携帯電話網を立ち上げることもできる。ハッカースペースの既存ネットワークを妨害し得る攻撃的な WiFi 手法を練習することもできる
FCC のない区域で GPS スプーファーをいじったり、責任を持ってやりたい面白い実験ができる。iPhone を中に閉じ込めておけば、自分で再起動するのかも見られる
デバイスを中に入れて、免許を気にせず内部の空気を電波で満たしてみたくてうずうずしている
実際に Indian Institute of Science で実物大のファラデーケージを見たが、私たちのアプローチや構造と似ていて気分がよかった
この場合は証明書ピンニングもかなり簡単に解決できそうだ。単にプロキシや VPN を使えばいい。それでもファラデーケージ騒動はかなり格好いい
おそらくどこかの VPS で Tailscale を使ってもよかったと思う