summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhramshinr <khramshinr@gmail.com>2024-06-18 12:57:24 +0600
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2024-06-22 17:11:31 +0000
commitab4fae5765e8f1fbf8b5418b8ac26c2ac66bb519 (patch)
tree22da1cf9f1d93700a4b45fa0d4c8cde60bf706d6
parenta1c558b8762d1007b5c6f31a11626df73db89139 (diff)
downloadvyos-1x-ab4fae5765e8f1fbf8b5418b8ac26c2ac66bb519.tar.gz
vyos-1x-ab4fae5765e8f1fbf8b5418b8ac26c2ac66bb519.zip
T5949: Add option to disable USB autosuspend
(cherry picked from commit c0b2693cebc3429e1974a9cec5946fa88ffc0205)
-rw-r--r--data/templates/system/40_usb_autosuspend.j25
-rw-r--r--interface-definitions/system_option.xml.in6
-rwxr-xr-xsrc/conf_mode/system_option.py5
3 files changed, 16 insertions, 0 deletions
diff --git a/data/templates/system/40_usb_autosuspend.j2 b/data/templates/system/40_usb_autosuspend.j2
new file mode 100644
index 000000000..01ba86420
--- /dev/null
+++ b/data/templates/system/40_usb_autosuspend.j2
@@ -0,0 +1,5 @@
+{% set autosuspend = "auto" %}
+{% if disable_usb_autosuspend is vyos_defined %}
+{% set autosuspend = "on" %}
+{% endif %}
+ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="{{ autosuspend }}"
diff --git a/interface-definitions/system_option.xml.in b/interface-definitions/system_option.xml.in
index fe517d17d..ad423d9d1 100644
--- a/interface-definitions/system_option.xml.in
+++ b/interface-definitions/system_option.xml.in
@@ -183,6 +183,12 @@
</properties>
<defaultValue>12-hour</defaultValue>
</leafNode>
+ <leafNode name="disable-usb-autosuspend">
+ <properties>
+ <help>Disable autosuspend for all USB devices</help>
+ <valueless/>
+ </properties>
+ </leafNode>
</children>
</node>
</children>
diff --git a/src/conf_mode/system_option.py b/src/conf_mode/system_option.py
index a2e5db575..2c31703e9 100755
--- a/src/conf_mode/system_option.py
+++ b/src/conf_mode/system_option.py
@@ -35,6 +35,7 @@ airbag.enable()
curlrc_config = r'/etc/curlrc'
ssh_config = r'/etc/ssh/ssh_config.d/91-vyos-ssh-client-options.conf'
systemd_action_file = '/lib/systemd/system/ctrl-alt-del.target'
+usb_autosuspend = r'/etc/udev/rules.d/40-usb-autosuspend.rules'
time_format_to_locale = {
'12-hour': 'en_US.UTF-8',
'24-hour': 'en_GB.UTF-8'
@@ -85,6 +86,7 @@ def verify(options):
def generate(options):
render(curlrc_config, 'system/curlrc.j2', options)
render(ssh_config, 'system/ssh_config.j2', options)
+ render(usb_autosuspend, 'system/40_usb_autosuspend.j2', options)
cmdline_options = []
if 'kernel' in options:
@@ -155,6 +157,9 @@ def apply(options):
time_format = time_format_to_locale.get(options['time_format'])
cmd(f'localectl set-locale LC_TIME={time_format}')
+ cmd('udevadm control --reload-rules')
+
+
if __name__ == '__main__':
try:
c = get_config()