Thinstation: внедрение принтеров HP LaserJet 1000 1005 1018 1020

Описание трудности

При попытке применять для печати с Thinstation принтеры HP серии LaserJet моделей 1000, 1005, 1018 и 1020, можно столкнуться с тем, что они полностью отказываются печатать. Соединено это с тем, что данные принтеры не работают без подготовительной загрузки прошивки на само устройство. Делать это должно конкретно устройство, к которому подключен принтер, в этом случае этим устройством выступает узкий клиент. В UNIX схожих операционных системах (BSD, Линукс, Mac OS) для данной задачи употребляют набор драйверов foo2zjs, которые так же есть в виде специального пакета в Thinstation. Но, этот скомпилированный пакет весит порядка 12 МБ, при условии, что для данных принтеров там необходим только файл прошивки, размер которой всего 100 с излишним кб, и скрипт, который будет эту прошивку на принтер загружать.

В итоге исследования этого вопроса, были собраны маленькие пакеты, с наименьшим содержимым, которых довольно для работы вышеуказанных принтеров. Скачать эти пакеты можно по ссылкам ниже:

Пакет Thinstation для HP LaserJet 1000
Пакет Thinstation для HP LaserJet 1005
Пакет Thinstation для HP LaserJet 1018
Пакет Thinstation для HP LaserJet 1020

Самостоятельная сборка пакета

Вы можете так же создать подобный пакет вручную, для этого нужно выполнить следующие действия (по умолчанию будут браться параметры для принтера HP LaserJet 1018):

  1. Создадим в удобном месте директорию, которая станет временной корневой директорией для будущего пакета. В ней создаем следующие директории:
    • /etc/foo2zjs
    • /etc/udev/rules.d
    • /lib/foo2zjs/firmware
  2. Скачиваем файл прошивки под нужную модель принтера с репозитория на github. К примеру, для HP LaserJet 1018 это sihp1018.dl. Сохраняем данный файл в директорию /lib/foo2zjs/firmware.
  3. В директории /etc/udev/rules.d создаем текстовый документ 90-foo2zjs.rules, и пишем там одну единственную строчку:
    KERNEL=="lp*", ATTRS{product}=="HP LaserJet 1018", SYMLINK+="usb/hp1018", RUN+="/etc/foo2zjs/hp1018.sh"
  4. Вместо значения HP LaserJet 1018 у параметра ATTRS{product}=="HP LaserJet 1018" должно быть название принтера, которое можно получить, выполнив следующую команду:

    udevadm info -a -n /dev/usb/lp0 | grep ATTRS{product}

    При этом, если в тонкий клиент подключено несколько устройств, то вместо lp0 может быть lp1 и т. д.
    Вместо hp1018 в тексте SYMLINK+="usb/hp1018" и RUN+="/etc/foo2zjs/hp1018.sh" пишем сокращенное название модели своего принтера.

  5. В директории /etc/foo2zjs создадим скрипт с названием принтера, к примеру hp1018.sh. Его содержимое должно быть следующим:
    #!/bin/bash    cat /lib/foo2zjs/firmware/sihp1018.dl > /dev/usb/hp1018

    Где вместо sihp1018.dl должно быть название файла прошивки под ваш принтер, а вместо /dev/usb/hp1018 — симлинк под вашу модель принтера, который мы ранее написали в скрипте для udev.

  6. Теперь запакуем все это в архив формата tar.gz — так, чтобы в корне архива были директории etc и lib. Из под Windows, удобнее всего будет воспользоваться архиватором 7-Zip, про создание в нем архивов формата tar.gz можно прочитать здесь.
  7. Меняем расширение архива с tar.gz на pkg. На этом пакет для Thinstation готов к использованию, его можно загружать на tftp или http сервер, и включать в конфиге его использование.

Особенности настройки принтера в Windows

При использовании данных принтеров, которые были подключены через lp_server под операционной системой Windows Server 2008 R2, была выявлена неприятная особенность — при отправке на печать задания, принтер начинал его бесконечно печатать. Для исправления этого недоразумения, необходимо в настройках принтера отключить двухсторонний обмен данными.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *