From fcf32657c3e29fd9e8819da64562b7be0489fb53 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Wed, 16 Aug 2023 15:10:50 -0400 Subject: [PATCH 1/3] 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 eb3f6964..4aec288c 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 a6017c30..de857bf2 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 00000000..aa4e6b7c --- /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 00000000..fef11018 --- /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 00000000..b4171744 --- /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 00000000..3543f20a --- /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 00000000..5c1df6ce --- /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 00000000..111e886d --- /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 00000000..e69de29b 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 00000000..e69de29b From be5a5018c05d3bfcec4ec7dc11ffec46e3966a69 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 20 Aug 2023 13:17:19 -0400 Subject: [PATCH 2/3] Working udev rules. --- .../files/dont_sleep_usb_rulesd.conf | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf b/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf index aa4e6b7c..f5a5feb5 100644 --- a/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf +++ b/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf @@ -1,8 +1,4 @@ -# 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" +ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1038", ATTR{idProduct}=="1832", TEST=="power/autosuspend" ATTR{power/autosuspend}="-1" +ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1038", ATTR{idProduct}=="1832", TEST=="power/control" ATTR{power/control}="on" +ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="308f", ATTR{idProduct}=="0011", TEST=="power/autosuspend" ATTR{power/autosuspend}="-1" +ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="308f", ATTR{idProduct}=="0011", TEST=="power/control" ATTR{power/control}="on" \ No newline at end of file From e1e95fa205230be402cb2eca412112a5b526d64e Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 20 Aug 2023 13:21:54 -0400 Subject: [PATCH 3/3] Only need the autosuspend rule. --- ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf | 2 -- 1 file changed, 2 deletions(-) diff --git a/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf b/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf index f5a5feb5..16127a38 100644 --- a/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf +++ b/ansible/roles/power_management/files/dont_sleep_usb_rulesd.conf @@ -1,4 +1,2 @@ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1038", ATTR{idProduct}=="1832", TEST=="power/autosuspend" ATTR{power/autosuspend}="-1" -ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1038", ATTR{idProduct}=="1832", TEST=="power/control" ATTR{power/control}="on" ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="308f", ATTR{idProduct}=="0011", TEST=="power/autosuspend" ATTR{power/autosuspend}="-1" -ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="308f", ATTR{idProduct}=="0011", TEST=="power/control" ATTR{power/control}="on" \ No newline at end of file