LINUX.ORG.RU
 
Yampp

Вышел драйвер для GDI-принтеров Canon


0

3

Первая работоспособная (хотя и не очень) версия открытого драйвера для принтеров Canon CAPT (LBP-****) вышла сегодня. В отличие от проприетарного драйвера, открытый является легковесным, не требует запуска демонов при загрузке системы и не саботирует работу принтеров других производителей.

При установке драйвера обратите внимание на выбор правильного устройства из списка (не usb://, а обязательно capt://) и на правильность файла *.ppd (в нем определены низкоуровневые параметры принтера, и с неправильным *.ppd принтер будет, скорее всего, печатать полосы).

Изменения:

  • полностью переписан код драйвера (с C на C++)
  • теперь драйвер работает через libusb и является бакэндом для CUPS
  • автоопределение принтеров
  • в основном устранены зависания принтера при сбоях печати

Недоработки:

  • не проверяется наличие бумаги!
  • при печати более чем одной страницы может печататься только первая
  • при печати очень сложных страниц иногда переполняется память принтера, "хвост" страницы обрезается
  • неправильные верхние и нижние поля

На сегодняшний день поддержан и проверен LBP-2900 и, вероятно, будет работать очень похожий на него LBP-3000. Другие модели не проверялись, так как их нет у разработчика.

ПРОЕКТУ ДЛЯ РАЗВИТИЯ ТРЕБУЮТСЯ РАЗРАБОТЧИКИ!

Требования: знание C++, наличие одного из CAPT-принтеров.

>>> Скачать


[#]  
FFSinit

Зашибись! завтра на работе потестирую LBP-2900 в opensuse 11.4.

()
[#]  
anonymous_sapiens

>Первая работоспособная (хотя и не очень)
достойная новость.

* ()
[#]  
Chubakur

Благодарю, обязательно попробую.

* ()
[#]  
duott

Открытые драйверы - это извращение. Драйвер должен поставлять производитель железа.

** ()
[#]  
NoNameNoNumber

Уже драйверы на плюсах…

()
[#]  
>>-----Цитата---->>

полностью переписан код драйвера (с C на C++)

<<-----Цитата----<<

Возникает вопрос: зачем?

>>-----Цитата---->>

при печати более чем одной страницы может печататься только первая

<<-----Цитата----<<

Это критичный баг, он означает, что печатать можно только по 1 странице.

>>-----Цитата---->>

неправильные верхнее и нижние поля

<<-----Цитата----<<

В зависимости от того, насколько, это тоже, возможно, критичный баг, поскольку печать таблиц, примечаний, номеров страниц оказывается невозможна.

Разрабы, наверное, молодцы, но зачем они это делают, не ясно, если есть нормально работающие коммерческие дрова.

*** ()
[#] Ответ на: комментарий от Vudod 10.04.2011 13:30:41  

>если есть нормально работающие коммерческие дрова.

Нет таких.

* ()
[#] Ответ на: комментарий от duott 10.04.2011 13:30:11  

Тогда что ты делаешь на этом форуме?

** ()
[#] Ответ на: комментарий от duott 10.04.2011 13:30:11  

> Драйвер должен поставлять производитель железа.
Который поставит в лучшем случае одну кривую версию, а та перестанет работать через пол года. Спасибо 1% и stable api nonsense

()
[#] Ответ на: комментарий от Wizard_ 10.04.2011 13:35:10  
>>-----Цитата---->>

>если есть нормально работающие коммерческие дрова.

Нет таких.

<<-----Цитата----<<

Если нет, то другой вопрос, но в тексте новости указано, что таковые есть.

*** ()
[#] Ответ на: комментарий от duott 10.04.2011 13:30:11  
xsektorx

>открытый драйвер должен поставлять производитель железа

фикс во имя столлмана

* ()
[#] Ответ на: комментарий от Vudod 10.04.2011 13:30:41  
Yampp

> Возникает вопрос: зачем?

Разумеется, не для понта. Существенно используются шаблоны и наследование классов, это все нужно для корректной обработки ошибок и для эффективного разделения слоев абстракции. После переписывания на C++ драйвер стал БЫСТРЕЕ, так как оптимизатор смог инлайнить мелкие функции.

> Это критичный баг, он означает, что печатать можно только по 1 странице.

Да, это критичный баг, но это недоработка реверс-инженеринга. Я не могу понять, от чего зависит количество печатаемых страниц и как именно надо делать арбитраж. Прошу помощи.

> В зависимости от того, насколько, это тоже, возможно, критичный баг, поскольку печать таблиц, примечаний, номеров страниц оказывается невозможна.

К счастью, это легко исправляется всего лишь указанием циферок в ppd-файле. Надо правильные значения полей подобрать.

> но зачем они это делают, не ясно, если есть нормально работающие коммерческие дрова

Если бы они были нормальными и нормально поддерживаемыми, ничего писать не пришлось бы. К сожалению, коммерческие дрова работают далеко не на всех системах из-за банальной бинарной несовместимости с libc - тогда ccpd тупо падает в корку, и если это происходит, то шансов установить их на этой машине нету.

* ()
[#]  
darkshvein

Дрючить ленивых инженеров Кэнон черенками! Даже спеки стесняются показать.

## ()
[#] Ответ на: комментарий от Vudod 10.04.2011 13:36:20  
xsektorx

не нашёл утверждения о существовании нормально работающих дров в тексте новости. к слову, где-то с год назад пытался завести лбп-2900 под дебианом, так мало того что не завелось, так ещё и отъедало почти весь процессор

* ()
[#] Ответ на: комментарий от Vudod 10.04.2011 13:30:41  
Ximen
>>-----Цитата---->>

зачем они это делают, не ясно, если есть нормально работающие коммерческие дрова.

<<-----Цитата----<<

И давно? В прошлом году их не было, не уж то уже написали? Ссылочку можно?

*** ()
[#] Ответ на: комментарий от NoNameNoNumber 10.04.2011 13:30:16  
Yampp

> Уже драйверы на плюсах...

Плюсы плюсам рознь. Посмотрите на код - там нету ни new, ни dynamic_cast, ни прочих плюсовых тормозных фич. C++ использован лишь как автоматизация обработки ошибок и для улучшения инлайн-оптимизации. Посмотрите код, в общем, прежде чем критиковать. Сразу говорю - хомячки на C++ так писать не могут.

* ()
[#]  
mashina

Зачем это развивать? Есть же HP, дают почти открытые драйвера для своих изделий. Принтеры canon закопать на свалке истории.

* ()
[#] Ответ на: комментарий от darkshvein 10.04.2011 13:40:58  
Yampp

> Дрючить ленивых инженеров Кэнон черенками! Даже спеки стесняются показать.

А я знаю почему. Потому что стыдно им. Принтеры LBP - единственые в мире, которые не умеют печатать просто поток. Им надо непрерывно в обе стороны с компом общаться, настолько тупой контроллер там стоит. Поэтому мне и не удалось использовать стандартный бакэнд usb://, пришлось делать capt://. Даже разработчикам CUPS не пришло в голову, что бывают НАСТОЛЬКО тупые принтеры!

* ()
[#] Ответ на: комментарий от mashina 10.04.2011 13:44:42  
Yampp

> Принтеры canon закопать на свалке истории.

Так вообще-то НОВЫХ моделей драйвер не поддерживает ;) Он для СТАРЫХ моделей, для тех, кто уже купил сдуру и потратил деньги.

Несмотря на наличие этого драйвера, НЕ покупайте GDI-принтеры Canon! Никакие!

* ()
[#]  
jcd

Года два назад пользовался каким-то драйвером для своего LBP-800, вроде печатал. Или сегодня "релиз"?

*** ()
[#] Ответ на: комментарий от Yampp 10.04.2011 13:39:22  
>>-----Цитата---->>

Да, это критичный баг, но это недоработка реверс-инженеринга. Я не могу понять, от чего зависит количество печатаемых страниц и как именно надо делать арбитраж. Прошу помощи.

<<-----Цитата----<<

К сожалению, чтобы помочь реально, нужно иметь такой принтер и уметь программировать на C++, коли на нём написано. У меня принтера нет и C++ я не знаю (то, что я знаю, знанием назвать нельзя).

*** ()
[#] Ответ на: комментарий от Vudod 10.04.2011 13:36:20  

>в тексте новости указано, что таковые есть.

Из текста новости можно получить информацию, что коммерческие драйвера тяжеловесные, требуют запуска демона при старте системы и саботируют работу принтеров других производителей. Это определённо нельзя назвать "нормально работающими драйверами". Вы новость не читали?

* ()
[#]  
Ximen

Вопрос: какова дальнейшая судьба этого драйвера? Он будет дальше развиваться или разработчики добились чего хотели и всё?

PS: есть пара LBP-810, но в С++ ковыряться лень. Могу тестировать.

*** ()
[#] Ответ на: комментарий от Vudod 10.04.2011 13:36:20  
redgremlin

>таковые есть

Шоб ты так жил, как они работают.

***** ()
[#] Ответ на: комментарий от Ximen 10.04.2011 13:48:49  
Yampp

Драйвер развиваться БУДЕТ, но поддержка принтеров, отличных от 2900, будет осуществляться силами сообщества, а не моими. Я не могу отлаживать драйвер, не имея принтера...

К сожалению, у меня нет LBP-810, а его протокол сильно отличается от 2900 (это не SCoA, а Hi-SCoA). В принципе, минимальная (тормознутая) поддержка SCoA в драйвере есть, надо всего лишь создать ppd с флагом сжатия 1 вместо 2. Но что в итоге получится - не знаю. Так что готовьтесь отлаживать и пробовать...

* ()
[#] Ответ на: комментарий от Vudod 10.04.2011 13:48:13  
Yampp

> и C++ я не знаю (то, что я знаю, знанием назвать нельзя).

Достаточно знания на уровне "могу читать и кое-как поправить код" - нормальные исправления я сделаю сам, мне только покажите, что в алгоритме не так.

А вот принтер - нужен. А также бумага, картридж и свободное время для неудачных попыток печати.

* ()
[#] Ответ на: комментарий от Yampp 10.04.2011 13:53:17  

У меня как раз LBP-810, будет время - поковыряю драйвер.

()
[#] Ответ на: комментарий от jcd 10.04.2011 13:47:58  
Yampp

> Года два назад пользовался каким-то драйвером для своего LBP-800, вроде печатал. Или сегодня "релиз"?

Это другого семейства принтер. С первой версией протокола. А я написал для второй версии. Хотя первую тоже поддержать планирую, ибо драйвер первой версии заброшен автором.

* ()
[#] Ответ на: комментарий от Lorchanko 10.04.2011 13:57:37  
Yampp

> У меня как раз LBP-810, будет время - поковыряю драйвер.

Спасибо! Пишите, как только начнете. Помогу.

* ()
[#]  

автору почёт и уважение! делает важное и нужное дело.

anonymous ()
[#] Ответ на: комментарий от jcd 10.04.2011 13:47:58  
kss

>Года два назад пользовался каким-то драйвером для своего LBP-800, вроде печатал

Был ещё с 2004 г. драйвер от Nicolas Boichat: http://www.boichat.ch/nicolas/capt/

**** ()
[#]  
Pavval

Уважуха автору!

**** ()
[#] Ответ на: комментарий от Yampp 10.04.2011 13:56:04  
Ximen
>>-----Цитата---->>

Достаточно знания на уровне "могу читать и кое-как поправить код"

<<-----Цитата----<<

А где-нибудь есть более-менее систематизированное описание протокола, того, как всё это работает, чтобы было от чего отталкиваться?

*** ()
[#] Ответ на: комментарий от kss 10.04.2011 14:05:14  
Ximen
>>-----Цитата---->>

Был ещё с 2004 г. драйвер от Nicolas Boichat

<<-----Цитата----<<

Он заброшен. И тоже, мягко говоря, не полный.

*** ()
[#] Ответ на: комментарий от Ximen 10.04.2011 14:05:48  
Yampp

> А где-нибудь есть более-менее систематизированное описание протокола, того, как всё это работает, чтобы было от чего отталкиваться?

Есть в текстовиках в исходниках драйвера. И есть wiki-страница а sourceforge. Плюс есть вот такая тема: http://www.linux.org.ru/forum/linux-hardware/4868236

* ()
[#] Ответ на: комментарий от FFSinit 10.04.2011 13:24:32  
PaRuSoft

Ужасная железка с ужасными драйверами для Linux, к сожалению

* ()
[#] Ответ на: комментарий от Ximen 10.04.2011 14:06:37  
kss

Ну да, ЕМНИП, у него тоже были проблемы с распечаткой многостраничных документов. Хотя как паллиатив годился, тем более, когда он вышел, бинарного драйвера вообще ещё не было.

**** ()
[#] Ответ на: комментарий от Lorchanko 10.04.2011 13:57:37  
Yampp

Я закоммитил в svn исходник ppd для LBP-810. Не факт, что он работает...

* ()
[#]  

Разработчиков наградить. Canon - закопать.

**** ()
[#] Ответ на: комментарий от duott 10.04.2011 13:30:11  

duott> драйверы - это извращение. Производитель железа должен делать стандартные единые интерфейсы для доступа к своему железу.

fixed

**** ()
[#]  
SKEW

Могу помочь

LBP-1120, для него этот драйвер сможет подойти? У меня есть и принтер и знание С++.

()
[#] Ответ на: комментарий от Yampp 10.04.2011 14:08:23  
Ximen
>>-----Цитата---->>

Есть в текстовиках в исходниках драйвера.

<<-----Цитата----<<

Да, уже нашёл.

>>-----Цитата---->>

И есть wiki-страница а sourceforge.

<<-----Цитата----<<

Если имеется в виду это, то там, считай что, ничего нет.

>>-----Цитата---->>

Плюс есть вот такая тема:

<<-----Цитата----<<

Да, помню. Спасибо, будем поглядеть. Давно уже бесит полурабочий принтер...

*** ()
[#] Ответ на: комментарий от Vudod 10.04.2011 13:30:41  
vostrik

ты случаем в какой-нибудь багтрекер анонимно тыщщи критических багов не постишь? запомни, критический баг должен приводить к крэшам, потере данных и не иметь воркэраунда, а то задолбали - чуть что мешает сразу критический баг.

про нормально работающие дрова и прочее - кто-нибудь другой расскажет

** ()
[#]  

Отличная новость, спасибо за работу в этом направлении! На работе есть 2900, возможно в понедельник проверю на нём.

PS - быть может сработает и такой вариант помощи в поддержке разных моделей: владельцы одной модели скидываются деньгами и отправляют их автору, чтобы тот приобрёл определённую модель принтера, и отладил драйвер на ней. Эти принтера и новыми стоили недорого, а б/у вообще копейки должны стоить!

* ()
[#] Ответ на: Могу помочь от SKEW 10.04.2011 14:13:44  
Yampp

> LBP-1120, для него этот драйвер сможет подойти? У меня есть и принтер и знание С++.

Да!! Спасибо!! Это принтер первого (SCoA) протокола. В SVN закоммичен исходник PPD для него. Надо будет нормально сделать сжатие (scoa.cpp), а то там затычка (алгоритм описан), но и с затычкой работать должно вроде. И там арбитраж отличается.

* ()
[#]  

респект тебе, чувак!

// Canon закопать да поглубже

***** ()
[#] Ответ на: комментарий от jekader 10.04.2011 14:17:34  
Yampp

> PS - быть может сработает и такой вариант помощи в поддержке разных моделей

У автора времени нет вообще... А деньги как раз есть. Поэтому помощь деньгами - не вариант.

P.S. Автор - профессиональный программист и программированием зарабатывает. Поэтому писать что-то еще кроме работы, извините, ну совсем не тянет...

* ()
[#] Ответ на: комментарий от DoctorSinus 10.04.2011 14:20:32  

PS: помочь, увы, не смогу: нет ни такого принтера, ни знания плюсов.

// да-да, счастливый обладатель Samsung :)

***** ()