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側の設定
/lib/firmware/edidにバイナリを置く。- GRUBで
drm.edid_firmware=DP-3:edid/edid_dp_120hz_rb_v3.binを指定。(DP-3は環境に合わせて変更) update-grub→ 再起動。
結果
- モニター側OSDでもdrm_infoでも、ちゃんと 4K 110Hz / RGB 8bit / 非DSC で動作しているのを確認。
- EDID overrideは問題なく反映されてる。
総括
やってることはかなり強引なんだけど、結果としてUbuntuでも普通にハイリフレッシュが動くようになった。スクロールやウィンドウ操作の滑らかさが段違いで、デスクトップ体験としての“格”が一段上がった感じがある。
AMD + Linuxで4K高リフレッシュが出なくて悩んでる人には、意外とこの力業ルートが一番近道かもしれない。