< CUPS (Русский)

CUPS (Русский)/Troubleshooting (Русский)

В этой статье рассматриваются все неспецифические (то есть не связанные с каким-либо одним принтером) проблемы CUPS и драйверов принтеров (но не проблемы, связанные с совместным использованием принтеров), включая методы определения точной природы проблемы и решения выявленной проблемы.

Состояние перевода: На этой странице представлен перевод статьи CUPS/Troubleshooting. Дата последней синхронизации: 8 января 2019. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Введение

Наилучший способ борьбы с неисправностями - это выставить 'LogLevel' в файле /etc/cups/cupsd.conf на:

LogLevel debug

А потом посмотреть вывод из файла /var/log/cups/error_log например так:

# tail -n 100 -f /var/log/cups/error_log

Символы слева от вывода означают следующее:

  • D=Debug(отладка)
  • E=Error(ошибка)
  • I=Information(информация)
  • И так далее

Следующие файлы также могут быть полезны:

  • /var/log/cups/page_log - каждый раз при успешной печати, пишет новую запись
  • /var/log/cups/access_log - записывает всю активность на cupsd http1.1 сервере

Также, если вы хотите решить свои проблемы, важно понимать, как вообще работает CUPS. Вот краткая информация об этом:

  1. Когда вы жмёте 'печать' приложение отправляет .ps-файл (PostScript, язык-скрипт, который описывает, как выглядит страница) в систему CUPS (так происходит в большинстве программ).
  2. CUPS смотрит на PPD-файл (файл описания принтера) и находит, фильтры которые ему нужно использовать для преобразования .ps-файла в файл, который понимает ваш принтер (например, PJL,PCL). Обычно для этого ему требуется ghostscript.
  3. GhostScript принимает ввод и решает, какие фильтры ему использовать, потом применяет их и преобразовывает .ps-файл в формат, который понимает принтер.
  4. Затем файл передается бэкенду. Например, если у вас принтер подключен к usb порту, то используется usb бэкенд

Распечатайте документ и посмотрите error_log, чтобы получить более подробное и правильное представление об процессе печати.

Проблемы, возникающие в результате обновлений

Проблемы возникшие после обновления CUPS и сопутствующего ему набора программ

CUPS останавливается

Существует вероятность, что для правильной работы в обновленной версии понадобится новый файл конфигурации. Например, получение сообщения "404 - page not found" при попытке входа в панель управления CUPS через localhost:631.

Для того, чтобы воспользоваться новым конфигом, скопируйте /etc/cups/cupsd.conf.default в /etc/cups/cupsd.conf (при необходимости сделайте резервную копию старого конфига) и, чтобы новые настройки вступили в силу, перезапустите CUPS.

Для всех заданий - "остановлено"

Если для всех отправленных на печать заданий установился статус "остановлено" ("stopped"), - удалите принтер и установите его заново. Для этого войдите в веб-интерфейс CUPS, перейдите Принтеры > Удалить Принтер.

Для проверки настроек принтера перейдите во вкладку Принтеры, затем скопируйте отображаемую информацию. Далее нажмите на Администрирование. В выпадающем списке кликните Изменить принтер, перейдите к следующей странице(ам), и так далее.

Для всех заданий - "Принтер не отвечает"

Для сетевых принтеров, поскольку CUPS подключается через URI, необходимо убедиться, что в DNS настроен доступ к принтерам по IP. Например, если принтер подключен следующим образом:

lpd://BRN_020554/BINARY_P1

то имя хоста 'BRN_020554' должно соответствовать IP принтера, управляемого сервером CUPS. Если используется Avahi, убедитесь, что разрешение имени хоста Avahi работает.

Альтернативно, замените имя хоста, используемое в URI, IP-адресом принтера.

Версия PPD не совместима с gutenprint

Запустите:

# /usr/bin/cups-genppdupdate

И перезагрузите CUPS (будет выведено соответствующее сообщение после установки gutenprint).

Проблемы с сетью

Не удается найти принтер

Даже если CUPS обнаруживает сетевые принтеры, вы все равно можете получить ошибку "Не удается найти принтер" ("Unable to locate printer") при попытке распечатать что-либо. Чтобы решить эту проблему, включите .разрешение локального имени хоста Avahi. Для получения дополнительной информации смотрите CUPS (Русский)#Сеть.

Эта проблема может возникать и при использовании файрвола (межсетевой экран, брандмауэр). Возможно, вам придется отключить его или установить корректные правила. Если вы используете system-config-printer для обнаружения сетевых принтеров, тогда он сделает все это автоматически.

Старый сервер CUPS

Начиная с версии CUPS 1.6, клиент по умолчанию использует IPP 2.0. Если сервер использует CUPS <= 1.5 / IPP <= 1.1, клиент не будет автоматически понижать версию протокола и, следовательно, не может связаться с сервером. Обходным путем является добавление опции , описанной в Таблице 2. Опции URI IPP.

Общий принтер работает локально, но удаленный компьютер не печатает

Это вызвано тем, что задание на печать отправляется через фильтр дважды, один раз на локальном компьютере и один раз на удаленном. Смотрите также предупреждение на главной странице CUPS.

Не удается найти файл PPD

Убедитесь, что Avahi настроен правильно. В частности, проверьте, что установлен и настроен в /etc/nsswitch.conf.

USB-принтеры

Конфликт с SANE

Если у вас также запущен SANE, возможно, что он конфликтует с CUPS. Чтобы исправить это, создайте правило Udev, обозначающее устройство как совпадающее с libsane:

/etc/udev/rules.d/99-printer.rules
ATTRS{idVendor}=="''vendor id(код производителя)''", ATTRS{idProduct}=="''product id(код продукта)''", MODE="0664", GROUP="lp", ENV{libsane_matched}="yes"

Конфликт с usblp

Доступ к USB-принтерам можно получить двумя способами: модулем ядра usblp и libusb. Первый - это классический способ. Это просто: данные отправляются на принтер, записывая их в файл устройства в виде простого последовательного потока данных. Чтение одного и того же файла устройства позволяет использовать двунаправленный доступ, по крайней мере, для таких вещей, как считывание уровней чернил, статуса или информации о возможностях принтера (PJL). Он работает очень хорошо для простых принтеров, но для многофункциональных устройств (принтер/сканер) он не подходит, и производители, такие как HP, поставляют свои собственные бэкенды. Источник: здесь.

Если у вас возникли проблемы с работой USB-принтера, вы можете попробовать запрет загрузки для модуля ядра :

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

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

# journalctl -e

или

# dmesg

Если вы используете , вывод должен указывать на то, что принтер был обнаружен следующим образом:

Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional
printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E
Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920
Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver

Если вы запретили загрузку , вы увидите что-то вроде:

usb 3-2: new full speed USB device using uhci_hcd and address 3
usb 3-2: configuration #1 chosen from 1 choice

USB autosuspend

Ядро Linux автоматически приостанавливает USB-устройства, когда есть поддержка драйверов и устройства не используются. Это может сэкономить электроэнергию, но некоторые USB-принтеры считают, что они не подключены, когда ядро приостанавливает USB-порт, предотвращая печать. Это можно устранить, отключив autosuspend для конкретного устройства, для получения дополнительной информации смотрите Power management#USB autosuspend.

Плохие разрешения

Проверьте разрешения USB-порта принтера. Получите номер шины (BUSID) и устройства (DEVID) от :

Проверьте владельца, просмотрев devfs:

 # ls -l /dev/bus/usb/<BUSID>/<DEVID>

Демон cups запускается от пользователя "cups" и относится к группе "lp", поэтому либо этому пользователю, либо группе требуется доступ на чтение и запись в USB-устройство. Если вы считаете, что разрешения выглядят неправильно, вы можете временно изменить группу и разрешение:

# chgrp lp /dev/bus/usb/<BUSID>/<DEVID>
# chmod 664 /dev/bus/usb/<BUSID>/<DEVID>

Затем проверьте, может ли cups теперь видеть устройство USB правильно.

Чтобы сделать постоянное изменение разрешения, которое будет запускаться автоматически при каждом запуске компьютера, добавьте следующую строку.

После редактирования перезагрузите правила udev этой командой:

# udevadm control --reload-rules

Каждая система может отличаться, поэтому обратитесь к вики-странице udev (Русский)#Список атрибутов устройства.

Проблемы с HP

Смотрите также CUPS/Принтероспецифичные проблемы#HP.

CUPS: "/usr/lib/cups/backend/hp failed"

Убедитесь, что dbus установлен и запущен. Если ошибка повторяется, попробуйте запустить avahi-daemon.

Попробуйте добавить принтер в качестве сетевого принтера, используя протокол http:// .

Примечание: Там, возможно, потребуется установить права доступа.

CUPS: "Печать завершена", но принтер не печатает.

Это происходит на принтерах HP, когда вы выбираете (старый) драйвер hpijs (например, для Deskjet D1600 series). Вместо этого используйте драйвер hpcups.

Некоторые принтеры HP требуют, чтобы их прошивка загружалась с компьютера при каждом включении принтера. Вы можете столкнуться с этой проблемой, если есть проблема с udev (или аналогом), и правило загрузки прошивки никогда не запускается. В качестве обходного пути вы можете вручную загрузить прошивку на принтер. Убедитесь, что принтер подключен и включен, затем выполните

hp-firmware -n

CUPS: '"foomatic-rip" not available/stopped with status 3'

Если, во время использования принтера HP, задания появляются в очереди, но все завершаются со статусом 'остановлен' ('stopped'), а в /var/log/cups/error_log возникает одно из следующих сообщений об ошибках:

Filter "foomatic-rip" for printer printer_name not available: No such file or director

или:

PID pid (/usr/lib/cups/filter/foomatic-rip) stopped with status 3!

убедитесь, что установлен.

CUPS: "Filter failed"

Ошибка "filter failed" может быть вызвана некоторым количеством причин. Журнал ошибок CUPS (по умолчанию /var/log/cups/error_log) должен записывать, какой фильтр не удалось загрузить и почему.

Отсутствует ghostscript

Установите ghostscript ( нуждается в его запуске).

Отсутствует foomatic-db

Установите и . Это помогает в некоторых случаях.

Avahi не включен

Запустите и включите службу .

Устаревший плагин

Эта ошибка может указывать на то, что плагин устарел (версия несовместима) и может произойти после обновления системы, возможно, появится сообщение в журнале (логе). Если вы установили , вам нужно обновить пакет, иначе перезапустите , чтобы установить последнюю версию плагина.

Устаревшая конфигурация принтера

Начиная с версии 3.17.11 hpijs больше не доступен. Если у вас есть принтеры, использующие hpijs, они не будут печатать. Необходимо перенастроить их и выбрать вместо этого новый драйвер hpcups.

