2014年10月29日の水曜日 25時20分ぐらい

MacBookAir2011(mid)でiOSとAirDrop・Handoffをする

2014/10/30 01:26 2022/07/01 16:17

意気揚々と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に置き換えて置換する

howtoairdrophack1

/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して保存

howtoairdrophack2

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. システムレポートで「はい」を確認

howtoairdrophack3

1.18. MacとiOSデバイスのiCloudをサインアウト→サインインする。

1.19. 以下表示に変われば完了です。

howtoairdrophack4

最初のnvramオプションは戻した方がいいかもしれません。

iCloud使えばAirdropはあまりいらない気もしますが、iPhone電話連携される方にはよい機能ですね。

よいNewOSライフを!

Yosemiteのプレビューの編集機能強化がありがたいです。

コメント

コメントお待ちしています