суббота, 16 октября 2010 г.

Отключение режима обнаружения TV драйвером NOUVEAU

Перешел на использование open-source драйвера Nouveau для карт Nvidia. Действовал по этой инструкции: http://en.gentoo-wiki.com/wiki/Nouveau. На рабочей машине все прошло замечательно, особо порадовала скорость переключения в текстовую консоль и обратно в иксы. На домашней же обнаружился странный глюк - разрешение текстовой консоли устанавливалось нормально - 1680х1050, но надписи занимали только верхнюю левую часть экрана.

dmesg об этом писал следующее:
[drm] nouveau 0000:01:00.0: 64 MiB GART (aperture)
[drm] nouveau 0000:01:00.0: Allocating FIFO number 0
[drm] nouveau 0000:01:00.0: nouveau_channel_alloc: initialised FIFO 0
[drm] nouveau 0000:01:00.0: Initial CRTC_OWNER is 0
[drm] nouveau 0000:01:00.0: Saving VGA fonts
[drm] nouveau 0000:01:00.0: Detected a DVI-I connector
[drm] nouveau 0000:01:00.0: Detected a VGA connector
[drm] nouveau 0000:01:00.0: Detected a TV connector
[drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 0)
[drm] nouveau 0000:01:00.0: Setting dpms mode 3 on tmds encoder (output 1)
[drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 2)
[drm] nouveau 0000:01:00.0: Setting dpms mode 3 on TV encoder (output 3)
[drm] nouveau 0000:01:00.0: Load detected on output B
[drm] nouveau 0000:01:00.0: allocated 1680x1050 fb: 0x49000, bo f7070800
[drm] nouveau 0000:01:00.0: Setting dpms mode 0 on vga encoder (output 2)
[drm] nouveau 0000:01:00.0: Output VGA-1 is running on CRTC 0 using output C
[drm] nouveau 0000:01:00.0: Setting dpms mode 0 on TV encoder (output 3)
[drm] nouveau 0000:01:00.0: Output TV-1 is running on CRTC 1 using output B
Console: switching to colour frame buffer device 90x36


Т.е. драйвер обнаружил подключение по TV-out и установил текстовое разрешение по минимальному устройству - телевизору. Однако физическое обследование видеокарты не показало наличие телевизора. Оно и понятно - телевизора у меня нет вообще. В списках рассылки обнаружил упоминание патча, с помощью которого можно принудительно отключить подключение TV: http://lwn.net/Articles/383198/, а потом и сам патч: http://kerneltrap.org/mailarchive/git-commits-head/2010/4/1/31359, присутствующий в ядре с версии 2.6.34-rc4. Из кода видно, что вводится новый параметр модуля - tv_disable.

Поскольку модуль nouveau у меня вкомпилирован в ядро, то параметры ему передаются через строку инициализации ядра (в моем случае в /boot/grub/menu.lst):
kernel /boot/vmlinuz root=/dev/sda1 nouveau.tv_disable=1

2 комментария:

  1. У меня тоже самое было. Использовал fbset по совету https://wiki.archlinux.org/index.php/Nouveau#Troubleshooting, а сейчас решил поискать другой вариант и сразу попал на эту статью. Спасибо, помогло.

    ОтветитьУдалить
  2. Рад, что помог. Так и не понял, отчего это происходит.

    ОтветитьУдалить