1-wire зависает процесс загрузки модуля

Подключил к GPIO 10, DS1820
При загрузки получаю следующую картину.
1 S root 228 33 0 80 0 - 0 wait 18:17 ? 00:00:00 [kworker/u2:1]
4 D root 229 228 0 80 0 - 525 w1_rec 18:17 ? 00:00:00 /sbin/modprobe -q – w1-family-0x29
Далее после 120 сек. ядро жалуется, что процесс 229 всё ещё в состояние D.
При обращение к интерфейсу 1-wire
cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
или
cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slave_count
процесс cat виснет.
В чём может быть дело?

Это баг в ядре. Ядро виснет, если модуль соответствующего типа устройств автоматически загружается.

workaround сейчас - это запретить автозагрузку соответствующего модуля. Например для термометров:

echo “blacklist w1_therm” > /etc/modprobe.d/w1.conf

потом после загрузки вручную загружать модуль через “modprobe w1_therm”.

В 3.13 баг кажется уже исправили, я проверю и выложу новое ядро и образ, если это так.

Да срабатывает

А где-нибудь есть дока по взаимодействию sysfs и 1-wire модулей.
Гуглится в основном ows

Там есть ещё в течение скольких секунд он будет сканировать устройства по 1-wire.
По умолчание стоит 10 сек.
Насколько бесболезненно можно туда поставить 1 сек, 0 сек?

up

Хорошей документации по этому не знаю. Вот ядерная: https://github.com/torvalds/linux/tree/master/Documentation/w1
Не очень понятно, что там документировать. Втыкаете термометр - он появляется в /sysfs - вы с него читаете температуру.
Обычно документация по конкретным файлам из sysfs в гугле сразу находится.

По поводу того, как часто можно сканировать шину на предмет новых устройств - я не знаю. Мне кажется, что 1 секунда работает не хуже, чем значение по-умолчанию. А зачем вам нужно постоянное сканирование шины?

Кроме снятия температуры, там есть скажем DS2408 - 8-канальный переключатель.
И управление им и снятие значений с него, не так прозрачно, как снятие температуры

Вот кстати есть код в Domoticz для работы с адресуемыми переключателями через ядерный интерфейс: http://sourceforge.net/p/domoticz/code/HEAD/tree/domoticz/hardware/1Wire/1WireByKernel.cpp
Посмотрите, может поможет.