Как я могу заставить драйвер Nvidia управлять моим проектором в 1280x720?

Я недавно купил BenQ W600 + проектор, что я хотел бы использовать со своим ThinkPad T410 с графикой Nvidia под управлением Ubuntu 12.10. Родное разрешение проектора 1280x720 (т.е. 720 пунктов), но я не смог настроить драйвер Nvidia для фактического использования этого разрешения. Проектор подключен к порту VGA. Драйвер nvidia-current (Я думаю).

Вот разрешения, предлагаемые параметрами настройки системы "Дисплеев". Обратите внимание, что 1280x720 не перечислен: Displays setting window

Я следовал за направлениями при "Добавлении необнаруженных разрешений" по wiki.ubuntu.com, но они приводят к ошибке:

xrandr --newmode "1280x720"x0.0   74.25  1280 1390 1430 1650  720 725 730 750 -hsync -vsync 
xrandr --addmode VGA-0 1280x720x0.0

Вот сообщение об ошибке от второго xrandr команда:

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  39
  Current serial number in output stream:  40

Я также вижу это сообщение об ошибке в /var/log/Xorg.0.log:

[  2284.687] (WW) NVIDIA(GPU-0): Unable to read EDID for display device CRT-0
[  2284.687] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[  2284.687] (**) NVIDIA(0):     device CRT-0 (Using EDID frequencies has been enabled on
[  2284.687] (**) NVIDIA(0):     all display devices.)

У меня есть другая машина, ThinkPad T510, с графикой Intel и выполнением более раннего релиза Ubuntu. На той машине хорошо работает проектор, и следующее появляется в файле журнала Xorg:

(II) intel(0): EDID vendor "BNQ", prod id 52737
(II) intel(0): Using hsync ranges from config file
(II) intel(0): Using vrefresh ranges from config file
(II) intel(0): Printing DDC gathered Modelines:
(II) intel(0): Modeline "1280x720"x0.0   74.25  1280 1390 1430 1650  720 725 730 750 -hsync -vsync (45.0 kHz)

nvidia-settings программа столь же бесполезна. Опция "Acquire EDID" отображается серым:

nvidia-settings screenshot

И это также не предлагает 1280x720 разрешение:

enter image description here

У меня нет никого /etc/X11/xorg.conf файл. Я действительно пытался работать nvidia-xconfig для создания xorg.conf файла но это, казалось, сделало все намного хуже: проектор подошел только в 640x480, и курсор мыши вовлечет на одном из дисплеев. Когда X запускается с этого xorg.conf файла, я также получаю это всплывающее поле сообщения об ошибке:

enter image description here

Как я могу заставить проектор работать в 1280x720 над моим T410?

2
задан 16 May 2013 в 23:51

3 ответа

Для этого вам нужно использовать nvidia-settings . Не те настройки дисплея, которые предлагает Ubuntu. Это потому, что драйверы являются проприетарными и не очень дружелюбными, когда дело доходит до использования подобных вещей. Перед прочтением настоятельно рекомендую прочитать Как установить драйверы Nvidia?

Вот мой тестовый пример:

У меня есть видеопучок Epson и монитор компьютера. Без видеопотока это выглядит следующим образом:

enter image description here

Теперь, подключив видеопучок и нажав Определить дисплеи в разделе Конфигурация дисплея Nvidia показывает следующее:

enter image description here

Затем я перетаскиваю поля макета вокруг (те, которые представляют видеопучок и монитор) на мой вкус и разрешение. Таким образом, они выглядят так:

enter image description here

Убедитесь, что вы выбрали тот, который хотите видеть по умолчанию в качестве основного дисплея в нижней части варианты.

Теперь, если вы хотите, чтобы оба показывали одно и то же, вам нужно сначала убедиться, что оба экрана поддерживают одинаковое или хотя бы общее разрешение. В моем случае у меня есть это:

  • Видеопучок поддерживает все разрешения 4: 3 до 1280x1024

  • Телевизионный монитор поддерживает все разрешения 16: 9 до 1920x1080

Так что мне нужно найти самое высокое разрешение, где встречаются оба. Мой был 1280x720 или 1024x768. Чтобы сделать это проще, выберите Video Beam и выберите Clone , как показано на следующем изображении в опции «Position»:

enter image description here

Make уверен, что другой монитор (ТВ-монитор в моем случае) является основным. По крайней мере один из них должен быть Первичным, а другой - Клоном, чтобы работать.

Теперь начните выбирать необходимое разрешение. Если вы ошиблись, нажмите ESC и повторяйте, пока не найдете лучший вариант для монитора и видеопотока.

Опять же, все это должно быть сделано через панель настроек Nvidia. Не все карты Nvidia будут работать с настройками дисплея, которые есть в Ubuntu, поскольку проприетарные драйверы еще недостаточно дружественны, чтобы позволить настройкам дисплея работать правильно.

0
ответ дан 16 May 2013 в 23:51

Успех!

После многих часов слепого дурачения с xorg.conf и xrandr, Я нашел решение, которое работает.

Проблема, кажется:

  1. Драйвер Nvidia настаивает на том, чтобы использовать данные EDID из дисплея, а не чего-либо установленного xrandr или в xorg.conf.
  2. По некоторым причинам драйвер Nvidia не мог считать данные EDID с моего проектора.

Таким образом решение состоит в том, чтобы обеспечить переопределение EDID. Я не мог найти один для моего конкретного дисплея, но я смог найти один для некоторого другого проектора на 720 пунктов.Работает!

После получения файла EDID и помещения его некоторое место, он установлен в xorg.conf файл путем добавления строки как это к"Screen"раздел xorg.conf:

Option         "CustomEDID" "CRT-0:/path/to/edid.bin"

Здесь"CRT-0"то, где проектор подключен: к порту VGA.

