среда, 20 февраля 2008 г.

TV Out в Linux с драйвером xf86-video-ati

Пару дней назад вздумалось мне настроить TV выход с моего ноутбука под Linux.
Перво наперво был проверен сам факт работы шнура и телевизора - из под Windows. Изображение в наличии - 1 штука. Уже хорошо.
Затем последовала перегрузка в Linux и долгие и упорные попытки всё это настроить в xorg.conf, перемежающиеся чтением манов и всего-чего-можно.
Изображение упорно не проявлялось. Была израсходовано куча времени и опций Xorg, но всё в пустую. Тщательное изучение логов Xorg выявило попытки спросить у телевизора возможные Modeline на которых тот может работать, но телевизор молчал как украинец с салом во рту.
Решив, что всё дело в Модлайне (т.е. разрешение и частота обновления экрана), я попытался найти в интернете парочку подходящих и проверить их. Был проверен с десяток различных модлайнов, самых что ни на есть рабочих по уверениям авторов, но увы... Экран телевизора даже не вздрогнул.

Спустя 5 часов экспериментов начали закрадываться сомнения. Самые различные, от "может это не в модлайне дело, а где-то глубже ?" и до "а не пошло бы оно..."
Было принято решение в пользу последнего сомнения, и в 1.30 я пошёл спать. (Это только говорится так - "пошёл". В действительности я просто вырубил ноут и повернулся на другой бок)

Утром была распечатана дока по xorg.conf на 20 страниц и в течении дня прочитана. Вечером я с новыми силами мчался на встречу телеэфиру.
И вновь потерпев неудачу, я практически отчаялся. Хотя, настроить TV Out было архиважно и архинужно, для поднятия престижа Lunux-а и меня, как линуксовода, я принялся отлынивать и читать новости. И о чудо! Провидение само подсовывает мне новость "бла-бла-бла выпущен новый драйвер для видеокарт radeon fx86-video-ati-6.8.0 с улучшенной поддержкой TV Out". Аргх! Как я не подумал о различных версиях драйверов?
Мчимся в портежи (опять таки, просто оборот речи - открываем терминал и cd /usr/portage/x11-drivers/xf86-video-ati), и видим там 2 версии драйвера:
6.6.3 и 6.7.197 (вроде). Установлен конечно 6.6.3. Радуемся и ликуем, пытаемся поставить, упс... нужно размаскировать! ну, допустим.... Наконец драйвер встаёт на место.

Перегружаем X-ы. Телек не работает, но и видео не поломалось. Хорошо....
Погружаемся в man radeon и находим там Option "TVDDCDetect". Воспользуемся ей и.... заработало !
(название опции TVDDCDetect написано по памяти, так что перед использованием стоит заглянуть в man radeon)
Отличненько. Теперь скачиваем релиз 6.8.0 и ebuild к нему, устанавливаем ebuild в portage overlay, и пытаемся его emerge. Всё проходит удачно, тв-выход работает, видео не сломано.

Пытаюсь разобраться в том, что получилось. Получается, что если S-video коннектор подключен, то X определяет это и стартует ноут и тв в разрешении 800х600
Не очень то удобно при родном разрешении ноутбука 1400х1050... Продолжая изучать матчасть, нахожу утилиту xrandr, которая позволяет на лету включить S-video, при этом с возможностью клонировать не весь экран, а только часть. Т.е. на ноуте разрешение 1400х1050, а на телевизоре видно только прямоугольник 800х600 верхнего левого угла.
Примерно так это происходит:
xrandr --addmode S-video 800x600
xrandr --mode S-video 800x600


Теперь уже всё хорошо, кроме 3 вещей.
1. Не выяснено, как включить не режим клонирования, а отдельный экран (windows может, что наводит на размышления и надежды)
2. Режим Overlay не работает на телевизоре. Т.е. запуская mplayer на телике видим чёрный прямоугольник. Частично решается путём использования mplayer -vo x11 Но режим вывода -vo x11 не позволяет растянуть изображение (или я ещё не нашёл как)
3. Драйвер определяет что LVDS панель ноутбука имеет расширение 1400x1050, но упорно выставляет 1024x768. Нужно ковыряться в драйвере. Пока что простейшие попытки добавить отладочных сообщений в лог не увенчались успехом.

Продолжение следует....

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

Анонимный комментирует...
Этот комментарий был удален администратором блога.
Анонимный комментирует...
Этот комментарий был удален администратором блога.
Анонимный комментирует...
Этот комментарий был удален администратором блога.