PDA

Bekijk de volledige versie : Cloud Print от Google на роутере



brightred
14-08-2012, 20:16
Приветствую коллеги! Встретилась мне на Хабре статья Используем Google Cloud Print без Google Chrome (http://habrahabr.ru/post/149520/).

Хотелось бы повторить это на наших устройствах, однако не нашел в репозитарии модулей python-cups и python-setuptools. Прошу по возможности их добавить в репозитарий.

ryzhov_al
15-08-2012, 08:08
Приветствую коллеги! Встретилась мне на Хабре статья Используем Google Cloud Print без Google Chrome (http://habrahabr.ru/post/149520/).

Хотелось бы повторить это на наших устройствах, однако не нашел в репозитарии модулей python-cups и python-setuptools. Прошу по возможности их добавить в репозитарий.


$ opkg install python-cloudprint
$ cloudprint

Без принтера всё работает:) Обязательно отпишитесь по результатам тестирования.
А уж если напишите краткую пошаговую инструкцию по использованию, будет совсем здорово!

brightred
16-08-2012, 09:55
$ opkg install python-cloudprint
$ cloudprint
Без принтера всё работает:) Обязательно отпишитесь по результатам тестирования.
А уж если напишите краткую пошаговую инструкцию по использованию, будет совсем здорово!
Спасибо! В ближайшее время попробую - отпишусь.

Коллеги, докладываю:

Setup:
Asus RT-N56U
Firmware Version: 1.0.1.8e-p2 - кстати, более старшие версии прошивки почему-то странно у меня работают с Entware
- ряд установленных программ, работавших на этой прошивке, на обновленной вываливаются в segfault
Operation Mode: Router
Репозиторий - Entware

При подключении принтера к USB порту роутер вроде его опознает:

$dmesg
usb 2-2: new full speed USB device using rt3xxx-ohci and address 2
usb 2-2: configuration #1 chosen from 1 choice
drivers/usb/class/usblp.c: usblp0: USB Bidirectional printer dev 2 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0182
drivers/usb/class/usblp.c: usblp0 Device ID string [51]='MFG:Brother;CMD:PJL,HBP;MDL:DCP-7010;CLS:PRINTER;'
[K] usblp_probe
Однако попытка напрямую на него печатать не приводит к успеху:

$cd /tmp
$cat "Hello World" > message.txt
$cat message.txt > /dev/lp0
Кстати, ожидал, что принтер появится в виде типа /dev/usb/lp0, однако даже папки /dev/usb/ не обнаружил
Вывода на печать нет. В логе

dmesg
drivers/usb/class/usblp.c: usblp0 Device ID string [51/max 1552]='MFG:Brother;CMD:PJL,HBP;MDL:DCP-7010;CLS:PRINTER;'
drivers/usb/class/usblp.c: Parsing USBLPID...
На этом я дальше копать не стал, попробовал запустить веб-интерфейс cups - вроде его требовала статья на Хабре.

$ps | grep cups
18350 pts/1 S+ 0:00 \_ grep cups
31421 ? Ss 0:00 cupsd -C /opt/etc/cups/cupsd.conf

$cat /opt/etc/cups/cupsd.conf
################################################## ######################
# #
# This is the CUPS configuration file. If you are familiar with #
# Apache or any of the other popular web servers, we've followed the #
# same format. Any configuration variable used here has the same #
# semantics as the corresponding variable in Apache. If we need #
# different functionality then a different name is used to avoid #
# confusion... #
# #
################################################## ######################

AccessLog syslog
ErrorLog syslog
LogLevel info
#LogLevel debug2
PageLog syslog
PreserveJobHistory No
PreserveJobFiles No
AutoPurgeJobs Yes
MaxJobs 25
MaxPrinterHistory 10
#Printcap /etc/printcap
#PrintcapFormat BSD
RequestRoot /var/cups
#RemoteRoot remroot
User nobody
Group nogroup
RIPCache 512k
TempDir /var/cups
Port 631
HostNameLookups Off
KeepAlive On
Browsing On
BrowseProtocols cups

<Location />
Order Deny,Allow
#Allow From 127.0.0.1
#Allow From 192.168.1.0/24
Allow From All
</Location>

<Location /admin>
AuthType Basic
AuthClass System
Order Allow,Deny
Allow From All
</Location>
Попытка войти в веб-интерфейс cups http://myrouterip:631 дает ошибку 404 not found
Поскольку идей не было, запустил cloudprint:

