USB-мониторы DisplayLink
Чтобы использовать в ROSA Fresh USB-монитор DisplayLink в качестве дополнительного, можно действовать так.
Проверьте сначала, что установлен пакет 'x11-driver-video-modesetting'. Если нет - установите его.
1. Blacklist драйвер udlfb (он конфликтует с драйвером udl, который нужен для работы с доп. монитором):
# echo 'blacklist udlfb' >> /etc/modprobe.d/displaylink.conf
Это достаточно сделать один раз (то есть не нужно повторять при каждом подключении устройства). Затем стоит перезагрузить систему на всякий случай.
2. Подключить монитор к соотв. USB-разъёмам. По выводу lsusb
можно понять, опознала система устройство или нет: см., есть там строка для DisplayLink или нет.
3. Проверить, что выдаёт xrandr --listproviders
. Если система опознала устройство, то будет выдано что-то такое:
Providers: number : 2 Provider 0: id: 0x56 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 4 outputs: 3 associated providers: 0 name:radeon Provider 1: id: 0x3a6 cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 0 name:modesetting
Provider 1 с «name: modesetting» соответствует USB-монитору, provider 0 — основному монитору.
4. Указать, чтобы на доп. монитор шёл вывод с той же видеокарты (?), что и на основной:
xrandr --setprovideroutputsource <№ дополнительного provider'a> <№ основного provider'a>
В данном случае:
xrandr --setprovideroutputsource 1 0
5. Теперь система должна увидеть второй монитор.
xrandr
покажет что-то такое:
$ xrandr Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384 LVDS-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 521mm x 293mm 1920x1080 60.0*+ 120.0 109.9 99.9 <...> 720x400 70.1 DVI-0 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm 1366x768 60.0*+
Дополнительному монитору присвоено имя DVI-0. Заявленный режим — 1366x768, 60Гц. Это всё пригодится ниже.
Примечание 1. Похоже, если отключить доп. монитор от системы, а затем подключить снова, ему может быть присвоено уже другое имя. Это стоит проверять по выводу xrandr.
Примечание 2. На стационарных ПК (и др. ПК с обычными мониторами) основной монитор может иметь имя DVI-0, но дополнительному система может дать то же самое имя. X11 от этого может стать плохо, если ещё и включить 2-й монитор при этом. Похоже на баг. Workaround: отключить доп. монитор от USB разъёма и подкл. снова — имя, скорее всего, будет другое теперь, см. примечание 1.
6. Определить подходящий для устройства режим (тот, что по умолчанию, бывает неправильным: если его выбрать на доп. мониторе показываются только полосы или искажённая картинка).
Берём данные о разрешении из вывода xrandr, даём их команде gtf
, она выдаст нужные параметры режима:
$ gtf 1366 768 60 # 1368x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 85.86 MHz Modeline "1368x768_60.00" 85.86 1368 1440 1584 1800 768 769 772 795 -HSync +Vsync
То, что нам нужно, стоит после «Modeline». Стоит обратить внимание, что там — 1368, а не 1366, кстати.
7. Создать нужный режим:
xrandr --newmode <всё после Modeline в выводе gtf>
То есть в данном случае:
xrandr --newmode "1368x768_60.00" 85.86 1368 1440 1584 1800 768 769 772 795 -HSync +Vsync
Таким образом, создан режим с названием «1368x768_60.00».
8. Добавить свежесозданный режим в список доступных для доп. монитора. В нашем случае имя устройства — DVI-0. Получить это имя можно из вывода xrandr.
xrandr --addmode <имя_устройства> <название режима>
То есть:
xrandr --addmode DVI-0 "1368x768_60.00"
9. Теперь в настройках соотв. монитора появится режим 1368x768. Его и выбрать (можно в GUI system settings, можно с помощью того же xrandr).
xrandr --output DVI-0 --mode 1366x768_60.00 --same-as LVDS-1
Всё должно заработать.
Правда, если теперь отключить устройство и подключить заново, процедуру придётся повторить (кроме blacklist udlfb).
TODO: файл в xorg.conf.d или udev rules to make this persistent.