FreeBSD: Установка и настройка CUPS с принтером HP1020

CUPS (Common UNIX Printing System) — сервер печати для UNIX-подобных операционных систем. Компьютер с запущенным сервером CUPS представляет собой сетевой узел, который принимает задания на печать от клиентов, обрабатывает их и отправляет на соответствующий принтер.

И так поехали:

# uname -a
FreeBSD sani4.ru 10.1-RELEASE FreeBSD 10.1-RELEASE #0: Wed Mar 4 09:34:59 KRAT 2015  
root@Sani4.ru:/usr/src/sys/i386/compile/SANI4  i386

Устанавливаем все нужные пакеты из портов:

# cd /usr/ports/print/cups && make install clean
# cd /usr/ports/print/cups-base && make install clean
# cd /usr/ports/print/cups-bjnp && make install clean
# cd /usr/ports/print/cups-client && make install clean
# cd /usr/ports/print/cups-image && make install clean
# cd /usr/ports/print/cups-pdf && make install clean
# cd /usr/ports/print/cups-pk-helper && make install clean
# cd /usr/ports/print/cups-pstoraster && make install clean
# cd /usr/ports/print/cups-smb-backend && make install clean
# cd /usr/ports/print/gutenprint-cups && make install clean
# cd /usr/ports/print/foomatic-db && make install clean
# cd /usr/ports/print/foomatic-db-engine && make install clean
# cd /usr/ports/print/foomatic-db-hpijs && make install clean
# cd /usr/ports/print/foomatic-filters && make install clean
# cd /usr/ports/print/gutenprint-foomatic && make install clean
# cd /usr/ports/print/ghostscript9 && make install clean

Устанавливаем HPLIP для поддержки принтеров HP

# cd /usr/ports/print/hplip && make install clean

Установливаем foo2zjs

# cd /usr/ports/print/foo2zjs && make install clean

Должно быть так:

# pkg info | grep cups
cups-1.7.3.1                =  up-to-date with port
cups-base-1.7.3_1           =  up-to-date with port
cups-bjnp-2.0               =  up-to-date with port
cups-client-1.7.3_4         =  up-to-date with port
cups-filters-1.0.66         =  up-to-date with port
cups-image-1.7.3_3          =  up-to-date with port
cups-pdf-2.6.1_1            =  up-to-date with port
cups-pk-helper-0.2.5        =  up-to-date with port
cups-pstoraster-8.15.4_8    =  up-to-date with port
cups-smb-backend-1.0_6      =  up-to-date with port
gutenprint-cups-5.2.10      =  up-to-date with port
# pkg info | grep foomatic
foomatic-db-20150214        =  up-to-date with port
foomatic-db-engine-4.0.12,2 =  up-to-date with port
foomatic-db-hpijs-1.4       =  up-to-date with port
foomatic-filters-4.0.17_2   =  up-to-date with port
gutenprint-foomatic-5.2.10  =  up-to-date with port
# pkg info | grep hplip
hplip-3.14.10               =  up-to-date with port

Создаем директории:

# mkdir /usr/local/share/foo2zjs/firmware
# mkdir /usr/local/share/foo2zjs/icm
# mkdir /usr/local/share/foo2hp/icm
cd /tmp

Скачиваем прошивки:

# getweb all

После закачки копируем закаченные файлы:

cp DL*.icm CP*.icm km2430*.icm /usr/local/share/foo2zjs/icm
cp sihp*.img /usr/local/share/foo2zjs/firmware
cp hpclj26*.icm km2430*.icm /usr/local/share/foo2hp/icm 
rm *.icm *.img

Переходим в /usr/local/share/foo2zjs/firmware

cd /usr/local/share/foo2zjs/firmware

Преобразовываем прошивку утилитой arm2hpdl:

arm2hpdl sihp1000.img > sihp1000.dl
arm2hpdl sihp1005.img > sihp1005.dl 
arm2hpdl sihp1020.img > sihp1020.dl 
arm2hpdl sihpP1005.img > sihpP1005.dl 
arm2hpdl sihpP1006.img > sihpP1006.dl 
arm2hpdl sihpP1505.img > sihpP1505.dl

Копируем /usr/local/share/examples/cups/ulpt-cupsd.conf -> /usr/local/etc/devd/

