Опубликовано 07 декабря 2002, 00:33

Железный Linux. Сканирование и печать

Особенности работы принтеров и сканеров под ОС Linux.

Linux поддерживает большинство существующих чипсетов, процессоров, и с такими устройствами, как флоппи-дисководы, приводы CD-ROM, CD-RW, DVD-ROM и жесткими дисками вопросов, скорее всего, не возникнет.

Первое взаимонепонимание системы и пользователя может встретиться при выборе монитора и видеокарты. С картами от ведущей тройки производителей (ATI, Matrox, nVidia) проблем практически нет (в базе драйверов дистрибутива ALT Linux Junior 2.11 пока нет только самых последних моделей: Matrox Perphilia, ATI Radeon 9000 и 9700). Весь список поддерживаемых видеокарт можно посмотреть в директории /usr/share/ldetect-lst/ в файле pcitable. На начальном этапе, например, для любой карты на чипах семейства Radeon предлагается один драйвер — Radeon.

Благодаря тому, что драйверы поставляются самими производителями, карты от ATi, Matrox и nVidia поддерживают полноценное 3D-ускорение. Что касается всех других видеокарт, здесь ситуация «зависит от…». В разделе «Монитор» DarkConf в режиме «Эксперт» можно посмотреть, какая поддержка обеспечена вашей видеокарте — т.е. в каком режиме обеспечено аппаратное 3D-ускорение и насколько оно надежно. Следующая проблема, которую может встретить пользователь — низкая частота обновления экрана (еше раз напомню, как это вредно — смотреть на экран с частотой обновления ниже 75 герц). Да, при установке системы, даже при выборе правильной марки монитора и корректном автоопределении видеокарты, может встретиться такая ситуация — вместо положенных, допустим, 85 герц (вы точно знаете, что ваша видеоподсистема «тянет» такое обновление при разрешении 1152х864 и 32-битной глубине цвета) система самолично устанавливает вам 75 герц, а то и еще ниже.

Из этой ситуации можно выбраться двумя способами. Первый — вместо реального подключенного монитора вы задаете монитор с лучшими характеристиками. Если у дисплея есть средство для определения частоты обновления, этот способ годится. Но если статус невозможно определить, придется пойти вторым путем — в директории /ect/X11/ отредактировать файл XF86Config. Для этого надо найти секцию Monitor Section и в ней параметр VertRefresh, он и задает диапазон обновления экрана. Если вы точно знаете, что ваша видеоподсистема выдержит, установите, например, диапазон 85–100, тогда ниже 85 герц частота не опустится.

К сожалению, более изящного способа регулировки частоты обновления система пока не предлагает, хотя более тонкой настройкой (правкой) в том же файле XF86Config можно точно задавать параметры экрана для каждого разрешения.

Сканирование

Пожалуй, сканеры для Linux представляют наиболее капризные девайсы, и перед тем как установить сканер в систему (не говоря уж о приобретении нового сканера для использования его под Linux) желательно уточнить — есть ли Linux-поддержка конкретной модели. И здесь не удастся обойтись средствами дистрибутива. Те же USB-сканеры в изобилии присутствуют в файле usbtable директории /usr/share/ldetect-lst/, и это означает, что система способна только правильно определить подключенный сканер, но не гарантирует наличие для него подходящего драйвера. Поэтому придется обратиться к самому авторитетному сканерному сайту — SANE. Там можно найти все сканеры, на сегодняшний день «принимаемые в обращение» Linux, причем с указанием — насколько хорошо поддерживается та или иная модель.

Вообще, хотя общий алгоритм установки сканера является плохо формализуемым, можно указать несколько действий, которые помогут справиться с этой задачей. Во-первых, на сайте SANE необходимо пройтись по ссылкам Supported devices (complete lists/search function) — List ordered by manufacturer и найти таблицу производителя и затем, уже в таблице, — конкретную, интересующую вас модель. В соответствующей строке будут указаны статус (Status) используемого драйвера, комментарий (Comment), название драйвера (Backend) и ссылка на страницу описания настройки драйвера (Manpage).
Status показывает, насколько драйвер отлажен. Уровни stable и beta считаются настолько хорошими, что их можно рекомендовать к применению. Уровни alpha и untested — рекомендовать нельзя. Но попробовать, насколько они работоспособны, конечно, никому не возбраняется.

