iPhone4のためのcarrier.plistを自作する

SIMロックフリーのiPhone4を使っているといろいろなSIMカードで試してみたくなるものです。しかしSIMカードを入れ替える都度にAPN設定などは非常に手間ですから、これをSoftBankの黒SIMを入れたときのように各種設定を自動認識してくれるようにする方法です。

SIMロックフリーのiPhone4を購入し、かつJailBreakするユーザであれば自己責任という言葉をご存知かと思います。このエントリの内容は無保証です。*日本国内のSoftBank用にSIMロックされたiPhone4では確認していません。

キャリア設定ファイルはどこにあるのか

オフィシャル・キャリア・パートナー(SoftBankやat&tなど)のキャリア設定ファイルはiOSに実装されています。 /System/Library/Carrier Bundles/iPhone/に各キャリアのディレクトリがあり、同じ場所にシンボリックが設定されたPLMN(MCC/MNCを組み合わせ)コード名のディレクトリがあります。iPhone4にSIMカードを挿すと、PLMNコード(例えばドコモや日本通信は44010、SoftBankは44020)を認識し、Carrier Bundles以下にある設定ファイル(carrier.plistなど)をロードします。設定ファイルにはAPN設定やキャリアロゴ等の情報が記載されています。

ドコモや日本通信の設定ファイルはどうなっているのか

ドコモや日本通信はこの設定ファイルが用意されておらず「その他不明」という扱いをされてしまうのでUnknown.bundleがロードされます。その他不明なSIMはAPN設定やキャリアロゴ表示情報が用意されていませんので、ドコモSIMやプラチナSIMを入れ替える都度、たとえばAPN情報は設定.app>一般>ネットワークから自分で入力しなければなりません。

ドコモや日本通信もSIMカードを挿して自動設定させたい

