Bug 7144

Summary: FR: add Canon CAPT support
Product: Sisyphus Reporter: Grigory Batalov <bga>
Component: captAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P2 CC: genix, inger, lav, mike, sr
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://www.boichat.ch/nicolas/capt/
Bug Depends on:    
Bug Blocks: 7079    
Attachments:
Description Flags
CAPT support
none
Canon LBP Linux driver (common) spec
none
Canon LBP Linux driver (CAPT) spec none

Description Grigory Batalov 2005-06-20 00:50:28 MSD
Несчастным обладателям принтеров Canon LBP-810 и LBP-1120 было бы очень приятно иметь поддержку этих моделей в ближайшем дистрибутиве.
Список изменений в cups сейчас приложу.
Содержание:
Драйвер capt общается напрямую с принтером через USB по закрытому протоколу. Алгоритм работы был расшифрован Николасом Бойчатом путём анализа USB-трафика и реализован в виде блоков характерных команд. Таким образом, драйвер хоть и не является полной и надёжной заменой официальным драйверам, зато позволяет сносно печатать и распространяется под GPL.
В spec-файле поддержка CAPT сделана условной и включена по умолчанию (%def_enable). Если предлогаемые патчи покажутся недостаточно надёжными для такого ключевого сервиса, как сервер печати, включите их хотя бы в src.rpm в отключенном виде, чтобы желающие могли легко пакет пересобрать.
%def_enable в свою очередь добавляет к опциям сборки -DWITH_CAPT, задействуя пропатченные места в backend/usb.c. В результате чего при печати данные передаются не напрямую в принтер, а через канал (pipe) драйверу capt.
Сам драйвер и PPD-фильтр к принтеру LBP-810 (к LBP-1120, вероятно, он тоже подойдёт) оформлены в отдельный пакет cups-backend-capt. Хотя он и не является бэк-ендом в строгом смысле. Так что нежелающие его могут не ставить.
Кроме того, даже пропатченный бэк-енд usb будет печатать через capt только с опцией UseCAPT=true. Этого можно добиться командой lpr -o UseCAPT=true filename или sudo lpoptions -o UseCAPT printername. Во втором случае эта опция заносится в /etc/cups/lpoptions и применяется в дальнейшем.
Итого, от инсталлятора или настройщика принтера (alterator?) требуется установить пакет cups-backend-capt, использовать входящий в него фильтр Canon-LBP-810-capt.ppd и прописать опцию UseCAPT=true. Думаю, это осуществимо.
Comment 1 Grigory Batalov 2005-06-20 00:53:34 MSD
Created attachment 948 [details]
CAPT support

