|
@@ -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
|