Сетевой принтер и МФУ в Linux обычно настраиваются без фирменных драйверов: современные модели понимают IPP Everywhere, а сканирование работает через eSCL или WSD. Печать обслуживает CUPS, сканирование — SANE. Ниже — практический маршрут: обнаружить устройство, создать очередь, отправить задание и понять, почему оно зависло.
Как устроена печать: cupsd, IPP и фильтры
Служба cupsd принимает задания, хранит очереди и преобразует документ в формат, понятный принтеру. Управление идёт через веб-интерфейс на порту 631, утилиты lp/lpadmin и протокол IPP. Для сетевых моделей адрес обычно выглядит как ipp://192.168.1.50/ipp/print или ipps://printer.local/ipp/print.
Исторический способ печати через порт 9100 передаёт данные почти без обработки: принтер сам разбирает PDF или PostScript. Он полезен как аварийный вариант, но не передаёт статус, данные о расходниках и параметры задания. Поэтому сначала пробуйте IPP Everywhere, а socket оставляйте на случай, когда производитель реализовал протокол криво. Драйвер в классическом смысле — это PPD-файл с описанием возможностей; для driverless-печати CUPS получает его автоматически у самого принтера.
Установка и проверка службы
В Debian и Ubuntu базовый набор ставится одной командой. Avahi нужен для обнаружения устройств по mDNS в локальной сети. После добавления пользователя в группу lpadmin потребуется заново войти в сеанс, иначе веб-интерфейс не даст менять очереди.
sudo apt install cups cups-client avahi-daemon
sudo systemctl enable --now cups
sudo usermod -aG lpadmin "$USER"
lpstat -r
Ответ «scheduler is running» означает, что служба жива. Если systemctl показывает ошибку, смотрите journalctl -u cups. Веб-интерфейс открывается по адресу http://localhost:631; с другого компьютера он по умолчанию недоступен, и это правильно с точки зрения безопасности.
Поиск принтера в сети
Avahi показывает опубликованные службы, а lpinfo перечисляет доступные устройства и поддерживаемые драйверы. Если принтер не виден, проверьте, что компьютер и принтер в одной подсети и что изоляция клиентов не блокирует multicast.
avahi-browse -rt _ipp._tcp
lpinfo -v
lpinfo -m | head -20
В выводе lpinfo ищите строки dnssd://, ipp:// и ipps://. Список моделей помогает понять, есть ли для устройства готовый PPD, но для IPP Everywhere он не обязателен. Прямой IP надёжнее имени: mDNS зависит от настроек роутера, а адрес можно закрепить в DHCP-резервации. Команда avahi-resolve -n printer.local подскажет адрес, если устройство анонсирует имя.
Создание очереди через lpadmin
Очередь создаётся одной командой. Флаг -E сразу включает принтер, -v задаёт адрес, -m everywhere включает driverless-режим. Имя очереди выбирайте латиницей без пробелов: оно попадёт в команды и скрипты.
lpadmin -p Kitchen -E -v ipp://192.168.1.50/ipp/print -m everywhere
lpadmin -d Kitchen
lpoptions -p Kitchen -l
lpstat -p -d
lpoptions -l покажет доступные параметры: размеры бумаги, лотки, двустороннюю печать, цвет. Значения зависят от модели, поэтому не копируйте чужие настройки вслепую. Для старого принтера без IPP используйте PPD производителя или универсальный драйвер, а для совсем простой модели — socket://192.168.1.50:9100.
Печать и управление заданиями
Задание отправляется через lp; параметры можно указать для одного документа, не меняя настройки очереди. Так удобнее печатать отчёт в двухстороннем режиме, а конверт — с лотка ручной подачи.
lp -d Kitchen -o media=A4 -o sides=two-sided-long-edge report.pdf
lpstat -o
cancel -a Kitchen
lpstat -o показывает очередь активных заданий, cancel -a очищает её целиком. Если задание висит в состоянии «processing», сначала подождите несколько секунд: cupsd может ждать ответа принтера. Затем проверяйте журнал, а не отправляйте документ повторно — так в очереди появляются дубли.
Диагностика: принтер не печатает
Начните с сети и портов. IP должен отвечать на ping, а порт 631 — открываться. Проверить это можно через nc; для socket-печати дополнительно проверяется 9100. Затем включите подробный журнал CUPS и повторите задание.
ping -c 3 192.168.1.50
nc -vz 192.168.1.50 631
sudo cupsctl --debug-logging
sudo tail -f /var/log/cups/error_log
Типичные причины отказа перечислены ниже.
- Неверный URI: лишний путь, http вместо ipp или опечатка в IP.
- Очередь остановлена после ошибки: помогает cupsenable и cupsaccept.
- Закрыт порт 631 или 5353 на файрволе, хотя ping проходит.
- Принтер спит и не отвечает по IPP, но просыпается от задания на 9100.
- Закончилась бумага или тонер: статус виден в lpstat -p и в веб-интерфейсе.
Сканирование: SANE, airscan и права
SANE — это набор бэкендов, а scanimage — универсальный клиент. Сетевые МФУ чаще всего работают через sane-airscan по протоколам eSCL и WSD, без драйвера производителя. Локальный USB-сканер ищется через sane-find-scanner.
scanimage -L
airscan-discover
sudo usermod -aG lp,plugdev "$USER"
Если scanimage -L пишет «No scanners were identified», проверьте пакет sane-airscan и доступность порта 80 или 443 на МФУ. airscan-discover печатает готовые строки для /etc/sane.d/airscan.conf; после правки конфигурации повторите поиск. Ошибка «Permission denied» на USB-устройстве почти всегда решается группой lp и повторным входом, а не запуском всех команд через sudo.
Пакетное сканирование в PDF
Для архива удобно сканировать в PNG с разрешением 300 dpi, а затем собрать страницы в PDF. Такой путь даёт контроль над качеством и позволяет убрать брак до сборки. Если у МФУ есть автоподатчик, укажите источник и ограничьте количество страниц.
scanimage -d "airscan:e0:Office" --resolution 300 --mode Color --format=png --batch=page-%03d.png
img2pdf page-*.png -o document.pdf
pdfinfo document.pdf | grep Pages
Имя устройства берите из вывода scanimage -L, а не из примера. Для текстовых документов разумнее режим Grayscale и 300 dpi; цветной режим увеличивает файл в разы. Проверить число страниц и размер файла перед отправкой можно через pdfinfo и ls -lh.
Чек-лист рабочей настройки
- Принтер и сканер имеют постоянные адреса в локальной сети.
- Очередь создана с -m everywhere и включена флагом -E.
- Печать по IPP работает, socket используется только как резерв.
- Пользователь входит в группы lpadmin и lp, права проверены после перелогина.
- В журнале CUPS нет повторяющихся ошибок после тестовой страницы.
- Пробное сканирование сохранено в PDF и открыто на другом устройстве.
Итог
Рабочая связка проста: CUPS с очередью IPP Everywhere для печати и SANE с sane-airscan для сканирования. Секреты стабильности — постоянный IP, корректный URI, права групп и чтение error_log вместо повторной отправки заданий. Когда схема проверена, сетевой принтер в Linux ведёт себя предсказуемо и не требует фирменного пакета.