From fcf32657c3e29fd9e8819da64562b7be0489fb53 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Wed, 16 Aug 2023 15:10:50 -0400 Subject: [PATCH] Disable usb autosuspend for keyboard and mouse. USB auto suspend seems to only happen when the devices are plugged in at boot (which generally means when my laptop is connected to the dock before boot) but it is very annoying because some keypresses get lost and my mouse does not work unless I click first. --- ansible/playbook.yaml | 1 + ansible/roles/base/tasks/linux.yaml | 1 + .../files/dont_sleep_usb_rulesd.conf | 8 +++++ .../roles/power_management/tasks/common.yaml | 15 ++++++++++ .../roles/power_management/tasks/freebsd.yaml | 5 ++++ .../roles/power_management/tasks/linux.yaml | 9 ++++++ .../roles/power_management/tasks/main.yaml | 1 + .../roles/power_management/tasks/peruser.yaml | 29 +++++++++++++++++++ .../tasks/peruser_freebsd.yaml | 0 .../power_management/tasks/peruser_linux.yaml | 0 10 files changed, 69 insertions(+) create mode 100644 ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf create mode 100644 ansible/roles/power_management/tasks/common.yaml create mode 100644 ansible/roles/power_management/tasks/freebsd.yaml create mode 100644 ansible/roles/power_management/tasks/linux.yaml create mode 100644 ansible/roles/power_management/tasks/main.yaml create mode 100644 ansible/roles/power_management/tasks/peruser.yaml create mode 100644 ansible/roles/power_management/tasks/peruser_freebsd.yaml create mode 100644 ansible/roles/power_management/tasks/peruser_linux.yaml diff --git a/ansible/playbook.yaml b/ansible/playbook.yaml index eb3f696..4aec288 100644 --- a/ansible/playbook.yaml +++ b/ansible/playbook.yaml @@ -20,6 +20,7 @@ - build - sound - graphics + - power_management - gpg - fonts - alacritty diff --git a/ansible/roles/base/tasks/linux.yaml b/ansible/roles/base/tasks/linux.yaml index a6017c3..de857bf 100644 --- a/ansible/roles/base/tasks/linux.yaml +++ b/ansible/roles/base/tasks/linux.yaml @@ -7,6 +7,7 @@ - bind # dig - man-db - uutils-coreutils + - usbutils # for lsusb state: present - name: Start pkgfile update service diff --git a/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf b/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf new file mode 100644 index 0000000..aa4e6b7 --- /dev/null +++ b/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf @@ -0,0 +1,8 @@ +# blacklist for usb autosuspend +# 1038:1832 steel series mouse +# 308f:0011 k type keyboard +ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1038", ATTR{idProduct}=="1832", GOTO="power_usb_rules_end" +ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="308f", ATTR{idProduct}=="0011", GOTO="power_usb_rules_end" + +ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto" +LABEL="power_usb_rules_end" diff --git a/ansible/roles/power_management/tasks/common.yaml b/ansible/roles/power_management/tasks/common.yaml new file mode 100644 index 0000000..fef1101 --- /dev/null +++ b/ansible/roles/power_management/tasks/common.yaml @@ -0,0 +1,15 @@ +- import_tasks: tasks/freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/linux.yaml + when: 'os_flavor == "linux"' + +- include_tasks: + file: tasks/peruser.yaml + apply: + become: yes + become_user: "{{ initialize_user }}" + when: users is defined + loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}" + loop_control: + loop_var: initialize_user diff --git a/ansible/roles/power_management/tasks/freebsd.yaml b/ansible/roles/power_management/tasks/freebsd.yaml new file mode 100644 index 0000000..b417174 --- /dev/null +++ b/ansible/roles/power_management/tasks/freebsd.yaml @@ -0,0 +1,5 @@ +# - name: Install packages +# package: +# name: +# - foo +# state: present diff --git a/ansible/roles/power_management/tasks/linux.yaml b/ansible/roles/power_management/tasks/linux.yaml new file mode 100644 index 0000000..3543f20 --- /dev/null +++ b/ansible/roles/power_management/tasks/linux.yaml @@ -0,0 +1,9 @@ +- name: Install udev configuration + copy: + src: "files/{{ item }}_rulesd.conf" + dest: "/etc/udev/rules.d/{{ item }}.rules" + mode: 0644 + owner: root + group: wheel + loop: + - dont_sleep_usb diff --git a/ansible/roles/power_management/tasks/main.yaml b/ansible/roles/power_management/tasks/main.yaml new file mode 100644 index 0000000..5c1df6c --- /dev/null +++ b/ansible/roles/power_management/tasks/main.yaml @@ -0,0 +1 @@ +- import_tasks: tasks/common.yaml diff --git a/ansible/roles/power_management/tasks/peruser.yaml b/ansible/roles/power_management/tasks/peruser.yaml new file mode 100644 index 0000000..111e886 --- /dev/null +++ b/ansible/roles/power_management/tasks/peruser.yaml @@ -0,0 +1,29 @@ +- include_role: + name: per_user + +# - name: Create directories +# file: +# name: "{{ account_homedir.stdout }}/{{ item }}" +# state: directory +# mode: 0700 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - ".config/foo" + +# - name: Copy files +# copy: +# src: "files/{{ item.src }}" +# dest: "{{ account_homedir.stdout }}/{{ item.dest }}" +# mode: 0600 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - src: foo.conf +# dest: .config/foo/foo.conf + +- import_tasks: tasks/peruser_freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/peruser_linux.yaml + when: 'os_flavor == "linux"' diff --git a/ansible/roles/power_management/tasks/peruser_freebsd.yaml b/ansible/roles/power_management/tasks/peruser_freebsd.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/power_management/tasks/peruser_linux.yaml b/ansible/roles/power_management/tasks/peruser_linux.yaml new file mode 100644 index 0000000..e69de29