$cloudprint
Skipping USB
Skipping LP
cloudprint запустился и остался висеть без выхода в командную строку. Но не завис, его можно прервать с помощью Ctrl-C
На станице https://www.google.com/cloudprint?user=0#printers новых принтеров не появилось

Поскольку время было позднее, эксперименты прекратил, но осталось опасение, что что-то не так, поскольку напрямую
на принтер напечатать нельзя и cups не работает. Ну что, коллеги, может что-то посоветуете?

ryzhov_al
16-08-2012, 10:20
Ну что, коллеги, может что-то посоветуете?Посоветуем настроить CUPS, т.е. для начала сделать так, чтобы он печатал безо всяких облаков.

С настроенным виртуальным принтером задание на роутер "приплывает" PDF-файлом, но на печать не выводится из-за недостатка у виртуального принтера capabilities. Детали здесь (http://pastebin.com/VT3eV5xi) (простите за чат лог).

lly
16-08-2012, 10:50
Ну что, коллеги, может что-то посоветуете?
Сперва разобраться с самой прошивкой, так как Entware не содержит ядерных модулей и на создание файлов самих устройств в /dev и т.п. повлиять не может.

C segfault'ами чуть посложнее - надо сперва убедиться что подхватываются нужные библиотеки из Entware, а не прошивочные. Ну и в идеале посмотреть при помощи gdb где-же именно падает.

brightred
16-08-2012, 15:12
Посоветуем настроить CUPS

Я что-то подобное подозревал :)

Спасибо, буду вечером пробовать.


Сперва разобраться с самой прошивкой, так как Entware не содержит ядерных модулей и на создание файлов самих устройств в /dev и т.п. повлиять не может.


Я наивно полагал, что если роутер увидел принтер в административном веб-интерфейсе, то с модулями ядра все нормально...

anyway - попробую рекомендации уважаемого ryzhov_al, по результатам отпишусь

dlukanidin
16-08-2012, 15:52
Я наивно полагал, что если роутер увидел принтер в административном веб-интерфейсе, то с модулями ядра все нормально...

anyway - попробую рекомендации уважаемого ryzhov_al, по результатам отпишусь

Насколько я понимаю принцип работы cups, новых модулей там не понадобится.
Но там может понадобиться фильтр под конкретный принтер, который и выполняет собственно функции драйвера.
Если Ваш принтер есть в списке gutenprint из optware или для него подходят стандартные фильтры из комплекта в entware, то всё должно получиться, иначе ИМХО проблема решается только подключением данного принтера к ББ (возможно удалённо через роутер) и настройки всего добра уже там. В любом случае надо найти описание Вашего принтера в виде ppd файла, который понимает cups, возможно он есть или в gutenprint или в линуксовых драйверах от производителя.
Я samsung ML-2165W подключить через cups так и не смог именно в силу отсутствия проприетарного фильтра скомпилированного под архитектуру роутера.
Кроме того и cups у меня нормально не заработал (писал в теме про entware на 66-м), но это возможно из-за библиотек, просто не стал дальше копать.

brightred
16-08-2012, 16:01
Насколько я понимаю принцип работы cups, новых модулей там не понадобится.
Но там может понадобиться фильтр под конкретный принтер, который и выполняет собственно функции драйвера.
Если Ваш принтер есть в списке gutenprint из optware или для него подходят стандартные фильтры из комплекта в entware, то всё должно получиться, иначе ИМХО проблема решается только подключением данного принтера к ББ (возможно удалённо через роутер) и настройки всего добра уже там. В любом случае надо найти описание Вашего принтера в виде ppd файла, который понимает cups, возможно он есть или в gutenprint или в линуксовых драйверах от производителя.
Я samsung ML-2165W подключить через cups так и не смог именно в силу отсутствия проприетарного фильтра скомпилированного под архитектуру роутера.
Кроме того и cups у меня нормально не заработал (писал в теме про entware на 66-м), но это возможно из-за библиотек, просто не стал дальше копать.