Вы можете проверить, если это ваш случай, посмотрев в error_log cups`а:

 $ grep hpijs /var/log/cups/error_log 
 ...
 D [09/Jan/2018:14:32:58 +0000] [Job 97] '''sh: hpijs: command not found'''
 ...

CUPS: печатает только пустую страницу и страницу с сообщением об ошибке на HP LaserJet

Существует ошибка, которая приводит к сбою CUPS при печати изображений на HP LaserJet (в моем случае 3380). Ошибки были зафиксированы и исправлены в Ubuntu. Первая страница пуста, вторая страница содержит следующее сообщение об ошибке:

 ERROR:
 invalidaccess
 OFFENDING COMMAND:
 filter
 STACK:
 /SubFileDecode
 endstream
 ...

Чтобы устранить проблему, выполните следующую команду как суперпользователь (root):

# lpadmin -p printer -o pdftops-renderer-default=pdftops

HPLIP 3.13: Плагин установлен, но HP Device Manager жалуется на его отсутствие

Возможно, проблема связана с изменением прав доступа файла, которое было внесено в . Чтобы исправить проблему, достаточно простых команд chmod 644 /var/lib/hp/hplip.state и . Для получения дополнительной информации, пожалуйста, прочитайте эту ссылку.

hp-toolbox: "Unable to communicate with device"

# hp-toolbox
# error: Unable to communicate with device (code=12): hp:/usb/printer id

Разрешение проблемы

Может потребоваться добавить пользователя в группы и .

Виртуальный CDROM у принтеров

Это также может быть вызвано принтерами, такими как P1102, которые предоставляют виртуальный привод CD-ROM для драйверов MS Windows. Появляется lp dev, а затем исчезает. В этом случае попробуйте пакеты usb-modeswitch и usb-modeswitch-data, что позволяет отключить "Smart Drive" (правила udev, включенные в указанные пакеты).

Сетевые принтеры

Это также может происходить с сетевыми принтерами, использующими динамические имена хостов, если avahi-daemon не запущен. Другая причина заключается в том, что hp-setup не удалось найти принтер, потому что IP-адрес принтера изменился из-за DHCP. Если это так, подумайте о добавлении резервирования DHCP для принтера в конфигурации сервера DHCP.

hp-setup просит указать PPD-файл для обнаруженного принтера

Кроме того, при выборе файла PPD в графическом режиме hp-setup поле не обновляется и сообщение об ошибке не отображается.

Или, если вы используете интерактивный (консольный) режим, можно столкнуться с чем-то похожим на это даже при введении правильного пути к файлу ppd:

 Please enter the full filesystem path to the PPD file to use (q=quit) :/usr/share/ppd/HP/hp-deskjet_2050_j510_series.ppd.gz
 Traceback (most recent call last):
   File "/usr/bin/hp-setup", line 536, in <module>
     desc = nickname_pat.search(nickname).group(1)
 TypeError: cannot use a string pattern on a bytes-like object

Решение заключается в установке и запуске перед запуском .

hp-setup: "Qt/PyQt 4 initialization failed"

Установите пакет python-pyqt4AUR, который дополнительно требуется (optdepend) для . Альтернативно вы можете запустить hp-setup с интерфейсом командной строки с помощью флага .

hp-setup: находит принтер автоматически, но сразу после этого сообщает "Unable to communicate with device" при печати тестовой страницы

Это, по крайней мере, происходит с hplip 3.13.5-2 у принтера HP Officejet 6500A через локальное сетевое соединение. Чтобы решить проблему, укажите IP-адрес принтера HP для hp-setup, чтобы обнаружить принтер.

hp-setup: "KeyError: 'family-class'"

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

Проверьте определен ли раздел для вашего принтера. Если нет, добавьте это:

/usr/share/hplip/data/models/models.dat
[hp_laserjet_pro_mfp_m225dw]	
...
family-class=Undefined

Другие

Низкий уровень чернил

При низком уровне чернил некоторые принтеры зависают со статусом "Рендеринг завершен" ("Rendering completed"), и, если это сетевой принтер, принтер может даже стать недоступным для CUPS, несмотря на то, что он правильно подключен к сети. Замена картриджа (картриджей) с низким уровнем чернил в этом случае вернет принтер в статус "Готов" ("Ready") и, если он - сетевой принтер, то он станет снова доступным для CUPS.

Завершение печати из-за ошибок авторизации

Если удаленный принтер запрашивает аутентификацию, CUPS автоматически добавит директиву для принтера в . Однако некоторые графические приложения (например, некоторые версии LibreOffice ) не имеют возможности запрашивать учетные данные, поэтому печать завершилась с ошибкой. Чтобы исправить это, укажите требуемое имя пользователя и пароль в URI. Для получения дополнительной информации смотрите , .

Unknown supported format: application/postscript

(Не найдена поддержка формата: application/postscript)

Закомментируйте строки:

application/octet-stream        application/vnd.cups-raw        0      -

в /etc/cups/mime.convs и:

application/octet-stream

в .

Ошибка задания для печати (Print-Job) client-error-document-format-not-supported

Попробуйте установить пакет foomatic и используйте драйвер foomatic.

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

(Также применимо к ошибке "-1 не поддерживается!")

Попробуйте удалить драйверы Foomatic или обратитесь к CUPS/Принтероспецифичные проблемы#HPLIP для обходного пути.

lp: Error - Scheduler Not Responding

Если вы получите эту ошибку, убедитесь, что CUPS запущен, переменная окружения не установлена и корректный.

Сообщение об ошибке: "Using invalid Host"

Попробуйте добавить в /etc/cups/cupsd.conf.

Не удается отправить на печать из LibreOffice

Если вы можете распечатать тестовую страницу с веб-интерфейса CUPS, но не из LibreOffice, попробуйте установить пакет .

Вывод принтера сдвинут

По-видимому, это связано с неправильным размером страницы, установленным в CUPS.

Принтер не работает (приостановлен - "Paused") после ошибки

Когда во время печати возникает ошибка, принтер в CUPS может перестать отвечать на запросы. сообщает, что принтер (не готов), его можно активировать с помощью . В веб-интерфейсе CUPS принтер отображается как приостановлен - "Paused", его можно возобновить с помощью Восстановить печать.

Чтобы CUPS автоматически активировал принтер, измените политику ошибок с стандартной настройки (stop-printer) на Повторить задание (retry-this-job).

Samsung: URF ERROR - Incomplete Session by time out

Эта ошибка обычно возникает при печати файлов по сети через IPP на принтерах Samsung и решается с помощью пакета samsung-unified-driverAUR.

Brother: Принтер печатает несколько копий

Иногда принтер печатает несколько копий документа (например, MFC-9330CDW напечатал 10 копий). Решение заключается в обновлении прошивки принтера.

Обычный пользователь не может изменять настройки принтера или удалять определенные задания

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

gollark: We need RFC 3514 for IPv6.
gollark: Less so than VMs, but fairly.
gollark: Docker containers are fairly secure.
gollark: S I D E C H A N N E L A T T A C K S
gollark: You're *less* secure if said program can do basically anything whatever to your computer.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.