TL;DR: из-за отсутствия «умных» принт-серверов на рынке сделал собственное устройство, позволяющее печатать и сканировать на старых USB-принтерах через Wi-Fi и Ethernet, с любого смартфона и компьютера под любой ОС, без установки драйверов (AirPrint/Mopria). Девайс включает не только распространённые открытые драйверы, но и проприетарные, в режиме эмуляции x86-кода, plug&play.
Особенностью проекта является со-финансирование открытого ПО: разработчики сервера печати CUPS и сканирования SANE/AirSane получают по $2 с каждого проданного устройства, а оставшиеся деньги формируются в пул, для улучшения существующих открытых драйверов и написания новых.

Обложка https://t.me/detibezglaz / https://linktr.ee/whorma

Ох уж эти бумаги! Печатать мне приходится редко, в основном различные документы вроде билетов, виз, пропусков, которые требуются предъявлять обязательно в бумажном виде. Долгое время обходился салонами печати рядом с домом, но это не всегда удобно: иногда документ нужен срочно, иногда посреди ночи.

Поэтому надумал я купить принтер, хоть какой-то, чтобы печатать свои 20 листов в год. Выбирать решил из Б/У моделей монохромных лазерных принтеров. Почему Б/У?

  • Пик развития лазерников пришелся на 2001-2009 годы, именно в этот период выпускали множество надёжных моделей для домашнего рынка, которые проектировались с большим запасом прочности, и до сих пор легко и дёшево ремонтируются;

  • Производители ещё не ограничивали заправку и сторонние комплектующие: либо в принтере нет никаких проверок на оригинальность картриджа и количество тонера, либо они тривиально обходятся (зачастую способом из сервисного мануала) — простота обслуживания;

  • Принтеры медленно устаревают. Возьмите приличную домашнюю модель 15-летней давности и любую современную, отличие будет только в скорости печати в минуту и дизайне корпуса;

  • Дёшево! Хорошие Б/У модели стоят в 2-3 раза дешевле нового принтера начального ценового сегмента, переплачивать с моими объёмами печати бессмысленно.

Среди множества ранее популярных и заведомо хороших моделей была обнаружена неприлично дешевая: Canon LBP-1120.
Это самый базовый принтер от Canon модельного ряда 2002-2004 годов, единственной фишкой которого можно отметить два направления выхода бумаги, переключаемые тумблером. Средняя цена — от 500 до 1500 рублей, подключение по USB. Я купил свой за 1000₽.

Вот этот пузатый джентльмен:

Canon LBP-1120. В объявлениях часто отсутствуют направляющие для бумаги.
Canon LBP-1120. В объявлениях часто отсутствуют направляющие для бумаги.


Почему его отдают так дёшево? Причина проста — невозможность использования в современных версиях Windows из-за 32-битных драйверов. Принтеры просто отказываются умирать даже спустя 20+ лет эксплуатации, поэтому производитель решил затруднить их использование программно.
Кто-то городит виртуальные машины исключительно для печати, кто-то пытается установить Linux-версию драйвера под x86 на Raspberry Pi, безуспешно.

На сайте производителя доступен драйвер 2017 года под Linux. У него дрянная архитектура, требующая нестандартной ручной настройки, но с ним принтер печатает и в современных версиях 64-битных ОС — мне большего и не нужно!

 

А как печатать с телефона?

Так как в принтере отсутствуют сетевые функции, напрямую подключить к смартфону его можно только по USB. Проводная печать поддерживается и в iOS, и в Android, но каждый раз физически перетыкать принтер банально неудобно. Хочется такой же простоты использования, какую дают современные аппараты.

Для превращения принтера в сетевой существуют специальные устройства, совмещающие USB-вход и Ethernet-порт, а иногда и Wi-Fi — принт-серверы.
Вот несколько предложений с Амазона:

Принт-серверы на Amazon
Принт-серверы на Amazon

Недёшево. Наверное, у них много функций, много драйверов внутри, что оправдывает стоимость?

Современным устройствам не входить!
Современным устройствам не входить!

Как бы ни так! Эти устройства — простые конвертеры USB-порта принтера в поток данных по TCP, прямиком из начала двухтысячных, и ничем не отличаются от подключения принтера к роутеру, если вам приходилось пользоваться этим.
Драйвер принтера всё ещё обязателен, а сканеры вовсе не поддерживаются.

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

Ни одна из программ не поддерживает мой LBP-1120, что неудивительно: производитель не сделал драйвер под ARM, энтузиасты не написали свою реализацию. Кроме того, в списках поддержки большинства принт-серверов прямо заявляют, что мой принтер работать не будет. Этот вариант нам не подходит.

 

Почему актуальным принтерам не нужен драйвер?

Принтеры прошли долгий и возмутительно скачкообразный путь развития: от простого вывода текста без графики в начале восьмидесятых сразу к полноценному языку описания страниц PostScript в 1985, для печати которого требовалось железо производительней самого компьютера:

Процессор 68000 с частотой 12 МГц в Apple LaserWriter был на 50% мощнее существующих компьютеров Mac, а 1,5 МБ памяти, необходимой для загрузки шрифтов PostScript и печати страницы с полным разрешением 300 точек на дюйм — в три раза больше, чем у топового Мака.
https://lowendmac.com/1985/apple-laserwriter/

В течение длительного времени каждый производитель выбирал решение для массового потребителя где-то посередине: делал собственный стандарт коммуникации и кодирования данных, в особенности для бюджетных моделей, чтобы принтер можно было снабдить простым процессором и крохотным количеством памяти, победив конкурентов ценой, а всю сложную обработку переложить на «большого брата», который с каждым годом становился производительней.
Модели с поддержкой PostScript и другими полноценными форматами описания страниц считались премиальной опцией, присутствующей в основном в офисных и профессиональных моделях, при этом собственный язык также в них присутствует — с ним печать идёт быстрее.

There's not an App for that
There's not an App for that

Так продолжалось 25 лет: в 2010-м люди начали покупать только что вышедший iPad как замену компьютеру, и внезапно узнавали, что он не поддерживает печать.
Просить производителей адаптировать весь зоопарк драйверов под новое устройство — бесперспективное и не прибыльное занятие. В ответ Apple решили разработать свой стандарт, совместив уже существующий на тот момент Internet Printing Protocol и собственную систему обнаружения устройств в локальной сети Bonjour, под названием AirPrint.

Такой подход позволил iPad'у и iPhone'у избавиться от драйверов: устройства просто отправляют PDF-файл или JPEG-картинку на принтер, полагаясь на обработку средствами печатающей машины, а в случае сложного и большого документа, планшет подгонит его под размер бумаги и преобразует в сжатый и поддерживающий стриминг Apple Raster — принтеру не требуется держать многомегабайтный файл в оперативной памяти целиком.
Производители принтеров были рады продать свежие модели появившимся потребителям в уже на тот момент стагнирующем сегменте.

Несколькими годами позже подтянулись до степени смешения похожие по своим характеристикам и принципу работы стандарты Mopria (Android 4.4+, Windows 10+) и IPP Everywhere (Linux).
Их объединяет:

  • Автообнаружение с использованием mDNS + DNS-SD
    Принтер не нужно устанавливать по IP-адресу вручную, он сообщает о себе и своих характеристиках всем участникам локальной сети

  • Универсальный протокол печати
    Internet Printing Protocol (IPP), основанный на HTTP, изначально рассчитанный на работу по сети, в отличие от USB-подключения

  • Универсальный язык общения с принтером
    Бездрайверная печать, не требующая установки программ

  • Унифицированные форматы данных
    PDF, PWG Raster, Apple Raster, JPEG, PCLm

  • Кросс-платформенная поддержка
    iOS, Android, macOS, Linux, Windows
    Если принтер сертифицирован для AirPrint, в 99% случаев он поддерживает и Mopria, и IPP Everywhere, и наоборот.

 

А что там с DIY?

Возможность программного превращения «legacy»‑принтера в AirPrint-совместимый стала доступна пользователям Mac практически сразу. Специальное стороннее ПО, подменяющее системные файлы из пред-релизной версии OS X, позволяло пользователям iPad и iPhone (и даже Android!) печатать на любых принтерах, подключённых к макбукам в локальной сети, уже в ноябре 2010г.

Годом позже похожие программы появились и для компьютеров с Windows. Однако сама ОС не поддерживала бездрайверную печать вплоть до конца 2018 года: в Windows 10 1809 добавили поддержку конкурирующего стандарта Mopria, охватывающего и печать, и сканирование — всё как у AirPrint. Отличие в незначительных деталях, прямую печать PDF-файлов поддерживают оба.

В Linux AirPrint/Mopria заработали в сервере печати CUPS 2.2.2, однако наиболее знаковое событие произошло в версии 2.4 (октябрь 2021), вместе с добавлением возможности расшарить любой принтер по бездрайверным стандартам одной галочкой в веб-интерфейсе. Теперь любой может подключить одноплатный компьютер (вроде Raspberry Pi) к принтеру, и сделать его не только сетевым, но и пригодным к использованию на любом современном устройстве без дополнительных настроек, чего по непонятной причине не позволяют коммерческие принт-серверы.

Сетевое сканирование реализуется проектом AirSane, работающим по похожим с печатью принципам и стандартам (AirScan/Mopria/eSCL). Демон использует сервер сканирования SANE и его драйверы. Бездрайверное сканирование работает везде, кроме iOS: Apple реализовали только печать на смартфонах и планшетах, и программ с поддержкой AirScan я не нашел. Однако, благодаря наличию простого веб-интерфейса в AirSane, это не проблема.

C ПО разобрались, остался драйвер. Для Canon LBP-1120 не существует работающего открытого драйвера, а пакет от производителя собран только под архитектуру x86. Чтобы запустить его на одноплатнике с ARM, необходим эмулятор.

Очевидный вариант в виде наиболее известного qemu разочаровал производительностью: несмотря на наличие JIT, едва ли можно напечатать четыре страницы в минуту.

Позже была найдена молодая разработка box86, проектирующаяся с возможностью использования библиотек нативной архитектуры, вместо эмуляции всего кода. Эмулятор разрабатывается прежде всего для запуска x86-игр в окружении Steam userspace, поэтому обёртки для библиотек не всегда поспевают за новыми версиями ОС. Доходит до абсурда: GTA V на Android идёт в 30 fps, но C++ Hello World не запускается ?

JIT-компилятор box86 работает примерно в 4 раза быстрее qemu'вского, и дополнительно поддерживает прямую трансляцию SSE2 → NEON. Пример скорости на двухстраничном документе (Cortex-A7 @ 1 GHz):

# QEMU
root@uowprint:~# time qemu-i386 /tmp/captfilter --PageSize=A4 --MediaType=PlainPaper --Resolution=600 < /tmp/input.pbm > /tmp/output.bin

real    0m32.670s
user    0m32.440s
sys     0m0.090s

# box86
root@uowprint:~# time box86 /tmp/captfilter --PageSize=A4 --MediaType=PlainPaper --Resolution=600 < /tmp/input.pbm > /tmp/output.bin

real    0m7.915s
user    0m7.830s
sys     0m0.030s

С такой скоростью обработки уже можно жить.
Открытые и ARM-драйверы от производителя для других принтеров, не требующие эмуляции, в целом не имеют проблем с производительностью на слабом железе, обеспечивая полную скорость печати даже на скоростных принтерах.

 

Кому-то это ещё нужно?

В мире технологий есть полная панама проблем, решение к которым делается относительно просто (или уже существует в каком-то промежуточном виде), но никто из года в год не может потратить несколько дней-недель своей жизни на то, чтобы разобраться с ними раз и навсегда, и уменьшить энтропию. Энтузиазма одного человека часто не хватает на готовое решение, подходящее всем пользователям, либо оно попросту не доходит до потребителя из-за сложности установки, использования, отсутствия документации, несовместимости с его ОС, незаинтересованности разработчиков.

Печать — как раз из этих. Стандарты стандартизированы, софт работает и поддерживается командой на зарплате уже 20+ лет, драйверы в большинстве не развалились со временем, но продукт бесконечно далеко от среднестатистического обывателя с принтером на столе и смартфоном в руке.

Для решения проблемы достаточно взять плоды чужой интеллектуальной деятельности и засунуть их поудобнее. Если вся основа DIY уже долгое время работает у многих пользователей без особых проблем, то до законченного устройства путь прост и понятен: связать существующие программы, драйверы, и убедиться в их работоспособности на популярных сериях устройств.

Нашлись 93 потенциальных покупателя. Что ж, почему бы и нет.

 

Железный капут

На просторах Алиэкспресса был найден вполне подходящий по характеристикам, разительно выделяющийся ценой одноплатник Orange Pi 3G-IoT-A.
Построенный на мобильном процессоре Mediatek времён тормозных китайских телефонов, а по сему некондиционный, он идеально вписывался в концепцию доступного умного принт-сервера.

О плате подробно писал @MDXE1337в статье Одноплатный компьютер с 3G «за косарь». Что Orange Pi предлагает по цене ящика пива?

Размер

51.5 мм × 69 мм

Вес

25 г

CPU

Mediatek MT6572M ARMv7 Cortex-A7 Dual Core, 1 ГГц

RAM

256 MiB DDR2

Флеш-память

512 MiB NAND

USB

1×USB 2.0 Host для подключения принтера
1×USB 2.0 MicroUSB для питания 5V

Wi-Fi

802.11n 2.4 GHz

Аудио! Микрофон! Порты для дисплея и камеры!
И даже 3G-связь!

Понимающему китайский менталитет читателю будет несложно догадаться о нюансе — не может одноплатник, пусть и устаревший, продаваться ниже себестоимости средь бела дня. Что-то здесь нечисто.

Ответ прост — в нём едва ли что-то работает. Как и большинство плат лучшего в мире производителя Shenzhen Xunlong, она была снята с программной поддержки сразу после выхода, но была обречена стать принт-сервером ещё до запуска конвейера: модели с индексом «A» не хватит 256 МиБ оперативной и 512 МиБ постоянной памяти для нормальной работы Android 4.4, а в Linux не работает добрая часть железа, включая самое главное — 3G-модем.