Насколько я понял драйвер есть, однако пока проверить не могу - на сайте производителя (http://welcome.solutions.brother.com/bsc/public_s/id/linux/en/download_prn.html#DCP-7010) он в виде .deb или .rpm пакета. Я так понял нужно их расковырять и вытащить ppd файл...

Будем посмотреть...

wmlex
03-01-2013, 22:37
Попытался настроить cloudprint, но столкнулся с тем, что не могу настроить CUPS. Не работает веб интерфейс (404) хотя cupsd висит в процессах. Принтер появляется в устройствах как /dev/lp0 и я могу распечатать с компьютера документ, но команда lpstat -v ничего не выводит. Принтер Brother HL-2030, Роутер ASUS WL-500GP v2 сборка 1.9.2.7-rtn-r4695 репозиторий Entware.

ryzhov_al
04-01-2013, 08:58
CUPS, IMHO — довольно жирная туша для embedded систем, он портирован без web-интерфейса. Настройки выполняются простой правкой конфига.

Попытался настроить cloudprint, но столкнулся с тем, что не могу настроить CUPS. Не работает веб интерфейс (404) хотя cupsd висит в процессах. Принтер появляется в устройствах как /dev/lp0 и я могу распечатать с компьютера документ, но команда lpstat -v ничего не выводит. Принтер Brother HL-2030, Роутер ASUS WL-500GP v2 сборка 1.9.2.7-rtn-r4695 репозиторий Entware.Да, cloudprint свою работу делает, но для печати не хватает некоторых компонентов. В частности, задания для принтера в PDF-формате из облака на роутер «приезжают», но я пока не портировал pdf2ps для того, чтобы задания могли уйти в печать. See issues #16 (http://code.google.com/p/wl500g-repo/issues/detail?id=16), #27 (http://code.google.com/p/wl500g-repo/issues/detail?id=27), #62 (http://code.google.com/p/wl500g-repo/issues/detail?id=62).

Единственный товарищ, который в своё время вызвался тестировать работу cloudprint куда-то слился (http://wl500g.info/showthread.php?28036-%CF%E5%F0%E5%F5%EE%E4-%ED%E0-%ED%EE%E2%FB%E9-%F0%E5%EF%EE%E7%E8%F2%EE%F0%E8%E9-Entware-%F1-Optware&p=253899#post253899) и дело заглохло. В связи с тем, что в одиночку вникать абсолютно во ВСЕ технологии — вопрос неблагодарный, я жду заинтересованных.

В целом по печати положение следующее. Пакет CUPS в OpenWRT изначально был в крайне куцем состоянии, причём древней версии. Это дело я поправил, на очереди довольно строптивый (http://code.google.com/p/pits/source/browse/trunk/ijsgutenprint/Makefile) в плане кросс-компиляции guttenprint и ghostscript. Утилита pdf2ps — в составе последнего. Опять же, всю цепочку мне в одиночку не протестировать, у меня такой принтер (http://www.canon-europe.com/For_Home/Product_Finder/Fax/Laser/Features/Printer_Languages/), который с линуксом дружит чуть менее, чем совсем никак.

wmlex
04-01-2013, 17:02
Готов протестировать и оказать посильную помощь. Что от меня требуется?

ryzhov_al
03-07-2013, 14:50
CUPS, IMHO — довольно жирная туша для embedded систем, он портирован без web-интерфейса. Настройки выполняются простой правкой конфига.
Да, cloudprint свою работу делает, но для печати не хватает некоторых компонентов. В частности, задания для принтера в PDF-формате из облака на роутер «приезжают», но я пока не портировал pdf2ps для того, чтобы задания могли уйти в печать. See issues #16 (http://code.google.com/p/wl500g-repo/issues/detail?id=16), #27 (http://code.google.com/p/wl500g-repo/issues/detail?id=27), #62 (http://code.google.com/p/wl500g-repo/issues/detail?id=62).

Единственный товарищ, который в своё время вызвался тестировать работу cloudprint куда-то слился (http://wl500g.info/showthread.php?28036-%CF%E5%F0%E5%F5%EE%E4-%ED%E0-%ED%EE%E2%FB%E9-%F0%E5%EF%EE%E7%E8%F2%EE%F0%E8%E9-Entware-%F1-Optware&p=253899#post253899) и дело заглохло. В связи с тем, что в одиночку вникать абсолютно во ВСЕ технологии — вопрос неблагодарный, я жду заинтересованных. Добавил в репозиторий guttenprint, ghostscript и ряд популярных наборов шрифтов, теперь всё необходимое для AirPrint и Cloudprint в комплекте!

ghostscript — довольно тяжёлая софтина. Скажем, преобразование pdf2ps десятистраничного документа занимает на RT-N66U минуту:

# wget http://www.hashcash.org/papers/hashcash.pdf
# du -h ./hashcash.pdf
88.0K ./hashcash.pdf
# time pdf2ps ./hashcash.pdf ./hashcash.ps
11.30user 50.27system 1:01.92elapsed 99%CPU

На DIR-320:

$ time pdf2ps ./hashcash.pdf ./hashcash.ps
real 3m 9.64s
user 0m 34.07s
sys 2m 33.36s

Повторюсь, жду заинтересованных в тестировании.

brightred
21-07-2013, 14:21
Единственный товарищ, который в своё время вызвался тестировать работу cloudprint куда-то слился и дело заглохло. В связи с тем, что в одиночку вникать абсолютно во ВСЕ технологии — вопрос неблагодарный, я жду заинтересованных.

Я не слился, у меня ребенок родился :) Было некогда какое-то время.

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

dlukanidin
15-11-2013, 22:27
Имею указанные в заголовке роутер и принтер.
Принтер нормально печатает и из под винды и из под мак оси через lpr.
Для него есть программка под iOs, которая умеет печатать через ipp в формате raw.
Вроде идеальный вариант чтобы поставить cups и без всяких лишних драйверов и ppd файлов печатать в octet stream.
Установил cups из entware. Поправил ручками printers.conf - добавил ещё один принтер копию установленного по умолчанию usb, только изменил Connection: usb:/dev/lp0 вместо /dev/usb/lp0. Поставил его как принтер по умолчанию.
Запускаю печать.
В логах вижу Request file type is application/octet-stream, Print-Job successful-ok.
Ничего на принтер не печатается и cups в своей веб морде пишет, что ждёт пока принтер станет доступным.

Что делаю не так?
Вроде задача cups в такой ситуации пропихнуть задание без всяких фильтров. И он почти это делает, только не печатает. Скорее всего ошибка в /dev/lp0 и нужно воткнуть драйвер для raw печати, который создаст соответствующее устройство и с ним уже можно будет работать. Какой драйвер? Как правильнее установить?
Извините за сумбур, но что то я запутался слегка.

P.S. Потом планирую и с гугл и эйр принтом поэкспериментировать, но сначала нужно пройти эту вроде как простейшую ситуацию. :(

P.P.S. Попытка установить устройство в Connection: parallel:/dev/lp0 получил ошибку Unable to open device file: Permission denied

ryzhov_al
16-11-2013, 06:48
Фича была востребована пользователями и пока мы телились, они смогли её реализовать средствами Optware.

Airprint and Google Cloud Print via Optware (http://tomatousb.org/forum/t-638158/airprint-and-google-cloud-print-via-optware).
Airprint + Google Cloud Print + CUPS - working and here is how (http://tomatousb.org/forum/t-573238).
A fork of Optware focuses on some fixes to allow AirPrint and
Google Cloud Print servers to run natively on Broadcom routers flashed with
TomatoUSB and DD-WRT. (https://github.com/davygravy/optware-dg)
AirPrint on TomatoUSB Router. (http://blog.qnology.com/2013/03/tutorial-apple-airprint-on-tomatousb.html) Это How-To довольно толкового товарища, ранее активно тестировавшего (http://blog.qnology.com/2012/12/tutorial-apple-airplay-on-tomatousb.html) наш порт AirPlay.


Делайте по образцу, у нас есть все необходимые компоненты.

dlukanidin
16-11-2013, 09:48
Фича была востребована пользователями и пока мы телились, они смогли её реализовать средствами Optware.

Airprint and Google Cloud Print via Optware (http://tomatousb.org/forum/t-638158/airprint-and-google-cloud-print-via-optware).
Airprint + Google Cloud Print + CUPS - working and here is how (http://tomatousb.org/forum/t-573238).
A fork of Optware focuses on some fixes to allow AirPrint and
Google Cloud Print servers to run natively on Broadcom routers flashed with
TomatoUSB and DD-WRT. (https://github.com/davygravy/optware-dg)
AirPrint on TomatoUSB Router. (http://blog.qnology.com/2013/03/tutorial-apple-airprint-on-tomatousb.html) Это How-To довольно толкового товарища, ранее активно тестировавшего (http://blog.qnology.com/2012/12/tutorial-apple-airplay-on-tomatousb.html) наш порт AirPlay.


Делайте по образцу, у нас есть все необходимые компоненты.

Спасибо за наводку, но нет не работает.
1. попытка печатать через socket://127.0.0.1:9100 или socket://192.168.1.1:9100 приводит к Print-Job client-error-not-found
2. локальная печать туда же с роутера проходит без ошибок, но и без печати.
3. для самсунга не хватает "splix" который есть на томато, чтобы попробовать печатать полноценно.

Подозреваю, что какая то несовместимость с usblp. На томате, как я понимаю стоит драйвер p910nd.
Кстати нет ли под рукой бинарника p910nd, а то собрать сейчас не на чем? Попробовал бы установить его вместо стандартного.