ノルバレンのす

ノルバレンが適当にいろいろ書いたりするところです

ご無沙汰してました。リアルが忙しくて結構つらい今日この頃です。

さて本題。先日Android 4.2.2(JDQ39.SC04DOMMD4)が配信開始されたばかりのGalaxy Nexus SC-04Dでは、Android 4.0.4(IMM76K.SC04DOMLE3)からWi-FiとUSBによるテザリングが有効になっています。

BluetoothテザリングはWi-Fiによるテザリングと違い、使用できる機器が限定され速度も出ませんが、その分消費電力が少なく電池を長持ちさせることができます。スグレモノですね。

しかしこの機能、Android標準のBluetooth PANプロファイルによるテザリングは、なぜかドコモから出ている端末ではことごとく無効化されています。そこでまずはXperia acro HD SO-03Dでやったことを元にBluetoothテザリングにチャレンジしてみました。

方法は、/system/framework/framework-res.apk内のres/values/arrays.xmlにあるconfig_tether_bluetooth_regexsに「bnep\\d」という項目を足すだけという単純なもの。実際はXposedという仕組みを使って直接framework-res.apkを書き換えずにやっています。必要なモジュール(Android 4.0-4.1まで)はこちらから。(Android 4.2以降の場合では使用されるBluetoothプロトコルスタックがBluezからBluedroidに変わったため「bt-pan」を指定します)

要するにBluetoothテザリングで使われるインターフェースが指定されていない状態になっていたところを指定するようにしたというわけですね。しかし肝心のSC-04Dではうまくいきません。設定画面に項目が現れないのです。なぜでしょう。

そこでSettings.apkをバラしてみたところ、 ドコモによってテザリング設定画面に以下の様な改造が施されていたことが分かりました。
  • テザリングを有効にした際にAPNが変更できないよう設定画面をロックする
  • Bluetoothテザリングの設定項目を有効にする部分を削除
ドコモにおけるテザリングでは、パケホの上限料金を通常時とテザリング時で区別するためデータ通信の接続先APNを強制にdcmtrg.ne.jpに変更します。ここまではみなさんご存知だと思われますが、前述のXperia acro HDなどではテザリングに使用されるインターフェースの項目を指定しないことで使用不可の制御をしていました。ですがことSC-04Dに限っては設定アプリの改造をしてテザリング関連の制御をしています。

思い返せばXperia系ではシステムアプリの中にTetherEntitlementCheck.apkというアプリが含まれていました。おそらくこのアプリを使用してテザリング時の様々な制御を行なっていたのでしょう。同様にGalaxy系ではSecSettings.apkというSettings.apkと同じ働きをする設定アプリがあり、こちらのアプリ内で同様のことを行なっていたと考えられます。

ドコモから出ているGalaxy Nexus SC-04D(メーカー型番SGH-N044)は、国際モデルであるGT-I9250と同じハードウェアでありながらyakjuscというキャリアモデルのコードネームが与えられており、spモードメールやそのプッシュ受信を実現するMiniDcmWapPushHelper.apk、エリアメール、SMS、FOMAプラスエリア・SIMロック対応のモデムファームウェア・rilなどが含まれたドコモ仕様の(純正に限りなく近い)Androidが搭載されています。

実際各種ファイルの署名には純正Factory imageのGoogleによる署名ではなく製造元のサムスン電子による署名が施されています。テザリング関係の改造についてはおそらくGalaxy系の手法を流用して行われたと推測されますが、このような機能の制限があってPure Googleを標榜するとは残念な気持ちがしてなりません。 

Settings.apkについては純正のものと入れ替えを試みましたが失敗しました。おかげでアカウント関連が全部消えるという痛い目に会いましたが、上記のことが判明することの一助となったのでよしとしましょう。

結論、Bluetoothテザリングはandroid.bluetooth.BluetoothPanにあるsetBluetoothTetheringというメソッドを叩けば有効にできます。隠しAPIですがJavaのリフレクションという仕組みで呼び出すことができました。Twitterでリフレクリフレクつぶやいてたのはこれのことですね^^;

