Как обнаружить вставку SD-карты (только SD-карты, а не устройства чтения карт) в Linux?
У меня есть безголовый дебиан (3.2.0-3-686-pae), к которому я хотел подключить автономный картридер для автоматической обработки моих фотографий. Идея в том, что ридер будет подключен постоянно, а я просто вставлю SD-карту.
К сожалению, карта не обнаруживается, когда я ее вставляю.
- картридер правильно распознан
- Когда я подключаю устройство чтения карт с уже вставленной SD-картой, оба устройства распознаются правильно и карта устанавливается автоматически.
Поэтому это действие по вставке карты в работающий картридер, который не распознается. В /var/log/messages нет сообщений (и нигде больше). Когда устройство чтения карт вставлено, сообщения верны:
Aug 4 14:25:03 server kernel: [711743.411320] usb 1-6: USB disconnect, device number 5
Aug 4 14:25:12 server kernel: [711751.964021] usb 1-6: new high-speed USB device number 6 using ehci_hcd
Aug 4 14:25:12 server kernel: [711752.097364] usb 1-6: New USB device found, idVendor=058f, idProduct=6366
Aug 4 14:25:12 server kernel: [711752.097369] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Aug 4 14:25:12 server kernel: [711752.097373] usb 1-6: Product: Mass Storage Device
Aug 4 14:25:12 server kernel: [711752.097375] usb 1-6: Manufacturer: Generic
Aug 4 14:25:12 server kernel: [711752.097377] usb 1-6: SerialNumber: 058F63666433
Aug 4 14:25:12 server kernel: [711752.098062] scsi4 : usb-storage 1-6:1.0
Aug 4 14:25:13 server kernel: [711753.224612] scsi 4:0:0:0: Direct-Access Multiple Card Reader 1.00 PQ: 0 ANSI: 0
Aug 4 14:25:14 server kernel: [711753.810820] sd 4:0:0:0: [sdc] 1984000 512-byte logical blocks: (1.01 GB/968 MiB)
Aug 4 14:25:14 server kernel: [711753.811559] sd 4:0:0:0: [sdc] Write Protect is off
Aug 4 14:25:14 server kernel: [711753.829719] sdc: sdc1
Aug 4 14:25:14 server kernel: [711753.840025] sd 4:0:0:0: [sdc] Attached SCSI removable disk
Мне было интересно, пропускаю ли я что-то где-то (поведение выше из коробки - мне не нужно было ничего настраивать), или что вставка карты в уже подключенный кард-ридер просто не распознается по дизайну.
РЕДАКТИРОВАТЬ: Хотя дискуссии на форумах утверждают, что отсутствие сообщения является нормальным, это, очевидно, работает для некоторых (спасибо Писквор над Дарнир за комментарии). Я оставлю вопрос без ответа и сообщу об ошибке в Debian - обновляя этот пост, если есть какой-либо прогресс.
РЕДАКТИРОВАТЬ: подал Ошибка № 684306 (bugs.debian.org)
3 ответа
Вот как я решил эту проблему:
- Установите пакет udisks
- Run udisks --poll-for-media
С помощью правила udev я запускаю скрипт, который автоматически загружает данные с моей CF-карты.
Я подозреваю, что опрос для блочных устройств отключен.
проверьте это значение
cat /sys/modules/block/parameters/events_dfl_poll_msecs
его 0 сделать это 2000
echo 2000 > /sys/modules/block/parameters/events_dfl_poll_msecs
Теперь обнаружение времени выполнения должно работать.
Обычно правила udev содержат атрибуты для записи 2000 на этом узле. Так что, если этот пакет udev отсутствует, установите его.
РЕДАКТИРОВАТЬ: пожалуйста, не обращайте внимания (см. Редактирование в основном вопросе). Я оставляю "ответ", чтобы комментарии могли на что-то ссылаться)
Что ж, после прохождения раунда по различным форумам похоже, что это в настоящее время невозможно. Похоже, что технически есть способ сделать это (поскольку вставка генерирует конкретные события HW), но это не реализовано. Это весьма прискорбно, поскольку существует множество возможных приложений. В моем случае это не так уж и плохо, так как кард-ридер автономен, но для встроенных он довольно сложный (хотя, может быть, в этом случае это происходит по-другому, я не знаю, так как у меня его нет)