34 lines
1.7 KiB
Plaintext
34 lines
1.7 KiB
Plaintext
#
|
|
# 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}"
|