Как отключить встроенное устройство чтения карт в Debian?

Я пытаюсь отключить встроенный кард-ридер в моем MBP (5,3), где выполняется тестирование Debian. Я заметил, что powertop перечисляет кард-ридер как основной источник событий пробуждения и хотел бы отключить его, так как мне редко нужно читать SD-карты.

Я нашел это с помощью "dmesg":

scsi 6: 0: 0: 0: APDLE SD Card Reader с прямым доступом 1.00 PQ: 0 ANSI: 0

и это из "sg_scan -i":

/ dev / sg2: канал scsi6 =0 id=0 lun=0 [em] APPLE SD Card Reader 1.00 [rmb=1 cmdq=0 pqual=0 pdev=0x0]

Я не знаю, где найти устройство в /proc, и для этого устройства не загружены модули (полагаю, что оно встроено в ядро).

Поэтому в идеале я хотел бы иметь возможность включать / отключать это устройство без перекомпиляции ядра. Это возможно?

1 ответ

Решение

Скорее всего, карт-ридер является USB-накопителем. Однако он сам по себе не вызывает пробуждений - вместо этого HAL или udisks должны опрашивать его, чтобы обнаружить изменения носителя, и этот опрос отображается в powertop. Можно отключить этот опрос, но тогда изменения носителя не будут обнаружены (однако устройство все равно будет работать, обычно попытка доступа к / dev / sdX приведет к тому, что ядро ​​обнаружит изменение носителя и обнаружит разделы, а затем смонтирует эти разделы. будет возможно).

Вы можете искать процессы опроса в вашей системе - HAL и udisks показывают имена опрашиваемых устройств в командной строке, видимые в ps выход:

пс топор | grep / dev / sdX

С HAL есть отдельный hald-addon-storage процесс для каждого опрашиваемого устройства; с удисками есть один udisks-daemon процесс для всех опрашиваемых устройств в системе.

Отключить опрос для HAL легко - для этого есть специальная команда:

hal-disable-polling --device / dev / sdX

Если вы хотите включить опрос позже, используйте ту же команду с дополнительной --enable-polling вариант.

Для новых удисков ситуация сложнее. Во-первых, вам нужен достаточно новый пакет udisks: в ошибке Debian #559562 говорится, что udisks >= 1.0.0~git20100223.a38230-2 необходим. Затем вам нужно добавить правило udev для вашего устройства, как описано в http://bugs.freedesktop.org/show_bug.cgi?id=26508. Для вашего устройства правило должно выглядеть так:

SUBSYSTEM == "блок", ENV{ID_VENDOR}=="APPLE*", ENV{ID_MODEL}=="Устройство чтения карт SD *", ENV{UDISKS_DISABLE_POLLING}="1" 

Поместите это правило во вновь созданный файл в /etc/udev/rules.d/ (например, 99-local.rules).

Другие вопросы по тегам