MacBookAir2011(mid)でiOSとAirDrop・Handoffをする
意気揚々とYosemiteにアップしたMBA2011(mid)でしたがいつまでたってもiOSとの間でAirDrop/Handoffができないので調べてみたらMBA含めて2012以降のみとのこと・・・。
でた!Appleの大事なことは言ってませんでした作戦。
あれでもMBA2011(mid)はBT4.0LE対応のはずなのに?と嘆いてたら、そういやAirPlayミラーリングの時も確かソフトウェアの制限でモジュールいじって動かした記事を読んだ覚えがあったので調べてみたところやっぱり可能とのことでした。 (MacOS8.5でPB5XXPPCドータカードが未対応だったのでバイナリ変更で動かす件は記憶に新しい出来事です。あれもう15年前?)
日本語の記事も見あたらなかったので自家版で書いておきます。
Warning
|
以降大変危険な作業なので、あくまで元記事の参考としてください。 失敗すると無線LANおよびBluetoothが使えなくなります。 実行する場合はバックアップと復元できる環境での実施をお勧めします。 下記内容につき免責とさせていただきます。 |
1. 手順
以下、MacBookAir2011mid(MacBook4,1)を対象としています。
変更点
-
バイナリエディタは使わずターミナル上のviで作業します。
-
手順22.では自分の対象機種のみ変更しています
1.1. Kext Dropをリンクからダウンロード
バイナリが動けばdmgのloopbackマウント内で実行しても構いません
1.2. ディスクユーティリティでアクセス権の修復します(不要?)
1.3. 該当コマンドでnvramのオプションを書き換えます。
sudo nvram boot-args="kext-dev-mode=1"
1.4. 再起動
1.5. 念のためバックアップしておく
mkdir ~/backup cp -a /System/Library/Extensions/IO80211Family.kext ~/backup/ cp -a /System/Library/Extensions/IOBluetoothFamily.kext ~/backup/
1.6. 一旦kextを外します
sudo mv /System/Library/Extensions/IO80211Family.kext ~/Desktop/ sudo mv /System/Library/Extensions/IOBluetoothFamily.kext ~/Desktop/
1.7. kextキャッシュ更新
sudo kextcache -system-prelinked-kernel sudo kextcache -system-caches
1.8. 再起動
これ以降のWLANもBTもkextを再配置するまで使えません
1.9. 「Mac-16桁」の値を確認します。
ioreg -l | grep "board-id" | awk -F" '{print }'
1.10. viをバイナリモードで起動してAirPortBrcm4360ファイルを編集します
vi -b ~/Desktop/IO80211Family.kext/Contents/Plugins/AirPortBrcm4360.kext/Contents/MacOS/AirPortBrcm4360
:%!xxdでバイナリ編集モードに移行
/Mac-00BE6ED71E35EB86
を探す(最初に現れるMac-の部分)
9.で見た16桁に上書きする。この時左側のdecimal表記の方を編集する
※man ascii のhexdecimalの通り
0→30〜9→39、A→41〜F→46に置き換えて置換する
/Mac-2E6FAB96566FE58C
を探す(最後に現れるMac-の部分)
同様に9.で見た16桁に上書きする。
:%!xxd -rでテキストに戻してZZして保存
(ここはキャプチャ忘れました)
1.11. viをバイナリモードで起動してIOBluetoothFamilyファイルを編集します
vi -b ~/Desktop/IOBluetoothFamily.kext/Contents/MacOS/IOBluetoothFamily
:%!xxdでバイナリ編集モードに移行
/Mac
で検索。なぜか先頭行がヒットしないのでカーソル移動。
自機にあったコードナンバーを修正
※MBA2011midの場合MacBookAir4,1→MacBookAir1,1
:%!xxd -rでZZして保存
1.12. Kextを起動して、~/Desktop/IO80211Family.kextをD&D→Install
1.13. 同様にKextを起動して、~/Desktop/IOBluetoothFamily.kextをD&D→Install
1.14. キャッシュの更新
sudo kextcache -system-prelinked-kernel sudo kextcache -system-caches
何行目かに以下が表示されればOK
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext IOBluetoothFamily.kext kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AirPortBrcm4360.kext
1.15. 再起動
これでWLANとBTが復活します。
1.16. システム環境設定→一般の下の方に追加を確認
1.17. システムレポートで「はい」を確認
1.18. MacとiOSデバイスのiCloudをサインアウト→サインインする。
1.19. 以下表示に変われば完了です。
最初のnvramオプションは戻した方がいいかもしれません。
iCloud使えばAirdropはあまりいらない気もしますが、iPhone電話連携される方にはよい機能ですね。
よいNewOSライフを!
Yosemiteのプレビューの編集機能強化がありがたいです。