Google playストアを検索したところ、いくつかBluetoothテザリングを有効にできるアプリを見つけることができました。理想に一番近かったのは「Bluetooth Tethering On Off」ですね。私の作ったものも時間ができればここに掲載したいと思っています。

結構長い間暖めていたネタだったのですがようやくお披露目することができて嬉しいです。そしてここまで長文を読んでいただき、ありがとうございました。 

前回よりちょっと日が開いてしまっていますが、ゴールデンウィークいがかお過ごしでしたでしょうか。

さてさてブログの右側に、普段Twitterなどでお世話になっている方々のリンクなんぞを追加させてもらいました。
以上の方々です(順不同)。

夏色日傘さんは私が今こうやってTwitterで様々な方とつながっていく上で最初の架け橋となってくれた大変存在の大きな方です。数学徒でJavaラーな方でもあります。

siiさんは北海道の新米SEさんみたいです。多方面で活躍されているようですが特にKOTOKO/I've方面に明るい?

ゆっきーさんは仙台在住の自作PCクラスタで音ゲークラスタでみのりんクラスタの方です。週末都民さんでもあります。

ながといっくさんも仙台在住で法曹志望のすごい方。最近は音ゲーLOVEな長門クラスタさんであります。

ししゃもさんは長門クラスタで一児の母でゲーマーな方です。絵を描きSSも書くすごい方です。

Thinksさんは写真好きな長門クラスタのSSお兄さんです。よく涼宮ハルヒの聖地に行き、案内もしてくれる頼もしい方です。

……簡単に紹介してみましたがいかがでしょうか。何かあればご連絡ください。

そろそろ良い報告がしたいな……。

パソコンはノートPCを除いてほぼ自作です。
パーツ名を羅列するだけになりますが、今使ってるメインマシンのスペック書いておきましょうか。
  • CPU: Intel Core i5-2500K (クアッドコア/3.3GHz[TB3.7GHz]/L3 6MB/TDP 95W/HD Graphics 3000)
  • メモリ: DDR3-1333 16GB (x2 ELPIDA 4GB/x2 CFD Elixar 4GB)
  • M/B: ASUS P8Z68-M PRO (Intel Z68 Express Chipset/MicroATX)
  • グラフィック1: Intel HD Graphics 3000
  • グラフィック2: NVIDIA GeForce GTS 450 (ELSA GLADIAC GTS 450 SP 1GB)
  • HDD1(システム用): Hitachi HDS721010DLE630 (1TB SATA 6Gbps 7200rpm)
  • HDD2&3(録画用 - RAID 0): x2 Seagate ST2000DL003 (2TB SATA 6Gbps 5900rpm)
  • HDD4&5(USB 3.0 - RAID 0): x2 Western Digital WD20EARS (2TB SATA 3Gbps)
    • USB 3.0 外付けHDDケース: Ratoc RS-EC32-U3R
  • HDD6(リムーバブル): Western Digital WD10EADS (1TB SATA 3Gbps)
  • Blu-rayドライブ: Buffalo BR-H816FBS-BK (HL-DT-ST BH10NS30)
  • NIC: Intel Gigabit CT Desktop Adapter
  • PCケース: Antec Nine Hundred (ATX)
  • 電源: 玄人志向 KRPW-SS600W/85+ (600W/80PLUS BRONZE)
  • マウス: Microsoft InteliMouse Optical
  • キーボード: DELL Entry Quiet Keyboard
  • OS: Microsoft Windows 7 Professional 64-bit DSP版
組んだのは去年の3月ですが、感じとしては2年前のミドルクラスのスペックになると思います。
これにPT2を2枚差して録画マシンとしても使っています。
グラフィックはCPU内蔵のものと、今時珍しい1スロット仕様のグラフィックボードを差しています。
動画のエンコードにはCPU内蔵のQuick Sync Videoエンジンを使えるので大変便利です。
画面はデュアルディスプレイにしていますが、マウスの移動が若干不便ですね。

ハードディスクは今年の1月に故障したため急遽ストックのものに入れ替えました。
一年分のいろいろなデータが飛んで辛かった……。

次は以前使っていたマシンについても書こうと思います。

このページのトップヘ