Журнал LinuxFormat - перейти на главную

LXF129:DisplayLink

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

DisplayLink USB-мониторы к вашим услугам

Давно мечтали об информационном мини-мониторе USB для своей Linux-машины? Коэн Вервлоесем поможет осуществить мечту...


USB-мониторы для Mac или ПК с Windows уже не редкость. LG Electronics, HP, Samsung и Acer выпускают устройства, которые при выводе изображения обходятся без VGA, DVI и HDMI. Вполне достаточно USB, что лишний раз подчеркивает универсальность протокола. Соответствующую технологию разработала компания DisplayLink.

Еще пару лет назад все это было недоступно для Linux: компания DisplayLink не раскрывала сведения об аппаратном обеспечении и не публиковала Linux-драйверы. Но настала пора перемен: в мае 2009 г. DisplayLink выпустила библиотеку libdlo на условиях LGPLv2. В проекте участвовали сотрудник Novell Грег Кроа-Хартман [Greg Kroah-Hartman] из Linux Driver Project и Кит Паккард [Keith Packard] из X.org.

Как работает DisplayLink

Важно отметить, что речь идет не о видеокарте, подсоединяемой к ПК через USB-порт: DisplayLink полностью передает видеосигнал по USB-кабелю. Фактически драйвер DisplayLink создает «виртуальную видеокарту» программными средствами. Считывается содержимое видеобуфера, графика сжимается с помощью адаптивной технологии (в этом процессе учитывается тип изображения, возможности процессора и пропускная способность USB).

Затем сигнал передается по USB-кабелю на чип DisplayLink в устройстве вывода, которое может быть обычным монитором, подсоединенным через USB 2.0, но также и универсальной док-станцией для ноутбука, проектором либо адаптером для подключения обычного (VGA или DVI) монитора через USB-порт.

Драйвер libdlo поддерживает чип DL-120 с разрешением до 1280 × 1024, и чип DL-160 с разрешением до 1600 × 1200; глубина цвета в обоих случаях до 32 бит. Чипы DL-125, DL-165 и DL-195 тоже поддерживаются, но тестирование не завершено. Кроме того, DisplayLink не раскрывает исходный код проприетарных алгоритмов сжатия, поэтому в Linux невозможно получить такую же производительность, как в Windows: через USB передается поток несжатых видеоданных.

Лицо для маршрутизатора

В открытых драйверах не используется сжатие, поэтому производительность ограничивается пропускной способностью USB (480 Мбит/с): в видеоигры на большом USB-мониторе не поиграешь. Зато DisplayLink прекрасно справляется с обычным ПО (браузером, почтовым клиентом или программой для ведения блогов). Представьте себе 7‑дюймовый USB-монитор, на который выводится окно Twitter, чаты или почта.

Но это далеко не предел возможностей новой технологии: распространенность USB открывает широкий простор воображению. В принципе, с помощью DisplayLink можно снабдить экраном любое Linux-устройство со свободным USB-портом. Например, можно временно подключить диагностический монитор к «безголовому» серверу, или вернуть к жизни ноутбук с неисправным экраном, или вывести изображение с компьютера SheevaPlug (LXF126/127). Особо предприимчивые умудряются даже подключать USB-мониторы к Linux-маршрутизаторам. Благодаря DisplayLink получена подлинно универсальная видеотехнология.

Драйверы DisplayLink для Linux пока не попали в официальные репозитории, и скомпилировать их придется самим. Тесты в основном проводили на Ubuntu, но другие дистрибутивы тоже должны справиться. Для примера рассмотрим установку DisplayLink на Ubuntu 8.10. В версии 9.04 есть ошибка в GLib 2.20, из-за которой DisplayLink не работает, но это можно исправить по инструкциям вики libdlo.

