2009/08/27

解決 CRT 在 Windows 7 中出現的螢幕解析度和更新頻率問題

螢幕更新頻率的問題:在 Windows 7 中,最多只能選擇 85Hz 的螢幕更新頻率給 CRT,即使 CRT 支援 100Hz 或以上的螢幕更新頻率。

螢幕解析度的問題:在 Windows 7 中,CRT 預設的解析度是從 CRT 螢幕硬體讀取資訊獲得。在 Windows 7 的螢幕解析度設定視窗中,預設解析度的旁邊會標有 Recommended 字樣。本人 CRT 的預設解析度是 1280x1024(的確是個 LCD 的解析度,但偶看到也有其他的大螢幕 CRT 是這樣),將解析度下調至 1024x768,就會發現解析度還是 1280x1024,但畫面置中顯示,四周留有廣闊的黑邊,這應該是一種為避免畫面失真的 LCD 顯示低解析度的方法,也就是說 CRT 在 Windows 7 中被看作是 LCD。

解決方法的原理:使用從 CRT 螢幕硬體讀取的資訊製作驅動程式,給 CRT 安裝此驅動程式。然後使用 NVIDIA 控制面板自訂解析度。

需要下載的工具:softMCCSPhoenix EDID DesignerMonitor Asset Manager


第一步:獲取 EDID(這個 EDID 就是從 CRT 螢幕硬體讀取的螢幕識別資訊)
步驟:安裝並執行 softMCCS,點 File » Save EDID as。
softMCCS_save_EDID

存檔類型選擇 Raylar EDID file
softMCCS_Raylar_EDID_file


第二步:編輯 EDID(目的是修改 EDID 使 Windows 7 能夠支援 85Hz 以上的螢幕更新頻率)
關閉 softMCCS,執行 Phoenix.exe 開啟 Phoenix EDID Designer。

第一步的從硬體獲取 EDID 可能會由於 CRT 不被 softMCCS 支援而失敗。那麼可以使用本軟體從登錄檔讀取 EDID。此時建議在 XP 或 Server 2003 等完美支援 CRT 的作業系統中運行 Phoenix EDID Designer,如果沒有的話用 Vista 也可以。

先點工具列中的登錄檔圖示,再點列表中的條目,最後點 Extract EDID。
Phoenix_EDID_Designer_Extract_EDID


點工具列中的資料夾圖示,開啟方才 softMCCS 那一步取得的 EDID。
Phoenix_EDID_Designer_open_EDID

預設是唯讀狀態,點工具列中的鉛筆圖示取消唯讀狀態才能夠修改。
Phoenix_EDID_Designer_EDID_dat

點 Standard Timings,這裡面有八個可供修改的解析度和螢幕更新頻率的組合。根據自己螢幕的使用情況修改:

  1. 首先確認要修改的那一項底部方框中的 Aspect Ratio 都是 4:3。
  2. H. Active pixels 表示解析度兩組數字的第一組,640x480 填 640、800x600 填 800、1024x768 填 1024、1280x960 填 1280,如果給定的八組解析度中沒有你想要的,那就隨便找一組用不到的解析度覆寫之。
  3. Refresh 填想要的該解析度下的螢幕更新頻率,例如 100、120,最高可以填 123(這似乎是 EDID 本身的限制?無法超越)

Phoenix_EDID_Designer_Standard_Timings

修改完成後,點工具列中的軟碟圖示儲存變更。
Phoenix_EDID_Designer_EDID_save


第三步:生成 CRT 螢幕驅動程式 INF
關閉 Phoenix EDID Designe,執行 moninfo_setup.exe 安裝 Monitor Asset Manager。點 File » Open,開啟方才修改過的 EDID。
Monitor_Asset_Manager_Open_EDID_dat

可以看到方才修改的解析度和螢幕更新頻率。點 File » Create INF,生成驅動程式 INF 檔案。
Monitor_Asset_Manager_Create_INF

只有一個檔案 monitor.inf,這個就是生成的 CRT 螢幕驅動程式。
(驅動程式檔案中有 amd64 字樣,我想可以用於 64 位元 Windows,CRT 螢幕隨附的官方驅動程式肯定都是 32 位元)
Monitor_Asset_Manager_monitor.inf


安裝 CRT 驅動程式
在 Windows 7 中,按 WinKey + R 開啟執行對話方塊,執行 devmgmt.msc。選取螢幕(通常是 Generic PnP Monitor),點右鍵,彈出的選單點 Update Driver Software,彈出的視窗選第二項 Browse my computer for driver software,之後選擇底部那項 Let me pick from a list of device drivers on my computer,點右下方的鈕 Have Disk,路徑中填入 CRT 的驅動程式檔案 INF 所在的路徑。最後點 Next,會彈出視窗問你是否安裝驅動程式,選第二項 Install this driver software anyway。


使用 NVIDIA 控制面板添加較高的螢幕更新頻率(大螢幕 CRT 使用)
前面提到的 EDID 修改有 123Hz 螢幕更新頻率的限制。在 Windows 7 中,偶們可以像在 Vista 中那樣使用 NVIDIA 控制面板添加自訂解析度、伴隨可用的較高的螢幕更新頻率。但在 Windows 7 中有需要特別注意的地方。

點左側樹狀列的 Display » Change resolution。右邊那一欄,按 Add Resolutions。勾選 Enable resolutions not exposed by the display。按 Create Custom Resolution。
NVCPL_Custom_Resolution_Creation

Timing 的 Standard 預設為 Automatic,按 Test 測試的時候有 15 秒的決定時間,這時按 CRT 螢幕上顯示 OSD 選單的按鈕會顯示此時的螢幕更新頻率。如果不是你設定的螢幕更新頻率,就按 Cancel 返回,在 Timing 的 Standard 下拉式選單中選擇 GTF,再測試的時候應該就 OK 了。
NVCPL_Custom_Resolution_Settings

如果無效的話,請嘗試先將當前的螢幕解析度切換到欲變更的解析度。比如要自訂一個 640x480 的解析度,就先將螢幕解析度切換為 640x480,再重複上述 NVIDIA 控制面板的步驟。如果畫面顯示不完全,按不到 Test 鈕,則可使用熱鍵 Alt + T 代為操作。

設定好一系列的解析度後(640x480、800x600、1024x768 等等),推薦使用 SetRes 來變更解析度:
使用 SetRes.exe 實現 Windows 一鍵切換螢幕解析度


最後一招:硬改
取決於你所使用的 CRT 螢幕,如果以上方法無效,就只得使用此方法。就是 CRT 同顯示卡的連接線纜,在連接顯示卡的那一端,拔除第 12-pin,這樣螢幕就會被 Windows 識別為「非 Generic PnP Monitor」,然後安裝螢幕原本的驅動程式、或者前述 EDID 生成的驅動程式。

取決於你所使用的 CRT 螢幕:如果 CRT 同顯示卡的連接線纜是固定在 CRT 中無法取出,那就應該喬一個「CRT 的線纜分叉器」,使用「分叉器」上的連接線纜修改;如果 CRT 同顯示卡的連接線能夠輕易從 CRT 那一端取出,那就應該喬一個 CRT 線纜用來修改。

CRT 線纜


移除第 12-pin(第一排第四個)


此方法可能造成不可預期的 Bug,也就是說不到萬不得已不要使用。具體描述看這篇:
Allowing any screen resolution on Vista

沒有留言 :

張貼留言