summaryrefslogtreecommitdiff
path: root/extra/usb_serial/50-google-serial.rules
diff options
context:
space:
mode:
Diffstat (limited to 'extra/usb_serial/50-google-serial.rules')
-rw-r--r--extra/usb_serial/50-google-serial.rules14
1 files changed, 14 insertions, 0 deletions
diff --git a/extra/usb_serial/50-google-serial.rules b/extra/usb_serial/50-google-serial.rules
new file mode 100644
index 0000000000..ee2db62543
--- /dev/null
+++ b/extra/usb_serial/50-google-serial.rules
@@ -0,0 +1,14 @@
+#
+# Match a Google device with an interface that supports the simple serial
+# driver.
+#
+# The first rule matches the google VID and records the product name, USB bus
+# number and USB device path (the device path is the list of hub ports between
+# the root and the device). This becomes a unique name under which the second
+# rule creates the symlinks to the serial devices. The second rule will only
+# fire if the .GOOGLE_CCD_NAME variable has been set by the first rule. If
+# some other udev rule has set the same name previously, there would be a
+# conflict, so this name is chosen to be verbose and likely unique.
+#
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ENV{.GOOGLE_CCD_NAME}="$attr{product}-$attr{busnum}-$attr{devpath}"
+SUBSYSTEMS=="usb", ENV{.GOOGLE_CCD_NAME}!="", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="50", ATTRS{bInterfaceProtocol}=="01", OPTIONS+="string_escape=replace", SYMLINK+="google/$env{.GOOGLE_CCD_NAME}/serial/$attr{interface}"