Принтер Canon Laser Shot LBP-1120 і принт-сервер на базі Raspberry Pi

Дістався мені безкоштовно старенький принтер Canon Laser Shot LBP-1120. Віддали мені його з поясненням «щось не вдається підключити, напевно драйвера глючать». Спробував підключити його у себе на комп'ютер з Windows 7 x64 — Windows Update не зміг підтягнути драйвери. Зайшов на сайт виробника принтера для цієї моделі драйвери є починаючи з Windows XP, але тільки під 32-бітні версії. Перепробував безліч драйверів від інших принтерів Canon, універсальні драйвери з розділу «Generic Drivers», драйвери HP LaserJet 2200, 2300 — у всіх випадках принтер ніяк не реагує на команди комп'ютера.

Вивчення керівництва з експлуатації і обривків інформації на форумах дали наступне: принтер GDI або winprinter, де всі обчислення при друку виробляються власне драйвером на процесорі комп'ютера, за рахунок чого «безмозкий» принтер виходить дешевше у виробництві (не потрібні процесор і великий об'єм пам'яті). Модель LBP-1120 є клоном Hewlett-Packard (HP) LaserJet 1100 (тільки в ньому відсутні «мізки», на відміну від оригіналу), і за такою ж схемою побудовані інші моделі сімейства Canon Laser Shot, яке позиціонувалося виробником як «принтери для домашнього застосування». Чому в компанії Canon вирішили, що вдома може бути тільки 32-бітна версія Windows — мені невідомо. Особисто у мене вдома 3 комп'ютера під управлінням Windows і на всіх стоїть 64-бітна версія і не менш 4ГБ ОЗУ.

Городити віртуальну машину з 32-бітної Windows або взагалі робити окремий принт-сервер під нею я порахував недоцільним, хоча в інтернет всі знайдені мною обговорення даного питання закінчуються саме одним з цих двох варіантів. «Казки» про те, що якийсь драйвер іншого виробника може підійти відкинув відразу, пошуки «альтернативного» 64-бітного драйвера призводять до сторінок, розташованим в «темних підворіттях». Один такий скачав заради інтересу або, точніше, для підтвердження відомої істини про безкоштовний сир — це виявився «хробак».

Значить будемо будувати принт-сервер на основі наявного та використаного для інших цілей Raspberry Pi ver 1 rev B, працюючого під управлінням Raspbian (клон Debian 7 Wheezy). Благо на сайті виробника принтера драйвер доступний під Linux 32/64 біт, хоч його і чіхвостят в англомовному сегменті Інтернету за повільність роботи і пожирання ресурсів. Встановивши на Raspberry Pi драйвер принтера і CUPS (Common UNIX Printing System), я отримаю повноцінний принт-сервер під управлінням Linux, до якого інші клієнти зможуть підключатися як до мережного принтера з використанням якого-небудь «універсального» драйвера.

Для скачування пропонується 5 версії драйвера (1.6, 1.8, 2.0, 2.2, 2.7 — всі оновлені у другій половині липня 2015 р., відмінності між ними не відомі). У скачаному архіві знаходяться відкомпільовані пакети deb та rpm під архітектуру i386 в 32 — і 64-бітному варіантах і вихідні файли. Відкомпільовані пакети не підходять для Raspberry, що працює на архітектурі ARMv6L. Скомпілювати вихідні файли версії 1.6 і 2.7 також не вдалося з двох причин: драйвер «заточений» під команди Intel і передбачає обов'язкову наявність графічної оболонки (за замовчуванням GTK2.0), а на моєму Raspberry їх немає принципово. Але є альтернативний вільно поширюваний драйвер, написаний у 2004 році ентузіастом методом реверсного інжинірингу протоколу обміну даними драйвера під Windows з принтером. Завантажити його можна зі сторінки автора тут www.boichat.ch/nicolas/capt. В даний час підтримки драйвера з боку автора вже немає. Також він написав драйвер для принтерів Canon LBP-660 / LBP-460.

