[РЕШЕНО] МФУ Kyocera Color M5521cdw сканирование через сеть

Да, в невидящем только 2 обращения (против 4 в видящем) и коннект вообще нет.
Еще надо бы куда-то отписать, что необходимо добавить в зависимости sane openssl-1.0 (в дополнение к устанавливаемому по умлолчанию актуальному openssl) - без этого сетевые сканеры отваливаются (могут отваливаться, если их бэкэнды завязаны на версию 1.0).
wau
No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages).
Попробуй для начала создать правило udev, как описано здесь - ... начинать с чего то нужно. А уж потом, если не поможет, можно использовать и другие способы ...
Ошибки не исчезают с опытом - они просто умнеют
удав создано и оно применяется для присоединяемых по юсб (ведь не для сетевых?) устройств. В давние убунтовские времена я с этим сталкивался и для выявления проблемы именно в этой плоскости запускали скаинмадж от рута (если от рута = ок. а от юзера фэйл => копаем удава).
Не понятно одно - если использовал strace, то там обязательно что то быть должно ... ошибка то серъезная - No scanners were identified - поищи - чтобы не тонуть в логах можно фильтровать лишнее, используя что то типа strace -e trace=file ... strace -e trace=openat ... strace -e trace=network ... strace -e select,connect,recvfrom ... и др.

