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

Я бы рекомендовал просто использовать yakuake, терминал в том же стиле, что и guake для рабочего стола kde.

Вы можете установить его, запустив sudo apt-get install yakuake.

1
задан 17 May 2013 в 00:51

2 ответа

Успех!

После многих часов слепо обманывания с помощью xorg.conf и xrandr я нашел решение, которое работает.

Проблема заключается в следующем:

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

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

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

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

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

Еще одно дополнительное осложнение состоит в том, что я не смог найти бинарный EDID-файл. Вместо этого, выполнив поиск файла «720p EDID», я нашел некоторые .INF-файлы, содержащие информацию EDID, извлеченную некоторой программой 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». Он видит мой поддельный дисплей «ONKYO Corporation 50» и счастливо управляет его на 1280x720. Требуется еще один X-сброс, чтобы все работало.

... И поэтому мы любим Linux. (-: [ ! d16]

3
ответ дан 24 May 2018 в 22:07

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

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

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

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

enter image description here

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

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

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

Видеобарабан поддерживает все разрешения 4: 3 до 1280x1024 ТВ-монитор поддерживает все разрешения 16: 9 до 1920x1080

Итак, что мне нужно сделать, это найти самое высокое разрешение, где оба встречаются. Шахта была 1280x720 или 1024x768. Чтобы сделать это проще, выберите видеосигнал и выберите Первичный дисплей , как показано на следующем изображении в опции «Позиция»:

enter image description here [!d26 ]

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

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

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

0
ответ дан 24 May 2018 в 22:07
  • 1
    Спасибо за эти усилия, однако я не думаю, что ваш ответ касается моего вопроса. (1) Я уже запускаю собственные драйверы Nvidia, версия 310.14; (2) Разрешение, которое я хочу, не отображается в поле выбора; и (3) я не хочу клонировать дисплеи. – nibot 17 May 2013 в 00:49
  • 2
    @nibot вы можете выбрать следующее более высокое разрешение и посмотреть, что он работает? Если да, то вы можете настроить окно просмотра через настройки nvidia. Если вы нажмете кнопку «Дополнительно», вы увидите некоторые параметры, отображающие разрешение, и вы можете изменить это. Подобно тому, что я упомянул в нижней части этого ответа askubuntu.com/questions/80324/… – Luis Alvarado♦ 17 May 2013 в 01:28

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

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