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
hardware:printer:gdi [2022/02/04 18:26]
– removed - external edit (Unknown date) 127.0.0.1
hardware:printer:gdi [2022/02/17 05:21] (current)
– ↷ Links adapted because of a move operation root
Line 1: Line 1:
 +====== GDI printer and net print server ======
 +По форумам и на сайтах производителей пишут что GDI win принтеры, например HP LaserJet 1018, 1005 и им подобные, не работают через сетевые принт сервера такие как [[hardware:d-link: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:d-link: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