vivoスマホのリフレッシュレートをroot不要で144Hzに固定できるツール「vivo-HighRefresh-NoRoot」を公開しました。
root不要で144Hzに固定
vivo-HighRefresh-NoRootは、iQOO 15 Ultraなどのvivoスマホで画面のリフレッシュレートを144Hzに固定するためのツールです。
root化やMagisk、ブートローダーアンロックは不要です。
その他のvivo/iQOOスマホでの動作やiQOO Pad Ultraでの165Hz動作はまだ確認していません。

vivo独自のrmsサービスを利用
vivoのシステムは、rmsという独自のサービスを通じて画面のリフレッシュレートを管理しています。
Android標準のservice callコマンドでは、このサービスに正しい形式で要求を送れません。
そこでこのツールは、vivoのシステム自身と同じ形式で要求を送る小さなプログラム「RmsVote.dex」をadb経由でスマホ上で動かしています。
送り主をシステム自身として扱わせるため、root権限がなくても144Hzの指定が受け付けられます。
144Hzはvivoが一部のゲーム向けに用意している特別なモードなので、このモードを使うための指定も合わせて送っています。

必要なものと事前準備
使うにはadbコマンドが使えるパソコンと、bashが動く環境が必要です。
WindowsならWSLやGit Bash、MacやLinuxならターミナルからそのまま実行できます。
Android端末上のTermuxからワイヤレスデバッグ経由で使うことも可能。
スマホ側では開発者向けオプションを有効にし、USBデバッグまたはワイヤレスデバッグをオンにしておきます。
ビルド済みのファイルも同梱しているので、GitHubからダウンロードすれば自分でビルドしなくても使えます。
使い方と元に戻す方法
まずは./vivo-rms.sh modesを実行し、パネルが対応しているリフレッシュレートを確認します。
144が表示されれば、./vivo-rms.sh set 144で144Hzに固定できます。
現在のレートは./vivo-rms.sh getで確認でき、144Hzになっていれば「rate=144.0」と表示されます。
固定は解除するか再起動するまで続く仕様。
元に戻すときは./vivo-rms.sh release 0 900001を実行します。
Ctrl-Cを押したときに自動で解除したい場合は、setの代わりにholdを使います。
アプリ側の指定が優先される
一部のアプリは、自分で画面のリフレッシュレートを指定しています。
そうしたアプリを表示している間はアプリ側の指定が優先され、144Hzにならないことがあります。
どの要求が採用されているかは./vivo-rms.sh reasonで確認可能。
「RmsVote|144」と表示されればこのツールの指定が、「reqFps:」で始まる表示ならアプリ側の指定が採用されています。

まとめ
vivo-HighRefresh-NoRootを使えば、iQOO 15 Ultraなどのvivoスマホをroot不要で144Hzに固定できます。
adbコマンドを数回送るだけで設定でき、元に戻すのも簡単。
普段のスクロールやゲームをより滑らかにしたい方は、自己責任のうえで試してみてください。

