5

Я хочу получить доступ к своему принтеру DCP 195C (Brother) по локальной сети. Для этого я купил Raspberry Pi и установил на него CUPS. CUPS работает нормально, а все остальное работает гладко. Моя проблема в том, что я не могу установить драйверы, которые поставляет брат (они предназначены только для x86 и x64), на мой pi. Есть ли вариант, который я пропустил, чтобы установить драйвер на мой пи?

2 ответа2

3

Коротко: вы должны извлечь файл ppd из драйвера linux

долго:

ПЕРВЫЙ

  • Перейти на сайт драйвера Brothers и найти DCP195: http://support.brother.com
  • Загрузите версию deb для Linux « Драйвер принтера CUPSwrapper (пакет deb) »
  • Откройте файл deb с помощью инструмента сжатия и следуйте по пути до «dcp195ccupswrapper-1.1.3-1.i386/opt/brother/Printers/dcp195c/cupswrapper»
  • Извлеките файл "brother_dcp195c_printer_en.ppd"

ВТОРОЙ

  • Откройте веб-интерфейс cups через https://192.168.1.2:631/admin [замените ip на pi]
  • Нажмите "Добавить принтер". Выберите «Brother DCP-195C (Brother DCP-195C)» и нажмите "Продолжить".
  • Отредактируйте следующую информацию, если необходимо, отметьте "поделиться принтером" и нажмите "продолжить"
  • В разделе "Или предоставить файл PPD" найдите извлеченный файл «brother_dcp195c_printer_en.ppd» и загрузите его. Выполните следующие действия ... готово

После этого принтер был доступен, но с ошибкой:"Файл"/usr/lib/cups/filter/brlpdwrapperdcp195c "недоступен". Поскольку я установил драйвер на свой ноутбук Ubuntu, я мог просто скопировать файл с моего ноутбука в /usr/lib/cups/filter/ to pi

После этого мой ноутбук мог найти принтер

2

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

Я нашел подсказку в этом сообщении на форуме:https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=15526&start=25#p708038.

Шаг 1. Установите драйвер, следуя инструкциям в документации Brother.

У вас должен быть каталог, такой как /opt/brother/Printers/dcp195c/lpd с двоичным фильтром brdcp195cfilter . Этот двоичный файл вызывается сценарием оболочки filterdcp195c рядом с ним в том же каталоге.

Я считаю, что сейчас они предлагают установочный скрипт, но я сделал это без. Где-то есть инструкции, что нужно предварительно установить.

Шаг 2: Получите эмуляцию i386

Это следует за шагами в https://wiki.debian.org/QemuUserEmulation

В конце шага 2 вы сможете запустить двоичные файлы i386, как обычные двоичные файлы. В ps ax они покажут

Установить Qemu

Установите пакеты qemu , binfmt-support и qemu-user-static .

Запустите update-binfmts --display чтобы увидеть, какие двоичные форматы поддерживаются. Они должны быть автоматически включены в Raspbian и Debian.

Установите библиотеки поддержки x86

На Raspbian добавьте такую строку в ваш /etc/apt/sources.list:

## Debian i386
deb [arch=i386] http://http.debian.net/debian stable main contrib non-free

Подойдет и другой репозиторий Debian.

В репозитории Raspbian нет бинарных файлов x86, поэтому добавьте строку [arch=armhf] в существующие строки, начиная с deb . Строки, начинающиеся с deb-src можно оставить как есть.

Скажите Raspbian, что вы хотите многоархивную систему с пакетами i386, и получите libc i386. Чтобы шаг update заработал, вам нужно импортировать и доверять ключам Debian GPG для управления пакетами.

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386

На этом этапе вы сможете выполнить двоичный файл brdcp195cfilter который поставляется вместе с драйвером:

$ ./brdcp195cfilter 
ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
Error: invalid option !!

Если вы видите этот вывод, это сработало. Error: invalid option !! строка brdcp195cfilter жалобой на то, что вы должны были передать аргументы.

Необязательно: Удалите сообщение об ошибке ld.so

Raspbian использует /etc/ld.so.preload для предварительной загрузки библиотеки libarmmem во все процессы. Библиотека заменяет некоторые дорогие подпрограммы памяти более быстрыми подпрограммами, написанными на сборке ARM, но для запуска Raspbian это не обязательно.

Безопасно игнорировать предупреждение, но также безопасно удалить или закомментировать эту строку из /etc/ld.so.preload . Предупреждение будет отображаться в журналах ошибок CUPS, если оно не отключено.

Шаг 3: Получите это, работая с CUPS

Вы должны установить CUPS, следуя инструкциям на веб-сайте Brother.

Flaky USB-соединение

На моем Raspberry журнал dmesg быстро чередовался между этими строками:

[58981.586842] usblp0: removed
[59222.794260] usblp 1-1.3:1.0: usblp0: USB Bidirectional printer dev 8 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0222

Для меня это исправило переход на localhost:631 (веб-интерфейс CUPS) и изменил принтер в разделе "Принтеры", чтобы он использовал USB-устройство, распознаваемое CUPS, а не usb://dev/usb/lp0 устройство.

Пусть принтер получает данные с нормальной скоростью

brdcp195cfilter - это шаг в процессе печати, который получает огромное входное растровое изображение и преобразует его во что-то, что впоследствии передается на устройство принтера. Я измерил размер входного файла ~ 90 МБ для простого сообщения "Hello world" в верхней части страницы.

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

Чтобы это исправить, установите утилиту sponge из пакета moreutils и отредактируйте filterdcp195c так, чтобы вывод $BRCONV $BRCONV_OP (он же brdcp195cfilter) передавался через sponge . Там должно быть три строки в случаях "PostScript", "PDF" и "*" в конце файла, заканчивающиеся на ... | $BRCONV $BRCONV_OP | sponge

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

(sponge хранит данные, которые она буферизует во временном каталоге, поэтому вы не ограничены оперативной памятью Raspberry Pi)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .