- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
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 на местоположение драйвера.
Разработка Linux-драйверов DisplayLink началась не так давно, и вам может понадобиться помощь. Обращайтесь на http://www.displaylink.org или к вики библиотеки libdlo.
Драйвера DisplayLink еще не вполне совершенны. Например, отключение работающего USB-монитора может наглухо заблокировать весь сеанс X. Будьте осторожны!
Последний рывок – настройка 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-интерфейс: подключайтесь прямиком к устройству, выявляйте возникшие затруднения и устраняйте их. Это также неплохая альтернатива коммерческим маршрутизаторам с маленькими экранами для вывода сетевых графиков, сведений о системе, входящих сообщений или прогноза погоды.