Устройства на USB и autosuspend

Есть у меня одно USB устройство (DS9490), которое, будучи вставлено в один из внешних разъёмов Wirenboard 6.9.1, работает-работает, а потом, через несколько дней, перестаёт. После reboot’а всего WB оно начинает опять беспроблемно работать, как ни в чём не бывало. И вот сейчас я обратил внимание, что интервалы, через который устройство перестаёт работать, уж больно похожие… в районе пяти дней. Собственно, из этого и проистекает вопрос: не настроен ли по умолчанию в WB6 autosuspend USB устройств? Правильно ли я понимаю, что там стоит iMX6 со встроенным USB контроллером (т.е. WB-шный софт его должен при старте настраивать с какими-то параметрами…)?

Добрый день.
Проверяю

lsusb   
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 029: ID 1e0e:9011 Qualcomm / Option Mobile Composite Device Bus
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0bda:b720 Realtek Semiconductor Corp. RTL8723BU 802.11b/g/n WLAN Adapter
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Проверим параметры для устройств

cat /sys/bus/usb/devices/usb*/power/control 
auto
auto
auto
auto
auto
auto

Ну и включен ли autosuspend:

cat /sys/module/usbcore/parameters/autosuspend
2

Если для какого-то устройства он лишний - то в общем достаточно создать “/etc/udev/rules.d/usb-power.rules” (для примера - “Bus 002 Device 002: ID 0bda:b720 Realtek Semiconductor Corp. RTL8723BU 802.11b/g/n WLAN Adapter”) с

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0bda", ATTR{idProduct}=="b720", TEST=="power/control", ATTR{power/control}="on"

Спасибо за подсказку, autosuspend действительно был включен, но после его выключения проблема не ушла (хотя, почему-то, стала проявляться нерегулярно). Похоже, дело не в бобине :frowning:

А что в логах ядра при этом (пропадании)?

В логах ядра ничего нет, owfs - это не ядерное по. В syslog оно ругается

OWFS[733]: CONNECT: ow_reset.c:(41) 1-wire bus short circuit.

но у меня крепнет подозрение, что никакого “коротыша” там нет, и это сообщение - следствие какого-то бага (типа переполнения счётчика) именно в самом owfs. Но
это всё пока только на уровне предположений…

То есть подключено по usb устройство на DS9481R или аналогичном чипе?
Ну, в любом случае при подключении/отключении ведь ядро же что-то выводит?

При подключении (или boot’е) пишет

kernel: usb 2-1.2: New USB device found, idVendor=04fa, idProduct=2490, bcdDevice= 0.02

потом - нет (вообще). От этого и подозрение на программный баг.

А если отключить (вытащить) - событие “disconnect”? Тогда оно же будет при программном отключении устройства.

Если вы клоните к тому, чтобы программно “передёргивать” это устройство, то я так уже пытался делать (через usbreset и самого DS9490 и контроллера), но получил какие-то странные результаты. Сейчас жду повторения проблемы (уже, блин, десять дней, вместо обычных пяти…), чтобы провести ещё один чистый эксперимент.

Не, я про то что если срабатывает suspend - то вв логах как раз будет такое же как при физическом отключении.

Хм… именно disconnect ? Впрочем, я поискал все события с этим устройством по USB адресу - они все случались только при (пере)загрузке. Выходит ещё одно подтверждение, что к железу (и suspend’у) эта проблема отношения не имеет…

Кажется что-то похожее на это:
Проверьте напряжение на самом проводе данных относительно Gnd. Если оно при переставшей работать шине близко к нулю - вероятно что защелкивается что-то.
Ну и в owfs подобное выводится (краем глаза глянул в исходники) когда шина данных не поднимается после стартового импульса мастера дольше чем 60+20мкс.