diff options
Diffstat (limited to 'extra/usb_serial/51-google-serial.rules')
-rw-r--r-- | extra/usb_serial/51-google-serial.rules | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/extra/usb_serial/51-google-serial.rules b/extra/usb_serial/51-google-serial.rules new file mode 100644 index 0000000000..3dedac1b1f --- /dev/null +++ b/extra/usb_serial/51-google-serial.rules @@ -0,0 +1,33 @@ +# +# Rules for Google Case Closed Debugging devices. +# +# 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 directory name under which +# later rules can create symlinks. If this rule doesn't match udev will skip +# the rest of this files rules. +# +# This rule intentionally matches using SUBSYSTEMS and ATTRS instead of +# SUBSYSTEM and ATTR so that the GOOGLE_CCD_NAME is available to all nodes +# that descend from a Google USB device (this includes all USB interface nodes +# as well as all of the TTY nodes derived from CCD USB interfaces). +# +SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ENV{GOOGLE_CCD_NAME}="$attr{product}-$attr{busnum}-$attr{devpath}" + +# +# Force ModemManager to ignore all Google case closed debug devices. It would +# be better to just ignore the case closed debug serial console interfaces, but +# ModemManager doesn't look at the usb_interface udev node, it looks at the +# usb_device node, so you have to mark the entire device as incompatible with +# ModemManager. +# +# This node could lose the match against the usb_device DEVTYPE and still work, +# it would just add extraneous ID_MM_DEVICE_IGNORE tags to the TTY and USB +# interface nodes. +# +SUBSYSTEM=="usb", ENV{GOOGLE_CCD_NAME}!="", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff5001:*", ENV{ID_MM_DEVICE_IGNORE}="1" + +# +# Construct a symlink to a TTY generated from a CCD USB serial interface. +# +SUBSYSTEM=="tty", 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}" |