私は ここの投稿 を読み、投稿から理解したことを実行しようとしましたが、いくつか質問があります:
/lib/firmware
は、たとえば/usr/src/linux/lib/firmware
や/usr/lib/firmware
などのどこにありますか?ポストが与えたアドレスにビルド済みのEDIDを使用して、Gvimなどのエディターで調整し、以下の情報を使用してカーネルに渡すことができますか?私が設定しようとしている解像度は1600x900 @ 60です。
1: [H PIXELS RND] : 1600.000000
2: [V LINES RND] : 450.000000
3: [V FIELD RATE RQD] : 120.000000
4: [TOP MARGIN (LINES)] : 8.000000
5: [BOT MARGIN (LINES)] : 8.000000
6: [INTERLACE] : 0.500000
7: [H PERIOD EST] : 16.648841
8: [V SYNC+BP] : 33.000000
9: [V BACK PORCH] : 30.000000
10: [TOTAL V LINES] : 500.500000
11: [V FIELD RATE EST] : 120.008471
12: [H PERIOD] : 16.650017
13: [V FIELD RATE] : 120.000000
14: [V FRAME RATE] : 60.000000
15: [LEFT MARGIN (PIXELS)] : 32.000000
16: [RIGHT MARGIN (PIXELS)] : 32.000000
17: [TOTAL ACTIVE PIXELS] : 1664.000000
18: [IDEAL DUTY CYCLE] : 25.004995
19: [H BLANK (PIXELS)] : 560.000000
20: [TOTAL PIXELS] : 2224.000000
21: [PIXEL FREQ] : 133.573440
22: [H FREQ] : 60.060000
17: [H SYNC (PIXELS)] : 176.000000
18: [H FRONT PORCH (PIXELS)] : 104.000000
36: [V ODD FRONT PORCH(LINES)] : 1.500000
はいの場合、どこでedid.bin
ファイルを入手できますか?
または、EDIDファイルを最初から作成する必要があります。はいの場合、どうすればEDIDファイルを作成できますか?
EDIDモードファームウェアの最終的な休憩場所は、/lib/firmware/edid
の下にある必要があります。ただし、多くのLinuxディストリビューションでは、サンプルのEDIDモード設定ファームウェアソースとMakefileをLinuxカーネルドキュメントのディレクトリに配置しています。 Fedoraの場合、これはkernel-doc
パッケージによって提供され、/usr/share/doc/kernel-doc-3.11.4/Documentation/EDID
の下にあります。モニターのファームウェアをコンパイルした後、起動時にgrubにアクセスできる場所であればどこにでもedidバイナリを配置できますが、規則は/lib/firmware/edid/
です。
edid.bin
ファイルはバイナリ形式であるため、微調整する正しい方法は直感的ではありません。
あなたが提供した投稿は、カスタムedidファイルを構築するための公式カーネルドキュメントへのリンクです。上記のカーネルドキュメントディレクトリのHOWTO.txt
ファイルにも同じ手順が記載されています。基本的に、サンプルファームウェアファイルの1つ、たとえば1024x768.S
を編集して、モニターのパラメーターを指定します。次に、提供されたMakefile
を使用してコンパイルし、新しいファームウェアを使用するようにgrubを構成します。
私にとって、これを達成するための2つのトリッキーなビットがありました。 1つ目は、コンパイルする必要のあるedidソースファイルを見つける場所です。これは、上記のFedoraに対して回答されました。
2つ目の注意点は、モニターの1024x768.S
に配置する正しい値を見つけることです。これを行うには、cvt
を実行して目的のモードラインを生成し、少し計算します。リフレッシュレートが60Hzでブランキングが低減された1600x900の解像度(LCDに推奨)の場合、次のようになります。
[user@Host ~]$ cvt 1600 900 60 -r
# 1600x900 59.82 Hz (CVT 1.44M9-R) hsync: 55.40 kHz; pclk: 97.50 MHz
Modeline "1600x900R" 97.50 1600 1648 1680 1760 900 903 908 926 +hsync -vsync
この出力の最後の行をHOWTO.txt
の命令と一致させることができます。
Please note that the EDID data structure expects the timing
values in a different way as compared to the standard X11 format.
X11:
HTimings: hdisp hsyncstart hsyncend htotal
VTimings: vdisp vsyncstart vsyncend vtotal
EDID:
#define XPIX hdisp
#define XBLANK htotal-hdisp
#define XOFFSET hsyncstart-hdisp
#define XPULSE hsyncend-hsyncstart
#define YPIX vdisp
#define YBLANK vtotal-vdisp
#define YOFFSET (63+(vsyncstart-vdisp))
#define YPULSE (63+(vsyncend-vsyncstart))
cvt
出力(1600 1648 1680 1760
)の最後の行の2番目から5番目の数値は4つの「HTimings」パラメーター(hdisp hsyncstart hsyncend htotal
)であり、6番目から9番目の数値(900 903 908 926
)は4つの「VTimings」パラメーター(vdisp vsyncstart vsyncend vtotal
)です。 。
最後に、最後の行に正しいCRC値を設定するために、ファームウェアをもう一度コンパイルする必要があります(詳細についてはHOWTO.txt
を参照してください)。
Xorgモードライン形式から適切なチェックサムを使用してEDIDバイナリファイルを簡単に生成するためのヘルパーを作成しました。
https://github.com/akatrevorjay/edid-generator
これを使用して、いくつかの新しいビンを簡単に生成できます。私はそれを使ってモニターに60Hzを表示し、AppleのThunderboltディスプレイのEDIDの問題に対処しています。
そのリンクでそれを使用するための指示があります!