Created attachment 13262 [details] вывод $ scanimage -L Система:Альт Рабочая станция K, Альт Рабочая станция Сканер Canon Lide 25 После установки системы из образа и на live-системе сканер работает. После обновления система сканер обнаруживает, а программы Xsane и "Сканер документов" сканер не могут обнаружить. $ lsusb Bus 002 Device 003: ID 04a9:2220 Canon, Inc. CanoScan LIDE 25 $ sane-find-scanner found possible USB scanner (vendor=0x04a9 [Canon], product=0x2220 [CanoScan], chip=LM9832/3) at libusb:002:003
https://askubuntu.com/questions/839502/canon-canoscan-lide-25-still-fails-to-scan-under-xenial <<after adding user to the group "scanner" and restarting the laptop, it works very well.>> Т.е. вроде как достаточно права поправить.
Пользователь изначально входит в группу "scanner". Все работает хорошо пока не обновится sane и libsane. Причем на стационарном ПК - Альт Рабочая станция K, а ноутбуке - Альт Рабочая станция. А ситуация одинаковая.
(Ответ для Фомченков Алексей на комментарий #2) > Пользователь изначально входит в группу "scanner". > > Все работает хорошо пока не обновится sane и libsane. Подтверждаю, что проблема есть, и скорее всего со всеми USB-сканерами. У меня воспроизводится именно на Canon Lide 25. Но у меня предположение, что дело не в обновлении sane, поскольку перед обновлением я тестировал именно на этом сканере. И служба QA тестировала на разных сканерах перед тем, как одобрить обновление пакета в p10.
Удаляю sane-1.2.1 Устанавливаю sane-1.0.32 из установочного образа Сканер работает Перезагружаюсь, опять не работает и запускается sane-1.2.1. Как пакет сам обновляется?
Как дела?
(Ответ для AEN на комментарий #5) > Как дела? Пока отдел тестирования не удалось убедить, что проблема есть. На своём тестировании обнаружено, что обновление пакета libsane до 1.2.1 ломает сканирование только после перезагрузки. Напротив, откат пакета, если проблема есть после обновления, решает проблему сразу. Причина необъяснимая, и для меня выглядит, как будто дело в firmware, которая загружается в сканер. Причём якобы переключение (перетыкание) сканера от машины с работающим libsane 1.0.1 к машине с обновлённым «сломанным» пакетом libsane 1.2.1 сохраняет возможность сканирования, как будто действительно у него якобы есть что-то длительно хранимое в памяти. Продолжаем исследование.
(Ответ для Фомченков Алексей на комментарий #4) > Удаляю sane-1.2.1 > Устанавливаю sane-1.0.32 из установочного образа > Сканер работает > Перезагружаюсь, опять не работает и запускается sane-1.2.1. > Как пакет сам обновляется? Ну вы всегда можете выполнить epm mark hold libsane для удерживания от обновления. Но как же обновляется, это у вас Рабочая станция К ?
Система:Альт Рабочая станция K Сканер Canon Lide 25 Были проведены следующие манипуляции: 1. пакет libsane обновлен до версии 1.2.1 2. после перезагрузки сканер перестает определяться 3. этот сканер основан на plustek 4. подменяем библиотеку libsane-plustek из пакета версии 1.0.32, так же заменил библиотеку libsane-plustek_pp, хотя она по размеру идентична из пакета 1.2.1, но контрольные суммы не сравнивал. 5. перезагрузка, сканер определяется и работает.
Подтверждаю. Столкнулся намедни с этим. Причём, походу, дело в правах доступа к /dev/bus/usb, т.к. после смены прав на шину командой chmod -R a+w /dev/bus/usb сканер определился и заработал.
(Ответ для arbars@altlinux.org на комментарий #9) > chmod -R a+w /dev/bus/usb Не подтверждаю: на e16c под p10_e2k (те же sane 1.2.1-alt1, xsane-0.999-alt6, что и в основных sisyphus/p10) ни от пользователя в группе scanner, ни от рута (после соответствующего предупреждения) xsane всё так же не "видит" Canon LiDE 20, который в lsusb при этом фигурирует. (Ответ для Дмитрий Яковлев на комментарий #8) > 4. подменяем библиотеку libsane-plustek из пакета версии 1.0.32, так же > заменил библиотеку libsane-plustek_pp, хотя она по размеру идентична из > пакета 1.2.1, но контрольные суммы не сравнивал. > 5. перезагрузка, сканер определяется и работает. Подтверждаю без перезагрузок: 1) машина была загружена с уже обновлённой libsane 1.2.1-alt1; 2) подключил LiDE 25; 3) пронаблюдал описанное выше в этом же комментарии; 4) подсунул libsane-plustek.so.1.0.32 из сборки для p9_e2k (*_pp не трогал) -- 5) запущенный xsane сканер обнаружил, пробное сканирование прошло успешно. Перезагружать эту машинку не шибко удобно, много всего крутится.
libsane-plustek_pp я так понимаю, фирмваре, которое неизменно качует от пакета к пакету и это хорошо. С правами тоже все в порядке, root, scanner имеют права на чтение/запись. Проблема в библиотеке. Ну, пока обходным путем решается, нехорошо, но работать можно.
Версия пакета: libsane-1.2.1-alt1 Стенд: Alt Workstation 10.1 x86-64 Проверил на сканере: Canon СanoScan LiDE 20 - ошибка воспроизводится (проверял подключенный сканер на удалённом сервере с помощью usbip) $ scanimage -L - подключенный сканер не определяется, однако через $ lsusb и $ sane-find-scanner сканер определяется корректно Также проверил на сканере Canon CanoScan LiDE 60 - ошибка НЕ воспроизводится - сканер работает корректно ================================================================================ Дополнительно: на версии libsane-1.0.32-alt4 ошибка НЕ воспроизводится
Проблема в отсутствующем каталоге /var/lock/sane с необходимыми разрешениями rwx для группы scanner. Ошибка из лога strace ($ strace scanimage -L | grep LCK): openat(AT_FDCWD, "/var/lock/sane/LCK..libusb:001:006", O_WRONLY|O_CREAT|O_EXCL, 0644) = -1 ENOENT (Нет такого файла или каталога) Пакет собран с флагом --enable-locking , причем саму блокировку поддерживают только библиотеки для некоторых моделей, в частности ее поддерживает и plustek. Каталог для создания файлов блокировок (LCK...) настроен на директорию /var/lock/sane , но /var/lock - это символическая ссылка на директорию /run/lock, которая является частью runfs type tmpfs, т.е. данные в этом каталоге хранятся в оперативной памяти и поэтому очищаются в момент перезагрузки. С ранними версиями подобной проблемы не возникает, возможно потому что сама реализация работы с блокировками была не доведена, так как diff между двумя последними версиями (1.1.1 и 1.2.1) исходного кода как раз содержит исправления по части locking. Таким образом, для исправления текущей обсуждаемой ошибки нужно создавать каталог: su - mkdir -p -m 0770 /var/lock/sane && chgrp scanner /var/lock/sane или добавить правило создания каталога в tmpfs автоматически при каждой загрузке системы: su - echo "D /var/lock/sane 0770 root scanner -" > /lib/tmpfiles.d/sane.conf
sane-1.2.1-alt2 -> sisyphus: Tue Sep 26 2023 Vitaly Lipatov <lav@altlinux.ru> 1.2.1-alt2 - add tmpfiles entry for /var/lock/sane (ALT bug 46255)
Created attachment 16877 [details] xsane output Ошибка воспроизводится в Sisyphus. # rpm -q sane sane-1.2.1-alt2.x86_64 Как описано в изначальном описании сканер виден системой, но не обнаруживается xsane. В Р10 не воспроизводится. Прикладываю вывод в терминал при запуске xsane.
Переоткрываю ошибку.
sane-1.2.1-alt2 -> c10f2: Tue Sep 26 2023 Vitaly Lipatov <lav@altlinux.ru> 1.2.1-alt2 - add tmpfiles entry for /var/lock/sane (ALT bug 46255)