Site Tools


hardware:printer:gdi

Differences

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

Link to this comparison view

Next revision
Previous revision
hardware:printer:gdi [2015/05/17 03:11]
– создано root
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 printer and net print server ======
-По форумам и на сайтах производителей пишут что GDI win принтеры, например HP LaserJet 1018, 1005 и им подобные, не работают через сетевые принт сервера такие как [[ru:hardware:dlink:ps_dp301u_to_dpr1020|D-Link DP-301U, DPR-1020]], TL-PS110U и им подобные.\\+По форумам и на сайтах производителей пишут что GDI win принтеры, например HP LaserJet 1018, 1005 и им подобные, не работают через сетевые принт сервера такие как [[hardware:d-link:ps_dp301u_to_dpr1020|D-Link DP-301U, DPR-1020]], TL-PS110U и им подобные.\\
  
 **Это не так!!!**\\ **Это не так!!!**\\
 Работают!\\ Работают!\\
-Но с не большим костылём. 
  
-[b]Как это работает[/b] 
-После включения принтера нужно залить в него прошивку.  
-Под виндой этим занимается драйвер принтера: скорее всего он ловит событие от юзби порта сразу после включения и первоначальной инициализации принтера, и сливает в него основную прошивку которая идёт с драйвером - обычный .img файл, который можно найти в архиве с драйвером, например для 1018 это hp1018.img. 
-Драйвер добавляет в начало служебную команду/заголовок, чтобы принтер отличил прошивку от очередного документа на печать. 
-Принт серверу совершенно безразлично что отправлять через себя на принтер, его волнует только обработка протоколов печати, чтобы извлечь от туда данные для отправки на принтер. 
  
-На самом деле существует масса способов сделать это, есть даже варианты полностью автоматические.+===== Устройство GDI принтеров ===== 
 +После включения принтера нужно перед печатью загрузить в него прошивку. \\ 
 +Под виндой этим занимается драйвер принтера: скорее всего он ловит событие от USB порта сразу после включения и первоначальной инициализации принтераи загружает в него основную прошивку которая идёт с драйвером - обычный .img файл, который можно найти в архиве с драйвером, например для 1018 это hp1018.img.\\ 
 +Драйвер добавляет в начало служебную команду/заголовок ELF, чтобы принтер отличил прошивку от очередного документа на печать.\\ 
 +Принт серверу совершенно безразлично что отправлять через себя на принтер, его волнует только обработка протоколов печатичтобы извлечь от туда данные для отправки на принтер.\\
  
  
-[b]1. Залив прошивки по SMB[/b]+===== Варианты загрузки прошивки ===== 
 + 
 +==== Загрузка по SMB ====
 Самое простое что можно сделать под виндой стандартными средствами и совершенно без особых прав в системе, это: Самое простое что можно сделать под виндой стандартными средствами и совершенно без особых прав в системе, это:
-[code]copy c:\sihp1018.dl \\172.16.0.10\LP1[/code+<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**\\ 
-sihp1018.dl - образ прошивки с добавленным служебным заголовком/командой, без него принтер просто проигнорирует свою родную прошивку, можно либо найти в инете готовый, я нашёл тут: [url=http://www.dd-wrt.com/phpBB2/viewtopic.php?p=423330]http://www.dd-wrt.com/phpBB2/viewtopic.php?p=423330[/url] , [url=http://oleg.wl500g.info/hplj/]http://oleg.wl500g.info/hplj/[/url] либо сделать самостоятельно утилитой arm2hpdl из состава foo2zjs +**\\172.16.0.10** - адрес принт сервера, можно использовать и имя: \\hwprintserver - какое в настройках задано в разделе SMB\\ 
-\\172.16.0.10 - адрес принт сервера, можно использовать и имя: \\hwprintserver - какое в настройках задано в разделе SMB +**\LP1** - имя принтера, оно настраивается в принтсервере в разделе SMB, можно просто посмотреть если зайти проводником.\\
-\LP1 - имя принтера, оно настраивается в принтсервере в разделе SMB, можно просто посмотреть если зайти проводником.+
  
-Те в примитивном и ужасном случае добавляем юзеру ярлык в автозагрузку и на рабочий стол, пусть запускает после каждого включения принтера :)+Те можно добавить пользователю ярлык в автозагрузку и на рабочий стол, пусть запускает после каждого включения принтера.\\
  
  
-[b]2. Залив прошивки через LPR[/b] +==== Загрузка через LPR ==== 
-В состав windows и др операционных систем входит утилита lpr предназначенная для отправки файлов на печать по одноимённому протоколу. +В состав windows и др операционных систем входит утилита **lpr** предназначенная для отправки файлов на печать по одноимённому протоколу.\\ 
-Для windows коммандная строка будет выглядеть так: +Для windows командная строка будет выглядеть так: 
-[code]lpr -S 172.16.0.10 -P lp1 -o l c:\sihp1018.dl[/code] +<code>lpr -S 172.16.0.10 -P lp1 -o l c:\sihp1018.dl</code> 
-где все значения аналогичны значениям в предыдущем пункте. +где все значения аналогичны значениям в предыдущем варианте. 
-подробнее о параметрах коммандной строки: [url=http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lpr.mspx?mfr=true]http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lpr.mspx?mfr=true[/url+подробнее о параметрах командной строки: [[http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lpr.mspx?mfr=true|www.microsoft.com/resources/documentation]]\\ 
-или просто запустить lpr без аргументов. +или просто запустить **lpr** без аргументов.\\ 
-Как и в предыдущем варианте, прошивка должна уже содержать заголовок/команду.+Как и в предыдущем варианте, прошивка должна уже содержать заголовок ELF/команду.\\
  
  
-[b]3. Залив прошивки по TCP RAW[/b] +==== Загрузка по TCP RAW ==== 
-На принтсервере обычно открыт TCP порт 9100 для входящих подключений, всё что на него принимается пересылается прямиком на принтер. +На принтсервере обычно открыт TCP порт 9100 для входящих подключений, всё что на него принимается пересылается прямиком на принтер.\\ 
-Без специальных утилит тут не обойтись. Во время тестирования я набросал простенькую программу [b]FWUploader[/b] на си, порядка 10 строк, которая открывала файл, читала в буфер, подключалась на указанный адрес и отправляла содержимое буфера. Я использовал прошивку с уже добавленный служебным заголовком во время первых тестов, позднее программа научилась сама добавлять всё что нужно.+Без специальных утилит тут не обойтись. Во время тестирования я набросал простенькую программу [[software:win:print:fw_uploader|Printer firmware uploder converter]] на си, порядка 10 строк, которая открывала файл, читала в буфер, подключалась на указанный адрес и отправляла содержимое буфера. Я использовал прошивку с уже добавленный служебным заголовком во время первых тестов, позднее программа научилась сама добавлять всё что нужно.
  
  
-[b]4. Печать прошивки[/b] +==== Печать прошивки ==== 
-Ещё один способ залить прошивку в принтер - отправить её на печать :) +Ещё один способ отправить прошивку в принтер - отправить её на печать.\\ 
-Я опять же написал небольшую программу [b]FWUploader[/b], скорее даже скопипастил большую часть - функция RawDataToPrinter [url=http://msdn.microsoft.com/en-us/library/dd162959%28VS.85%29.aspx]http://msdn.microsoft.com/en-us/library/dd162959%28VS.85%29.aspx[/url, а открытие файла с прошивкой и чтение в буфер было как в варианте с отправкой. +Добавил в [[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]].\\
-Возможно есть способы заставить систему отправить файл на принтер без всяких обработок, или есть какая то системная утилита или утилита сторонних разработчиков которая делает тоже самое - мне было проще сделать это из программы, потому как найти в справке MSDN это дело нескольких минут, все возвращаемые ошибки можно посмотреть - когда делаешь впервые очень помогает, как луч света в тёмной комнате, и уж точно никаких тебе вирусов, инсталяторов и бесплатно.+
  
  
-Это не единственные способы, их гораздо больше - столько сколько протоколов печати поддерживает принт сервер. +Это не единственные способы, их гораздо больше - столько сколько протоколов печати поддерживает принт сервер.\\ 
-Мою программу [b][url=http://www.netlab.linkpc.net/download/software/FWUploader/FWUploader.zip]FWUploader.zip[/url][/b] для п3 и п4 можно взять здесь, описание прилагается: [url=http://www.netlab.linkpc.net/forum/index.php?topic=182.0]http://www.netlab.linkpc.net/forum/index.php?topic=182.0[/url]+[[software:win:print:fw_uploader|Printer firmware uploder converter]] поддерживает вышеописанные способы, кроме lpr.
  
  
-[b]Автоматизация[/b] +===== Автоматизация ===== 
-Чтобы лишний раз не заливать прошивку в принтер и тем самым не переинициализировать его, но не не оставлять в не рабочем состоянии можно воспользоваться SNMP трапами. +Чтобы лишний раз не отправлять прошивку в принтер и тем самым не переинициализировать его, но не не оставлять в не рабочем состоянии можно воспользоваться __SNMP__ трапами.\\ 
-В принтсервере настраиваем адрес компьютера куда отправлять SNMP трапы. +В принтсервере настраиваем адрес компьютера куда отправлять __SNMP__ трапы.\\ 
-На компьютере должны быть запущена служба, которая эти трапы принимает и в зависимости от их содержимого либо ничего не делает либо заливает прошивку в принтер. +На компьютере должны быть запущена служба, которая эти трапы принимает и в зависимости от их содержимого либо ничего не делает либо заливает прошивку в принтер.\\ 
-TL-PS110U шлёт трапы после перезагрузкипосле включения принтера (не документировано)отключения сети (весьма остроумно)подключения сетевого интерфейсанеудачная аутентификация, я предполагаю что на события связанные с печатью могут быть трапы, сейчас проверять уже не охота.+TL-PS110U шлёт трапы
 +  * после перезагрузки 
 +  * после включения принтера (не документировано) 
 +  * отключения сети (весьма остроумно) 
 +  * подключения сетевого интерфейса 
 +  * неудачная аутентификация 
 +Предполагаю что на события связанные с печатью тоже могут быть трапы.
  
  
 +**Опробовано на:** HP LaserJet 1018 + TL-PS110U / [[hardware:d-link:ps_dp301u_to_dpr1020|D-Link DP-301U, DPR-1020]] \\
 +Драйвера для принтера брал самые последние с сайта, не смотря на то, что некоторые советовали брать как можно старее.\\
  
 +После загрузки прошивки принтер будет работать в любых ОС, с базовыми драйверами от HP, не смотря на заверения производителя - см **foo2zjs**.\\
  
-[b]Опробовано на: HP LaserJet 1018 + TL-PS110U / [url=http://www.netlab.linkpc.net/forum/index.php?topic=186.0]DP-301U[/url][/b] / DPR-1020 +Можно поискать встроенные в ОС **SNMP** ловушки/демоны, чтобы принимать трапы от принтсервера и отправлять прошивку автоматически.\\
-Драйвера для принтера брал самые последние с сайта, не смотря на то, что некоторые советовали брать как можно старее.+
  
-В инструкции есть описание работы с программой PSAdmin - возможно с её помощью и удастся добиться работы GDI принтеров, но copy от майкрософта я доверяю больше, работает она понятнее и уж точно не придётся искать новую версию при обновлении виндовс, смене архитектуры (х32 -> х64) или вообще отказе от виндовс. А свои программы я просто пересоберу/портирую. 
-Полагаю что после залива прошивки в принтер он будет работать и в других ОС, с базовыми драйверами от HP, не смотря на заверения производителя - см foo2zjs. 
  
  
-PS: позже появятся утилиты для добавления служебного заголовка к прошивке под винду, а также для заливки по TCP RAW. +{{tag>hardware article print}}
-SNMP автозаливалку прошивки под винду врядли буду писать, хотя и писать мало, скорее всего под фряху попробую реализовать её стандартными средствами.+
hardware/printer/gdi.txt · Last modified: 2022/02/17 05:21 by root