Переходимо від «багато тексту» безпосередньо до установки драйвера принтера і CUPS:

  1. Установку CUPS робимо за рекомендаціями зі сторінки wiki.debian.org/ru/SystemPrinting аж до етапу «Додавання принтера» — драйвер адже ще не варто :)


  2. Для полегшення труднощів з адмініструванням CUPS додаємо до групи адміністраторів друку користувача, який буде адміністратором:

    # usermod -a -G lpadmin MY_USER

  3. Компілюємо і встановлюємо драйвер: розпаковуємо архів з файлами драйвера в каталог /usr/src/ і виконуємо команди:

    $ cd /usr/src/capt-0.1
    # make
    # make install
    # modprobe usblp
    # chmod a+rw /dev/usb/lp0

    Перевантажуємо CUPS:

    # /etc/init.d/cups restart

  4. Повертаємося до інструкції з п. 1 і додаємо принтер; Додавати треба драйвер принтера Canon Laser Shot LBP-810"; так, Так — вони майже як близнюки брати, відрізняються тільки наявністю дуплексу у LBP-810; Природно, що вся процедура в даному матеріалі застосовна і для LBP-810;



  5. DeviceURI, який призначений принтера за промовчанням, нам не підходить — висновок повинен бути куди завгодно, бажано «в порожнечу», тільки не в USB; Тому необхідно зайти в файл конфігурацій принтерів системи CUPS (/etc/cups/printers.conf) і внести наступні зміни:

    Замінити рядок:

    DeviceURI usb://Canon/LASER%20SHOT%20LBP-1120?serial=0158030E

    На рядок:

    DeviceURI serial:/dev/null

    Тепер висновок завдань на друк буде відбуватися відсутній COM port;

  6. Перевантажуємо CUPS:

    # /etc/init.d/cups restart

    У властивостях принтера параметр «Підключення» повинен виглядати як на картинці:


  7. Обов'язково в налаштуваннях принтера робимо скидання стану перед кожним завданням; В іншому випадку він буде друкувати перше завдання, а наступні підуть тільки після викл/вкл принтера;


  8. Заходимо в панель керування принтерами CUPS та у встановленому принтері відправляємо на друк тестової сторінки CUPS; Не лякайтеся: вона буде друкуватися на подив довго — 3...6 хвилин проходить до початку виведення; Тестову сторінку принтера (4-ий пункт меню Обслуговування") друкувати марно — у принтера все також «мізків» немає, а розробник драйвера її не передбачив (як це зроблено в оригінальному драйвера під Windows), тому завдання відразу перейде в стан «Виконано» і все :)


  9. Windows йдемо в панель керування принтерами і додаємо мережевий принтер. Рядок підключення можна взяти з адресного рядка браузера в п. 7, замінивши протокол з https http; Драйвер принтера можна вибрати практично будь підтримують PS (PostScript); У мене прекрасно став драйвер HP LaserJet 2300; Драйвера принтерів з підтримкою PCL5/6 працювати не будуть.

Про швидкість роботи даного рішення: на «прогрітий» принтер завдання на друк 2-сторінкового документа, що містить тільки текст і таблиці з MS Word 2010 займає близько 5...10 сек. Пристрої між собою з'єднані через Wi-Fi роутер (ноутбук «по повітрю» і Raspberry по Ethernet).

Природно, що за такої «технології» цей принтер можна використовувати і в MacOs (для неї драйверів від виробника не існує взагалі), так і в будь-який інший ОС, що підтримує друк по мережі.

Не вдалося «в лоб» відправити на друк текстовий файл з консолі — «принтер або клас не зареєстрований». Причини і способи усунення даної проблеми поки не розбирався. Та й немає у мене друкувати з консолі.

$ lp -d printers.conf
lp: The printer or class does not exist.

Ось тут описаний спосіб, як встановлювати «рідний» драйвер на платформі i386 під управлінням Ubuntu (українською мовою).

На сайті підтримки Arclinux зустрів твердження, що з Canon Laser Shot LBP-1120 можна працювати через драйвер принтера Xerox Phaser 6000B. На сайті Xerox є драйвери для нього для 64-бітних Windows, але працездатність даного твердження не перевіряв.

PS. Був здивований, дізнавшись, що розвитком CUPS займається компанія Apple :)
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.