Displaylink-mod – это видеобуфер ядра Linux и драйвер текстовой консоли для устройств DisplayLink, который написал Роберто Де Иорис [Roberto De Ioris]. Загрузите его (http://projects.unbit.it/downloads/displaylink-mod-0.3.tar.gz), распакуйте и соберите драйвер следующим образом:

make
sudo make install
sudo depmod -a

Если откажет команда make, установите пакет module-assistant и командой sudo module-assistant prepare подготовьте необходимые заголовки ядра Linux. Затем наберите make clean и повторите шаги сборки. Если все прошло нормально, то на этой стадии экран присоединенного устройства DisplayLink окрасится в зеленый цвет.

Интересно, что Displaylink-mod пригодится и как основа для X-драйвера (xf86‑video-displaylink). Загрузите http://projects.unbit.it/downloads/udlfb-0.2.3_и_xf86‑video-displaylink-0.3.tar.gz и распакуйте, затем соберите драйвер xf86‑video-displaylink следующими командами (игнорируя каталог udlfb):

cd ../xf86-video-displaylink
./configure
make
sudo make install

Возможно, перед командой configure понадобится набрать sudo apt-get install pkg-config xorg-dev. По умолчанию, драйвер устанавливается в каталог /usr/local/lib/xorg/modules/drivers, куда многие дистрибутивы «не заглядывают». Поэтому может потребоваться создать ссылку или указать xorg.conf на местоположение драйвера.


Последний рывок – настройка X. Само собой, на этой стадии многое зависит от текущих установок. У нас был ноутбук со штатным экраном, к которому присоединяли внешний монитор DisplayLink. Нужно было «объяснить» X, что мы будем пользоваться двумя дисплеями. Драйвер displaylink-mod использует для сбора сведений о мониторе информацию VESA, поэтому объем работ по настройке X минимальный. Достаточно добавить секции Device, Monitor и Screen в файл /etc/X11/xorg.conf и изменить разделы Files и ServerLayout.

   Вот пример простейшего файла xorg.conf;;; для нашего случая:
Section “Device”
 Identifier “Configured Video Device”
EndSection
Section “Monitor”
 Identifier “Configured Monitor”
EndSection
Section “Screen”
 Identifier “Default Screen”
 Monitor “Configured Monitor”
 Device “Configured Video Device”
EndSection
Section “Files”
 ModulePath “/usr/lib/xorg/modules”
 ModulePath “/usr/local/lib/xorg/modules”
EndSection
Section “ServerLayout”
 Identifier “Server Layout”
 Screen 0 “Default Screen” 0 0
 Screen 1 “DisplayLinkScreen” LeftOf “Default Screen”
EndSection
Section “Device”
 Identifier “DisplayLinkDevice”
 Driver “displaylink”
 Option “fbdev” “/dev/fb0”
EndSection
Section “Monitor”
 Identifier “DisplayLinkMonitor”
EndSection
Section “Screen”
 Identifier “DisplayLinkScreen”
 Device “DisplayLinkDevice”
 Monitor “DisplayLinkMonitor”
EndSection

Вот что это означает. В секцию Files мы добавили путь к местоположению драйверов DisplayLink: /usr/local/lib/xorg/modules. Отдельные секции Device, Monitor и Screen есть для каждого экрана: для штатного (Configured Video Device, Configured Monitor и Default Screen) и для устройства DisplayLink (DisplayLinkDevice, DisplayLinkMonitor и DisplayLinkScreen). Затем мы добавили в секцию ServerLayout оба экрана X и соответственно расположили их: устройство DisplayLink слева от штатного экрана.

Теперь при загрузке ноутбука с присоединенным устройством DisplayLink его экран становится зеленым (на штатный экран в это время выводится заставка Ubuntu). После входа X опознает оба монитора и выведет на них одинаковые фоновые изображения. В отсутствии Xinerama они считаются отдельными экранами: окна между ними перетаскивать нельзя, но можно переносить курсор мыши и запускать на мониторах разные программы. Можно даже настроить выполнение приложений на DisplayLink автоматически при старте сеанса. Например, для запуска клиента микроблогов Gwibber для Gnome добавьте DISPLAY=:0.1 gwibber в меню Startup Applications [Автозапуск].

Cядем рядом...

Пару лет назад некоммерческая организация Ndiyo высказала идею создания так называемого Hubster, терминала на основе USB-хаба. Простым подключением USB-периферии (клавиатуры, мыши и монитора) персональную машину можно превратить в многопользовательскую. Теперь устройства DisplayLink позволяют делать это под Linux.

Если вы немного программист, попробуйте написать собственную систему Hubster. В Linux главный трюк выполняет udev: создайте правила, реагирующие на подключение новых клавиатуры, мыши и монитора и запускающие новый сеанс GDM.

Желаем удачи!

Маршрутизатор, он же терминал

Неустрашимый Свен Киллиг [Sven Killig] подключил монитор DisplayLink и небольшую USB-клавиатуру к беспроводному маршрутизатору Asus WL-500g Premium с двумя USB-портами. На нем у Свена работает прошивка OpenWRT (открытое ПО на базе Linux), а кроме того, модификация приложения SlugTerm (изначально написанного для ЖК-экранов Linksys NSLU2), что позволяет создать терминал с USB-клавиатурой и монитором, превратив маршрутизатор в обычный настольный компьютер. Теперь при проблемах в сети незачем входить по ssh или использовать web-интерфейс: подключайтесь прямиком к устройству, выявляйте возникшие затруднения и устраняйте их. Это также неплохая альтернатива коммерческим маршрутизаторам с маленькими экранами для вывода сетевых графиков, сведений о системе, входящих сообщений или прогноза погоды.

Персональные инструменты
купить
подписаться
Яндекс.Метрика