я смог сделать это, используя пользовательский EDID на экране, либо добавив это к xorg.conf
раздел:
Option "CustomEDID" "DFP-0:/path/to/file/custom_edid.bin"
или путем генерации конфигурации:
sudo nvidia-xconfig --custom-edit="CRT-0:/my/monitor.bin"
теперь главный вопрос:как создать приемлемый EDID .бин?
в Windows XP мне пришлось установить два приложения:PowerStrip (который ссылается на статья Википедии о EDID)
другое применение мы понадобится Феникс EDID дизайнер.
С PowerStrip мы получим подробную информацию о времени из текущего режима отображения; в основном необходимая информация отображается в в этой статье и это подводит итог следующему:
1) в WinXP тайминги находятся где-то на вкладке advanced settings. Вам необходимо:
Horiz Front Porch, Vert Front Porch,
Horiz Back Porch, Vert Back Porch,
Horiz Front Active, Vert Front Active,
Horiz Scan (or Sync) Width, Vert Scan Width,
Horiz Sync Polarity, Vert Sync Polarity,
and Pixel Clock.
2) в файле /etc/X11/xorg.конф есть место для режим что-то как
код:
Modeline "1768x992" 74.48 1768 1336 1472 1664 992 721 724 746 -hsync +vsync
просто пример. Не используйте это устройство.
в режим, в формате
код:
Modeline "somenamehere" <dotclock> <H1> <H2> <H3> <H4> <V1> <V2> <V3> <V4> <HP> <VP>
where dotclock = Pixel Clock
H1=Horiz Front Active
H2=H1+Horiz Front Porch
H3=H2+Horiz Sync Width
H4=H3+Horiz Back Porch
V1=Vert Front Active
V2=V1+Vert Front Porch
V3=V2+Vert Sync Width
V4=V3+Vert Back Porch
HP=Horiz Sync Polarity [-hsync/+hsync]
VP=Vert Sync Polarity [-vsync/+vsync]
простые формулы, но мне потребовались недели поиска, чтобы узнать, как преобразовать тайминги windows в модельную линию Linux.
для моего конкретного ЖК-телевизора LG42LH30FR результирующая линия:
Modeline "1080p" 172.8 1920 2040 2248 2576 1080 1081 1084 1118 -hsync +vsync
я добавил Это в свой раздел монитора, но он не работает, поэтому я пошел, чтобы добавить пользовательский EDID.
теперь создать EDID
откройте Phoenix EDID Designer, в основном я импортировал EDID из реестра Windows, и я использовал его в качестве основы для изменения, это потому, что я не знал, как заполнить раздел "цвет/ установленные тайминги", поэтому prepopulation дал мне, надеюсь, разумные значения (ну, это работает для меня, может быть, это было удачи), во всяком случае, щелкните read-only/modify
кнопка которая позволяет вариант, важные вещи, чтобы изменить
общие:
добавить все, что вы хотите здесь
Основные Параметры Дисплея:
Video Input Definition -> Digital
Display Type -> RBG color
sRGB -> check
gamma value: somewhere over 250 would be ok
стандартные тайминги: (я отключил все, кроме времени id #1)
H. Active Pixels (use the value obtained from PowerStrip, for full hd it should be 1920)
refresh rate (for me its 60Hz)
Подробная Тайминги:
set all blocks to "unused" except block #1:
Pixel Clock: (use from PS obtained info)
H/V Active Pixel : from PS info
H/V Blank : from PS info. this is actually **Front Porch**
H/V Sync Offset: from PS info. this is actually **Back Porch**
H/V Sync width: from PS info
сделано. Теперь сохраните полученный файл, можно открыть его, это текстовый файл.
вам нужен один дополнительный шаг, чтобы преобразовать его в требуемый 128 байт .файл bin EDID; в основном я буду указывать главная статья, описывающая преобразование, но подводя итог, вам придется
strip
все из файла, кроме шестнадцатеричной матрицы цифр
- скомпилировать это:
#include <stdio.h>
int main()
{
while (!feof(stdin))
{
unsigned char i;
scanf("%02X ", &i);
printf("%c", i);
}
return 0;
}
и
# gcc comp.c -o comp
# ./comp < custom_edid.dat > custom_edid.bin
готово! Перезапустите Ubuntu (после добавления пользовательского параметра конфигурации edid, объясненного в начале сообщения) и теперь на Nvidia X Server Настройки, вы должны быть в состоянии установить пользовательские разрешения.