Далее, Comment покажет, работает ли конкретный сканер под данным драйвером (SANE-драйверы, как правило, могут использоваться для нескольких сканеров, которые, например, собраны на одном чипсете). Причем в пределах одной таблицы комментарии могут быть разные — от радужных «All known modes and functions supported» (все известные режимы и функции поддерживаются) до невеселых «Gray only» (сканирование возможно только в шкале серого цвета) или совсем грустных «Unsupported» (не поддерживается).

Если все этапы пройдены, вероятность, что сканер «станет» под Linux очень высока. Тогда нужно искать особенности установки разных сканеров в ркуководстве (man 7 sane). В двух словах они сводятся к следующему:
• уточняется список поддерживаемых драйвером сканеров;
• уточняются набор рабочих режимов и функции;
• подтверждается факт, что если вы устанавливаете SCSI-сканер, скорее всего, проблем не будет никаких, а с LPT- и USB-сканнерами, придется повозиться;
• дается путь, где можно найти файл конфигурации данного типа сканеров и рекомендации по его изменению.

screen3_250.JPG

screen3_250.JPG

SANE расшифровывается как Scanner Access Now Easy (получить доступ к сканеру теперь просто) — это не только готовые и собранные в базы драйверы, но и библиотека (API) для поддержки работы сканеров. Вместе с графической оболочкой они собираются в программу XSane, и она автоматически «подхватывает» установленный сканер и по возможности производит его конфигурацию в системе. И если сканер установился в автоматическом режиме, он начинает работать в интерфейсе XSane, который является единым для всех сканеров.

