Работа с принтерами в Linux часто вызывает вопросы у пользователей, перешедших с Windows или macOS. В отличие от проприетарных систем, где драйвера устанавливаются автоматически или через фирменные утилиты, в Linux процесс может показаться сложным. На самом деле, большинство современных дистрибутивов (Ubuntu, Fedora, Debian) поддерживают автоматическое обнаружение принтеров через систему CUPS (Common Unix Printing System). Однако для полноценной работы с моделями Canon, HP, Brother или Epson иногда требуется ручная установка драйверов.

В этой статье мы разберём, где именно хранятся драйвера для принтеров в Linux, как их найти для конкретной модели, и что делать, если система не распознаёт устройство. Особое внимание уделим скрытым папкам с драйверами (/usr/share/cups/drivers/ и /etc/cups/ppd/), которые часто игнорируют даже опытные пользователи. Также рассмотрим альтернативные способы установки через репозитории, PPA и официальные сайты производителей.

1. Стандартные расположения драйверов принтеров в Linux

В Linux драйвера принтеров делятся на две категории: встроенные в систему (open-source) и проприетарные (от производителя). Первые обычно уже включены в дистрибутив и находятся в системных папках, вторые требуют отдельной установки.

Основные пути, где Linux ищет драйвера:

  • 📁 /usr/share/cups/drivers/ — стандартное место для драйверов, совместимых с CUPS. Здесь хранятся файлы, которые система использует для генерации PPD-файлов (PostScript Printer Description).
  • 📁 /etc/cups/ppd/ — папка с сгенерированными PPD-файлами для конкретных принтеров. Каждый файл соответствует одному устройству.
  • 📁 /usr/lib/cups/filter/ — фильтры, которые преобразуют данные из приложений в формат, понятный принтеру (например, rastertohp для устройств HP).
  • 📁 /usr/share/ppd/ — дополнительные PPD-файлы, установленные из пакетов (например, foomatic-db или hplip).

Если ваш принтер определился автоматически, его PPD-файл скорее всего лежит в /etc/cups/ppd/. Например, для принтера HP LaserJet P1102 файл может называться HP_LaserJet_Professional_P1102.ppd. Просмотреть список установленных принтеров можно командой:

lpstat -p -d
💡

Если папка /etc/cups/ppd/ пустая, это не означает, что драйвера отсутствуют. Современные дистрибутивы часто используют динамическую генерацию PPD на основе общих драйверов из /usr/share/cups/drivers/.

2. Как проверить, установлен ли драйвер для принтера

Прежде чем искать драйвера, убедитесь, что они действительно отсутствуют. Для этого:

  1. Откройте веб-интерфейс CUPS по адресу http://localhost:631 (если служба запущена).
  2. Перейдите в раздел Printers (Принтеры) и выберите ваше устройство.
  3. В разделе Maintenance (Обслуживание) проверьте пункт Printer State. Если там указано Idle или Ready, драйвер скорее всего установлен корректно.

Также можно использовать терминал. Команда ниже покажет детальную информацию о принтере, включая используемый драйвер:

lpoptions -l -d ИМЯ_ПРИНТЕРА

Если в выводе есть строка вроде Device URI: usb://HP/LaserJet%20P1102?serial=..., но печать не работает, проблема может быть в неправильном PPD-файле или отсутствии фильтров. В этом случае:

  • 🔍 Проверьте логи CUPS командой journalctl -u cups -f (для systemd).
  • 🔄 Переустановите пакет с драйверами (например, sudo apt install --reinstall hplip для HP).
📊 Какой бренд вашего принтера?
HP
Canon
Brother
Epson
Xerox
Другой

3. Поиск драйверов для конкретных брендов

У каждого производителя принтеров свой подход к поддержке Linux. Ниже — актуальные способы получения драйверов для популярных брендов.

Бренд Официальная поддержка Linux Рекомендуемый способ установки Пакет в репозиториях
HP Отличная (проект HPLIP) Установить hplip из репозиториев или с официального сайта hplip, hplip-gui
Canon Частичная (только для некоторых моделей) Скачать драйвера с сайта Canon (раздел Linux) или использовать cnijfilter cnijfilter2, scangearmp2
Brother Хорошая (драйвера для большинства моделей) Скачать .deb или .rpm с официального сайта brother-lpr-drivers
Epson Средняя (поддержка через epson-inkjet-printer-escpr) Установить пакет printer-driver-escpr или скачать с сайта Epson printer-driver-escpr

Для принтеров Samsung (теперь часть HP) используйте драйвера HP. Для Xerox и Lexmark часто подходят универсальные драйвера из пакета foomatic-db.

Что делать, если производитель не предоставляет драйвера для Linux?

Если для вашей модели нет официальных драйверов, попробуйте:

1. Использовать универсальный драйвер (например, Generic PostScript Printer в CUPS).

2. Настроить печать через Samba с компьютера на Windows, где драйвер установлен.

3. Поискать драйвера для аналогичной модели на форумах (например, Linux Mint или Ask Ubuntu).

4. Использовать эмуляцию через Wine (не гарантирует стабильную работу).

4. Установка драйверов через терминал

Самый надёжный способ установить драйвера — через пакетный менеджер вашего дистрибутива. Ниже — команды для популярных систем.

Для Debian/Ubuntu и производных (Linux Mint, Pop!_OS):

# Установка базовых пакетов для печати

sudo apt update

sudo apt install cups foomatic-db foomatic-db-gutenprint gutenprint-locales

Драйвера для HP

sudo apt install hplip hplip-gui

Драйвера для Epson

sudo apt install printer-driver-escpr

Драйвера для Brother (пример для DCP-7065DN)

sudo apt install brother-lpr-drivers-laser

Для Fedora/RHEL/CentOS:

# Базовые пакеты

sudo dnf install cups foomatic foomatic-db

Драйвера для HP

sudo dnf install hplip

Драйвера для Epson

sudo dnf install epson-inkjet-printer-escpr

Для Arch Linux/Manjaro:

# Базовые пакеты

sudo pacman -S cups foomatic-db-engine foomatic-db foomatic-db-gutenprint gutenprint

Драйвера для HP

sudo pacman -S hplip

Драйвера для Brother (из AUR)

yay -S brother-dcp7065dn

После установки перезапустите службу CUPS:

sudo systemctl restart cups

1. Перезагрузите службу CUPS (sudo systemctl restart cups)

2. Откройте веб-интерфейс CUPS (http://localhost:631)

3. Удалите старый принтер (если он был) и добавьте заново

4. Запустите тестовую печать (lp -d ИМЯ_ПРИНТЕРА /usr/share/cups/data/testprint)

-->

5. Ручная установка драйверов из официальных источников

Если драйвера для вашей модели отсутствуют в репозиториях, их можно установить вручную с сайта производителя. Рассмотрим процесс на примере Brother DCP-T720DW.

  1. Скачайте драйвера с официального сайта (выберите модель, ОС Linux, архитектуру x86_64 или arm64).
  2. Распакуйте архив (обычно это .gz или .zip):
    tar -xzf linux-brprinter-installer-*.gz
  3. Запустите установщик с правами root:
    sudo bash linux-brprinter-installer-*
  4. Следуйте инструкциям на экране. Установите LPR и CUPSwrapper драйвера.
  5. Перезапустите CUPS и добавьте принтер через веб-интерфейс.

Для принтеров Canon процесс аналогичный, но может потребоваться установка зависимостей:

sudo apt install libglade2-0 libxml2
💡

При ручной установке драйверов всегда проверяйте совместимость с вашей архитектурой (x86_64, arm64, i386). Установка драйвера для неподходящей архитектуры приведёт к ошибкам вроде wrong ELF class или Exec format error.

Для принтеров HP лучше использовать HPLIP из репозиториев, но если требуется самая свежая версия, скачайте .run-файл с официального сайта и запустите:

sh hplip-*.run

6. Решение распространённых проблем с драйверами

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

  • 🚨 Filter failed — отсутствует фильтр для преобразования данных. Установите пакет foomatic-filters или проверьте права на файлы в /usr/lib/cups/filter/.
  • 🚨 Unable to locate printer — принтер не обнаружен по USB. Проверьте подключение и права доступа к устройству (lsusb должен показывать принтер).
  • 🚨 PPD file is missing — повреждён или отсутствует PPD-файл. Переустановите драйвера или сгенерируйте PPD заново через CUPS.
  • 🚨 Job stopped due to filter errors — конфликт версий драйверов. Удалите все пакеты с драйверами и установите их заново.

Если принтер подключён по сети, убедитесь, что:

  • 🌐 IP-адрес принтера статический (настроен в роутере или на самом устройстве).
  • 🔒 Порты 631 (CUPS) и 9100 (JetDirect) открыты.
  • 📡 Принтер и компьютер находятся в одной подсети.

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

ping IP_ПРИНТЕРА

telnet IP_ПРИНТЕРА 9100

sudo rmmod usb_storage

-->

7. Альтернативные способы печати без официальных драйверов

Если драйвера для вашей модели отсутствуют, можно использовать универсальные решения:

  1. Foomatic + Gutenprint: Универсальные драйвера для многих принтеров. Установите пакеты foomatic-db и gutenprint, затем в CUPS выберите модель из списка Gutenprint.
  2. CUPS-PDF: Виртуальный принтер для сохранения документов в PDF. Установите пакет cups-pdf и печайте в файл.
  3. Google Cloud Print (устарело, но работает для старых моделей): Настройте печать через облако, если принтер поддерживает Google Cloud Print.
  4. Samba-шаринг: Подключите принтер к компьютеру с Windows, расшарьте его по сети и подключитесь к нему из Linux как к сетевому принтеру.

Для старых принтеров (например, HP LaserJet 1018) может помочь проект foo2zjs, который эмулирует поддержку через обратную разработку:

sudo apt install printer-driver-foo2zjs

sudo getweb 1018 # Скачает прошивку для HP 1018

Как печатать на принтере без драйверов через PostScript?

Многие принтеры поддерживают язык PostScript (PS). Если ваш принтер в списке совместимых с PostScript, выберите в CUPS драйвер Generic PostScript Printer. Для теста отправьте на печать файл с расширением .ps:

lp -d ИМЯ_ПРИНТЕРА документ.ps

8. Обновление и удаление драйверов

Драйвера принтеров, как и любое ПО, требуют обновлений. В большинстве дистрибутивов они обновляются автоматически вместе с системой. Однако для проприетарных драйверов (например, HPLIP) иногда нужно выполнять обновление вручную.

Чтобы обновить HPLIP до последней версии:

sudo apt remove hplip hplip-gui

wget https://sourceforge.net/projects/hplip/files/hplip/Х.Х.Х/hplip-Х.Х.Х.run

sh hplip-Х.Х.Х.run

Для удаления драйверов используйте:

# Для пакетов из репозиториев

sudo apt remove hplip brother-lpr-drivers

Для ручных установок

sudo /usr/local/Brother/Printer/ИМЯ_МОДЕЛИ/installer/uninstall

После удаления очистите папки с PPD-файлами:

sudo rm -f /etc/cups/ppd/ИМЯ_ПРИНТЕРА.ppd
💡

Перед удалением драйверов всегда проверяйте зависимости! Некоторые пакеты (например, foomatic-db) могут использоваться несколькими принтерами. Удаление без проверки приведёт к поломке печати на других устройствах.

⚠️ Внимание: Если вы используете принтер по сети, после обновления драйверов может потребоваться повторная настройка подключения. Некоторые производители (например, Brother) меняют протоколы взаимодействия в новых версиях ПО.

FAQ: Частые вопросы по драйверам принтеров в Linux

Мой принтер определяется, но печать идёт с артефактами или пустыми страницами. В чём проблема?

Скорее всего, используется неправильный PPD-файл или отсутствуют фильтры для обработки данных. Попробуйте:

  1. Удалите принтер в CUPS и добавьте его заново, выбрав другую модель из списка.
  2. Установите пакет foomatic-filters.
  3. Проверьте настройки качества печати в PPD-файле (откройте его в текстовом редакторе и найдите параметры *DefaultResolution).

Если проблема остаётся, попробуйте печатать из другого приложения (например, LibreOffice вместо браузера).

Как узнать точную модель принтера для поиска драйверов?

Точную модель можно определить несколькими способами:

  • Посмотрите на наклейку на задней или нижней панели принтера.
  • В Windows: Панель управления → Устройства и принтеры → Свойства принтера.
  • В Linux: lsusb или dmesg | grep -i printer после подключения.
  • Напечатайте тестовую страницу самотестирования (обычно удерживается кнопка питания при включении).

Для сетевых принтеров модель можно узнать через веб-интерфейс устройства (обычно по адресу http://IP_ПРИНТЕРА).

Можно ли использовать драйвера от Windows в Linux через Wine?

Технически да, но это не рекомендуется по нескольким причинам:

  • Драйвера для Windows не совместимы с CUPS и не смогут обработать задачи печати из Linux-приложений.
  • Wine не эмулирует порты принтера (LPT, USB), поэтому прямой доступ к устройству будет заблокирован.
  • Производительность будет крайне низкой, а стабильность — непредсказуемой.

Лучше использовать нативные решения: универсальные драйвера (Gutenprint), эмуляцию через Samba или виртуальные машины.

Почему после обновления системы принтер перестал работать?

Это типичная проблема при обновлении ядра или библиотек. Причины:

  • Обновлённое ядро изменило поддержку USB-устройств (проверьте dmesg | grep usb).
  • Обновились зависимости (например, libusb или libcups2), а проприетарные драйвера не совместимы с новыми версиями.
  • Служба CUPS не запустилась из-за изменений в конфигурации (sudo systemctl status cups).

Решения:

  1. Переустановите драйвера принтера.
  2. Откатните версию проблемного пакета (например, sudo apt install libcups2=ВЕРСИЯ).
  3. Добавьте принтер заново через CUPS.
Где хранятся настройки принтера (разрешение, дуплекс, цветовой профиль)?

Настройки принтера в Linux хранятся в нескольких местах:

  • /etc/cups/ppd/ИМЯ_ПРИНТЕРА.ppd — основные параметры (разрешение, поддерживаемые форматы бумаги, дуплекс).
  • /etc/cups/printers.conf — конфигурация подключения (URI устройства, имя очереди).
  • ~/.cups/lpoptions — пользовательские настройки (приоритет принтера по умолчанию).

Чтобы изменить настройки, можно:

  • Редактировать PPD-файл вручную (требует прав root).
  • Использовать веб-интерфейс CUPS (http://localhost:631).
  • Применить настройки через команду lpoptions:
lpoptions -p ИМЯ_ПРИНТЕРА -o Duplex=DuplexNoTumble -o Resolution=600dpi