縁 茶
~気分は床の間~
feel like tokonoma

count : 559722 from 1999.11.01
MacBookAir2011(mid)でiOSとAirDrop・Handoffをする
意気揚々とYosemiteにアップしたMBA2011(mid)でしたが
いつまでたってもiOSとの間でAirDrop/Handoffができないので
調べてみたらMBA含めて2012以降のみとのこと・・・。
でた!Appleの大事なことは言ってませんでした作戦。

あれでもMBA2011(mid)はBT4.0LE対応のはずなのに?と嘆いてたら、
そういやAirPlayミラーリングの時も確かソフトウェアの制限で
モジュールいじって動かした記事を読んだ覚えがあったので、
調べてみたところやっぱり可能とのことでした。
(MacOS8.5でPB5XXPPCドータカードが未対応だったので
 バイナリ変更で動かす件は記憶に新しい出来事です、あれもう15年前?)
日本語の記事も見あたらなかったので自家版で書いておきます。

(注意)
以降大変危険な作業なので、あくまで元記事の参考としてください。
失敗すると無線LANおよびBluetoothが使えなくなります。
実行する場合はバックアップと復元できる環境での実施をお勧めします。
下記内容につき免責とさせていただきます。

参考にした元リンク:MacRumors
http://forums.macrumors.com/showthread.php?t=1803192

以下、MacBookAir2011mid(MacBook4,1)を対象としています。


変更点
・バイナリエディタは使わずターミナル上のviで作業します。
・手順22.では自分の対象機種のみ変更しています

1.Kext Dropをリンクからダウンロード
 バイナリが動けばdmgのloopbackマウント内で実行しても構いません

2.ディスクユーティリティでアクセス権の修復します(不要?)。

3.該当コマンドでnvramのオプションを書き換えます。
sudo nvram boot-args="kext-dev-mode=1"

4.再起動

5.念のためバックアップしておく
mkdir ~/backup
cp -a /System/Library/Extensions/IO80211Family.kext ~/backup/
cp -a /System/Library/Extensions/IOBluetoothFamily.kext ~/backup/

6.一旦kextを外します
sudo mv /System/Library/Extensions/IO80211Family.kext ~/Desktop/
sudo mv /System/Library/Extensions/IOBluetoothFamily.kext ~/Desktop/

7.kextキャッシュ更新
sudo kextcache -system-prelinked-kernel
sudo kextcache -system-caches

8.再起動
(これ以降のWLANもBTもkextを再配置するまで使えません)

9.「Mac-16桁」の値を確認します。
ioreg -l | grep "board-id" | awk -F\" '{print $4}'

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

(ここはキャプチャ忘れました)

11.viをバイナリモードで起動してIOBluetoothFamilyファイルを編集します
vi -b ~/Desktop/IOBluetoothFamily.kext/Contents/MacOS/IOBluetoothFamily

:%!xxdでバイナリ編集モードに移行

/Macで検索。なぜか先頭行がヒットしないのでカーソル移動。
自機にあったコードナンバーを修正
※MBA2011midの場合MacBookAir4,1→MacBookAir1,1

:%!xxd -rでZZして保存




12.Kextを起動して、~/Desktop/IO80211Family.kextをD&D→Install
13.同様にKextを起動して、~/Desktop/IOBluetoothFamily.kextをD&D→Install
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


15.再起動
これでWLANとBTが復活します。

16.システム環境設定→一般の下の方に追加を確認
17.システムレポートで「はい」を確認




18.MacとiOSデバイスのiCloudをサインアウト→サインインする。
19.以下表示に変われば完了です。



最初のnvramオプションは戻した方がいいかもしれません。
iCloud使えばAirdropはあまりいらない気もしますが、
iPhone電話連携される方にはよい機能ですね。よいNewOSライフを!


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