Работа с принтерами в 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. Как проверить, установлен ли драйвер для принтера
Прежде чем искать драйвера, убедитесь, что они действительно отсутствуют. Для этого:
- Откройте веб-интерфейс CUPS по адресу
http://localhost:631(если служба запущена). - Перейдите в раздел
Printers(Принтеры) и выберите ваше устройство. - В разделе
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).
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.
- Скачайте драйвера с официального сайта (выберите модель, ОС
Linux, архитектуруx86_64илиarm64). - Распакуйте архив (обычно это
.gzили.zip):
tar -xzf linux-brprinter-installer-*.gz - Запустите установщик с правами root:
sudo bash linux-brprinter-installer-* - Следуйте инструкциям на экране. Установите
LPRиCUPSwrapperдрайвера. - Перезапустите 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. Альтернативные способы печати без официальных драйверов
Если драйвера для вашей модели отсутствуют, можно использовать универсальные решения:
- Foomatic + Gutenprint: Универсальные драйвера для многих принтеров. Установите пакеты
foomatic-dbиgutenprint, затем в CUPS выберите модель из спискаGutenprint. - CUPS-PDF: Виртуальный принтер для сохранения документов в PDF. Установите пакет
cups-pdfи печайте в файл. - Google Cloud Print (устарело, но работает для старых моделей): Настройте печать через облако, если принтер поддерживает
Google Cloud Print. - 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-файл или отсутствуют фильтры для обработки данных. Попробуйте:
- Удалите принтер в CUPS и добавьте его заново, выбрав другую модель из списка.
- Установите пакет
foomatic-filters. - Проверьте настройки качества печати в
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).
Решения:
- Переустановите драйвера принтера.
- Откатните версию проблемного пакета (например,
sudo apt install libcups2=ВЕРСИЯ). - Добавьте принтер заново через 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