Еще одна дополнительная сложность - то, что я не мог на самом деле найти двоичный файл EDID. Вместо этого путем поиска "файла EDID на 720 пунктов", я нашел некоторые.INF файлы, которые содержат информацию EDID, извлеченную некоторой Windows-программой. Это Windows .ini файлы формата. Они содержат фактическую информацию EDID в блоке, который похож на это:

[OVERRIDDEN-EDID_AddReg]
;Base EDID
HKR,EDID_OVERRIDE,"0",0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3D,0xCB,0x81,0x07,0x00,0x00,0x00,0x0
0,0x00,0x11,0x01,0x03,0x80,0x6E,0x3E,0x78,0x0A,0xEE,0x91,0xA3,0x54,0x4C,0x99,0x26,0x0F,0x50,0x54,0x20,0x0
0,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1D,0x00,0x7
2,0x51,0xD0,0x1E,0x20,0x6E,0x28,0x55,0x00,0x53,0x6F,0x42,0x00,0x00,0x1E,0x01,0x1D,0x80,0x18,0x71,0x1C,0x1
6,0x20,0x58,0x2C,0x25,0x00,0x53,0x6F,0x42,0x00,0x00,0x9E,0x00,0x00,0x00,0xFC,0x00,0x54,0x58,0x2D,0x53,0x5
2,0x38,0x30,0x35,0x0A,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0xFD,0x00,0x3B,0x3D,0x1E,0x2E,0x08,0x00,0x0A,0x2
0,0x20,0x20,0x20,0x20,0x20,0x01,0x5A

Для превращения этого в двоичный файл я записал следующий крошечный сценарий Python:

#!/usr/bin/python

# first item was 0x01

s = "0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3D,0xCB,0x81,0x07,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x03,0x80,0x6E,0x3E,0x78,0x0A,0xEE,0x91,0xA3,0x54,0x4C,0x99,0x26,0x0F,0x50,0x54,0x20,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1D,0x00,0x72,0x51,0xD0,0x1E,0x20,0x6E,0x28,0x55,0x00,0x53,0x6F,0x42,0x00,0x00,0x1E,0x01,0x1D,0x80,0x18,0x71,0x1C,0x16,0x20,0x58,0x2C,0x25,0x00,0x53,0x6F,0x42,0x00,0x00,0x9E,0x00,0x00,0x00,0xFC,0x00,0x54,0x58,0x2D,0x53,0x52,0x38,0x30,0x35,0x0A,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0xFD,0x00,0x3B,0x3D,0x1E,0x2E,0x08,0x00,0x0A,0x20,0x20,0x20,0x20,0x20,0x20,0x01,0x5A"

s = "".join(map(lambda x : chr(int(x, 16)), s.split(",")))

f = open("edid.bin", "w")
f.write(s)
f.close()

Обратите внимание, что необходимо удалить первые три поля из строки в .inf файле: "HKR, EDID_OVERRIDE, "0", 0x01".

Чтобы проверить, что получающийся файл EDID был правильным, я использовал parse-edid (часть read-edid пакет):

tobin@thinktop:~/pathname/$ parse-edid edid.bin
parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.

    # EDID version 1 revision 3
Section "Monitor"
    # Block type: 2:0 3:fc
    Identifier "TX-SR805"
    VendorName "ONK"
    ModelName "TX-SR805"
    # Block type: 2:0 3:fc
    # Block type: 2:0 3:fd
    HorizSync 30-46
    VertRefresh 59-61
    # Max dot clock (video bandwidth) 80 MHz
    # DPMS capabilities: Active off:no  Suspend:no  Standby:no

    Mode    "1280x720"  # vfreq 60.000Hz, hfreq 45.000kHz
        DotClock    74.250000
        HTimings    1280 1390 1430 1650
        VTimings    720 725 730 750
        Flags   "+HSync" "+VSync"
    EndMode
    Mode    "1920x540"  # vfreq 60.053Hz, hfreq 33.750kHz
        DotClock    74.250000
        HTimings    1920 2008 2052 2200
        VTimings    540 542 547 562
        Flags   "Interlace" "+HSync" "+VSync"
    EndMode
    # Block type: 2:0 3:fc
    # Block type: 2:0 3:fd
EndSection

Таким образом, это казалось допустимым. Действительно, после перезапуска X-сервера, я смог войти в настройки Ubuntu Display и нажать "Detect Displays". Это видит мой поддельный 'дисплей' 50 дюймов ONKYO Corporation и счастливо управляет им в 1280x720. Требуемый еще один X сброса для получения всего работа.

... И это - то, почему мы любим Linux. (-:

3
ответ дан 16 May 2013 в 23:51

Это был кабель VGA!

Я заменил 3-метровый кабель BELKIN на более короткий и, возможно, более качественный, и теперь драйверы Nvidia автоматически обнаруживают проектор BenQ и все остальное. работы.

По словам одного обозревателя Amazon, кабель BELKIN неисправен по конструкции :

Это хорошо сконструированный кабель, но в нем отсутствует вывод 9 и он не проходит EDID. данные мониторов / телевизоров с поддержкой технологии Plug and Play, поэтому не рекомендую приобретать их.

Я провел тестирование с использованием Dell Dimension 8250 (ATI 9700) и Dell Vostro 1500 (NVIDIA 8600), а также телевизора Samsung LE40B652 40 ", который был обнаружен как монитор" без Plug and Play "и правильно отображал разрешения до 1440 x 900 @ 60 Гц с этим кабелем VGA.

Качество изображения достаточно хорошее, но в наши дни основным требованием является то, чтобы кабель VGA поддерживал функции XP / Vista в режиме Plug and Play.

0
ответ дан 16 May 2013 в 23:51

Другие вопросы по тегам:

Похожие вопросы: