LinuxRuLinux без лишней теории
Печать и сканеры

Как подключить принтер в Linux: CUPS, драйверы и сканирование на МФУ

Редакция LinuxRu7 мин чтенияИнструкции

Подключить принтер в Linux обычно можно без драйвера: CUPS находит сетевые и USB-модели с поддержкой IPP Everywhere или AirPrint и печатает сразу. Ниже установка и настройка CUPS в Ubuntu, Fedora и Arch, три способа добавить принтер, пакеты драйверов для старых моделей, сканер на МФУ через SANE и разбор ситуаций, когда ничего не печатается.

Как подключить принтер в Linux: CUPS, драйверы и сканирование на МФУ
Фото: Túllio F, CC BY-SA 4.0, Wikimedia Commons
Содержание
  1. Как это работает
  2. Установка CUPS
  3. Подключение
  4. Драйверы
  5. МФУ и сканер
  6. Общий доступ
  7. Не печатает
  8. Частые вопросы

Как в Linux устроена печать

Всей печатью в Linux заведует CUPS, сервер печати от проекта OpenPrinting. Программы отдают ему документ, он ставит задание в очередь, преобразует файл в язык, понятный конкретному принтеру, и отправляет его по USB или по сети. Графические настройки принтеров в GNOME и KDE Plasma всего лишь удобная оболочка над CUPS.

За последние годы поменялась главная вещь: большинству современных принтеров драйвер больше не нужен. Устройства с поддержкой IPP Everywhere, AirPrint или Mopria сами сообщают CUPS свои возможности, и печать работает "без драйвера" (driverless). Почти все сетевые и Wi-Fi модели, выпущенные с середины 2010-х, умеют это. USB-принтеры с поддержкой IPP-over-USB работают так же через службу ipp-usb.

Классические драйверы с PPD-файлами остались для старых и бюджетных моделей. В OpenPrinting их постепенно переводят в формат Printer Applications, а будущие версии CUPS откажутся от PPD. Для пользователя это означает простое правило: сначала пробуйте driverless, драйвер ищите, только если он не сработал.

Установка и запуск CUPS

В Ubuntu, Linux Mint и Fedora с рабочим столом CUPS уже стоит и запущен. Проверить:

systemctl status cups
lpstat -r

Ответ scheduler is running означает, что сервер работает. На минимальной установке Debian или в Arch поставьте нужное сами. Для поиска сетевых принтеров нужен Avahi (mDNS), без него CUPS их не увидит.

# Debian / Ubuntu
sudo apt install cups cups-browsed avahi-daemon ipp-usb system-config-printer
# Fedora
sudo dnf install cups ipp-usb avahi system-config-printer
# Arch Linux
sudo pacman -S cups cups-browsed avahi nss-mdns ipp-usb system-config-printer
sudo systemctl enable --now cups.service avahi-daemon.service

В Arch для разрешения имён вида printer.local ещё нужно добавить mdns_minimal [NOTFOUND=return] в строку hosts файла /etc/nsswitch.conf перед resolve и dns, подробности в статье CUPS в ArchWiki. Если вы не знаете, как работать со службами, загляните в статью про systemctl.

Права на управление принтерами

Добавлять и удалять принтеры могут члены административной группы. В Debian и Ubuntu это lpadmin, в Fedora и Arch обычно хватает wheel. Добавить себя и перелогиниться:

sudo usermod -aG lpadmin $USER

Как подключить принтер в Linux: три способа

Через настройки рабочего стола

Самый короткий путь. Подключите принтер кабелем или к той же Wi-Fi сети и откройте Настройки, Принтеры в GNOME или Параметры системы, Принтеры в KDE Plasma. Часто принтер уже появился в списке сам: cups-browsed и driverless-режим сделали всё без вас. Если нет, нажмите "Добавить", выберите устройство из найденных и отправьте пробную страницу. Утилита system-config-printer делает то же самое и даёт больше настроек.

Через веб-интерфейс CUPS

Работает в любом дистрибутиве и на сервере без графики (через SSH-туннель). Откройте в браузере http://localhost:631, вкладка Administration, Add Printer. CUPS спросит логин и пароль: это ваш обычный пользователь из группы lpadmin. Выберите принтер из списка обнаруженных, на шаге выбора модели укажите вариант с пометкой driverless или IPP Everywhere, если он есть.

Из терминала

Сначала посмотрите, что видит CUPS, потом создайте очередь. Модель everywhere означает driverless-печать:

lpinfo -v
driverless
sudo lpadmin -p Office -E -v "ipp://192.168.1.50/ipp/print" -m everywhere
lpoptions -d Office
lp -d Office /usr/share/cups/data/testprint

Ключ -p задаёт имя очереди, -E включает её, -v адрес устройства, -d у lpoptions делает принтер умолчательным. Команда driverless из пакета cups-filters выводит адреса всех принтеров в сети, которые умеют печатать без драйвера.

Драйвер принтера в Ubuntu и других дистрибутивах

Если принтер старый, подключён по USB без IPP-over-USB или в списке моделей нет driverless, понадобится драйвер. Большинство открытых драйверов собраны в пакеты дистрибутива:

ПроизводительDebian / UbuntuFedoraArch Linux
HP (почти все модели, плюс сканеры)hplip, hplip-guihplip, hplip-guihplip
Epson струйныеprinter-driver-escprepson-inkjet-printer-escprAUR: epson-inkjet-printer-escpr
Brother лазерныеprinter-driver-brlaserprinter-driver-brlaserAUR: brlaser
Canon, Epson, Lexmark и другие старые моделиprinter-driver-gutenprintgutenprint-cupsgutenprint

Для HP удобнее всего мастер из HPLIP: hp-setup -i в терминале или hp-setup с графикой. Он сам найдёт устройство, поставит нужный PPD, а для некоторых моделей докачает закрытый плагин.

Brother, Canon (UFR II), Kyocera и Pantum выпускают собственные пакеты .deb и .rpm на сайтах поддержки. Берите их только с официального сайта производителя, ищите по точной модели. Если пакет есть только в .deb, а у вас Fedora, сначала поищите аналог в репозиториях. Как вообще ставить программы из разных источников, рассказано в статье установка программ в Linux.

Найти подходящий драйвер среди уже установленных помогает lpinfo -m | grep -i модель. Совместимость конкретной модели заранее можно проверить в базе OpenPrinting.

МФУ и сканер через SANE

У МФУ печать и сканирование работают раздельно: принтерной частью занимается CUPS, сканером занимается SANE. Для современных сетевых МФУ есть свой аналог driverless, бэкенд sane-airscan с протоколами eSCL (AirScan) и WSD. Ставим его вместе с утилитами:

# Debian / Ubuntu
sudo apt install sane-airscan sane-utils simple-scan
# Fedora
sudo dnf install sane-airscan sane-backends simple-scan
# Arch Linux
sudo pacman -S sane sane-airscan simple-scan

Проверка из терминала:

scanimage -L
airscan-discover

Первая команда показывает все сканеры, которые видит SANE, вторая только сетевые по eSCL и WSD. Если устройство в списке, сканируйте программой Document Scanner (simple-scan) в GNOME или Skanpage в KDE Plasma. Для тонкой настройки разрешения и цвета есть XSane.

МФУ HP сканируют через бэкенд из hplip, отдельно ничего ставить не нужно. Brother, Canon и Epson для старых USB-моделей предлагают свои пакеты (у Brother это brscan, у Epson сейчас Epson Scan 2) на сайте поддержки. Если USB-сканер виден через sudo scanimage -L, а без sudo нет, не хватает прав на устройство: добавьте себя в группу scanner, где она есть, и перелогиньтесь.

Сетевой принтер и общий доступ

Принтер, подключённый к одному компьютеру по USB, можно открыть остальным в сети средствами самого CUPS:

sudo cupsctl --share-printers
sudo lpadmin -p Office -o printer-is-shared=true

Другие Linux-машины и macOS увидят его через mDNS автоматически. Если включён файрвол, откройте порт 631/tcp и mDNS (5353/udp), для UFW это описано в статье настройка UFW. Компьютерам с Windows удобнее подключать такой принтер по адресу http://имя-компьютера:631/printers/Office через добавление принтера по URL. Классический вариант через SMB описан в статье общая папка Samba, там же настраивается доступ для Windows.

Если вы печатаете на чужой сетевой принтер в офисе, а он не находится автоматически, узнайте у администратора его IP-адрес и добавьте вручную с адресом ipp://адрес/ipp/print. Старые модели без IPP подключаются через socket://адрес:9100 (AppSocket, он же JetDirect) с драйвером из таблицы выше.

Принтер не печатает: что проверить

Задания висят или исчезают без следа: начните с очереди и журнала.

lpstat -t
cancel -a
sudo cupsenable Office
journalctl -u cups -b --no-pager | tail -n 50

lpstat -t показывает состояние всех очередей. Слово disabled означает, что CUPS приостановил принтер после ошибки, cupsenable возвращает его в строй. Для подробного лога временно включите отладку: sudo cupsctl --debug-logging, повторите печать и выключите обратно через sudo cupsctl --no-debug-logging.

  • Печатаются иероглифы или пустые листы. Выбран не тот драйвер. Удалите очередь (sudo lpadmin -x Office) и создайте заново с driverless или правильным драйвером.
  • Принтер виден дважды. Одна запись от cups-browsed, вторая созданная вручную. Оставьте ту, что работает, лишнюю удалите.
  • USB-принтер не появляется в lpinfo -v. Проверьте кабель и lsusb. Если модель поддерживает IPP-over-USB, убедитесь, что служба ipp-usb работает.
  • Сетевой принтер не находится. Компьютер и принтер должны быть в одной подсети, avahi-daemon запущен, mDNS не режется файрволом или роутером в гостевой сети.

Прежде чем ставить драйвер с сайта производителя, удалите автоматически созданную очередь и попробуйте добавить принтер заново с моделью IPP Everywhere. Чаще всего проблема "Linux не дружит с принтером" решается именно так, без закрытых пакетов, которые потом ломаются при обновлении системы.

Частые вопросы

Нужен ли драйвер для принтера в Ubuntu?

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

Какой логин спрашивает localhost:631?

Это учётная запись вашего пользователя в Linux. Пользователь должен входить в группу lpadmin (Debian, Ubuntu) или wheel (Fedora, Arch).

Как удалить принтер из CUPS?

В настройках рабочего стола или командой sudo lpadmin -x имя_очереди. Список имён очередей показывает lpstat -p.

Почему МФУ печатает, а сканер не находится?

Сканер обслуживает SANE, а не CUPS. Поставьте sane-airscan для сетевых МФУ или hplip для HP и проверьте командой scanimage -L.

Можно ли печатать с Linux на принтер, подключённый к Windows?

Да, через общий доступ Windows по SMB или, если принтер сетевой, напрямую по его IP-адресу через IPP. Второй вариант надёжнее и не зависит от включённого компьютера с Windows.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.