Site Tools


hardware:printer:gdi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
hardware:printer:gdi [2022/02/04 18:26]
– removed - external edit (Unknown date) 127.0.0.1
hardware:printer:gdi [2022/02/05 04:48]
root
Line 1: Line 1:
 +====== GDI printer and net print server ======
 +По форумам и на сайтах производителей пишут что GDI win принтеры, например HP LaserJet 1018, 1005 и им подобные, не работают через сетевые принт сервера такие как [[hardware:dlink:ps_dp301u_to_dpr1020|D-Link DP-301U, DPR-1020]], TL-PS110U и им подобные.\\
  
 +**Это не так!!!**\\
 +Работают!\\
 +
 +
 +===== Устройство GDI принтеров =====
 +После включения принтера нужно перед печатью загрузить в него прошивку. \\
 +Под виндой этим занимается драйвер принтера: скорее всего он ловит событие от USB порта сразу после включения и первоначальной инициализации принтера, и загружает в него основную прошивку которая идёт с драйвером - обычный .img файл, который можно найти в архиве с драйвером, например для 1018 это hp1018.img.\\
 +Драйвер добавляет в начало служебную команду/заголовок ELF, чтобы принтер отличил прошивку от очередного документа на печать.\\
 +Принт серверу совершенно безразлично что отправлять через себя на принтер, его волнует только обработка протоколов печати, чтобы извлечь от туда данные для отправки на принтер.\\
 +
 +
 +===== Варианты загрузки прошивки =====
 +
 +==== Загрузка по SMB ====
 +Самое простое что можно сделать под виндой стандартными средствами и совершенно без особых прав в системе, это:
 +<code>copy c:\sihp1018.dl \\172.16.0.10\LP1</code>
 +**sihp1018.dl** - образ прошивки с добавленным служебным заголовком ELF/командой, без него принтер просто проигнорирует свою родную прошивку, можно либо найти в инете готовый, я нашёл тут: [[http://www.dd-wrt.com/phpBB2/viewtopic.php?p=423330|www.dd-wrt.com]] , [[http://oleg.wl500g.info/hplj/|oleg.wl500g.info]] либо сделать самостоятельно утилитой **arm2hpdl** из состава **foo2zjs**\\
 +**\\172.16.0.10** - адрес принт сервера, можно использовать и имя: \\hwprintserver - какое в настройках задано в разделе SMB\\
 +**\LP1** - имя принтера, оно настраивается в принтсервере в разделе SMB, можно просто посмотреть если зайти проводником.\\
 +
 +Те можно добавить пользователю ярлык в автозагрузку и на рабочий стол, пусть запускает после каждого включения принтера.\\
 +
 +
 +==== Загрузка через LPR ====
 +В состав windows и др операционных систем входит утилита **lpr** предназначенная для отправки файлов на печать по одноимённому протоколу.\\
 +Для windows командная строка будет выглядеть так:
 +<code>lpr -S 172.16.0.10 -P lp1 -o l c:\sihp1018.dl</code>
 +где все значения аналогичны значениям в предыдущем варианте.
 +подробнее о параметрах командной строки: [[http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lpr.mspx?mfr=true|www.microsoft.com/resources/documentation]]\\
 +или просто запустить **lpr** без аргументов.\\
 +Как и в предыдущем варианте, прошивка должна уже содержать заголовок ELF/команду.\\
 +
 +
 +==== Загрузка по TCP RAW ====
 +На принтсервере обычно открыт TCP порт 9100 для входящих подключений, всё что на него принимается пересылается прямиком на принтер.\\
 +Без специальных утилит тут не обойтись. Во время тестирования я набросал простенькую программу [[software:win:print:fw_uploader|Printer firmware uploder / converter]] на си, порядка 10 строк, которая открывала файл, читала в буфер, подключалась на указанный адрес и отправляла содержимое буфера. Я использовал прошивку с уже добавленный служебным заголовком во время первых тестов, позднее программа научилась сама добавлять всё что нужно.
 +
 +
 +==== Печать прошивки ====
 +Ещё один способ отправить прошивку в принтер - отправить её на печать.\\
 +Добавил в [[software:win:print:fw_uploader|Printer firmware uploder / converter]], скопировав большую часть - функция __RawDataToPrinter__ [[http://msdn.microsoft.com/en-us/library/dd162959%28VS.85%29.aspx|msdn.microsoft.com]].\\
 +
 +
 +Это не единственные способы, их гораздо больше - столько сколько протоколов печати поддерживает принт сервер.\\
 +[[software:win:print:fw_uploader|Printer firmware uploder / converter]] - поддерживает вышеописанные способы, кроме lpr.
 +
 +
 +===== Автоматизация =====
 +Чтобы лишний раз не отправлять прошивку в принтер и тем самым не переинициализировать его, но не не оставлять в не рабочем состоянии можно воспользоваться __SNMP__ трапами.\\
 +В принтсервере настраиваем адрес компьютера куда отправлять __SNMP__ трапы.\\
 +На компьютере должны быть запущена служба, которая эти трапы принимает и в зависимости от их содержимого либо ничего не делает либо заливает прошивку в принтер.\\
 +TL-PS110U шлёт трапы:
 +  * после перезагрузки
 +  * после включения принтера (не документировано)
 +  * отключения сети (весьма остроумно)
 +  * подключения сетевого интерфейса
 +  * неудачная аутентификация
 +Предполагаю что на события связанные с печатью тоже могут быть трапы.
 +
 +
 +**Опробовано на:** HP LaserJet 1018 + TL-PS110U / [[hardware:dlink:ps_dp301u_to_dpr1020|D-Link DP-301U, DPR-1020]] \\
 +Драйвера для принтера брал самые последние с сайта, не смотря на то, что некоторые советовали брать как можно старее.\\
 +
 +После загрузки прошивки принтер будет работать в любых ОС, с базовыми драйверами от HP, не смотря на заверения производителя - см **foo2zjs**.\\
 +
 +Можно поискать встроенные в ОС **SNMP** ловушки/демоны, чтобы принимать трапы от принтсервера и отправлять прошивку автоматически.\\
 +
 +
 +
 +{{tag>hardware article print}}
hardware/printer/gdi.txt · Last modified: 2022/02/17 05:21 by root