#!/bin/sh -e # # Copyright 2016 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # Build and install raiden module and udev rules bold=$(tput bold) normal=$(tput sgr0) error() { echo "${bold}Install failed${normal}" } trap "error $LINENO" ERR fallback=false if [ "$1" = "--fallback" ]; then fallback=true shift fi if [ $# -ne 0 ]; then echo "" echo "Usage: ${bold}$0${normal} [--fallback]" echo "" echo "Install Raiden kernel module and udev rules for working with Case" echo "Closed Debug enabled devices." echo "" echo "${bold}--fallback${normal}" echo " Install udev rules to use usbserial directly without installing" echo " the raiden module. This can be used when the raiden module fails" echo " to build, or can not be used for other reasons." echo "" echo " The fallback solution will generate extra /dev/ttyUSB? entries" echo " for the SPI and possibly other CCD bridges. These should be" echo " ignored by you. Flashrom is smart enough to detach the kernel" echo " driver from the SPI bridge, so they will not interfere with" echo " flashing new firmware images over CCD." echo "" exit 1 fi if [ "$fallback" = "false" ]; then # # The normal path builds and installs the raiden module # { # # Don't build the module as root so it's easier to clean up after # make modules && # # Install the new module and update dependency and alias information # sudo make modules_install && sudo depmod -a } || { echo $bold echo "Building and/or installing the raiden module failed, you may" echo "want to use the --fallback option." echo $normal exit 1; } else # # The fallback path installs the fallback udev rule and its helper script. # sudo install -m644 51-google-serial-fallback.rules /etc/udev/rules.d sudo install add_usb_serial_id /lib/udev fi # # Install the udev rule for creating /dev/google symlinks. # sudo install -m644 51-google-serial.rules /etc/udev/rules.d # # Trigger udev to create the symlinks for any attached devices that have the # Google Vendor ID. Limiting triggering like this prevents unwanted resetting # of some device state, even with the change action specified. # for syspath in $(dirname $(grep -rxl --include=idVendor 18d1 /sys/devices)); do sudo udevadm trigger --action=change --parent-match=${syspath} done