PS - плохо знаю сетевые принтеры, но можно же использовать ping, сетевую трассировку, послушать порты и др. ...
Ошибки не исчезают с опытом - они просто умнеют
Спасибо за дополнение с strace.
По file и openat - видно, что открывает файлы конфигов, пытается открыть по пути ./имя (=нету) и там, где положено - /etc/sane (обстановка одинаковая на видящем и не видящем). Вывод огромен (думаю, для сокращения оставить только нужные конфиги и попробовать по новой). По netw лаконичнее, -
74813 socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC|SOCK_NONBLOCK, NETLINK_KOBJECT_UEVENT) = 3
74813 setsockopt(3, SOL_SOCKET, SO_ATTACH_FILTER, {len=10, filter=0x7ffdc1a81710}, 16) = 0
74813 setsockopt(3, SOL_SOCKET, SO_PASSCRED, [1], 4) = 0
74813 bind(3, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=0x000002}, 12) = 0
74813 getsockname(3, {sa_family=AF_NETLINK, nl_pid=74813, nl_groups=0x000002}, [12]) = 0
74813 recvmsg(3, {msg_namelen=128}, 0)  = -1 EAGAIN (Ресурс временно недоступен)
74813 socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 10
74813 bind(10, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 0
74813 getsockname(10, {sa_family=AF_NETLINK, nl_pid=74813, nl_groups=00000000}, [12]) = 0
74813 sendto(10, {{len=20, type=RTM_GETLINK, flags=NLM_F_REQUEST|NLM_F_DUMP, seq=1581323089, pid=0}, {ifi_family=AF_UNSPEC, ...}}, 20, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 20


Про ресурс недоступен пишет про всякий из поименованных в числе конфигов отсутствующий сканер. Про имеющийся пишет так -


74964 openat(AT_FDCWD, "/usr/lib/sane/libsane-kyocera_wc3.so.1", O_RDONLY) = 10
74964 close(10)                         = 0
74964 openat(AT_FDCWD, "/usr/lib/sane/libsane-kyocera_wc3.so.1", O_RDONLY|O_CLOEXEC) = 10
74964 read(10, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000-\0\0\0\0\0\0"..., 832) = 832
74964 fstat(10, {st_mode=S_IFREG|0755, st_size=184454, ...}) = 0
74964 mmap(NULL, 2152504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 10, 0) = 0x7f11540c1000
74964 mprotect(0x7f11540ce000, 2093056, PROT_NONE) = 0
74964 mmap(0x7f11542cd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 10, 0xc000) = 0x7f11542cd000
74964 close(10)
....
74964 openat(AT_FDCWD, "./kyocera_devices.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
74964 openat(AT_FDCWD, "/etc/sane.d/kyocera_devices.conf", O_RDONLY) = 10
74964 fstat(10, {st_mode=S_IFREG|0644, st_size=4320, ...}) = 0
74964 read(10, "# To add a network device, input"..., 4096) = 4096
74964 openat(AT_FDCWD, "./kyocera_wc3.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
74964 openat(AT_FDCWD, "/etc/sane.d/kyocera_wc3.conf", O_RDONLY) = 11
74964 fstat(11, {st_mode=S_IFREG|0644, st_size=6279, ...}) = 0
74964 read(11, "# Kyocera WC3 supported device\r\n"..., 4096) = 4096
74964 read(11, " d-Copia 5500MF\r\nA3 d-Copia 6500"..., 4096) = 2183
74964 read(11, "", 4096)                = 0
74964 close(11)                         = 0
74964 read(10, "2552\n# d-COPIA253MF plus\n# d-COP"..., 4096) = 224
74964 read(10, "", 4096)                = 0
74964 close(10)                         = 0
74964 openat(AT_FDCWD, "/usr/lib/sane/libsane-kyocera_gdi_a3.so.1", O_RDONLY) = 10
74964 close(10)                         = 0
74964 openat(AT_FDCWD, "/usr/lib/sane/libsane-kyocera_gdi_a3.so.1", O_RDONLY|O_CLOEXEC) = 10
74964 read(10, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0k\0\0\0\0\0\0"..., 832) = 832
74964 fstat(10, {st_mode=S_IFREG|0755, st_size=511543, ...}) = 0
74964 mmap(NULL, 2276528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 10, 0) = 0x7f1152d59000
74964 mprotect(0x7f1152d80000, 2093056, PROT_NONE) = 0
74964 mmap(0x7f1152f7f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 10, 0x26000) = 0x7f1152f7f000
74964 mmap(0x7f1152f81000, 15536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f1152f81000
74964 close(10)                         = 0

.....

4964 read(18, "1\n", 5)                = 2
74964 close(18)                         = 0
74964 close(17)                         = 0
74964 openat(AT_FDCWD, "./kyocera.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
74964 openat(AT_FDCWD, "/etc/sane.d/kyocera.conf", O_RDONLY) = 17
74964 fstat(17, {st_mode=S_IFREG|0644, st_size=334, ...}) = 0
74964 read(17, "#Kyocera MFP supported device\n\n#"..., 4096) = 334
74964 read(17, "", 4096)                = 0
74964 openat(AT_FDCWD, "/usr/lib/sane/libsane-xerox_mfp.so.1", O_RDONLY) = 18
74964 close(18)

Т.е. вроде ОК.
connect на

видящем-
175735 connect(12, {sa_family=AF_INET, sin_port=htons(9090), sin_addr=inet_addr("192.168.1.100")}, 16) = -1 EINPROGRESS (Операция выполняется в данный момент)
175735 connect(81, {sa_family=AF_UNIX, sun_path="/run/dbus/system_bus_socket"}, 29) = 0
175735 connect(137, {sa_family=AF_UNIX, sun_path="/run/dbus/system_bus_socket"}, 29) = 0
175737 +++ exited with 0 +++
175736 +++ exited with 0 +++
175735 +++ exited with 0 +++
~
не видящем

74848 select(23, [21 22], NULL, NULL, {tv_sec=0, tv_usec=500000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 1 (in [22], left {tv_sec=0, tv_usec=65989})
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=61406}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 1 (in [22], left {tv_sec=0, tv_usec=119476})
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 connect(24, {sa_family=AF_UNIX, sun_path="/run/dbus/system_bus_socket"}, 29) = 0
74848 select(23, [22], NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
74848 select(22, [21], NULL, NULL, {tv_sec=0, tv_usec=300000}) = 0 (Timeout)
74848 connect(23, {sa_family=AF_UNIX, sun_path="/run/dbus/system_bus_socket"}, 29) = 0
74850 +++ exited with 0 +++
74849 +++ exited with 0 +++
74848 +++ exited with 0 +++


Т.е. вроде как даже и не пытается, но пытается -


grep sin_addr log2
74964 bind(21, {sa_family=AF_INET, sin_port=htons(8612), sin_addr=inet_addr("192.168.1.4")}, 16) = 0
74964 sendto(21, "BJNP\2\1\0\0\0\0\0\0\0\0\0\0", 16, 0, {sa_family=AF_INET, sin_port=htons(8612), sin_addr=inet_addr("192.168.1.255")}, 16) = 16
74964 sendto(21, "MFNP\2\1\0\0\0\0\0\0\0\0\0\0", 16, 0, {sa_family=AF_INET, sin_port=htons(8610), sin_addr=inet_addr("192.168.1.255")}, 16) = 16
74964 sendto(21, "BJNP\2\1\0\0\0\0\0\0\0\0\0\0", 16, 0, {sa_family=AF_INET, sin_port=htons(8612), sin_addr=inet_addr("192.168.1.255")}, 16) = 16
74964 sendto(21, "MFNP\2\1\0\0\0\0\0\0\0\0\0\0", 16, 0, {sa_family=AF_INET, sin_port=htons(8610), sin_addr=inet_addr("192.168.1.255")}, 16) = 16
74964 sendmsg(22, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("255.255.255.255")}, msg_namelen=16, msg_iov=[{iov_base="0G\2\1\1\4\6public\240:\2\4\177\344\4\232\2\1\0\2\1\0000,0\f\6"..., iov_len=73}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 73
74964 recvmsg(22, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("192.168.1.100")}, msg_namelen=28->16, msg_iov=[{iov_base="0y\2\1\1\4\6public\242l\2\4\177\344\4\232\2\1\0\2\1\0000^06\6"..., iov_len=65536}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT) = 123
74964 getsockname(22, {sa_family=AF_INET, sin_port=htons(51264), sin_addr=inet_addr("0.0.0.0")}, [28->16]) = 0
74964 sendmsg(22, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("255.255.255.255")}, msg_namelen=16, msg_iov=[{iov_base="0G\2\1\1\4\6public\240:\2\4\177\344\4\232\2\1\0\2\1\0000,0\f\6"..., iov_len=73}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 73
74964 recvmsg(22, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("192.168.1.100")}, msg_namelen=28->16, msg_iov=[{iov_base="0y\2\1\1\4\6public\242l\2\4\177\344\4\232\2\1\0\2\1\0000^06\6"..., iov_len=65536}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT) = 123
74964 getsockname(22, {sa_family=AF_INET, sin_port=htons(51264), sin_addr=inet_addr("0.0.0.0")}, [28->16]) = 0
74964 sendto(22, "EPSONP\0\377\0\0\0\0\0\0\0", 15, 0, {sa_family=AF_INET, sin_port=htons(3289), sin_addr=inet_addr("255.255.255.255")}, 16) = 15
74964 sendto(22, "EPSONP\0\377\0\0\0\0\0\0\0", 15, 0, {sa_family=AF_INET, sin_port=htons(3289), sin_addr=inet_addr("255.255.255.255")}, 16) = 15
74964 sendto(21, "\2\0\1\2\0\0\0\35%\0\26std-scan-discovery-al"..., 37, 0, {sa_family=AF_INET, sin_port=htons(1124), sin_addr=inet_addr("255.255.255.255")}, 16) = 37

wau
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
74848 select(23, [22], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
В части системного вызова select - я представляю его как то так - этот вызов предназначен для обработки очереди сообщений, то есть ожидается прибытие каких то считанных данных … и если хотя бы один сокет готов к выполнению заданной операции, select возвращает ненулевое значение (файловый дескриптор, соответствующий очереди сообщений), но если сработал таймаут, как в приведенных логах, select возвращает ноль ... как таковой ошибки нет (в случае ошибки возвращается значение -1) - ожидаем вечно, если не было указано время ожидания.
То есть можно предположить (с большой степенью вероятности), что данные были прочитаны, поставлены для пересылки в очередь, но по какой то причине не могут быть получены/обработаны (сокет не готов к их обработке). А вот почему - хрен его знает, нужно копать глубже.
… хотя как то встречалось в описании и такое
… select() или poll(), могут возвращать фиктивные уведомления о готовности - они могут ложно информировать нас что некий файловый дескриптор готов. Это может быть вызвано некой ошибкой ядра или быть ожидаемым поведением в некотором необычном сценарии …
Но похоже, что новому принтеру чего то не хватает, а вот чего??? - возможно это связано с драйверами или с ядром или с сетью … одни гадания, нужно инфа более полная.
Ошибки не исчезают с опытом - они просто умнеют
Сорри, что вмешиваюсь, но не проще ли на этом японце в адресную книгу добавить путь к шаре, или уже обсуждалось?
Блин. Отвалилось. Проверил - авахи на месте, в логах ошибок нет,
SANE_DEBUG_DLL=128 scanimage -L конфиги читает без ошибок, но ничего не находит. Посмторел, чем богат репозиторий - доставил sane-airscan, сканер нашелся -

et_avahi_browse_callback: ALL_FOR_NOW
device `airscan:e1:Kyocera ECOSYS M5521cdw' is a eSCL Kyocera ECOSYS M5521cdw ip=192.168.1.100

Но вот незадача - работает только от рута. Добавил себя в группу scanner - пофиг. Помню, в бубунтовские времена читал про это, все крутилось вокруг прав на /dev/usb, соответственно прописывалось в правилах udev, но у нас-то сканер сетевой. Причем вместо kyocera_wc3:192.168.1.100 он его обнаруживает как airscan:e1:Kyocera ECOSYS M5521cdw.

Куда копать?
Снес sane-airscan, в ответ на SANE_DEBUG_DLL=128 scanimage -L ошибок нет, но и сканера нет -


[19:19:32.390152] [dll] add_backend: adding backend `xerox_mfp'
[19:19:32.390157] [dll] add_backend: adding backend `kyocera'
[19:19:32.390161] [dll] add_backend: adding backend `kyocera_gdi_a3'
[19:19:32.390166] [dll] add_backend: adding backend `kyocera_wc3'
[19:19:32.390171] [dll] add_backend: adding backend `kyocera_wc3_usb'
[19:19:32.390181] [dll] sane_get_devices
[19:19:32.390187] [dll] load: searching backend `kyocera_wc3_usb' in `/usr/lib/sane'
[19:19:32.390191] [dll] load: trying to load `/usr/lib/sane/libsane-kyocera_wc3_usb.so.1'
[19:19:32.390199] [dll] load: dlopen()ing `/usr/lib/sane/libsane-kyocera_wc3_usb.so.1'
[19:19:32.390500] [dll] init: initializing backend `kyocera_wc3_usb'
[19:19:32.621814] [dll] init: backend `kyocera_wc3_usb' is version 1.0.1
[19:19:32.622048] [dll] load: searching backend `kyocera_wc3' in `/usr/lib/sane'
[19:19:32.622066] [dll] load: trying to load `/usr/lib/sane/libsane-kyocera_wc3.so.1'
[19:19:32.622086] [dll] load: dlopen()ing `/usr/lib/sane/libsane-kyocera_wc3.so.1'
[19:19:32.624006] [dll] init: initializing backend `kyocera_wc3'
[19:19:32.624040] [dll] init: backend `kyocera_wc3' is version 1.0.1
[19:19:32.624355] [dll] load: searching backend `kyocera_gdi_a3' in `/usr/lib/sane'
[19:19:32.624374] [dll] load: trying to load `/usr/lib/sane/libsane-kyocera_gdi_a3.so.1'
[19:19:32.624390] [dll] load: dlopen()ing `/usr/lib/sane/libsane-kyocera_gdi_a3.so.1'
[19:19:32.624508] [dll] init: initializing backend `kyocera_gdi_a3'
[19:19:32.627048] [dll] init: backend `kyocera_gdi_a3' is version 1.0.1
[19:19:32.627162] [dll] load: searching backend `kyocera' in `/usr/lib/sane'
[19:19:32.627182] [dll] load: trying to load `/usr/lib/sane/libsane-kyocera.so.1'
[19:19:32.627201] [dll] load: dlopen()ing `/usr/lib/sane/libsane-kyocera.so.1'
[19:19:32.627356] [dll] init: initializing backend `kyocera'
[19:19:32.636667] [dll] init: backend `kyocera' is version 1.0.1
[19:19:32.636841] [dll] load: searching backend `xerox_mfp' in `/usr/lib/sane'
[19:19:32.636873] [dll] load: trying to load `/usr/lib/sane/libsane-xerox_mfp.so.1'
[19:19:32.636915] [dll] load: dlopen()ing `/usr/lib/sane/libsane-xerox_mfp.so.1'
[19:19:32.637341] [dll] init: initializing backend `xerox_mfp'
[19:19:32.640864] [dll] init: backend `xerox_mfp' is version 1.0.13

[19:19:38.272712] [dll] init: backend `epkowa' is version 1.0.213
[19:19:38.272895] [dll] sane_get_devices: found 0 devices
[19:19:38.272937] [dll] sane_exit: exiting
 
Зарегистрироваться или войдите чтобы оставить сообщение.