# cp /usr/local/share/examples/cups/ulpt-cupsd.conf /usr/local/etc/devd/

Пропишем новое правило после этого /usr/local/etc/devd/ulpt-cupsd.conf после строк:

attach 110 {
device-name "ulpt[0-9]+";
action "/usr/local/sbin/ulpt-cupsd.sh enable $device-name";
};

само правило:

attach 120 {
device-name "ulpt[0-9]+";
match "vendor" "0x03f0";
match "product" "0x4117";
action "cat /usr/local/share/foo2zjs/firmware/sihp1020.dl > /dev/$device-name";
};

Для печати из под Windows машин делаем следующее:

Раскоментируем строчки:
в файле /usr/local/etc/cups/mime.types:

application/octet-stream

в файле /usr/local/etc/cups/mime.convs:

application/octet-stream application/vnd.cups-raw 0 -

Если установлен ghostscript, то закомментировать строку в:
в файле /usr/local/etc/cups/mime.convs:

application/vnd.cups-postscript application/vnd.cups-raster 100 pstoraster

Делаем рестарт cupsd:

# service cupsd restart

Создаем файл devfs.rules в /etc/

touch /etc/devfs.rules

Добавляем доступ группе ‘cups’ к устройствам в /dev

[system=10]
add path 'unlpt*' mode 0660 group cups
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups
add path 'usb*' mode 0770 group cups
add path 'ugen*' mode 0660 group cups
add path 'usb/*' mode 0660 group cups

В /etc/rc.conf добавляем строчку:

devfs_system_ruleset="system"

Для доступа к настройкам принтера нужно отредактировать конфигурационный файл /usr/local/etc/cups/cupsd.conf

# Listen for connections on Port 631.
Port 631 # добавили
#Listen localhost:631 # закомментировали
Listen /var/run/cups.sock
# Show shared printers on the local network.
Browsing On
BrowseLocalProtocols dnssd
BrowseAllow 192.168.1.* # добавили свою внутреннюю сеть
BrowseAddress 192.168.1.* # добавили свою внутреннюю сеть
# Default authentication type, when authentication is required...
DefaultAuthType Basic
# Allow access to the server from any machine on the LAN
<location>
Order allow,deny
#Allow localhost
Allow 192.168.1.* # добавили свою внутреннюю сеть
</location>
 
# Allow access to the admin pages from any machine on the LAN
<location /admin>
#Encryption Required
Order allow,deny
Allow 192.168.1.* # добавили свою внутреннюю сеть
</location>
 
# Allow access to configuration files from any machine on the LAN
<location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow 192.168.1.* # добавили свою внутреннюю сеть
</location>

Выключаем и снова включаем принтер. Принтер должен отработать два раза.Первый раз при включении, а второй при загрузке прошивки.

Установка принтера.

В адресной строке браузера вводим

https://ip:631

меню -> < Администрирование>
пункт -> < Добавить принтер>
выбираем HP LaserJet 1018 (HP LaserJet 1018)
жмем -> < продолжить> — ставим галочку < Разрешить совместный доступ к этому принтеру>
жмем -> < продолжить>
жмем -> < выбрать модель>
я выбрал
жмем -> < добавить принтер>
жмем — < сохранить параметры>
Все принтер установлен.
Проверяем — < обслуживание> -> < печать пробной страницы>
использовал статью 1 и 2

Cups Ошибки

После длительного использования CUPS перестал запускаться и выдавал ошибку

Nov 17 08:17:45 -- cupsd: dnssd_clientstub ConnectToServer: connect()-> No of tries: 1
Nov 17 08:17:46 -- cupsd: dnssd_clientstub ConnectToServer: connect()-> No of tries: 2
Nov 17 08:17:47 -- cupsd: dnssd_clientstub ConnectToServer: connect()-> No of tries: 3
Nov 17 08:17:48 -- cupsd: dnssd_clientstub ConnectToServer: connect() failed path:/var/run/mdnsd Socket:9 Err:-1 Errno:2 No such file or directory

как я понимаю это глюк Freebsd… а решилось это достаточно необычным способом.
а именно дописав в /etc/rc.conf

named_chrootdir=""