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

**URL:** <https://support.wirenboard.com/t/1-wire/41>\
**Category:** Без категории\
**Created:** [March 16, 2014, 4:59pm UTC](https://support.wirenboard.com/t/1-wire/41 "2014-03-16T16:59:47Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://support.wirenboard.com/uploads/default/original/2X/5/5ac90dc8a7bdff486d3494a19ec6aaa6f6cc5d36.png) [@system](https://support.wirenboard.com/u/system)\
**Post date:** [March 16, 2014, 4:59pm UTC](https://support.wirenboard.com/t/1-wire/41/1 "2014-03-16T16:59:47Z")

</div>

Подключил к 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 виснет.  
В чём может быть дело?

---

<div class="post-metadata">

**Author:** ![EvgenyBoger](https://support.wirenboard.com/user_avatar/support.wirenboard.com/evgenyboger/32/188_2.png) [@EvgenyBoger](https://support.wirenboard.com/u/EvgenyBoger)\
**Post date:** [March 16, 2014, 5:40pm UTC](https://support.wirenboard.com/t/1-wire/41/2 "2014-03-16T17:40:34Z")

</div>

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

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

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

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

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

---

<div class="post-metadata">

**Author:** ![Dimon](https://avatars.discourse-cdn.com/v2/letter/d/eb8c5e/32.png) [@Dimon](https://support.wirenboard.com/u/Dimon)\
**Post date:** [March 16, 2014, 6:13pm UTC](https://support.wirenboard.com/t/1-wire/41/3 "2014-03-16T18:13:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Dimon](https://avatars.discourse-cdn.com/v2/letter/d/eb8c5e/32.png) [@Dimon](https://support.wirenboard.com/u/Dimon)\
**Post date:** [March 17, 2014, 6:48am UTC](https://support.wirenboard.com/t/1-wire/41/4 "2014-03-17T06:48:18Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Dimon](https://avatars.discourse-cdn.com/v2/letter/d/eb8c5e/32.png) [@Dimon](https://support.wirenboard.com/u/Dimon)\
**Post date:** [March 17, 2014, 6:51am UTC](https://support.wirenboard.com/t/1-wire/41/5 "2014-03-17T06:51:19Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Dimon](https://avatars.discourse-cdn.com/v2/letter/d/eb8c5e/32.png) [@Dimon](https://support.wirenboard.com/u/Dimon)\
**Post date:** [March 24, 2014, 5:30pm UTC](https://support.wirenboard.com/t/1-wire/41/6 "2014-03-24T17:30:36Z")

</div>

up

---

<div class="post-metadata">

**Author:** ![EvgenyBoger](https://support.wirenboard.com/user_avatar/support.wirenboard.com/evgenyboger/32/188_2.png) [@EvgenyBoger](https://support.wirenboard.com/u/EvgenyBoger)\
**Post date:** [March 25, 2014, 10:22pm UTC](https://support.wirenboard.com/t/1-wire/41/7 "2014-03-25T22:22:38Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![Dimon](https://avatars.discourse-cdn.com/v2/letter/d/eb8c5e/32.png) [@Dimon](https://support.wirenboard.com/u/Dimon)\
**Post date:** [March 26, 2014, 5:54am UTC](https://support.wirenboard.com/t/1-wire/41/8 "2014-03-26T05:54:16Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![EvgenyBoger](https://support.wirenboard.com/user_avatar/support.wirenboard.com/evgenyboger/32/188_2.png) [@EvgenyBoger](https://support.wirenboard.com/u/EvgenyBoger)\
**Post date:** [March 27, 2014, 5:32am UTC](https://support.wirenboard.com/t/1-wire/41/9 "2014-03-27T05:32:28Z")

</div>

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