設定ファイル(carrier.plist)にアクセスするにはJailBreakしなければなりません。iPhoneのデータ通信を司るCommCenterはサインなしのcarrier.plistを認識しないため、Cydiaにレポジトリ(http://cydia.iphonemod.com.br)を追加して、iOSバージョンに対応したCommCenter Patchを適用する必要があります。

日本通信のtalking b-microSIMプラチナサービスのcarrier.plistを自作する

必要な設定ファイルと格納場所を作ります。手っ取り早く作るにはUnknown.bundleにあるcarrier.plistをベースにします。その他、version.plist、info.plistも母艦にコピーします。母艦でProerty List Editor等を使って、carrier.plistにAPN設定とキャリアロゴ表示、FaceTimeアクティベーション(成功事例は未確認)に必要な情報を追記します。info.plistは必要に応じて変更します。作業の前には必ずバックアップをとりましょう。

サポートSIMに日本通信(ドコモFOMA網)のPLMN(Public Land Mobile Network)コードを追記します。Unknown.bundleのcarrier.plistにはオフィシャルサポートするキャリアのPLMNコードが全て記載されていますので、その最初でも最後でも構いませんので追記します。

<key>SupportedSIMs</key>
<array>
<string>44010</string>
</array>

FaceTimeのアクティベーション関係

<key>PhoneNumberRegistrationGatewayAddress</key>
<string>+447860015000</string>
<key>RegistrationOptInRequired</key>
<true/>

設定内容の詳細は、”日本通信のプラチナSIMでiPhone4のFaceTimeはアクティベーションできないのか?“をご参考まで。

キャリアロゴ表示関係

<key>StatusBarImages</key>
<array>
<dict>
<key>AllowPrexMatching</key>
<false/>
<key>CarrierName</key>
<string>NTT DOCOMO</string>
<key>DefaultImage</key>
<string>Default_CARRIER_NTTdocomo.png</string>
<key>FullScreenOpaqueImage</key>
<string>FSO_CARRIER_NTTdocomo.png</string>
<key>StatusBarCarrierName</key>
<string>NTT DoCoMo</string>
</dict>
</array>

キャリアロゴについて、詳しくは”iPhone4/iOS4.3.Xにドコモのキャリアロゴを表示する方法【iPhone JB】“をご参考まで。

APN設定関係

<key>apns</key>
<array>
<dict>
<key>apn</key>
<string>dm.jplat.net</string>
<key>password</key>
<string>bm</string>
<key>type-mask</key>
<integer>1</integer>
<key>username</key>
<string>bm@ios</string>
</dict>
<dict>
<key>apn</key>
<string>dm.jplat.net</string>
<key>password</key>
<string>u300</string>
<key>type-mask</key>
<integer>48</integer>
<key>username</key>
<string>u300@ios</string>
</dict>
<dict>
<key>apn</key>
<string></string>
<key>password</key>
<string></string>
<key>type-mask</key>
<integer>0</integer>
<key>username</key>
<string></string>
</dict>
</array>

type-maskについて補足しておきますと、この数字には意味があります。
 0:無効
 1:データ通信
 2:ビジュアルボイスメール
 4:MMS
 48:テザリング

プラチナSIMの場合は、データ通信とテザリングのAPNが分かれていますので、それぞれのtype-maskについて”1″と”48″を設定します。これがSoftBankの黒SIMは”7″ですから、smile.worldには「1:データ通信+2:ビジュアルボイスメール+4:MMS=7」という設定が割り当てられていることがわかります。この時、APN側が対応していない組み合わせを指定してしまうと設定内容は無効になりますので注意してください。

Unknown.bundle以外で使用する場合はinfo.plistの修正も必要になります。info.plistをProperty List Editor等で開いてCFBundleExecutableキーを”Unknown”から適当な名称(例:bmobile)に変更します。またCFBundleIdentifierを”com.apple.Unknown”を”com.apple.bmobile”等に変更します。

iPhone側の準備をしてファイルをアップロード

carrier.plistの編集が完了したら、設定ファイルを格納場所をiPhone側に作ります。Unknown.bundleで構わない場合は、/System/Library/Carrier Bundles/iPhone/Unknown.bundleにcarrier.plitを戻します。

Unknown.bundle以外で自作する場合は、/System/Library/Carrier Bundles/iPhone/にinfo.plistで修正したバンドル名を使用したディレクトリを作ります。上記の場合だと”bmobile.bundle”と、”.bundle”を付けるのを忘れないでください。このディレクトリにcarrier.plist、version.plist、info.plistをアップロードします。

※キャリアロゴを変更する場合は、必要に応じて画像ファイルもアップロードします。

そしてPLMNコード(44010)でUnknown.bundleまたは自作したディレクトリ(bmobile.bundle)にシンボリックリンクを設定します。

適用されているかどうかを確認する

リブートして作業は完了です。これで差し替える都度、APN設定する必要がなくなりました。ただしく反映されない場合は、iFile等で/var/mobile/Library/Carrier Bundles/を確認します。正しく認識されていれば、Unknown.bundleまたは自作したディレクトリにシンボリックリンクされています。

/var/mobile/Libraryに”Carrier Bundle”がない場合は、CommCenter Patchが適用されていない、info.plistで指定したCFBundleExecutableやCFBundleIdentifierの名称とディレクトリの不一致、PLMNコードのシンボリックが正しくないなどが考えられます。/var/mobile/Libraryに”Carrier Bundle”があるが、正しく反映されない場合は、carrier.plistの中身に誤りがある可能性があります。

ちなみに、Cydia(”http://peaboo.net/apt/”レポ追加)からリリースされている”NTTdocomo Carrier bundle”をインストールしてAPN設定を追記すれば同じ作業の効果があるように思いますが未確認です。

なお、carrier.plistの設定内容については以下のサイトが大変参考になると思います。
Carrier.plist – The iPhone WiKi
Carrier Bundle – The iPhone WiKi

  

Posted from DPad on my iPad2

iPhone4のためのcarrier.plistを自作する」への2件のフィードバック

  1. Appleのサポートページを見る限りキャリアの設定までは無理だと思います。他を調べても分からないので方法を教えていただけませんか?

コメントは受け付けていません。