Проблемы возникли буквально со всем необходимым для осуществления проекта:

  • Загрузчиком, в который зачем-то вписали аргументы ядру прямо в коде, что мешало загрузке со встроенной NAND-памяти;

  • Ядром, настолько старым, что не удовлетворяет минимальным требованиям systemd в свежих дистрибутивах (3.4.67 от Mediatek);

  • Wi-Fi: регулярно перестаёт работать multicast, из-за чего ломается автообнаружение принтера. Приходится передёргивать режим модуля каждую минуту по cron'у (что не отразилось на работе и стабильности соединения);

  • USB-стеком, который не поддерживал расширенные опции, что приводило к невозможности использования больших буферов в libusb, из-за чего некоторые сканеры не сканировали или застревали на полпути.

В исправлении ошибок и адаптации ядра под современные ОС помогли исходники бюджетного смартфона Aquaris E4.5 Ubuntu Edition на операционной системе Ubuntu Touch, который BQ и Canonical выпустили в 2015 году для развивающихся рынков. Устройство продавалось и в России.

А что там с Wi-Fi Multicast?

Если ваш принтер постоянно подключен к сети (и вы это видите в веб-интерфейсе роутера), но его обнаружение в сети работает только ровно 1 час, 1 день или другое круглое время, попробуйте:

  1. Проверить маршрутизатор на наличие опции мультикаста и IGMP Snooping

  2. Сменить режим безопасности Wi-Fi на "WPA-PSK/WPA2-PSK Mixed"

  3. Отключить смену ключа GTK (группового ключа)

  4. Создать отдельную (но не изолированную) сеть только для принтера

Протоколы автоматического обнаружения (mDNS/DNS-SD) используют мультикаст, который работает не так тривиально через Wi-Fi по сравнению с проводной сетью.

Wi-Fi использует разные алгоритмы шифрования и разные ключи шифрования, в зависимости от вида пакета: индивидуальные ключи шифрования для каждого клиента для обычного юникаст-трафика (pairwise key) и отдельный общий ключ шифрования для группового (group key / GTK) броадкаст и мультикаст-трафика.

В некоторых условиях могут возникнуть проблемы с групповым трафиком. Драйверы Intel Wi-Fi в Windows неправильно обрабатывают мультикаст-трафик после отправления компьютера в сон, а точки доступа Ubiquiti известны неправильной обработкой GTK.

Что касается IGMP Snooping: некоторые точки доступа требуют, чтобы устройство присоединилось к multicast-адресу протокола mDNS для получения mDNS-запросов. Большинство точек доступа пересылают запросы mDNS независимо от того, присоединялся ли клиент к адресу, или нет, но некоторые этого не делают или обрабатывают multicast неправильно.

 

Варим ритейл

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

Приборы выключаются исключительно выдёргиванием вилки/кабеля, не ломаются сами по себе, не настраиваются редактированием конфигурационных файлов по SSH, и в идеале интуитивно понятны без инструкции.

Иными словами, ваша тёща должна разобраться с девайсом без вашей помощи.

Принт-сервер из коробки поднимает свою Wi-Fi-сеть, данные к которой указаны на корпусе устройства. Сканирование QR-кода камерой ускоряет настройку на смартфонах и планшетах.

Подключение к существующей сети настраивается через веб-интефейс, причём для доступа не нужно судорожно искать IP-адрес устройства в списке DHCP-клиентов на роутере — он всегда доступен по адресу http://uowprint.local, спасибо mDNS.

Здесь также можно включить особые опции. В частности, драйвер для моего Canon настолько другой, что использует не стандартные интерфейсы взаимодействия (как все нормальные драйверы), а общается с принтером отдельным демоном, имеющим собственную конфигурацию — всё, вместе с поддержкой совсем древних LPT (Parallel)-принтеров и эмулируемых драйверов настраивается во вкладке «прочее».

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

За основу взята ОС Debian 12 — она содержит большинство необходимого софта и драйверов, легко кастомизируется, а система сборки .deb-пакетов поддерживает кросс-компиляцию, что значительно ускоряет генерацию прошивки в сравнении с запуском всей ОС для целевой архитектуры на компьютере в эмуляторе.

Для сборки прошивки используется система подготовки и обработки образов физических устройств и виртуальных машин mkosi, от разработчиков systemd. Она похожа по сути на docker build и альтернативы, но также работает с файловыми системами, загрузчиками, UEFI и другими атрибутами железных машин.
Преимущество mkosi в унификации: каждый этап запускается одной командой, работает на любом дистрибутиве, не требует установки нестандартных зависимостей.

  1. Построение образа-сборщика с помощью debootstrap под x86_64, внутри него:
    • Кросс-компиляция необходимых пакетов под ARM
    • Пересборка части ПО и драйверов с дополнительными патчами
    • Компиляция утилит для ФС ubi

  2. Сборка ядра Linux и загрузчика littlekernel под плату

  3. Построение образа под ARMv7, установка всех ранее собранных пакетов образом-сборщиком, применение дополнительных настроек

  4. Компоновка всех получившихся файлов в файловую систему UBIFS + образ UBI для неуправляемой флеш-памяти NAND

Проприетарные драйверы подогнаны для совместимости с эмулятором box86 и также собраны в deb-пакеты, что упрощает установку и контроль версий.

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

Обновление прошивки реализуется файлами на USB-флешке, которую пользователю необходимо вставить в устройство самостоятельно, предварительно скачав файлы из интернета. Автоматическое обновление прошивок невозможно реализовать надёжно, ввиду недостатка памяти (и оперативной, и постоянной) для хранения нового образа целиком (а без этого устройство станет неработоспособным при отключении питания во время процесса прошивки).

Безопасность соответствует основным положениям свежей спецификации Connectivity Standard Alliance IoT Device Security Specification 1.0 (PDF):

  • Межсетевой экран блокирует любые входящие соединения вне диапазонов локальной сети (IPv4 и IPv6);

  • Данные для подключения к Wi-Fi-сети и доступа к настройкам на каждом устройстве уникальны, а не общие у всех;

  • Отсутствие стандартных/вшитых паролей;

  • Контроль цепочки поставки (supply chain) компонентов: ПО, отсутствующее в репозиториях Debian, собирается из исходных кодов фиксированных версий или git-коммитов;

  • Генерация Software Bill of Materials (SBOM) — списка компонентов, попавших в релиз прошивки, для отслеживания уязвимостей в разных версиях ПО.

DependencyTrack показывает список уязвимостей в устаревшей версии прошивки
DependencyTrack показывает список уязвимостей в устаревшей версии прошивки

Однако не стоит питать иллюзий по поводу комплексной защищенности принт-сервера: актуальный userspace соседствует с неподдерживаемым ядром и Wi-Fi-стеком 10-летней давности, ввиду некондиционного состояния системы-на-чипе в целом и нашей платы в частности.
Из интернета вам вряд ли что-то прогрузят, но LPE — запросто.

И последнее, что раньше воспринималось как само-собой разумеющееся, но теперь требует отдельного упоминания — отсутствие говна.

