3

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

Я нашел это с "dmesg":

SCSI 6: 0: 0: 0: APPLE 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 ответ1

3

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

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

ps ax | grep /dev/sdX

В HAL для каждого опрашиваемого устройства предусмотрен отдельный процесс hald-addon-storage ; с помощью udisks существует единый процесс 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#c0. Для вашего устройства правило должно выглядеть примерно так:

SUBSYSTEM=="block", ENV{ID_VENDOR}=="APPLE*", ENV{ID_MODEL}=="SD Card Reader*", ENV{UDISKS_DISABLE_POLLING}="1" 

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .