LINUX.ORG.RU

Возможно ли запретить автоматические Modeline в Xorg?

 , ,


0

3

Есть ноутбук, есть у него дисплей. По каким-то неведомым мне причинам он сообщает неправильный список разрешений X-серверу.

xrandr

Screen 0: minimum 320 x 200, current 5760 x 1200, maximum 8192 x 8192
eDP1 connected 1920x1200+3840+0 (normal left inverted right x axis y axis) 331mm x 207mm
   1920x1200     59.88*+
   2880x1800     59.99 +
   2048x1536     60.00  
   1920x1440     60.00  
   1856x1392     60.01  
   1792x1344     60.01  
   1600x1200     60.00  
   1400x1050     59.98  
   1280x1024     60.02  
   1280x960      60.00  
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94 
1920x1200 - это единственное приемлемое, его бы и хотел оставить. Вообще пропорции дисплея 16/10, легко посчитать, что почти любое из разрешений (например, 1920x1440) - это 4/3, соответственно, при попытке выставить его, появляются чёрные полосы по бокам.

Мне это совершенно ни к чему. Не знаю, из какого libastral xorg берёт такие разрешение, несовместимые с размерами и даже пропорциями дисплея - хотел бы запретить вообще всё, кроме 1920x1200 (которое руками пришлось высчитывать и выставлять, добавляя Modeline в xorg.conf, такого даже в списке не было!)

Так вот, Modeline в xorg.conf я добавил, а как удалить от греха подальше все остальные Modeline, который он автоматом генерирует, такой умный?

Находил в гугле какой-то Option «UseEDID» «false» - нет такого в man xorg.conf - подозреваю, что такая опция, если и была, то тупо игнорируется сейчас (xorg-server-1.18.3).

Также обнаружил, что у xrandr есть опция --delmode. Но она не работает.

xrandr --delmode eDP1 "640x480"
X Error of failed request:  BadAccess (attempt to access private resource denied)
  Major opcode of failed request:  139 (RANDR)
  Minor opcode of failed request:  19 (RRDeleteOutputMode)
  Serial number of failed request:  40
  Current serial number in output stream:  41

С sudo точно также.

Какие ещё трюки есть в запасе у опытных лоровцев?

Может, я зря голову ломаю, и надо баг создавать на xorg?.. Если да, то помогите сформулировать - это к чему вообще относится, к xrandr, к xorg? что-то ещё?

А если на wayland какой-нибудь заменить, будет лучше? или хуже? или также?

P.S. Почему хочу убрать - вот выставил я разрешение в KDE один раз, ок - всё работает. Но если подключаю второй монитор/проектор - разрешение на ноутбуке «сбивается», выставляет 2880x1800, становится слишком мелко. Бесит. Хочу, чтобы он вообще не знал других разрешений, кроме тех, кто назову.

Ответ на: комментарий от anonymous

xf86-video-intel стоит. А нормальный - это какой? :) Другого нет.

Баг на драйвер надо создавать, не на xorg?..

BattleCoder ★★★★★ ()
Ответ на: комментарий от anonymous

К слову, такая засада только с родным дисплеем ноутбука. У всяких внешних мониторов список разрешений определяет правильно. Ну пропорции во всяком случае.

BattleCoder ★★★★★ ()

Я тут после 10 лет сидения на зеленых дискретных видяхах узнал, что у интола нельзя при загрузки ставить nomodeset ядру (люблю я голую консоль с большими буквами) - иксы ломаются напрочь, перестают определять второй монитор и застревают в том же разрешении, в котором была консоль.

Может и тут дело в бут опциях?

Midael ★★★★★ ()
Последнее исправление: Midael (всего исправлений: 1)
Ответ на: комментарий от anonymous

Дело не в драйвере.

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

00ffffffffffff0006102ea00000000004190104a5211578026fb1a7554c9e250c505400000001010101010101010101010101010101ef8340a0b0083470302036004bcf1000001a000000fc00436f6c6f72204c43440a20202000000010000000000000000000000000000000000010000000000000000000000000000000d0
edid-decode edid.txt 
Extracted contents:
header:          00 ff ff ff ff ff ff 00
serial number:   06 10 2e a0 00 00 00 00 04 19
version:         01 04
basic params:    a5 21 15 78 02
chroma info:     6f b1 a7 55 4c 9e 25 0c 50 54
established:     00 00 00
standard:        01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
descriptor 1:    ef 83 40 a0 b0 08 34 70 30 20 36 00 4b cf 10 00 00 1a
descriptor 2:    00 00 00 fc 00 43 6f 6c 6f 72 20 4c 43 44 0a 20 20 20
descriptor 3:    00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 4:    00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00
extensions:      00
checksum:        d0

Manufacturer: APP Model a02e Serial Number 0
Made week 4 of 2015
EDID version: 1.4
Digital display
8 bits per primary color channel
DisplayPort interface
Maximum image size: 33 cm x 21 cm
Gamma: 2.20
Supported color formats: RGB 4:4:4
First detailed timing is preferred timing
Established timings supported:
Standard timings supported:
Detailed mode: Clock 337.750 MHz, 331 mm x 207 mm
               2880 2928 2960 3040 hborder 0
               1800 1803 1809 1852 vborder 0
               +hsync -vsync 
Monitor name: Color
Dummy block
Dummy block
Checksum: 0xd0 (valid)
EDID block does NOT conform to EDID 1.3!
        Missing monitor ranges
        Detailed block string not properly terminated

Теперь думаю, как ему подсунуть правильный. Курил /usr/src/linux/Documentation/EDID/HOWTO.txt, даже сгененировал какой-то 1920x1200.bin, но что-то не срослось.

[   10.232094] platform eDP-1: Direct firmware load for 1920x1200.bin failed with error -2
[   10.232119] [drm:drm_load_edid_firmware] *ERROR* Requesting EDID firmware "1920x1200.bin" failed (err=-2)
BattleCoder ★★★★★ ()

а как удалить от греха подальше все остальные Modeline

man xorg.conf

 Modes  "mode-name" ...
              This optional entry specifies the list of video modes to use.  Each mode-name specified must be in dou‐
              ble  quotes.   They must correspond to those specified or referenced in the appropriate Monitor section
              (including implicitly referenced built-in VESA standard modes).  The server will delete modes from this
              list  which  don't satisfy various requirements.  The first valid mode in this list will be the default
              display mode for startup.  The list of valid modes is converted internally into a circular list.  It is
              possible  to  switch  to  the  next  mode  with  Ctrl+Alt+Keypad-Plus  and  to  the  previous mode with
              Ctrl+Alt+Keypad-Minus.  When this entry is omitted, the valid modes referenced by the appropriate Moni‐
              tor  section  will be used.  If the Monitor section contains no modes, then the selection will be taken
              from the built-in VESA standard modes.

arson ★★★★★ ()
Ответ на: комментарий от arson

Не помогает это. Не помогает. :) Буду дальше танцевать с бубном, то есть с EDID - попробую другим способом собрать... может, контрольная сумма неправильная.

BattleCoder ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.