Устройство не использует подписочную модель, не собирает телеметрию и аналитику, не обрабатывает персональные данные, не требует подключения к интернету (ни для начальной настройки, ни в процессе использования), не выходит в интернет (кроме как для синхронизации времени по NTP), не зависит от какого-либо внешнего сервера и облака, не передает данные на сервер, не требует учётной записи, не обновляется автоматически, не имеет незадекларированных возможностей, не применяет искусственные (маркетинговые) ограничения и запланированное устаревание, не разрабатывается с непрозрачной моделью монетизации, не является частью рекламной индустрии и соцопросов, не задействует рекомендательные алгоритмы и вовлечение, не ограничивает пользователя в модификации.
Это обычный, заурядный, скучный, предельно понятный digital native'ам и деду с бабой, с одним портом и одной кнопкой, полностью на русском языке как игры Фаргуса, бионеразлагаемый принт-сервер.

 

Ошибки, устранённые проектом

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

Подсистема печати на ОС от Microsoft очень привередлива: если что-то идёт не так, принтер устанавливается бесконечно долго без каких-либо сообщений, а в отдельных случаях установка проходит якобы успешно, но не как принтер, а как «устройство», на котором нельзя печатать. Без удаления из списка «устройств» (отдельная секция в панели управления) принтер нельзя найти заново через диалог установки.

Вызвано это было, в одном случае, небольшим несоответствием стандарту IPP: поле media-source-supported, описывающее лоток подачи бумаги, должно начинаться с буквы, а оно начиналось с цифры.

Во втором случае принтер не добавлялся из-за отсутствия производителя и названия устройства в одном из служебных полей.

Баг-трекеры проектов
Баг-трекеры проектов

Windows и Android не позволяют указывать произвольные размеры бумаги, отсутствующие в спецификации IPP. От этого страдают принтеры этикеток и особенно чеков, где есть просто рулон ≈бесконечной длины, а приходится печатать в неудобном предустановленном формате. Вроде как будущие версии Windows 11, доступные по программе Insider Preview, уже поддерживают произвольные размеры, если их сообщает сам принтер, но у меня задействовать эту функцию не получилось.

Увы, сообщить о какой-либо проблеме в Microsoft невозможно — на форуме предлагают написать обращение с помощью встроенной программы Feedback Hub, которые никто не читает. Чего-то большего от компании, которая 4 месяца распространяла сломанную прошивку UEFI на собственный планшет Surface Go через Windows Update, ожидать не приходится — пользователи успевали обменять устройства по гарантии, только чтобы снова брикнуть их неотключаемым обновлением.

Клиент купил принт-сервер, а ничего не печатается? Разбираться придётся мне, а не дяде Васе корейцу из опенсорсного проекта?

  • Пришлось дополнительно купить 3 принтера, для отладки и устранения багов

  • Проблема устранена ⇒ патч отправляется в CUPS/SANE upstream

  • Проблема не устранена ⇒ отправляется максимально детальное сообщение об ошибке, чтобы её мог устранить разработчик ПО

Повышенное внимание и правильная отладка улучшает открытое ПО, но обычный пользователь не в силах разобраться в причинах, а разработчик драйвера не во всех случаях сможет помочь, не имея принтера на руках. На стыке софта и железа на одном лишь энтузиазме далеко не уедешь.

Иногда, увы, обращаться попросту не к кому: люди умирают, оставляя проект (например, foo2zjs) без поддержки, а свежая кровь не интересуется принтерами.

 

Финансовые вливания

Чтобы помочь потенциальным инициативным одиночкам в улучшении печати и сканирования, проект откладывает по $2 с каждого проданного принт-сервера, аккумулируя деньги в общий пул, который можно потратить на покупку железа или прямую оплату труда разработчика.

По $2 также получают CUPS, SANE и AirSane каждый, как основополагающие проекта, без которых он бы не состоялся.

Вижу в этом некую синергию софта и железа, объединяющую два мира: разработчиков, для которых это всего лишь программа, и конечных пользователей, для которых это всего лишь инструмент в прозрачном корпусе, при этом каждый получает своё.

Промежуточные итоги

  • Все некондиционные платы успешно освоены
    135 серверов ушли владельцам принтеров, вся оставшаяся у производителя партия Orange Pi'ев переиспользована, а не оказалась на свалке.

  • Открытые проекты получили пожертвования
    По ≈$320 каждый, чуть больше $2 с устройства благодаря пожертвованиям заинтересованных людей (без покупки устройств). Немного, но это только начало.

  • Мой устаревший Canon теперь печатает с любого компьютера и смартфона?
    Я также написал рабочий прототип открытого драйвера CAPTv1, но на данный момент в устройстве используется проприетарный.

  • Пользователи довольны и просят еще?
    Увы, найти подходящие по характеристикам и стоимости платы не так просто.

 

Бонус: Какой Б/У принтер купить для дома?

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

Если хотите купить новый (не Б/У) принтер, убедитесь, что он сертифицирован AirPrint или Mopria. Покупать принтер без поддержки одной из этих технологий в нашем году бессмысленно, каким бы хорошим он ни был. Они работают и по проводу, а не только по сети.

Список лучших Б/У принтеров и МФУ

На пятёрочку

Самые надежные модели, дешевые запчасти и ремонт, поддерживаются всеми текущими ОС (Windows 11/macOS Intel и ARM/Linux по состоянию на 2024 г.), хорошие драйверы.

  • HP 1010, 1015, 1018, 1020, 1022, P1005, P1006, P1505: очень компактные, складной лоток для бумаги, картриджи без чипов или блокировок. Односторонняя печать.

  • HP 1160, 1320, P2035, P2055: модель типа «кубик», со скрытым лотком для бумаги, чипом без блокировок. Двусторонняя печать поддерживается на моделях 1320, P2055d.

  • Canon LBP2900, LBP3000, LBP3010, LBP6000, LBP6020, LBP6030: картриджи без чипа/блокировок, односторонняя печать. 2900/3000 выпускается еще с 2005 года (но новые модели стоят недешево, около $200). Драйверы все еще работают, но, вероятно, не будут активно обновляться (Win 11 официально не поддерживается, чуть устаревший драйвер для MacOS).

  • Canon LBP6650, LBP6670: «кубики» с картриджами без чипа, двусторонняя печать.

На четвёрочку

Потенциальные проблемы с драйверами, но механически хорошие модели. Подразделение принтеров Samsung было куплено HP в 2017 году, обновлений драйверов не ждите.

  • Samsung ML1610/1640: чипованные картриджи, дешево заправить или взломать прошивку (1$)

  • Samsung ML1710/1750: серия постарше, но всё ещё норм

На троечку

Устаревшие модели.

  • Samsung ML1210: устаревшие драйверы

  • Canon LBP810, LBP1120: устаревшие драйверы, нет поддержки Windows 64-бит

  • HP P2015: отвалы BGA-чипов из-за плохого припоя. Драйверы в норме.

  • HP 1200, 1300: старые модели

МФУ

Просто список, без рангов.

  • HP M1005/M1120/M1132: картриджи без чипов.

  • HP 3390

  • HP 2727/1536/1522: Выходят из строя BGA-чипы из-за плохой пайки, проверяйте перед покупкой! 1536/2727 поддерживают двустороннюю печать, 2727 — кубик.

Подразделение принтеров Samsung было куплено HP в 2017 году, обновлений драйверов не ждите

  • Samsung SCX-3200, SCX-3400: чипованные картриджи, дешево взломать прошивку ($1)

  • Samsung SCX-4200 / Xerox WorkCentre 3119: картриджи с чипами, но можно прошить сам чип дёшево

  • Samsung SCX-4x21: устаревшая модель, бесчиповая.

  • Xerox WorkCentre 3210/3220: чипованные картриджи, дешево взломать прошивку ($1), «кубики». 3220 с двусторонней печатью.

 

Бонус 2: Нарушители лицензии GPL

Большинство импортозамещённых принтеров основаны на китайских механизмах печати (print engine) и используют драйверы с компонентами, лицензированными на условиях GNU General Public License (GPL). Эта лицензия обязывает распространять модификации с такими же условиями, что и оригинальная программа, иначе говоря, раскрывать исходный код.

И что же мы видим внутри?

Принтеры фирм Катюша (М240), Гравитон (ГП2201), Pantum (P2500) используют железо и ПО, изначально сделанное производителем принтеров Avision. В состав драйвера входит код библиотеки JBIG-KIT 2.0, поставляемый как под коммерческой платной лицензией, так и свободно под GPL.

Исполняемый файл драйвера в HEX-редакторе
Исполняемый файл драйвера в HEX-редакторе

Как видно из строк в исполняемом файле драйвера, в данном случае была использована GPL-версия кода.

Ответ автора JBIG-KIT
Ответ автора JBIG-KIT

Автор библиотеки не слышал ни об одной из указанных компаний, они не покупали коммерческую версию библиотеки, а значит, что код драйвера должен распространяться на условиях GPL.

Булат и Катюша симулировали бурную деятельность в ответ на обращение, безуспешно (хотя я допускаю, что они целиком работают через китайского подрядчика, и у них действительно нет исходных кодов). Pantum оставил обращение без ответа. 1, 2, 3, 4.

Схожая ситуация с принтерами Булат (P1024) и Digma (DHP-2401W). Драйвер основан на foomatic-rip 1.27.4, также распространяемого на условиях GPL v2. Ответ не получен. 1.

 

Попытка №2: кому-то это ещё нужно?

А теперь, уважаемые пользователи Хабра, предлагаю поучаствовать в опросе о необходимости и количестве второй партии устройств этого маленького проекта выходного дня, на куда более производительном и современном железе в виде Orange Pi Zero 3 (с Wi-Fi и Ethernet), по предварительной цене в 2650 рублей (≈$27).

На сайте есть список поддерживаемых принтеров (ctrl+f и ищите по модели или семейству) и документация (также встроена в само устройство, для чтения без интернета).
Поддерживается Wi-Fi и Ethernet-подключение к сети, USB и LPT/Parallel к принтеру. Предоставляются полные исходники и система сборки.

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

