принт-сервер на генту: нужна консультация
Ситуация такая - имеется с десяток печатных устройств (в основном USB), вразнобой подключенных к win машинам. Соответственно имеет место быть куча разнородных проблем с печатью.
Задача - привести печать в порядок. Сначала посмотрел в сторону аппаратных принт-серверов, но столь многопортовых и доступных за приемлемую цену не обнаружил.
Возникла мысль сделать принт-сервер на генту. С печатью в Linux абсолютно незнаком и прежде чем разбираться, хотел бы услышать мнение компетентных людей по этому поводу - а именно: возможна ли в данном случае "сквозная" печать, т.е. эмуляция "железного" принт-сервера - чтобы не решать проблемы с драйверами, а просто печатать входящие raw data на соотв. порт ну и видеть статус принтера.
Если это возможно, прошу кинуть буквосочетания (в тему) и прочие нужные для построения данного сервера названия - для самостоятельного изучения.
- Для комментирования войдите или зарегистрируйтесь
Конечно же. CUPS. Держит
Конечно же. CUPS. Держит стандартный IPP из коробки.
Не грусти, товарищ! Всё хорошо, beautiful good!
спасибо, буду изучать )
спасибо, буду изучать )
А чем Cups не нравится?
А чем Cups не нравится?
сканирование
Задачка несколько усложнилась - среди принтеров есть МФУ, которыми в том числе и как сканерами пользуются. Надо полагать, общего решения для сканирования через принт-сервер просто не существует?
имхо, не вопрос, сканим и
имхо, не вопрос, сканим и печатаем ?
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
ну для кого не вопрос, а для
ну для кого не вопрос, а для меня - большой вопрос =) Как это вообще выглядеть будет? В смысле как сканировать с произвольной win машины сканером, подключенным к принтсерверу? У каждого же производителя сканеров сетевое сканирование по-своему организовано. Просветите плз.
sane
На сколько я помню, sane умеет по сети сканировать, в том числе и с виндовых машин.
а как это (сканирование)
а как это (сканирование) будет на виндовой машине выглядеть? для принтера понятно - выбрал-настроил порт и драйвер и печатай... а для сканирования как?
http://www.xsane.org/xsane-wi
http://www.xsane.org/xsane-win32.html
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
http://sanetwain.ozuzo.net/
http://sanetwain.ozuzo.net/
гм гм
Вы ни когда не сканировали? Выглядеть будет так - выбрал-настроил сканер и сканируй. Или сканирование под виндовс чем то кардинально отличается от линукса?
как-раз таки много сканировал
как-раз таки много сканировал но не под линуксом...)) поэтому и спрашиваю.
под виндой каждый производитель извращается по своему, ну, разве что TWAIN есть. Но мне нигде не попадалось на глаза такое понятие как "порт сканера". То есть с принтером все понятно - есть драйвер, есть порт а со сканерами все "из коробки" - я не видел, чтобы можно было сканировать по сети кроме как ОЕМ решениями а не системными средствами
наконец дошли руки до
наконец дошли руки до принт-сервера... поставил cups и hplip, почитал инфу, побился с багами, поставил первый принтер... однако хотелось не совсем такого подхода, а именно: процедура установки принтера в cups предполагает полноценную печать из любого места, соответственно ppd, hplip и еще наверное многие моменты от других производителей, с которыми мне предстоит столкнуться. А хотелось бы, учитывая тот факт, что печататься собственно с принтсервера ничего не будет - некую эмуляцию железного принтсервера - как моста между сетью и принтерами, дабы избежать ненужного индивидуального подхода к каждому принтеру.
Можно ли это сделать?
Вопрос не понятен
Вопрос не понятен
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
попытаюсь подробнее...
попытаюсь подробнее... возможно, я сделаю несколько ошибок, но, по-моему, ситуация обстоит примерно так:
1. при печати на локальный принтер метаданные с помощью драйвера преобразуются в команды принтера и посылаются в порт принтера
2. при печати на железный принтсервер команды принтера упаковываются в протокол, например LPR, буферизуются в нем и отсылаются о5 же в порт принтера (без особой обработки, видимо, т.е. вполне принтеронезависимо)
3. в cups (прошу учесть, я cups только вчера впервые увидел) я не нашел, как эмулировать функциональность п2, то есть мне пришлось для принтера HP P1005 устанавливать hplip ну и далее все как рекомендовано. При включении принтера еще и прошивка какая-то заливается...
Смысл вопроса в том, как мне избежать всех этих ненужных сущностей? Учитывая то, что принт-сервер будет только получать задания печати по сети и посылать и в порт? Можно ли просто поставить в соответствие имя очереди -> USB устройство, как это делает железка? Может быть, не cups для этого нужен?
Сейчас стоит и успешно
Сейчас стоит и успешно работает принт сервер на основе mini-itv VIA Epia ML600EA. Обслуживает четыре принтера - два HP1320 и два принтера штрихкодов, Godex и Zebra. Система загружается с ide flash диска в режиме ro (squashfs). Установлен CUPS. Печатаются задания в очень больших количествах (около 2000-5000 и более за день) с большими объемами (до 20-50Мб на задание).
Через LPR протокол передаеются raw данные, то есть задание на печать, готовое для прямой передачи в порт принтера. Формат этих данных определяется драйвером принтера, который установлен на локальной машине, с которой происходит печать.
В CUPS настраиваете все принтеры с указанием "Производитель" и "Модель/Драйвер" как "RAW", в конфигах CUPS разрешаете передачу RAW данных с клиента. На win клиентах создаете и печатаете в порт ipp.
Если вам нужна именно LPR печать, установите CUPS с USE="xinetd" и настройте xinetd. На win клиентах создаете стандартный серевой порт и печатаете в него по LPR. Не забываем "Разрешить подсчет байт в LPR" в настройках порта.
Производитель сэкономил на микросхемах памяти и заливает фирмварь в RAM принтера. Смотреть в сторону udev, написать правило, если USB устройство равно бла-бла-бла,то выполнить cat firmware > /dev/USB...
Как работает в этом случае CUPS:
Принимает RAW данные с удаленного клиента.
Сохраняет их в спуллере печати.
Ставит их в очередь на передачу в локальный порт соответствующего принтера.
Передает в порт соответствующего принтера.
Все.
Есть некоторые нюансы.
При подключении двух и более одинаковых принтеров начинаются проблемы. Дело в том, что CUPS 1.3 не умеет различать такие принтеры и в любом случае печать производится на первый из них. Как лечить - при помощи udev привязываем все такие принтеры к портам /dev/usblpX по их Serial Number. В настройках принтеров в CUPS указываем соответствующие порты /dev/usblp.
CUPS 1.4 уже умеет различать такие принтеры, но после экспериментов я отказался от этой версии. Проблема в следующем - CUPS 1.4 использует для передачи данных в принтер libusb. Периодически происходит ошибка в передаче данных и часть задания просто не печатается. На багзиле есть упоминание об этом. Решения я пока не нашел.
благодарю за подробный и
благодарю за подробный и полезный ответ. Буду реализовывать.
Единственный вопрос - про заливку firmware. Если принтер подключен к win машине, то никаких эффектов, связанных с заливкой, я не вижу; она происходит только под линем, что заметно по индикатору. Правила прописал, насколько я понимаю, hplip. Нужна ли заливка firmware, если я буду печатать RAW данные?
Beelzebubbie
Точно не скажу, но скорее всего нужна.
Вот так примерно выглядит правило udev, которое при подключении принтера hp LaserJet 1005 с серийным номером 00CNM1F18754 привяжет его к порту /dev/usblp0 и загрузит в него firmware:
Это нужно добавить в файл , допустим, с именем 00-persistent-usblp.rules и поместить этот файл в каталог /etc/udev/rules.d.
вы читали
вы читали http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/CUPS-printing.html#id2634124 (Raw Queue). Но для ряда принтеров все равно надо firmware при включении заливать, но этим udev занимается.
да, читал. Только я не
да, читал. Только я не планирую использовать Samba, а печатать через IPP. Про firmware уже понял, что заливать придется...
На виндах - расшарить
На виндах - расшарить принтеры, на КУПС - подключать шары.
И все, вот вам и мост!
Кстати совет, - где это возможно, подключайте принтеры напрямую к принт-серверу (через УСБ с удлинителем, сеть, длиннные ЛПТ кабели и т.д.). Будет меньше мороки.
я и планирую подключить все
я и планирую подключить все принтеры непосредственно к портам принтсервера на gentoo. Вопрос-то в том, что подсистема, как бы ее назвать.. подготовки заданий печати мне на принтсервере не нужна, только управляемые очереди. То есть ничего "принтерозависимого", как в железном принтсервере.
Хотелось бы для себя уяснить
Хотелось бы для себя уяснить - есть ли разница м/у тем, что я печатаю с win машины (IPP) http://printserver:631/Printer_RAW или через Samba на \\printserver\Printer_RAW? И что такого магического (кроме заливки firmware) происходит под win чтобы принтер печатал? Canon LBP3010 удалось заставить печатать только посредством cndrvcups (почему, кстати не печатает RAW без cndrvcups?), MF3228 вообще никак победить не удалось. Воображение иссякло, нужна помощь )