ПРОГРАММНОЕ ОТКЛЮЧЕНИЕ ПИТАНИЯ НА USB ПОРТЕ

Доброго времени суток!!! имеется девайс huawei e369. Во время работы иногда отваливается, решается отключением/подключением к юсб.
Задача: реализовать это программно, т.е чтобы модем отключался/подключался не аппаратно, а программно.
вот что сделал:
через
ls /sys/bus/usb/devices 
определил куда подключен модем.
/sys/bus/usb/devices/2-1 
тут модем живет.
вот этой штукой должен выключится:
echo suspend > /sys/bus/usb /devices/2-1//power/level
но не работает, выводится:
 bash: echo: ошибка записи: Недопустимый аргумент
включатся должно так echo on > /sys/bus/usb /devices/2-1/power/level
Нашел что ядро должно быть собрано с опцией CONFIG_USB_SUSPEND, как это сделать!!!
Собрать, как же ещё это сделать.
Правда, есть подозрения, что имеется некий другой способ отключения USB-девайса, реализованный в udisks –detach , что работает на стандартной сборке ядра. У меня так пока и не дошли руки распотрошить udisks, чтобы найти как это там сделано.
а udisks будет именно питание отключать??? что-то как я понял он просто отмаунтивает устройства.
а способ которым я пробую пишут что работает, только ядро должно быть с соответсвующими параметрами собрано.
собственно в этом и проблема, я ядро ниразу не пересобирал, вот и возникают трудности.
udisks –unmount отмонтирует, а udisks –detach отключает флешку так, что она гаснет и полностью исчезает из устройств. Вот питание вольтметром не замерял, но вы можете проверить :)
Во-первых, в стандартном ядре арча есть такая опция
$ zgrep -i suspend /proc/config.gz 
CONFIG_USB_SUSPEND=y
Во-вторых, питание на USB этими командами не снимается (и вообще, афаик, снятие питания на шине USB стандартом не предусмотрено).

Команда suspend (on) относится только к устройству на шине USB.

М.б. поможет - unbind/bind для устройства.
Natrio
udisks –unmount отмонтирует, а udisks –detach отключает флешку так, что она гаснет и полностью исчезает из устройств. Вот питание вольтметром не замерял, но вы можете проверить :)
Не катит, только что замерял вольтметром. После eject напряжение как и было 5В, а после detach флешка вообще нервно моргать светодиодом стала :)
Кстати, вот документация на это дело:
http://www.mjmwired.net/kernel/Document … gement.txt
Мельком пробежал, может что упустил, но вроде так просто питание с порта не отключить, к сожалению.
VlaoMao
Кстати, вот документация на это дело:
http://www.mjmwired.net/kernel/Document ... gement.txt
Мельком пробежал, может что упустил, но вроде так просто питание с порта не отключить, к сожалению.
Понимаю, что срок большой. Но может есть решение с данным вопросом? Мне тоже надо так отключать модем
shtrihs, уже несколько раз описывал в разных топиках как это делается (два способа), поищи - лень все писать по новой.

PS - у меня накрылась (точнее частенько глючит и сыпит ошибками) шина с вебкамерой - пришлось написать юнит, который отключает при старте эту шину (на этой шине два порта, приходится обходится двумя другими).

EDIT 1 - Если коротко - находишь шину, далее два способа, смотря что нужно
1. Переинициализация USB устройства без физического его отключения (unbind - bind)
echo 'X-Y.y' > /sys/bus/usb/drivers/usb/unbind
echo 'X-Y.y' > /sys/bus/usb/drivers/usb/bind
2. Отключение/включение шины (физический порт) USB (authorized)
echo 0 > /sys/bus/usb/devices/usbX/X-Y/X-Y.y/authorized
echo 1 > /sys/bus/usb/devices/usbX/X-Y/X-Y.y/authorized
Ошибки не исчезают с опытом - они просто умнеют
vasek
shtrihs, уже несколько раз описывал в разных топиках как это делается (два способа), поищи - лень все писать по новой.

PS - у меня накрылась (точнее частенько глючит и сыпит ошибками) шина с вебкамерой - пришлось написать юнит, который отключает при старте эту шину (на этой шине два порта, приходится обходится двумя другими).

EDIT 1 - Если коротко - находишь шину, далее два способа, смотря что нужно
1. Переинициализация USB устройства без физического его отключения (unbind - bind)
echo 'X-Y.y' > /sys/bus/usb/drivers/usb/unbind
echo 'X-Y.y' > /sys/bus/usb/drivers/usb/bind
2. Отключение/включение шины (физический порт) USB (authorized)
echo 0 > /sys/bus/usb/devices/usbX/X-Y/X-Y.y/authorized
echo 1 > /sys/bus/usb/devices/usbX/X-Y/X-Y.y/authorized
Это я всё пробывал. Не отрубает питание

Есть четкая последовательность действий http://sysadm.pp.ua/linux/usb.html

Но у меня не срабатывает, так как CONFIG_USB_SUSPEND не включена. У меня Ubuntu 18.04

grep CONFIG_USB_SUSPEND /boot/config-4.15.0-76-generic
Ничего не выдаёт. То есть в принципе нету этого параметра.

Вот в инете нашёл

««Starting with the 3.10 kernel release, dynamic PM support for USB is present whenever the kernel was built with CONFIG_PM_RUNTIME enabled. The CONFIG_USB_SUSPEND option has been eliminated.»»

Это действительно так? Как тогда быть?

Ядро я пересобирать не умею. А где найти дистрибутив с включенной опцией, мне так и не понятно.
 
Зарегистрироваться или войдите чтобы оставить сообщение.