Make the udev rules easier to read and manage
This commit is contained in:
		| @@ -2,6 +2,7 @@ | ||||
|  | ||||
| Check up for QMK environment. | ||||
| """ | ||||
| import os | ||||
| import platform | ||||
| import shutil | ||||
| import subprocess | ||||
| @@ -9,6 +10,13 @@ import glob | ||||
|  | ||||
| from milc import cli | ||||
|  | ||||
| def _udev_rule(vid, pid = None): | ||||
|     """ Helper function that return udev rules | ||||
|     """ | ||||
|     if pid: | ||||
|         return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", ATTRS{idProduct}=="%s", MODE:="0666"' % (vid, pid) | ||||
|     else: | ||||
|         return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", MODE:="0666"' % vid | ||||
|  | ||||
| @cli.subcommand('Basic QMK environment checks') | ||||
| def doctor(cli): | ||||
| @@ -18,7 +26,6 @@ def doctor(cli): | ||||
|  | ||||
|     TODO(unclaimed): | ||||
|         * [ ] Compile a trivial program with each compiler | ||||
|         * [ ] Check for udev entries on linux | ||||
|     """ | ||||
|     cli.log.info('QMK Doctor is checking your environment.') | ||||
|  | ||||
| @@ -50,15 +57,17 @@ def doctor(cli): | ||||
|         # Checking for udev rules | ||||
|         udev_dir = "/etc/udev/rules.d/" | ||||
|         # These are the recommended udev rules | ||||
|         desired_rules = {"dfu": {'SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", MODE:="0666"', | ||||
|                                  'SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", MODE:="0666"', | ||||
|                                  'SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", MODE:="0666"'}, | ||||
|                          "tmk": {'SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"'}, | ||||
|                          "input-club": {'SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", MODE:="0666"'}, | ||||
|                          "stm32": {'SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", MODE:="0666"', | ||||
|                                    'SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"'}, | ||||
|                          "caterina": {'ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"', | ||||
|                                       'ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"'}} | ||||
|         desired_rules = dict(dfu = {_udev_rule("03eb", "2ff4"),_udev_rule("03eb", "2ffb"), _udev_rule("03eb", "2ff0")}, | ||||
|  | ||||
|                              tmk = {_udev_rule("feed")}, | ||||
|  | ||||
|                              input_club = {_udev_rule("1c11")}, | ||||
|  | ||||
|                              stm32 = {_udev_rule("1eaf", "0003"),_udev_rule("0483", "df11")}, | ||||
|  | ||||
|                              caterina = {'ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"', | ||||
|                                          'ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"'} | ||||
|                              ) | ||||
|         if os.path.exists(udev_dir): | ||||
|             udev_rules = [rule for rule in glob.iglob(os.path.join(udev_dir, "*.rules")) if os.path.isfile(rule)] | ||||
|             # Collect all rules from the config files | ||||
|   | ||||
		Reference in New Issue
	
	Block a user