Собственно, патчи.
Comment 2 Vitaly Lipatov 2005-10-11 10:26:54 MSD
Часто встречающиеся дешёвые лазерники Canon рискуют остаться без поддержки в 
дистрибутиве. Как бы собрать поддержку? 
Comment 3 inger@altlinux.org 2005-10-11 12:17:13 MSD
Я сейчас не успеваю добраться до Сизифa. Если кто соберёт новые пакеты для
системы печати (новый gs (заготовка лежит в deadalus),printer-filter как в MDK)
вместе с соотв. поддержкой - буду очень рад ;))
Только скажите мне заранее кто будет собирать пакет.
Comment 4 Eugene V. Horohorin 2005-10-26 01:22:53 MSD
(In reply to comment #0)
> Несчастным обладателям принтеров Canon LBP-810 и LBP-1120 было бы очень
приятно иметь поддержку этих моделей в ближайшем дистрибутиве.
> Список изменений в cups сейчас приложу.
> Содержание:
> Драйвер capt общается напрямую с принтером через USB по закрытому протоколу.
Алгоритм работы был расшифрован Николасом Бойчатом путём анализа USB-трафика и
реализован в виде блоков характерных команд. Таким образом, драйвер хоть и не
является полной и надёжной заменой официальным драйверам, зато позволяет сносно
печатать и распространяется под GPL.
> В spec-файле поддержка CAPT сделана условной и включена по умолчанию
(%def_enable). Если предлогаемые патчи покажутся недостаточно надёжными для
такого ключевого сервиса, как сервер печати, включите их хотя бы в src.rpm в
отключенном виде, чтобы желающие могли легко пакет пересобрать.
> %def_enable в свою очередь добавляет к опциям сборки -DWITH_CAPT, задействуя
пропатченные места в backend/usb.c. В результате чего при печати данные
передаются не напрямую в принтер, а через канал (pipe) драйверу capt.
> Сам драйвер и PPD-фильтр к принтеру LBP-810 (к LBP-1120, вероятно, он тоже
подойдёт) оформлены в отдельный пакет cups-backend-capt. Хотя он и не является
бэк-ендом в строгом смысле. Так что нежелающие его могут не ставить.
> Кроме того, даже пропатченный бэк-енд usb будет печатать через capt только с
опцией UseCAPT=true. Этого можно добиться командой lpr -o UseCAPT=true filename
или sudo lpoptions -o UseCAPT printername. Во втором случае эта опция заносится
в /etc/cups/lpoptions и применяется в дальнейшем.
> Итого, от инсталлятора или настройщика принтера (alterator?) требуется
установить пакет cups-backend-capt, использовать входящий в него фильтр
Canon-LBP-810-capt.ppd и прописать опцию UseCAPT=true. Думаю, это осуществимо.

настроил все как описано здесь, однако принтер (LBP-1120) все равно не печатает.
как можно продиагностировать? 
Comment 5 Michael Shigorin 2006-04-20 23:09:18 MSD
(In reply to comment #3)
> Я сейчас не успеваю добраться до Сизифa.
Я собрал, но оно работает условно.  Несколько менее условно, хотя тоже так себе,
работает официальный драйвер.  capt-0.1-alt1 уже в Sisyphus; спеки для текущего
драйвера имени Canon (прилагаю.
Comment 6 Michael Shigorin 2006-04-20 23:10:40 MSD
Created attachment 1458 [details]
Canon LBP Linux driver (common) spec
Comment 7 Michael Shigorin 2006-04-20 23:11:10 MSD
Created attachment 1459 [details]
Canon LBP Linux driver (CAPT) spec
Comment 8 Michael Shigorin 2006-04-20 23:13:15 MSD
PS: на мою просьбу просмотреть лицензию в legal@ никто не ответил, вопрос на
info@canon.ru также остался без уточнения -- мне же лицензия кажется достаточно
либеральной, чтобы в non-free кэноновский драйвер спокойно можно было поместить.

Если кому ещё понадобится -- свистите.
Comment 9 Michael Shigorin 2006-12-17 23:19:31 MSK
Кстати, кэноновские есть уже 1.30 и они заметно лучше.
Comment 10 Grigory Batalov 2006-12-18 01:14:20 MSK
Ну и ладно, тогда закроем эту тему.
Comment 11 Eugene V. Horohorin 2006-12-18 10:08:07 MSK
Кстати, у знакомого заработал 1120. Заработал после очередного обновления, без
лишних телодвижений.
Comment 12 Michael Shigorin 2006-12-18 14:44:42 MSK
А как был настроен и что в `rpm -qa | grep capt`?
Comment 13 Eugene V. Horohorin 2006-12-25 09:21:53 MSK
вот что наскреб. какую еще информацию надо?

[andrew@localhost ~]$ rpm -qa | grep capt
capt-0.1-alt1

canon:/dev/lp0
model canon LBP-810 capt
Comment 14 Michael Shigorin 2006-12-25 15:41:12 MSK
(In reply to comment #13)
> [andrew@localhost ~]$ rpm -qa | grep capt
> capt-0.1-alt1
Гм, странно, но повод не выкидывать. :)

Вообще у capt никак с обработкой ошибок (например, бумага закончилась).  Поэтому
лучше взять себе официальный cndrvcups-capt-1.30-1.src.rpm (и cndrvcups-common),
работает.

Я было прокопал чуточку и попытался legal@ и их подёргать насчёт пары не
окончательно понятных моментов в лицензии, но вообще-то вроде как эти драйверы
можно в Sisyphus как non-free.  Если тебе или ещё кому вдруг будет интересно,
могу добросить заодно свои наработки, патчил там кой-чего -- вдруг ещё актуально.