Комментарии (59)


  1. aborouhin
    26.12.2024 03:21

    Проголосовал, что куплю, но на самом деле там есть одно "если" - если эта чудо-железка сможет вернуть функции сетевого сканирования (печать и так работает) моему старичку Canon mf4370dn. Последний раз под Виндой оно работало этак в XP, потом попытки запустить были тщетны. Прикрутить к нему одноплатник с SANE в планах уже третий год и, вероятно, он сдохнет раньше, чем соберусь доделать, - а готовое за скромный прайс взял бы.


    1. ValdikSS Автор
      26.12.2024 03:21

      Сканер в mf4370dn поддерживается SANE'ом, работать будет, по крайней мере должен, драйвер в SANE вроде не сломан.
      Самая простая проверка — загрузить livecd ubuntu и попробовать посканировать. Если всё в порядке, то и на принт-сервере заработает. Если есть нюансы или работает нестабильно, то нужно будет отлаживать (мне).


      1. aborouhin
        26.12.2024 03:21

        Да я и ноут с установленной убунтой до него донесу, если надо :) В целом должен работать, да. Локальное сканирование и под Виндой работает отлично, проблема именно в сетевом, которое было реализовано через своеобычный и ныне заброшенный производителем протокол. А Sane это берёт на себя. В общем, становлюсь в очередь.


    1. Fragster
      26.12.2024 03:21

      Если поддерживается SANE, то сам бог велел подключить к роутеру с openwrt или keenetikOs и завести. и как принтсервер эти роутеры тоже прекрасно работают, в том числе через jetdirect (не требуя в своем составе драйверов на роутере).


    1. RTFM13
      26.12.2024 03:21

      О, у меня та же история с хьюлетом. Сканирование на нем (HPLJ3052).

      Сканирование пачкой из автоподатчика всегда работало через раз, пока не зависнет. Больше 5 страниц до зависания не сканировалось ни разу. Сканирование по сети работало только по 1й странице, и надо было что-то там колдовать с версиями драйверов и реестром. Потом по мере обновления винды отвалилось сканирование по сети, а потом и по USB. Установить драйвера сканера без ведра помоем было нельзя (только принтер и только по USB).

      Когда я поставил линукс на десктоп был диалог вроде
      - установить принтер
      - вот этот (модель, IP)?
      - да
      - готово
      - в смысле??? (а как же весь этот геморрой к которому я привык в винде, или хотябы пробную страницу?)

      Я аж не поверил и полез проверять печать.

      Сканирование по сети в XSANE заработало сразу.

      PS

      на счет мультикаста по вайфай - там как-то можно сказать ядру чтобы слало мультикаст обычным юникастом каждому. Если вы не смотрите в десятером мультикастовое потоковое видео (на практике это нереализуемо) то на производительности это не скажется.


  1. whocoulditbe
    26.12.2024 03:21

    Очень интересно, но на мой взгляд это не самый актуальный девайс.

    Новые принтеры, как указано в статье, в целом поддерживают зоопарк девайсов, печать по сети и вот это всё - им платка не нужна.

    Остаётся старый принтер. Если он работает, то принт-сервер ему не нужен. Если он не работает с текущей ОС, то встаёт вопрос - будет ли пользователь покупать платку по цене чуть ли не нового принтера, или может просто купить новый с гарантией и не заморачиваться?

    Также в пайплайн печати добавляется изделие, к которому должна быть подключена услуга "знакомый компьютерщик" - а что если оно в один прекрасный день помрёт? Бабка с дедом логи смотреть (и, тем более, отсылать на какой-то там гитхаб) не будут.

    Ниша уж больно узкая, она обычно закрывается покупкой нового принтера (вливанием бабла). Сердцем я с вами, но скептик-практик не хочет видеть это устройство.


    1. ValdikSS Автор
      26.12.2024 03:21

      Всё же плата стоит менее трети от самого-самого дешевого нового принтера, но действительно, цена здесь играет решающую роль. Увы, дешевых одноплатников просто нет — прошли те времена, когда простые модели были по $9.99.

      Если он работает, то принт-сервер ему не нужен.

      Многим хочется банального удобства — возможности печати со смартфона не включая компьютера, либо возможности убрать принтер подальше от компьютера.


      1. acc0unt
        26.12.2024 03:21

        Самый дешёвый одноплатник из тех, которые я знаю - это Milk-V Duo. И Milk-V Duo S - чуть дороже, но схожий чип, и все нужные разъёмы уже распаяны.

        Linux поддерживает, имеет 1 USB device/host и 1 Ethernet PHY. Мозгов у него с напёрсток, но если нам не шашечки, а принтсервер, то должно хватить.


        1. ValdikSS Автор
          26.12.2024 03:21

          Дешевых подходящих под задачу одноплатников сейчас есть от силы 2, не больше. Только 5-7-лет назад можно было действительно купить плату не сильно дороже акционных $9.99, то сейчас вам её либо не доставят напрямую, либо доставка будет стоить соизмеримые деньги.

          Milk-V Duo. Голая плата, в которой не распаян USB и Ethernet — нужно будет делать плату-сендвич и заказывать её производство. Без Wi-Fi-модуля, а он гораздо актуальней Ethernet'а для подавляющего большинства. Без памяти.

          Milk-V DUO-S, уже лучше: есть распаянный Ethernet и USB. Процессор медленный и одноядерный, но подойдёт. Только вот у единственного международного поставщика, у которого платы в наличии, $9.99 стоит версия без Wi-Fi, а с ним — $12.49. В Россию они не доставляют, а это значит, что вам предложат два варианта: либо вы переводите сумму (+НДС за продажу внутри Китая) на банковский счёт в юанях, и находите shipping agent из Китая в РФ самостоятельно, либо вы платите на банковский счёт в Гонконге в их долларах (без НДС), также ищите shipping agent, но еще оплачиваете доставку до Гонконга (≈$30-40).

          Это уже $15 по самым оптимистичным подсчётам, без доставки в Россию. Далее вам нужен корпус и MicroSD, это еще по $1 за каждый элемент. Растаможка РФ прибавит еще 30% стоимости.

          Я чудом нашел Orange Pi Zero 3 по хорошей цене и с хорошими условиями (а там 1ГБ памяти и процессор вдвое быстрее), но даже это невероятно редкое предложение никак не может опустить отпускную цену до психологического порога в 2500 рублей.


    1. aborouhin
      26.12.2024 03:21

      платку по цене чуть ли не нового принтера

      Ну вот, скажем, новое сетевое МФУ с двусторонней печатью и автоподатчиком для сканера (для меня обе фичи критичны) стóит от 30 т.р. При этом самые дешёвые новые модели вызывают сомнения по надёжности, и к любой актуальной модели картриджи в несколько раз дороже, чем к моему старому Canon'у. Так что идея вернуть ему функции сетевого сканера и использовать ещё сколько он там лет протянет (пока что протянул 16, скоро ему алкоголь можно будет покупать :) мне нравится больше, чем покупка нового.

      Меня больше в нём бесит, что он по SNMP процент заполнения картриджа не отдаёт (и вообще кроме счётчика страниц ничего полезного не отдаёт), но это уже никаким принт-сервером не починишь, увы. И из-за этого менять точно не буду.


      1. LavaLava
        26.12.2024 03:21

        50 нормальный офисный Кэнон ( А4 двусторонний автоподатчик, Lan) стоит. Только что избавился от практически нового HP, который поразил 5 минутами загрузки и безумно навороченным бестолковым веб интерфейсом. Кэнон сейчас самые приятные в части интерфейса. А дешевле уже пантумы всякие, слаборемонтопригодные.

        И да, теперь уровень тонера нигде не виден, если ты чип переставяляешь в следующий дешманский картридж. Так и живём


        1. nitro80
          26.12.2024 03:21

          Есть в использовании Canon 1133.

          Вот бесит то, что для сканирования по сети надо подойти и нажать кнопку Scan, выбрать "удалённый сканер" и только потом возвращаться за компьютер и сканировать. А если следом надо печатать - необходимо вернуться к МФУ и нажать Copy. Иначе будет ждать и не перейдёт к печати.


          1. aborouhin
            26.12.2024 03:21

            А вот кстати, для таких устройств принт-сервер мог бы очень сильно облегчить жизнь. На нормальных сетевых сканерах есть или адресная книга и отправка скана по e-mail выбранному контакту, или выкладывание его куда-нибудь на сетевой диск. В целом этот функционал легко реализовать в принт-сервере. Только что получатель e-mail будет один-единственный, если не добавлять экран и кнопки. Хотя кнопка на принт-сервере всё-таки понадобится одна, чтобы инициировать сканирование, не отходя от МФУ. Ну а в описанном тяжёлом случае придётся сначала нажать кнопку на МФУ, а потом вторую кнопку на принт-сервере.

            @ValdikSS, а как оно сейчас реализовано? Скан надо без вариантов запускать с клиентского устройства? Когда сканер на другом этаже - не очень удобно...


            1. ValdikSS Автор
              26.12.2024 03:21

              Скан надо без вариантов запускать с клиентского устройства?

              Увы, в airprint/mopria взаимодействия принтера с компьютером не предусмотрено, только наоборот. Можно, однако, сканировать на смартфон, в Mopria Scan.


              1. aborouhin
                26.12.2024 03:21

                Так я немножко про другое. Компьютером-то для МФУ выступает Ваш принт-сервер. И он может не только расшаривать его через Airprint/Mopria, но и сам запускать сканирование и отправлять результат на почту / сохранять на сетевой диск. Можно сделать кнопку и один настраиваемый маршрут, куда отправлять. А можно веб-интерфейс принт-сервера дополнить той же адресной книгой из нескольких получателей.


  1. ValdikSS Автор
    26.12.2024 03:21

    И сразу ответы на никем не заданные вопросы:

    1. Почему не Docker-контейнер, который можно запустить на любом одноплатнике?

    Прежде всего из-за сложности взаимодействия с udev hotplug из контейнера, и правильной реакции на эти события, определёнными сложностями с пробросом USB. Некоторые принтеры не имеют памяти под прошивку и ждут, пока компьютер загрузит её при каждом включении. Если и хост, и контейнер начнут что-то делать с принтером одновременно, он не будет печатать. Другие принтеры, например некоторые модели от Samsung, такие неженки, что никакому другому ПО на них лучше вообще не дышать, иначе зависнут.

    Контейнер не сможет обеспечить той надёжности и повторимости, какой можно добиться от «голой» операционки, а подготавливать образы ОС для широкого спектра одноплатников точно не вершина моих мечтаний. Несколько проектов «контейнера для печати» уже существует, ни один из них мне не понравился.

    1. Почему исходники не выложены публично?

    Они не заработают в отрыве от конкретного железа (которое уже всё распродано и недоступно для покупки). Для DIY проще установить ПО и драйверы на одноплатник классическим методом, а не адаптировать целую ОС и систему сборки под ваше железо. Энтузиасты могут отправлять патчи непосредственно в задействованное ПО.


    1. leorush
      26.12.2024 03:21

      Вроде не всё ещё распродано, или это другая партия?

      https://www.ozon.ru/product/orange-pi-3g-iot-a-256mb-512mb-mikrokompyuter-orandzh-pay-1069771381


      1. ValdikSS Автор
        26.12.2024 03:21

        В наличии — осталось 2 штуки!


        1. leorush
          26.12.2024 03:21

          Ну если поискать, ещё можно найти. К тому же ещё есть Model B которая только имеет чуть больше памяти. Я к тому что железо, хоть и с трудом встречается ещё. И б\у есть. Так что вполне можно и исходники либо готовый образ в открытый доступ выложить.


    1. voted
      26.12.2024 03:21

      Они не заработают в отрыве от конкретного железа (которое уже всё распродано и недоступно для покупки)

      Честно скажу, самого беспокоила эта тема, валяется старый Rashberry PI первой модели, года 4 руки не доходят посмотреть что надо поставить что б решить подобную задачу для Samsung SCX4200. Вот если б был опубликован скрипт сборки (образно говоря Dockerfile) который собирает устройство под своё железо - было бы сильно проще установить этот софт классическим образом на своё железо. Ясно что без каких либо гарантий, просто как пример, железо немного похожее, тоже ARMv7, но отправная точка была бы.


  1. alex_kag
    26.12.2024 03:21

    Очень интересно, но ничего не понятно..... ))))

    На самом деле - замечательный проект, и с удовольствием бы приобрел себе этот девайс. Но весь вопрос, тут все было расписано (и на сайте тоже) что принтер заведется в режиме принтера. А вот про режим сканера - не было сказано ни слова, кроме того, что будет работать. У меня дома трудится старичок hp laserjet m1005 mfp, и весь вопрос заведется ли в нем сканирование, через этот девайс?

    И второй вопрос - не совсем понятно: в конце статьи сказано, что все исходники и инструкция по прошивке - на сайте. И тут же, в комментариях, что исходники не выложены.


    1. ValdikSS Автор
      26.12.2024 03:21

      M1005 MFP работает полностью. Владелец принт-сервера починил все мелкие проблемы в открытом драйвере сканирования, и есть еще официальный от HP.

      Отличное МФУ, которое до сих пор в цене. Родители как купили его в ~2008, так до сих пор активно пользуются, ныне через принт-сервер :D

      Исходники действительно есть на сайте, только под паролем, который выдаётся при покупке.


      1. alex_kag
        26.12.2024 03:21

        замечательная новость.

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


        1. ValdikSS Автор
          26.12.2024 03:21

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


  1. aik
    26.12.2024 03:21

    То есть в вашей коробочке некий стандартный драйвер живёт и сетевой клиент при печати даже не знает, какой там на деле принтер подключен?

    Кстати, как на счёт недорогих переходников usb-lpt, которые только для печати? Они с вашей коробочкой работать будут? К примеру, у меня hp1100 есть. Под десяткой работает с таким переходником.


    1. xSVPx
      26.12.2024 03:21

      Странно, мой под десяткой работает "с купюрами", т.е. пришлось какой-то неродной драйвер вкорячивать и каждые 20-30 листов он виснет и требует перезагрузки по питанию :(


      1. aik
        26.12.2024 03:21

        Родной НРшный драйвер имелся же в Download Center, даже для 64 бита. С ним вопросов у меня не было.


    1. ValdikSS Автор
      26.12.2024 03:21

      Кстати, как на счёт недорогих переходников usb-lpt, которые только для печати?

      Они поддерживаются, но не все принтеры с ними работают. Canon LBP-810, например, не заработал ни в Windows, ни в Linux, ему, видимо, нужно управление по доп. пинам.

      Ваш HP 1100 это почти копия LBP-810, у него такой же Canon'вский printing engine, но плата форматтера (и прошивка, и драйверы) отличаются. Если у вас работает с Windows, то и через плату должно работать.


  1. YegorP
    26.12.2024 03:21

    Я хоть уже и приделал принтер 2004 года к Windows 10 и 11 через ручную установку драйвера от похожей модели (девайс Xerox Phaser 3121, а драйвер от 3124), но готов купить эту штуку хотя бы для поддержки проекта.


  1. LavaLava
    26.12.2024 03:21

    А поднять виртуалку на xp и расшарить принтер по сети не пробовали? Иногда такой трюк срабатывает со старыми принтерами.


    1. aik
      26.12.2024 03:21

      При отсутствии драйвера не сработает. А если есть драйвер - то можно и локально подключиться.


  1. Tirarex
    26.12.2024 03:21

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


    1. aik
      26.12.2024 03:21

      Домашний юзер сегодня печатает мало, а вот офисный - постоянно. Это больше для них вещь, как мне кажется.


      1. aborouhin
        26.12.2024 03:21

        В рамках удалёнки и малого бизнеса граница между домом и офисом слегка стирается :) Но тут больше от профессии зависит, конечно. Юристы вот печатают тоннами, несмотря на все сервисы электронного документооборота и правосудия (хотя без них был вообще мрак). Да и просто свой бизнес генерит-таки изрядно бумажек. Уж на что я стараюсь всё в электронку переводить (поэтому мне сканер нужен больше принтера), но не избежать.


  1. almirus
    26.12.2024 03:21

    \OFF Пишите чаще!


    1. ValdikSS Автор
      26.12.2024 03:21

      Это делать нетривиально из-за глючности и тормознутости редактора сайта и редактуры статей модераторами — им неведомо слово «форматирование», они приходят и меняют его согласно своему мировоззрению.

      Знаете, почему в статье картинки выровнены только по левому краю? Потому что по правому в редакторе не реализовали!


  1. merkel
    26.12.2024 03:21

    Я OrangePi Zero использовал в качестве принт-сервера. Тот же самый CUPS под капотом. Дорого, конечно, но чего не сделаешь, чтобы от проводов избавиться.


  1. trawl
    26.12.2024 03:21

    А есть возможность приобрести готовый образ для уже имеющегося Orange Pi Zero 3?


  1. xSVPx
    26.12.2024 03:21

    Вообще лучше бы иметь образ для популярного пусть и дорогого железа.

    Денег так не заработать совершенно (растащут), но пользоваться люди будут. Кроме 27$ денег за настроенное железо придется ведь еще 5-10$ транспортных расходов оплатить. А 37$ - это уже поди какого-нибудь относительно безглючного распберри цена...


  1. LuchS-lynx
    26.12.2024 03:21

    может кому-то будет полезно: старые Canon'ы до 4000й серии, а может и по 4000-ю вполне себе работают с принт-сервером Axis 1650. Тестировал с МФУшкой 3010 + Windows 10 - печать работает, скан через принт-сервер не завёлся.


  1. Akr0n
    26.12.2024 03:21

    Жаль, что в Orange Pi нет LPT-порта...


  1. arider77
    26.12.2024 03:21

    Голосовал за то что куплю, и готов, но на сайте говорится что уже всё распродано и перечёркнута строка способа связи с автором.

    Вопрос - сеть у меня не плоская, есть несколько сегментов, как будет оно работать с устройствами, находящимися в другом широковещательном домене (в других подсетях)?
    Кстати так же нашёл абзац на сайте, что возможно подключение через Ethernet-USB и это вот прям порадовало.

    Таки как приобрести устройство, @ValdikSS


    1. ValdikSS Автор
      26.12.2024 03:21

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

      Автообнаружение у AirPrint/Mopria работает в пределах одного multicast-сегмента, а вручную ни одна ОС не позволяет добавить airprint/mopria-принтер по IP-адресу, так что придётся мудрить с маршрутизацией мультикаста и добавлением устройства в разные сегменты.


  1. andmerk93
    26.12.2024 03:21

    Проголосовал за ремиксы, потому что не мог иначе.

    Устройство не куплю, ибо сам могу сделать)

    Но штука, я считаю, полезная. Насчёт коммерческого потенциала - я хз, не понимаю, как это оценить, но надеюсь, всё получится.

    У меня HP LaserJet 1225 (если правильно помню модель). На 10ке не работает, но на современном линуксе работает из коробки. Какой именно драйвер - не выяснял. По итогу, если надо что-то распечатать, перезагружаюсь в линукс (если был на Винде).

    Тоже не раз думал про принт-сервер. Хотел сделать на openWRT на роутере. Принтер подключить туда через usb-over-ip, а на роутер просто поставить драйвера. Но пока руки не дошли.

    Если кто-то делал подобное, отпишитесь ниже, как прошло.


    1. ValdikSS Автор
      26.12.2024 03:21

      Вам потребуется cups+драйвер на роутере, скорее всего еще и ghostscript/poppler. В стандартных репозиториях OpenWrt нет ни того, ни другого. Временное хранение задачи на печать и обработка документа легко может потреблять 150 МБ оперативной памяти, что не каждому роутеру под силу.

      Для usb-over-ip нужен драйвер, это то же самое, что прямое подключение принтера по USB, только по сети. Ваш LJ1220 поддерживает HP PCL 6, HP PCL 5e, Postscript Level 2 emulation, можете использовать драйвер от почти любого принтера, все совместимы с Windows 10/11.

      Для PCL: V3 Xerox Global Print Driver PCL6

      Для PostScript можно:


  1. longmaster
    26.12.2024 03:21

    Вопрос не совсем по теме: а есть ли софт под винду, позволяющий расшарить подключенный старый принтер по технологии Mopria? Нахожу рецепты, как реализовать AirPrint, но не нахожу ничего такого про Mopria.

    У меня Canon LBP7018C, виндовые драйвера под него пока работают, поэтому принтсервер реализовал на базе тонкого клиента Dell Wyse Dx0D c Win10. Для полного счастья ещё бы реализовать "красивую" печать с планшетов/смартфонов.


    1. LuchS-lynx
      26.12.2024 03:21

      у Интела и некоторых других производителей мини-ПК были малые ПК в формате Stick чуть больше флешки/SSD NVMe диска, как по мне - они идеальны - на вторичке стоят дешево, работают под Win8/Win10, их Атомы вполне себе годятся и вывозят такую работу. Бонусом идет подключение по WiFi, т.е. его можно поставить в любое место и запитать, даже, от переносного аккумулятора.
      я себе настроил связку сканер HP ScanJet 3800c + принтер Canon LBP6000, печатаю как по сети, так и по кнопке при сканировании. Красота.

      Stick Morefine M1s


  1. RussianNeuroMancer
    26.12.2024 03:21

    Вопрос слегка не по теме, и так как принтера больше нет на руках, представляет сугубо академический интерес, но всё же: может быть вы в курсе, что в конечном итоге сломало поддержку тысячных HP в Ubuntu несколько лет назад? Почему не отрабатывала загрузка прошивки, или почему печать не работала даже после загрузки прошивки? Последний раз мучаться с 1018 районе Ubuntu 18 или 20, и завести не удалось ни с hplip, ни с дефолтным драйвером - принтер штатно реагировал на загрузку прошивки, но не печатал. Ну и да, я выносил второй драйвер из системы во время тестов первого, и наоборот, плюс делал попытки на чистой системе, в которой не могло быть остатков каких-то подставленных в прошлом костылей, о которых я мог забыть.

    В прошлом этот принтер удавалось завести либо с тем, либо с другом драйвером.


    1. ValdikSS Автор
      26.12.2024 03:21

      Не слышал о таком, в современных версиях всё беспроблемно работает, проверял на HP 1018.

      Установка прошивки не тривиальна, возможно, в этом у вас возникла проблема? Для foo2zjs нужно использовать скрипт getweb, а для hplip устанавливать плагин, и через него скачивать прошивку.

      Кроме того, если установлены сразу foo2zjs и hplip, их скрипты загрузки прошивки будут запущены одновременно оба при подключении принтера. Не видел, чтобы в дистрибутивах это поправляли.


      1. RussianNeuroMancer
        26.12.2024 03:21

        С установкой прошивки я как раз разобрался ещё в прошлые заходы, с этим проблемы быть не могло, тем более принтер явным образом реагировал на её загрузку.

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

        В дистрибутивах видимо не правили из рассчёта на то, что с дефолтным предустановленным foo2zjs всё должно было работать (после разового скачивания прошивки).


  1. ilmarin77
    26.12.2024 03:21

    А можно софт самостоятельно поставить на raspberry PI? А то у меня пылится модель 3 без дела...


    1. RussianNeuroMancer
      26.12.2024 03:21

      Так вы же можете сами просто CUPS установить, либо он уже установлен, тогда нужно только расширить принтер.


  1. daggert
    26.12.2024 03:21

    На работе куча старых 1200 и 1300 лежит где в «щеках» есть куча места для установки плат расширения. Вот бы туда поставить этот одноплатник…


  1. leorush
    26.12.2024 03:21

    Одно время задумывался купить вот такую штуку у китайцев https://aliexpress.ru/item/1005007691601996.html

    Но лучше уж что-то понятное, чем неизвестный кот в мешке от китов )


    1. ValdikSS Автор
      26.12.2024 03:21

      Это "роутер" на OpenWrt + p910nd. Обычный принт-сервер, точно такой же, какие в домашних роутерах с USB-портом и функцией шаринга принтера. К нему нужен драйвер на всех устройствах, нет автообнаружения принтера, и сканер в МФУ работать не будет.


  1. Aelliari
    26.12.2024 03:21

    Мне не то чтобы оно сильно надо, потому что печать дома сейчас мне нужна раз в вечность, и я не сильно страдаю чтобы за неё заплатить. Но мне нравится этот проект, поэтому проголосовал что «куплю», и готов купить даже если принтер себе так и не поставлю.

    P.S. даже если принтер себе я не поставлю, то я все равно абсолютно точно найду кому поставить такую коробочку и дешевый старый принтер за «спасибо»


  1. Johan_Palych
    26.12.2024 03:21

    Для Canon LBP-1120 не существует работающего открытого драйвера, а пакет от производителя собран только под архитектуру x86

    Странно. Родной драйвер от 2017г.(cndrvcups-capt_2.71-1_amd64.deb, cndrvcups-common_3.21-1_amd64.deb)
    Есть и исходники.
    https://sg.canon/en/support/0100459601
    https://gdlp01.c-wss.com/gds/6/0100004596/05/linux-capt-drv-v271-uken.tar.gz

    sudo apt-get install cups cups-client foomatic-db
    sudo usermod -a -G lpadmin your-username
    Через system-config-printer или http://localhost:631/admin добавить файл PPD


    1. ValdikSS Автор
      26.12.2024 03:21

      В "исходниках" открыт только обработчик параметров cups-фильтра и все сопутствующее. Сам драйвер представлен в виде набора 32-битных бинарников и скомпилированной 32-битной библиотеки, которую нужно линковать к обработчику.

      amd64-пакет на деле частично 32-битный, у него даже не прописаны необходимые 32-битные пакеты и библиотеки как зависимости, поэтому при установке на чистую 64-битную систему он не работает без 32-битного libc.


  1. redmanmale
    26.12.2024 03:21

    не хватает варианта "готов задонатить без покупки"