Bug 46255 - sane не обнаруживает сканер Canon Lide 25
Summary: sane не обнаруживает сканер Canon Lide 25
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: sane (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Vitaly Lipatov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 45868 44227 45077 46995
  Show dependency tree
 
Reported: 2023-05-25 06:16 MSK by Фомченков Алексей
Modified: 2023-09-27 12:04 MSK (History)
9 users (show)

See Also:


Attachments
вывод $ scanimage -L (314.20 KB, image/jpeg)
2023-05-25 06:16 MSK, Фомченков Алексей
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Фомченков Алексей 2023-05-25 06:16:40 MSK
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
Comment 1 Sergey V Turchin 2023-05-25 14:35:59 MSK
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.>>
Т.е. вроде как достаточно права поправить.
Comment 2 Фомченков Алексей 2023-05-25 17:40:28 MSK
Пользователь изначально входит в группу "scanner".

Все работает хорошо пока не обновится sane и libsane.
Причем на стационарном ПК - Альт Рабочая станция K, а ноутбуке - Альт Рабочая станция. А ситуация одинаковая.
Comment 3 Vitaly Lipatov 2023-05-25 18:45:51 MSK
(Ответ для Фомченков Алексей на комментарий #2)
> Пользователь изначально входит в группу "scanner".
> 
> Все работает хорошо пока не обновится sane и libsane.
Подтверждаю, что проблема есть, и скорее всего со всеми USB-сканерами. У меня воспроизводится именно на Canon Lide 25.

Но у меня предположение, что дело не в обновлении sane, поскольку перед обновлением я тестировал именно на этом сканере. И служба QA тестировала на разных сканерах перед тем, как одобрить обновление пакета в p10.
Comment 4 Фомченков Алексей 2023-05-30 09:30:33 MSK
Удаляю sane-1.2.1
Устанавливаю sane-1.0.32 из установочного образа
Сканер работает
Перезагружаюсь, опять не работает и запускается sane-1.2.1.
Как пакет сам обновляется?
Comment 5 AEN 2023-08-14 15:33:18 MSK
Как дела?
Comment 6 Vitaly Lipatov 2023-08-15 02:02:20 MSK
(Ответ для AEN на комментарий #5)
> Как дела?

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

Причина необъяснимая, и для меня выглядит, как будто дело в firmware, которая загружается в сканер.

Причём якобы переключение (перетыкание) сканера от машины с работающим libsane 1.0.1 к машине с обновлённым «сломанным» пакетом libsane 1.2.1 сохраняет возможность сканирования, как будто действительно у него якобы есть что-то длительно хранимое в памяти.

Продолжаем исследование.
Comment 7 Vitaly Lipatov 2023-08-15 02:03:32 MSK
(Ответ для Фомченков Алексей на комментарий #4)
> Удаляю sane-1.2.1
> Устанавливаю sane-1.0.32 из установочного образа
> Сканер работает
> Перезагружаюсь, опять не работает и запускается sane-1.2.1.
> Как пакет сам обновляется?
Ну вы всегда можете выполнить
epm mark hold libsane
для удерживания от обновления.

Но как же обновляется, это у вас Рабочая станция К ?
Comment 8 Дмитрий Яковлев 2023-08-21 12:58:20 MSK
Система:Альт Рабочая станция 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. перезагрузка, сканер определяется и работает.
Comment 9 arbars@altlinux.org 2023-09-06 12:18:59 MSK
Подтверждаю. Столкнулся намедни с этим. Причём, походу, дело в правах доступа к /dev/bus/usb, т.к. после смены прав на шину командой chmod -R a+w /dev/bus/usb
сканер определился и заработал.
Comment 10 Michael Shigorin 2023-09-06 13:41:00 MSK
(Ответ для 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 сканер обнаружил, пробное сканирование прошло успешно.

Перезагружать эту машинку не шибко удобно, много всего крутится.
Comment 11 Дмитрий Яковлев 2023-09-06 15:12:36 MSK
libsane-plustek_pp я так понимаю, фирмваре, которое неизменно качует от пакета к пакету и это хорошо.
С правами тоже все в порядке, root, scanner имеют права на чтение/запись.
Проблема в библиотеке.
Ну, пока обходным путем решается, нехорошо, но работать можно.
Comment 12 Монастырский Илья 2023-09-11 17:41:11 MSK
Версия пакета: 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 ошибка НЕ воспроизводится
Comment 13 Vasiliy Kovalev 2023-09-26 12:09:19 MSK
Проблема в отсутствующем каталоге /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
Comment 14 Repository Robot 2023-09-26 22:36:41 MSK
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)