Как уже говорилось, вероятность, что SCSI-сканер автоматически будет сконфигурирован при вызове XSane — очень велика, при этом рекомендуется не использовать «родную» SCSI-карту сканера, а работать со стандартным SCSI-адаптером. Что касается USB-сканеров, для них нужно запустить команду sane-find-scanner. Скорее всего, команда сообщит: «Found USB scanner (vendor=XXXXXX, product=XXXXXX) at /dev/usb/scanner0». Можно, конечно, по таблице usbtable в директории /usr/share/ldetect-lst/ посмотреть, насколько правильно определился сканер, но лучше сразу отправиться в директорию /ect/sane.d/ и найти файл конфигурации, имя которого совпадает с Backend (именем драйвера). Далее, по подсказке команды sane-find-scanner надо снять комментарий со строки, определяющей, где искать драйвер. Например, при установке  сканера Epson Perfection 610U sane-find-scanner выдает местонахождение — /dev/usb/scanner0, и в файле epson.conf надо снять знак комментария (#) со строки #usb /dev/usb/scanner0. После этого сканер будет опознан именно как Epson Perfection 610 и доступен из всех сканирующих приложений. Отредактировать файл конфигурации можно только с правами root.

Для LPT-сканеров команда sane-find-scanner ничего не подскажет, поэтому придется сразу приступить к экспериментам с файлами конфигурации. Например, для запуска сканеров Canon CanoScan FB620P/ FB630P/ N640P сначала в файле dll.conf придется снять комментарий со строчки #canon_pp (для автоматического определения сканера), а, если возникнут проблемы с ошибками ввода-вывода в режиме ECP, в файле canon_pp.conf «поколдовать» с строчкой #force_nibble, а затеми по очереди попробовать сначала автоматический режим инициализации (строчка #init_mode AUTO parport0), а если автоматика не сработает, указать init_mode FB620P parport0 или init_mode FB630P parport0.

Как видите, удобство подключения сканеров пока оставляет желать лучшего, и, к сожалению, для точных рекомендаций всегда придется обращаться к руководству и читать комментарии в файлах конфигурации. Но на этом беды со сканерами не заканчиваются. Дельнейшие приключения связаны с тем, что драйверы пишутся не производителями, а вольными программистами. А для написания полноценного драйвера им, даже если фирма-производитель поделилась некоторой информацией, не хватит данных, чтобы обеспечить правильную цветопередачу отсканированного изображения, а она зависит от очень многих параметров (типа лампы, времени ее эксплуатации, оптических характеристик сканера, способа обработки при избыточных разрядах цвета и черт-знает-чего-на-чем-производители-сканеров-не-одну-собаку-съели). Энтузиасты, как максимум, выжмут из сканера корректную работу, с должной скоростью и разрешением. Но с цветопередачей, наверняка, будут сложности, порой большие. Мы протестировали шесть сканеров (Genius Colorpage HR6 V2, Benq 620u, Mustek BearPaw 2400, Mustek ScanExpress 1200 UB, Epson 610 и Umax Astra 1220U) и ни для одного не получили такой же цветопередачи, какую дает тот же сканер при работе в Windows.

Проверка производилось по эталонной калибровочной мишени AGFA IT8.7/2, где, в частности, показатель хорошей цветопередачи — чистые цвета RGB в колонках 17, 18 и 19. В нижних квадратах от I до L многие сканеры на автоматических настройках дают чистый цвет без примесей. Так, квадрат L17 даст разложение цвета: R=30, G<= 3, B<=3, а квадрат J18 — R<=5, G=75, B<=5. Такие результаты получаются при использовании фирменных Windows-драйверов. При сканировании в XSane уровень примесей был очень велик — более 10 для нижних квадратов (уровень K, L) и более 20 для квадратов уровня I и J.
Значит, о верной цветопередаче можно не говорить. Если она понадобится в работе, придется средствами XSane (или графического редактора) подбирать цветовую коррекцию, и не факт, что ее удастся быстро найти, и она будет успешно работать.

В итоге мы не можем дать рекомендации «используйте сканеры такие-то, и мы гарантируем, они вас не разочаруют». Со сканированием текста и цветной графики (где нет жестких требований к цветопередаче) сегодня справляется практически любой сканер. И выбор для Linux легко сделать по данным SANE (несколько рекомендуемых моделей вы найдете в таблице в конце статьи, где сканеры отобраны только по одному критерию — стабильная работа под Linux). Но для обработки фотографий и, тем более, слайдов, мы не можем порекомендовать ни одного сканера.

Печать

Чтобы несколько сменить мрачный тон, перейдем к работе принтеров под Linux. Тем более для работы с ними не придется терпеть такие же мучения, как со сканерами. База поддерживаемых принтеров очень велика. Например, в дистрибутиве Junior 2.1 сегодня вы найдете все, включая 900-ю серию принтеров Hewlett-Packard DeskJet. А на сайте www.linuxprinting.org (основного поставщика принтерных драйверов) уже объявлена поддержка новейших HP DeskJet 5550 и HP PhotoSmart 7530, так что в следующей версии дистрибутива Alt Linux эти принтеры, наверняка, будут включены в базу.

Выбрать и настроить принтер можно еще на этапе установки системы. Причем для каждого принтера предлагается порой несколько драйверов. Официальную поддержку Linux из производителей принтеров оказывают немногие (Hewlett-Packard, Samsung). Так Hewlett-Packard предложила Linux-сообществу пакет разработки драйверов для струйный принтеров HPIJS. На его базе написаны драйверы, называемые «ChostScript+hpijs» — они дают лучшие результаты для печати. Остальные производители делятся с авторами Линукс-драйверов полезной информацией, которую те используют при написании, наряду с методом проб и ошибок. Для принтеров Epson и Canon наиболее предпочтительным является драйвер «ChostScript+gimp — print». Поскольку самым продвинутым пакетом обработки изображения в среде Linux является графический редактор GIMP, и в нем есть собственные базы драйверов, которые дают неплохие результаты печати.

При установке принтера придется задать параметры печати по умолчанию (выбрать размер листа, определить разрешение и уровень качества печати, а также ее тип). Причем многие эти параметры нельзя изменить при печати из большинства программ, так что пользователю при смене типа печати либо придется каждый раз перенастраивать принтер, либо один и тот же принтер завести в нескольких вариантах — например, для черновой печати, нормальной, печати цветной графики и т.д. На первый взгляд, такой подход кажется диким, но на второй оказывается, он не лишен смысла и даже удобства.

screen5_250.JPG

screen5_250.JPG

Отдельный разговор — печать из редактора GIMP. По умолчанию она невозможна — осуществляется с помощью плагина gimp-print, присоединяемому к редактору либо при установке полной версии ОС, либо — с помощью специальной команды. Во втором случае надо войти в «Консоль» под паролем root и дать команду irpmi gimp-print-plugin, после чего в контекстном меню «Файл» (открывается при клике правой клавиши мыши на поле обрабатываемого изображения) появляется подменю Print.

И здесь мы подходим к еще одному неприятному моменту — невозможности дать традиционный совет «что выбрать». Также как и в случае сканеров, печать под Linux не может похвастаться хорошей цветопередачей. Одна из причин этого — в системе отсутствуют механизмы цветокоррекции. Даже в GIMP нет привязки изображения к цветовому профилю, что делает качественную фотопечать невозможной в принципе, и поскольку с печатью текста и цветной графики сегодня ПРЕКРАСНО справляется любой струйный принтер, поэтому совет для Linux можно дать такой: «Выбирайте любой принтер, устраивающий вас по скорости и цене печати. Главное — предварительно убедитесь, что Linux поддерживает выбранную модель, т.е. она не должна быть слишком новой». Что касается фотопечати, по-моему, говорить о ней рано.

Попробую пояснить.

Начнем с того, что теоретически в Linux можно печатать неплохие фотографии. Но! Только на листах формата А4 или А5, а это согласитесь, не очень выгодно, особенно если принять во внимание, что без механизма точной цветокоррекции придется извести не один лист, пока результат станет удовлетворительным. Почему такой ограниченный выбор формата печати? Все просто — нам придется работать из программы, в которой возможна лишь ограниченная настройка принтера, а совместить форматы печати с форматом, заданным у принтера, можно только при размере листа А4 или А5. Есть еще несколько экзотических форматов (Letter — 8,5х11 дюймов, Legal — 8,5х14 дюймов и Executive — 7,5х10 дюймов), но они слишком велики для фотографии. В случае, если формат печати не совпадает с форматом, заданным у принтера, произойдет пересчет, и на листе вместо полного изображения появится фрагмент, причем заранее сложно угадать, какой именно.

Невеселая картина? А почему же нельзя печатать в редакторе GIMP, хоть и не снабженном цветовыми профилями, но способном прекрасно масштабировать изображение, приводить его к любому формату, вплоть до А9? Здесь все просто, и объясняется только недоработками в системе. GIMP воспринимает системный принтер как некий абстрактный девайс с названием PostScript Level 2. И, хотя консультанты рассказывали мне про принтеры, замечательно печатающие в этом режиме, ни один из проверенных (Epson Stylus Color 880, Epson Stylus Photo 895, HP DeskJet 845, HP DeskJet 940, HP DeskJet 990, Canon S630, Canon S800 и др.) не стал в нем печатать.

Идем дальше. Если нельзя печатать в PostScript Level 2, почему бы не произвести настройку принтера? Прямо в GIMP в настройке Printer Setup можно выбрать принтер из большого списка (правда, не такого большого, как при выборе принтера в «Центре Управления»). Здесь я не смог получить от консультантов точного ответа — не то GIMP подменяет системный драйвер на свой собственный, не то его таблицы конфигурации накладываются на драйвер, оставляя ему только часть возможностей. Например, в случае принтеров НР 900-й серии максимальное разрешение драйвера «ChostScript+hpijs» 1200 dpi обрезается до 600 dpi. В других случаях количественные показатели не дают явных подсказок, но тестовые фотографии наглядно демонстрируют, как «уходят» цвет и разрешение фотографии.

После таких результатов речь о серьезном тестировании не идет. Можно даже не вспоминать, что Linux-драйверы не поддерживают фирменные технологии Epson PhotoEnhance 4 или Hewlett-Packard PhotoREt III. При Какая разница, если печать фотографий настолько урезана в возможностях2? Какая разница, если существующие сегодня дистрибутивы не поддерживают современный уровень фотопечати? Возможно, в течение ближайших месяцев такая поддержка появится. Тогда и потестируем.

Сканеры, стабильно работающие под Linux (по данным сайта http://panda.mostang.com/sane)
Модель
Agfa SnapScan 1212u
Agfa SnapScan 1236s
Agfa SnapScan 1236u
Benq 610s
Benq 620s
Benq 620u
Benq 640bu
Benq 640u
Canon CanoScan FB630P
Canon CanoScan fb630u
Epson Perfection 610
Epson Perfection 636S
Epson Perfection 636U
Epson Perfection 640
Epson Perfection 1200 Photo
Epson Perfection 1200S
Epson Perfection 1200U
Epson Perfection 1240
Genius Colorpage HR6 V2
Colorpage Vivid III V2
Genius Colorpage Vivid Pro II Film
Genius ColorPage-HR5 (Pro)
HP 3200C
HP 5300
HP ScanJet 4100C
HP ScanJet 6100C
HP ScanJet 6200C
Microtek ScanMaker 636
Microtek ScanMaker 3600
Mustek BearPaw 1200
Mustek BearPaw 2400
Umax Astra 1220P
Umax Astra 1220S
Umax Astra 1220U

  1. Конкретные примеры в данной статье даются по дистрибутиву Junior 2.1 HomePC Magazine edition, разработанному компанией Alt Linux специально для журнала «Домашний Компьютер». [вернуться]

2. Если кому-нибудь все-таки понадобится печатать фотографии под Linux, то наилучшие результаты в GIMP дают принтеры Epson. На распечатки принтеров Hewlett-Packard и Canon лучше не смотреть. [вернуться]

По материалам журнала «Домашний компьютер».