Вопрос или проблема
Мой принтер работал нормально долгое время, но вчера, когда я попытался его использовать, он не мог печатать с моей системы LM (LinuxMint 21.3). Принтер по-прежнему обнаруживается и работает с моего Android телефона и системы Windows 11; они по-прежнему печатают без проблем. Я могу удалить его и добавить снова под Windows без ошибок. Я могу успешно пинговать принтер из LM, но не могу добавить принтер ни через апплет печати Cinnamon, ни через веб-страницу CUPS (http://127.0.0.1:631/).
Не знаю, что изменилось. Похоже, проблема в пустом PPD файле
(отмечено в ошибках ниже), но мне неясно, кто мог это изменить, так как это тот же самый принтер, который работал долгое время и просто перестал функционировать без очевидных изменений. Мне действительно нужна помощь в том, на что обратить внимание — возможно, какие-то логи, определить, была ли недавно обновлена система CUPS и т.д.
Вот что я сделал…
Сначала я удалил существующий, неработающий принтер и попытался добавить принтер снова. В прошлом, когда он переставал работать, простое повторное добавление было успешным. Не в этот раз; он завершает с ошибкой “server-error-internal-error”. Так как я все равно планировал продвигаться вперед, я установил образ LinuxMint 22 (Wilma) на новый раздел и попытался добавить принтер там. Но результаты были те же самые:
Все указывает на то, что принтер по-прежнему успешно обнаруживается, но я не могу его добавить.
Я искал информацию об ошибке и другие, казалось бы, связанные проблемы. Это видео показалось многообещающим Ремонт ошибки сервера CUPS на Linux, но ни оно, ни другие материалы, которые я нашел, не помогли.
ippfind сообщает следующее: ipp://Canonaaf616.local:631/ipp/print
Итак, я перешел на веб-страницу CUPS (Администрирование, Добавить принтер/Найти новый принтер) и он успешно находит принтер:
Но после попытки добавить принтер, используя все перечисленные “Принтеры” и “Модели”, ни один из них не сработал.
Использование модели “IPP Everywhere” возвращает: Не удалось создать PPD: Нет IPP атрибутов
.
Использование модели “без драйвера” возвращает: cups-driverd не удалось получить PPD файл - смотрите error_log для деталей.
Проверив /var/log/cups/error_log
, я увидел несколько сообщений, подобных следующим, для различных языков:
[cups-driverd] Плохой файл информации драйвера \"/usr/share/ppd/openprinting/Utax/Global/English/...
После чего следуют такие:
E [24/Sep/2024:12:07:17 -0600] Canon_MF741C_743C_: создание PPD не удалось: Нет IPP атрибутов.
E [24/Sep/2024:12:07:17 -0600] [Клиент 572] Возвращает IPP server-error-device-error для CUPS-Add-Modify-Printer (ipp://localhost/printers/Canon_MF741C_743C_) из localhost.
E [24/Sep/2024:12:08:06 -0600] [CGI] Не удалось создать PPD файл: Не удалось получить достаточную информацию о возможностях от принтера (ipps://Canon%20MF741C%2F743C%20(aa%3Af6%3A16)%20(aa%3Af6%3A16)%20(aa%3Af6%3A%20%20(2a%3A17%3A0e)%20(7)._ipps._tcp.local/, ipps://Canonaaf616.local:10443/ipp/print) через IPP!
E [24/Sep/2024:12:08:06 -0600] copy_model: пустой PPD файл
E [24/Sep/2024:12:08:06 -0600] [Клиент 597] Возвращает IPP server-error-internal-error для CUPS-Add-Modify-Printer (ipp://localhost/printers/Canon_MF741C_743C_) из localhost.
E [24/Sep/2024:12:08:21 -0600] [CGI] Не удалось создать PPD файл: Не удалось получить достаточную информацию о возможностях от принтера (ipps://Canon%20MF741C%2F743C%20(aa%3Af6%3A16)%20(aa%3Af6%3A16)%20(aa%3Af6%3A%20%20(2a%3A17%3A0e)%20(7)._ipps._tcp.local/, ipps://Canonaaf616.local:10443/ipp/print) через IPP!
E [24/Sep/2024:12:08:21 -0600] copy_model: пустой PPD файл
E [24/Sep/2024:12:08:21 -0600] [Клиент 625] Возвращает IPP server-error-internal-error для CUPS-Add-Modify-Printer (ipp://localhost/printers/Canon_MF741C_743C_) из localhost.
avahi-browse -rt _ipp._tcp возвращает:
+ wlp5s0 IPv6 Canon MF741C/743C (aa:f6:16) (aa:f6:16) (aa:f6: (2a:17:0e) (7) Интернет Принтер local
+ wlp5s0 IPv4 Canon MF741C/743C (aa:f6:16) (aa:f6:16) (aa:f6: (2a:17:0e) (7) Интернет Принтер local
= wlp5s0 IPv6 Canon MF741C/743C (aa:f6:16) (aa:f6:16) (aa:f6: (2a:17:0e) (7) Интернет Принтер local
имя хоста = [Canonaaf616.local]
адрес = [192.168.4.31]
порт = [631]
txt = ["mopria-certified=1.3" "print_wfds=T" "rfo=ipp/faxout" "kind=document,envelope,postcard" "URF=ADOBERGB24,CP255,DM1,PQ4,RS300,SRGB24,W8-16,FN3,IS1-4,OB10-40,V1.4" "Fax=T" "Scan=T" "TLS=1.2" "usb_CMD=LIPSLX,CPCA" "UUID=6d4ff0ce-6b11-11d8-8020-349f7baaf616" "PaperMax=legal-A4" "Punch=0" "Staple=F" "Sort=F" "Collate=F" "Bind=F" "PaperCustom=T" "Duplex=T" "Copies=T" "Color=T" "TBCP=F" "Binary=F" "Transparent=F" "usb_MDL=MF741C/743C" "usb_MFG=Canon" "adminurl=http://Canonaaf616.local:80/airprint.html" "pdl=application/octet-stream,image/urf,image/pwg-raster,image/jpeg,application/pdf" "product=(CNMF741C/743C)" "ty=Canon MF741C/743C" "priority=10" "qtotal=1" "note=" "rp=ipp/print" "txtvers=1"]
= wlp5s0 IPv4 Canon MF741C/743C (aa:f6:16) (aa:f6:16) (aa:f6: (2a:17:0e) (7) Интернет Принтер local
имя хоста = [Canonaaf616.local]
адрес = [192.168.4.31]
порт = [631]
txt = ["mopria-certified=1.3" "print_wfds=T" "rfo=ipp/faxout" "kind=document,envelope,postcard" "URF=ADOBERGB24,CP255,DM1,PQ4,RS300,SRGB24,W8-16,FN3,IS1-4,OB10-40,V1.4" "Fax=T" "Scan=T" "TLS=1.2" "usb_CMD=LIPSLX,CPCA" "UUID=6d4ff0ce-6b11-11d8-8020-349f7baaf616" "PaperMax=legal-A4" "Punch=0" "Staple=F" "Sort=F" "Collate=F" "Bind=F" "PaperCustom=T" "Duplex=T" "Copies=T" "Color=T" "TBCP=F" "Binary=F" "Transparent=F" "usb_MDL=MF741C/743C" "usb_MFG=Canon" "adminurl=http://Canonaaf616.local:80/airprint.html" "pdl=application/octet-stream,image/urf,image/pwg-raster,image/jpeg,application/pdf" "product=(CNMF741C/743C)" "ty=Canon MF741C/743C" "priority=10" "qtotal=1" "note=" "rp=ipp/print" "txtvers=1"]
avahi-browse -rt _uscan._tcp возвращает:
+ wlp5s0 IPv4 Canon MF741C/743C (aa:f6:16) (aa:f6:16) (aa:f6: (2a:17:0e) (7) _uscan._tcp local
= wlp5s0 IPv4 Canon MF741C/743C (aa:f6:16) (aa:f6:16) (aa:f6: (2a:17:0e) (7) _uscan._tcp local
имя хоста = [Canonaaf616.local]
адрес = [192.168.4.31]
порт = [80]
txt = ["usb_MFG=Canon" "mopria-certified-scan=1.2" "duplex=T" "is=platen,adf" "UUID=6d4ff0ce-6b11-11d8-8020-349f7baaf616" "cs=color,grayscale" "pdl=application/octet-stream,application/pdf,image/jpeg" "representation=http://Canonaaf616.local/en/media/dev_icon_128x128.png" "adminurl=http://Canonaaf616.local:80/airprint.html" "rs=eSCL" "vers=2.63" "note=" "ty=Canon MF741C/743C" "txtvers=1"]
ОБНОВЛЕНИЕ
Похоже, это какая-то проблема, связанная с сетью, но ничего не изменилось в сети.
- Мой “домашний” брандмауэр отключен.
- Мой маршрутизатор по-прежнему показывает, что принтер подключен.
- Я могу пинговать IP принтера с любого из компьютеров.
- Опция LinuxMint “Найти сетевой принтер” находит компьютер в сети.
- Веб-страница CUPS может найти принтер.
- avahi-browse может найти принтер.
Но все попытки оказываются неудачными: 1) добавление принтера в систему Linux или 2) печать на него с системы Linux, где этот принтер был добавлен до возникновения проблемы.
Я пытался вручную создать очередь с помощью lpadmin -p TEST -v ipp://<printer_ip>/ipp/print -m everywhere -E
, но это вернуло lpadmin: Не удалось создать PPD: Нет IPP атрибутов.
Я нашел эту статью CUPS: “Не удалось скопировать файл PPD”, которая показалась применимой. Я проверил мой /etc/nswitch.conf
, и содержимое такое:
# /etc/nsswitch.conf
#
# Пример конфигурации функциональности GNU Name Service Switch.
# Если у вас установлены пакеты `glibc-doc-reference` и `info`, попробуйте:
# `info libc "Name Service Switch"' для информации об этом файле.
passwd: files systemd
group: files systemd
shadow: files systemd
gshadow: files systemd
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Строка hosts
выглядит правильной, не так ли?
У меня не было файла /etc/msdn.allow
, поэтому я добавил его с содержимым:
.local.
.local
Но улучшения не произошло; по-прежнему не могу печатать или добавить принтер.
ОБНОВЛЕНИЕ
Похоже, это ошибка в CUPS: Не могу добавить принтер Canon ipp после версии CUPS 2.4.6
Ответ или решение
Проблема, с которой вы столкнулись, связана с ошибкой "server-error-internal-error" при попытке добавить принтер Canon MF741C/743C в системе Linux Mint с использованием CUPS. Судя по вашему описанию, принтер работает на других устройствах, но не может быть добавлен на Linux. Ваша диагностика показывает, что основная причина может быть связана с созданием PPD файла.
Вот шаги, которые могут помочь решить вашу проблему:
-
Проверка журналов CUPS:
Убедитесь, что вы внимательно проверили/var/log/cups/error_log
для получения более подробной информации о том, что может вызывать ошибки. Пример ошибок, которые вы привели, указывает на проблемы с получением атрибутов IPP и созданием PPD файлов. -
Обновление CUPS и драйверов:
Поскольку вы упомянули, что ваша ошибка может быть связана с ошибкой CUPS, возможно, стоит:- Обновить систему до последней версии, чтобы установить последние исправления.
- Проверить, используются ли актуальные драйвера для вашего принтера Canon. Вы можете посетить официальный сайт Canon или сайт OpenPrinting для загрузки соответствующих PPD файлов.
-
Использование командной строки для добавления принтера:
Вы уже пытались использовать командуlpadmin
, но получили ошибку. Попробуйте вручную указать полный путь к PPD файлу, если он есть на вашем компьютере. Например:sudo lpadmin -p TEST -v ipp://192.168.4.31/ipp/print -P /path/to/your/Canon_MF741C.ppd -E
Вы можете найти PPD файлы в
/usr/share/ppd/
или другие места, если они были установлены. -
Конфигурация NSS:
Ваша конфигурация/etc/nsswitch.conf
выглядит корректнее. Однако, как вы заметили, создание файла/etc/mdns.allow
, в который вы записали.local.
, может помочь. Убедитесь, что локальная сеть работает правильно, поскольку CUPS использует DNS для поиска принтеров. Для лучшей работы попробуйте переопределить строкуhosts
как:hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
-
Перезапуск CUPS:
После внесения изменений не забудьте перезапустить CUPS, чтобы применить новые настройки:sudo systemctl restart cups
-
Использование альтернативных драйверов:
В некоторых случаях использование драйвера "Generic" может помочь:lpadmin -p TEST -v ipp://192.168.4.31/ipp/print -m generic/text-only -E
-
Отключение SELinux/AppArmor:
Убедитесь, что SELinux или AppArmor (если они включены) не блокируют доступ к принтеру. Это можно проверить, временно отключив их. -
Проверка соединений:
Иногда проблемы могут быть вызваны брандмауэром или маршрутизатором. Убедитесь, что доступ к порту 631 (CUPS) разрешен и что нет никакой сетевой политики, блокирующей соединение.
Если после выполнения всех шагов вы по-прежнему сталкиваетесь с проблемами, вам, возможно, стоит обратиться к форумам поддержки CUPS или Linux Mint, чтобы получить более специфическую помощь для вашего случая. Учитывая, что вы уже нашли ссылку на ошибку на GitHub, имеет смысл следить за обновлениями или патчами, которые могут решить вашу проблему в будущих версиях CUPS.