Первые минуты после установки Linux часто сопровождаются эйфорией от быстродействия системы, но быстро сменяются разочарованием, если периферийное оборудование отказывается функционировать. Особенно остро проблема проявляется, когда принтер на Linux перестает принимать задания или вообще не определяется системой. В отличие от Windows, где драйверы часто устанавливаются автоматически, в среде GNU/Linux требуется более глубокий контроль над конфигурацией оборудования.

Проблема не всегда кроется в «сломанном» железе или несовместимости прошивки. Чаще всего виноват некорректно настроенный демоны очереди печати, отсутствие необходимых библиотек или конфликты прав доступа к USB-портам. Понимание архитектуры подсистемы печати CUPS (Common Unix Printing System) — ключ к быстрому решению проблемы.

Анализ состояния системы печати CUPS

Основой работы любого принтера в Linux является служба cups. Если эта служба остановлена или зависла, ни одно устройство не сможет передать документ в печать, независимо от того, подключено оно по USB или сети. Первым делом необходимо проверить статус демона через терминал.

⚠️ Внимание: Попытка запуска печати при остановленной службе CUPS приведет к тому, что задание зависнет в очереди и не будет удалено без перезапуска сервиса.

Используйте команду systemctl status cups, чтобы увидеть текущее состояние. Если вы видите статус «inactive» или «failed», необходимо перезапустить службу командой systemctl restart cups. Для диагностики более глубоких проблем, таких как ошибки логирования, следует обратиться к файлам в /var/log/cups/.

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

Проверка подключения и определение устройства

Прежде чем искать сложные драйверы, нужно убедиться, что система физически «видит» устройство. Подключенный по USB принтер должен отображаться в списке устройств терминала. Для этого используйте утилиту lsusb.

Если принтер не отображается в списке lsusb, проблема аппаратная: сгорел USB-порт, неисправен кабель или само устройство. Если же устройство есть в списке, но не печатает, проблема может быть в сетевом подключении (для сетевых моделей) или в правах доступа.

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

Установка и настройка драйверов и моделей

Главная сложность в Linux — это разнообразие драйверов. Для большинства современных HP и Canon принтеров существуют готовые пакеты, но для старых или специфических моделей (например, некоторых Zebra или Honeywell) требуются ручные настройки.

В репозиториях большинства дистрибутивов (Ubuntu, Debian, Fedora) есть пакет hplip для оборудования HP или goodprint для Canon. Однако иногда стандартный пакет не содержит всех функций, и приходится скачивать драйвер с сайта производителя.

  • 🖨️ Проверьте наличие драйвера в репозитории дистрибутива перед скачиванием с сайта.
  • 🔌 Убедитесь, что версия драйвера соответствует вашей версии ядра Linux.
  • ⚙️ Используйте утилиту lpadmin для ручного добавления принтера, если GUI не справляется.

Для некоторых брендов, таких как Epson, рекомендуется использовать пакет epson-inkjet-printer-escpr, который обеспечивает поддержку технологии ESC/P-R. Без него печать может происходить с искажениями или вообще не начинаться.

📊 Какая у вас операционная система?
Ubuntu
Fedora
Debian
Arch Linux
Другой

Права доступа и группа lp

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

Вам нужно добавить текущего пользователя в группу lp. Это делается командой sudo usermod -aG lp $USER. После выполнения команды необходимо выйти из системы и войти снова, либо перезагрузить компьютер, чтобы изменения вступили в силу.

⚠️ Внимание: Игнорирование прав доступа может привести к тому, что пользователь будет получать ошибку «Permission denied» при попытке печати, даже если устройство работает исправно.

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

☑️ Проверка прав доступа

Выполнено: 0 / 4

Очистка зависших заданий и очереди печати

Иногда система «залипает» на старом задании, которое не было отправлено корректно. В этом случае все новые документы будут стоять в очереди в статусе «paused» или «held». Необходимо очистить очередь печати вручную.

Для этого используйте команду cancel -a, которая удалит все задания для всех принтеров. Если нужно очистить очередь конкретного устройства, используйте cancel -a принтер_name. Также полезно перезапустить очередь печати, если она находится в состоянии «stopped».

Если принтер HP LaserJet или любой другой зависает постоянно, проверьте настройки System Settings → Printers (или Настройки → Принтеры). Убедитесь, что галочка «Accepting jobs» (Принимать задания) активна.

Команда Описание Результат
lpstat -p Список принтеров Показывает статус всех устройств
lsusb Список USB Показывает подключенное периферийное оборудование
cancel -a Очистка очереди Удаляет все зависшие задания на печать
systemctl restart cups Перезапуск службы Перезапускает демон печати CUPS

Сетевые настройки и протоколы подключения

Для сетевых принтеров критически важен выбор правильного протокола подключения. В Linux чаще всего используются протоколы IPP (Internet Printing Protocol) и HP JetDirect. Если вы используете неправильный протокол, соединение будет устанавливаться, но данные не будут проходить.

При добавлении сетевого принтера в интерфейсе настройки выберите «Network Printer» и введите IP-адрес. Убедитесь, что порт (обычно 9100 для HP JetDirect или 631 для IPP) открыт в настройках файрвола.

Проблемы с IPv6

Если ваш роутер использует IPv6, а принтер настроен только на IPv4, соединение может не установиться. Попробуйте отключить IPv6 в настройках сети Linux или жестко прописать IPv4 адрес принтера.

Иногда проблема кроется в самом роутере, который блокирует широковещательные запросы discovery. В этом случае необходимо вручную указать путь к принтеру в формате ipp://192.168.1.100/ipp/print вместо автоматического поиска.

Диагностика через логи и отладку

Если стандартные методы не помогают, необходимо смотреть логи. Файл /var/log/cups/error_log хранит подробную информацию о каждой попытке печати. Убедитесь, что уровень логирования установлен на debug или debug2 в файле конфигурации /etc/cups/cupsd.conf.

После изменения уровня логирования перезапустите службу и попробуйте снова отправить документ. Изучите последние строки лога сразу после попытки печати. Ошибки вроде «Client-Error-Bad Request» или «Backend failed» дадут подсказку о природе проблемы.

⚠️ Внимание: Не забывайте возвращать уровень логирования обратно на «warn» или «error» после диагностики, чтобы диск не был заполнен огромными файлами логов.

Для отладки печати по USB можно использовать утилиту strace, чтобы отследить вызовы системных функций при отправке задания. Это продвинутый метод, требующий знаний в программировании, но он позволяет найти «узкое место» в цепочке передачи данных.

💡

Если принтер висит в режиме «Processing», попробуйте отправить на него тестовую страницу из командной строки через команду lp -d print_name /etc/hosts. Это часто обходит ошибки графического интерфейса.

Специфика бренда и совместимость

Разные производители имеют разную степень поддержки в Linux. Например, Zebra и Honeywell для печати этикеток требуют специфических драйверов zpl или escpos, которые не всегда включены в стандартную поставку ОС.

Для старых лазерных принтеров Brother или Canon может потребоваться установка 32-битных библиотек даже на 64-битную систему. Это связано с тем, что драйверы для этих устройств были написаны для старых архитектур и не поддерживают современные библиотеки нативно.

  • 🔍 Проверьте сайт производителя на наличие раздела «Linux Support» или «Open Source Drivers».
  • 📦 Ищите альтернативные драйверы в репозиториях AUR (для Arch) или сторонних PPA.
  • 🧩 Используйте утилиту driverless для автоматического определения современных устройств Mopria.
💡

Самая частая причина отказа печати на Linux — не драйвер, а остановленная служба CUPS или отсутствие прав доступа у пользователя в группе lp.

Частые вопросы (FAQ)

Почему принтер определяется, но пишет «Authentication Required»?

Это значит, что CUPS требует пароль администратора для выполнения действия. Убедитесь, что вы вводите пароль именно root-пользователя, а не просто пароль от вашей учетной записи, и что пользователь имеет права sudo.

Как проверить, поддерживает ли мой принтер PCL или PostScript?

Используйте команду lpinfo -m для просмотра списка доступных моделей драйверов. Если драйвер с суффиксом PCL или PS отсутствует, вам нужно скачать его вручную с сайта производителя.

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

Да, если на компьютере Windows включен общий доступ к принтеру и настроен протокол Samba. В Linux при добавлении принтера выберите протокол smb:// и введите путь к сетевому ресурсу.

Что делать, если принтер печатает «каракули»?

Это классическая проблема неправильного драйвера. Система отправляет данные в формате, который принтер не понимает. Попробуйте сменить драйвер на альтернативный (например, с PPD на generic) или обновить прошивку устройства.