がじぇとかいろいろと

雑記、ガジェットなどについて気ままに書いていきたいです。

Ubuntu 25.10 Desktop + Ryzen(iGPU)環境で4Kハイリフレッシュレートを無理やり出力できるようにした話

前置き

GMKtecのミニPC(Ryzen 7 PRO 6850H / Radeon 680M)でUbuntu 25.10を使ってるんだけど、どう頑張っても4K 60Hz止まりだった。Windowsだと普通に144Hz出るのに、Linuxだと急におとなしくなるのが納得いかなくて、色々触ってたら“力技だけど普通に使える解決策”に落ち着いた。

なにが詰まってたのか

  • HDMI 2.1はLinuxのドライバ事情で帯域(FRL)が解放されないので、物理的に60Hzまでしか出ない。
  • DisplayPort(USB-C Alt Mode)のほうは本来4K 144Hzいけるはずなんだけど、DSCがLinuxで不安定。ネゴに失敗すると問答無用で60Hzに落ちる。
  • モニターのEDIDも60Hzを優先する書き方になっていて、OSが素直に従ってしまう。

つまり、システム全体が「とりあえず60Hzにしておけば安全でしょ」みたいな雰囲気を醸し出していたわけだ。

解決策:EDIDをこっちから上書きしてしまう

Windows側のCRU(Custom Resolution Utility)でEDIDを編集し、そのバイナリをLinuxに読み込ませてOS側の思考を矯正する方針にした。DSCに頼らず、DisplayPortの帯域に“収まる形で”ハイリフレッシュを押し通す作戦。

CRUでやったこと

  • Base Blockの“ネイティブ解像度枠”は、あえて1080p 60Hzとかの低解像度に書き換えておとりにする。これでOSがちゃんと拡張ブロックを見るようになる。
  • Extension BlockはCTA系を全部消して、DisplayID 1.3を採用。
  • 本命の解像度は 3840x2160 / 110Hz / CVT-RB。RBにすることで帯域をギリギリ非圧縮のままHBR3内に収められる。
  • 120Hz(RB2)も試したけど、安定しなかったので110Hzが現実解。
  • 設定が終わったら、Exportでバイナリを出力今回は edid_dp_120hz_rb_v3.bin というファイル名。

Linux側の設定

  1. /lib/firmware/edid にバイナリを置く。
  2. GRUBで drm.edid_firmware=DP-3:edid/edid_dp_120hz_rb_v3.bin を指定。(DP-3は環境に合わせて変更)
  3. update-grub → 再起動。

結果

  • モニター側OSDでもdrm_infoでも、ちゃんと 4K 110Hz / RGB 8bit / 非DSC で動作しているのを確認。
  • EDID overrideは問題なく反映されてる。

総括

やってることはかなり強引なんだけど、結果としてUbuntuでも普通にハイリフレッシュが動くようになった。スクロールやウィンドウ操作の滑らかさが段違いで、デスクトップ体験としての“格”が一段上がった感じがある。

AMD + Linuxで4K高リフレッシュが出なくて悩んでる人には、意外とこの力業ルートが一番近道かもしれない。