【HTC J Butterfly】 OC/UC+Voltage Control 対応カーネルを作ってみた

やっとButterfly用のカーネルsourceがhtcdev で公開されたので、
試しに作成してみました。

[ad#co-1]

◯ ダウンロード

boot-dlxj-v4.zip

◯ これは何?

これは、HTC J Butterfly用のカスタムカーネルです。
bootloader を Unlock している人向けのものとなります。

OCなどの対応があるので、使い方を誤ると完全文鎮化もあり得ますので、
ご利用の場合は、全て自己責任でお願い致します。。

何か質問などがありましたら、コメント欄にどうぞ。

◯ 使い方

イメージをダウンロードして、fastbootからboot または flash します。

■ 起動を試す場合
# fastboot boot boot-dlxj-vXX.img

■ 再起動後も使いたい場合
# fastboot flash boot boot-dlxj-vXX.img

◯ Features:(今の所のカスタム機能)

 @V4 2013/05/31

  • BadAss Governor 追加
  • Lionheart Governor 追加
  • Fast Charge 対応
  • Kernel version 3.4.16
  • 最低電圧500mvへ変更
  • CIFSモジュール削除
  • Over Clocking 削除

 @V3 2013/04/18

  • Linaro コンパイラ対応 (最適化は確認中)
  • FIOPS I/O scheduler 追加
  • interactive CPU ガバナ追加
  • CIFSモジュール 追加 (/lib/modules/cifs.ko
    ※CIFSは動作不良のようなので確認中です・・。

 @V2 2013/04/13

 @V1

  • 1.7GHz Over Clocking (設定時のみ動作)
  • 192MHz Under Clocking
  • CPUのTime in State対応(CONFIG_CPU_FREQ_STAT)
  • Voltage Control 対応 (CONFIG_CPU_VOLTAGE_TABLE)

◯ CPUのTime in State対応について

CPU_FREQ_STATは、どの周波数帯がCPUに使われているかを
履歴に残せる機能ですが、有効にするとなぜかベンチマークの値が
かなり低い値となります。

CPU_FREQ_STATは、ベンチマークの値と関係ないことがわかりました。
ベンチが低い理由はGPUが200MHzで動作するからのようです。

せっかく(?)なので無効化する方法は、そのままにしておきますね。

今回はモジュールで実装ましたので、無効にしてみたい人は、
以下の rmmod を試して下さい。(再起動で有効に戻ります)

◯cpufreq_statsを無効にする

 # lsmod
 cpufreq_stats 2740 0 - Live 0x00000000 ★
 bcmdhd 500644 0 - Live 0x00000000

 # rmmod cpufreq_stats

◯cpufreq_statsを有効にする

 # insmod /system/lib/modules/cpufreq_stats.ko

◯ その他


【HTC J Butterfly】 OC/UC+Voltage Control 対応カーネルを作ってみた” への21件のフィードバック

  1. 匿名さん
    ある程度詳しい方のようですので、
    是非、ソースからビルドして修正点を、
    githubへお願いします。

    pullリクエストもいつでもお待ちしておりますので!

    1. 結論から申し上げますとKernel Tuner無しでsweep2wakeを有効化できました。
      方法はinstall-recovery.shを使用して起動時に読み込ませ該当ファイルの
      sweep2wake_endbutton、sweep2wake_startbuttondに対しキーを書き込ませました。
      但し、HOME→MENUは有効にできません(逆も然り)。
      動作するのはファイルの値に限らずBACK→MENUのみです。
      恐らくkernelの設定と思われます。

      また、install-recovery.shで動いたということはinit.dでも動くと思います。
      謎が増えましたが・・・

      私はソースからビルドをしたことがありません。
      行えることはramdiskを弄る程度です。

      しかし、HTC Jで作者様がビルドから記載されているのを拝見しました。
      この記事を参考に挑戦したいとも思いますが・・・

      それでは、今回の目標は私の形ですが、達成しました。
      色々とありがとうざいました。

        1. あっ…
          すいません…テストのスクリプト貼っちゃいました…。
          すいません…削除可能であれば一つ上のコメント削除願います。
          ちなみにstartにHOMEを設定していますがBACK→MENUとして動きます。
          上のHOMEをBACKに置き換えて下さい…。

          1. install-recovery.sh

            #!/system/bin/sh

            if [ -f /sys/android_touch/sweep2wake_startbutton ] ; then
            echo 'BACK' > /sys/android_touch/sweep2wake_startbutton
            fi

            if [ -f /sys/android_touch/sweep2wake_endbutton ] ; then
            echo 'MENU' > /sys/android_touch/sweep2wake_endbutton
            fi

            これが正解です…。

            感覚論ですが、install-recovery.shにしろKernel Tunerにしろ、BOOT.imgに記載されているcmdlineより後に実行されると思います。
            ここが引っかかるところですが、私にはそれ以上分かりません。
            ではでは、コメント汚して本当に申し訳ないです…。
            また、何かありましたらコメント致します。

  2. Sweep2Wakeですが、カーネルで値を固定にできませんか?
    もしくはinit.dサポートすれば起動時スクリプトでで対応できます。

    1. >匿名さん
      defconfigで指定はしてるんですけどね。

      init.dもカーネルサポートしなくてもROM側でアプリ入れて
      対応出来るので気が向いたら・・・って感じで考えてます。

      1. cmdlineにs2w=1 s2w_start=BACK s2w_end=MENUでREPACKしたところ、
        該当ファイルにそれぞれ記載されましたが、動作しませんでした。
        そうなりますとinit.dで起動時スクリプトしてもダメですね。
        私の目的はできればソフトを使わずkernelで対応できればとの思いです。
        今回は諦めます。
        その他作者様のkernelは動作しております。ありがとうございます。

        1. 報告有り難うございます。s2wの件はそのうち修正入れますが、
          プライオリティは低いです(最近はカスタムROM用に注力してましたので

          takoさんところのカーネルが比較的パッチも当たっているので、
          オススメですね。

          1. takoさんところのkernelも同様の結果でした。
            Kernel Tunerの動きが気になりますが、設定反映後のファイル更新は
            sweep2wake、sweep2wake_endbutton、sweep2wake_startbuttondでした。
            これはcmdlineに記載した結果と同じです。
            お時間のあるときに調査願います。
            私も引き続き調査します。

  3. 回答ありがとうございます!
    了解しました。
    調整大変でしょうけどバージョンアップ楽しみにしています♪

  4. こんにちは!
    デフォルトのGPU値がアンダークロックされてしまってるみたいなのですが、
    GPU値はいじれないのでしょうか?

    1. >ななみんさん
      コメントありがとございます。
      GPUのClockが落ちちゃう現象は色々検討中です。
      今のKernelの場合は、adb から以下実行する事で、
      元々の400MHz上限で動作するのを確認しています。

      $ adb shell "su -c echo 400000000 > /sys/devices/platform/kgsl-3d0.0/kgsl/kgsl-3d0/max_gpuclk"

  5. ありがたく使用させてもらっています

    CPUの電圧について質問があります
    電池持ちを良くしたく、ぎりぎりで動く電圧を探っているのですが
    800ma以下が設定されません

    安全対策などが組み込まれているのでしょうか?
    800ma以下で設定する方法はないでしょうか?

    1. カーネル側で制限してます<800mv

      これ以上下げると不安定になったり端末壊れたりする可能性も
      あるので、もしチャレンジした場合は、自分でビルドしてみた方が、
      良いと思います。

      あと、OCした状態でベンチ測っても温度センサーの設定で、
      無理やり周波数下げられます。

      ここは弄る予定ないので・・・。

      GPUのOCとか突っ込もうかと思ってるんで、そこら辺で、
      ベンチの値が変わるかもしれないです。

      1. さようでございましたか
        了解しました

        GPUのOC期待しております
        がんばってください

  6. 早速の返信ありがとうございます!
    stock含め色々弄りながらベンチを見てたのですが、本カーネルだとベンチのベースが低すぎてよくわからないため、
    ベンチ低下の要因と仰られているCPU_FREQ_STATを完全オフにして試してみたかったのです。
    私の環境だとrmmod cpufreq_statsにしても差がなかったもので…
    もしご面倒でなければ急ぎませんのでup頂けると有り難いです。

    1. >匿名 さん

      rmmod cpufreq_statsした後に、lsmodしてcpufreq_statsが表示されなければ、
      完全にオフと一緒です。ベンチが低くなるのは今の所どうしようもないですね・・・

      1. 返信ありがとうございます。
        lsmodでcpufreq_statsは表示されない状態での確認は済なので了解です。
        実使用上は全く問題もないし、弄った効果を見る尺度としてベンチを使ってただけなので仕様とあらば仕方ないですね。
        微調整も出来るし使いやすいので引き続き使わせて頂きます!
        ガバナとか諸々アプデしたら是非またupお願いします。

  7. CPU_FREQ_STATは、カーネル側で組み込んでますので、
    削除 してもだめだったりします。

    使ってる限りはあまり影響ないと思うんですが、
    需要があるならオフにしたものも作りますよ。

  8. 有難く使わせて頂いてます。
    ところでCPU_FREQ_STATを完全無効にする場合は、/system/lib/modules/cpufreq_stats.koを削除しちゃえば良いのでしょうか?

すいか へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です