summaryrefslogtreecommitdiff
path: root/docs/case_closed_debugging.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/case_closed_debugging.md')
-rw-r--r--docs/case_closed_debugging.md228
1 files changed, 2 insertions, 226 deletions
diff --git a/docs/case_closed_debugging.md b/docs/case_closed_debugging.md
index ab6202af92..05373f1de9 100644
--- a/docs/case_closed_debugging.md
+++ b/docs/case_closed_debugging.md
@@ -1,226 +1,2 @@
-# Case Closed Debugging (CCD)
-
-Case closed debugging is a feature of the EC codebase that can bridge UART
-consoles and SPI buses from a DUT (Device Under Test) to the host machine via
-USB. This allows the host to access and update much of the DUT's state. Use
-cases include automated hardware testing as well as simplified debug console
-access and firmware flashing for kernel and system developers.
-
-[TOC]
-
-## Prerequisites
-
-### Supported Devices
-
-We have added CCD support for two chip families: stm32 and gchips. Ryu,
-[`servo_micro`], and [`servo_v4`] use the stm32 support. Cr50 uses gchips
-support. All boards with Cr50 have support for case closed debugging.
-
-### Suzy-Q
-
-[Suzy-Q] is a Type-C dongle that exposes USB2.0/3.0 on a Type-A socket, case
-closed debugging over SBU1/2 on a micro Type-B socket, and charging over a
-Type-C socket. You will need one to access the case closed debugging USB
-interface. Full details, including where to buy and how to make your own are in
-the [Suzy-Q docs][Suzy-Q].
-
-### Chromium OS flashrom
-
-The functionality to flash the AP firmware image over case closed debugging is
-currently only supported by the ChromiumOS version of flashrom, so you will need
-to have that built. The easiest way to do so is to just setup the Chromium OS
-SDK.
-
-### Udev rules file
-
-There is a udev rules file, `extra/usb_serial/51-google-serial.rules` that
-should be installed in `/etc/udev/rules.d/` and udev should be told to reread
-its rules. This rules file can be installed using the `extra/usb_serial/install`
-script.
-
-### Kernel module
-
-A trivial Linux kernel module that identifies case closed debug capable USB
-interfaces can be found in `extra/usb_serial`. This module is also built and
-installed using the `extra/usb_serial/install` script.
-
-### Chromium OS chroot
-
-This is really only a requirement for using flashrom. If you only need access to
-the serial consoles then a checkout of the EC firmware repository should be
-sufficient.
-
-## Setup
-
-### Device Under Test (DUT)
-
-If the DUT doesn't have a new enough PD firmware you will need to update the
-firmware using a Servo, `ectool`, or MCU specific DFU mode, all of which are
-outside the scope of this document.
-
-Make sure your DUT is charged up, because while using [Suzy-Q] you can't
-currently charge the device.
-
-### Suzy-Q
-
-[Suzy-Q] should be connected to the DUT using the Type-C cable and connector
-integrated into [Suzy-Q]. This connector may need to be flipped to make case
-closed debugging work because the SBU lines that are used to expose the PD MCU's
-USB interface are not orientation invariant. Only one port on the DUT will
-support CCD. Try using the other port if the CCD device doesn't appear. [Suzy-Q]
-should be connected to the Host with a Type-A (Host) to Micro Type-B ([Suzy-Q])
-cable. Look for the device [`vendor:product ID`](#Troubleshooting) to your host
-sees the CCD device.
-
-### Host
-
-Depending on your kernel version the consoles may exist at `/dev/ttyUSB*`. If
-using those works for you, you don't need to install any drivers or Udev rules.
-
-If you want your host to generate useful symlinks for the different CCD
-consoles, install the Udev rule. It will generate symlinks in
-`/dev/google/<device name>/serial/<console name>` for each serial console that a
-device exports. It will also mark the DUT as incompatible with ModemManager.
-This last part ensures that ModemManager doesn't attempt to open and manipulate
-the various serial consoles exported by the device.
-
-The kernel module in `extra/usb_serial` should be compiled and installed in the
-running kernel. It just adds an entry into the `usbserial` module's driver table
-that causes `usbserial` to recognize any case closed debugging serial console as
-a simple USB serial device. This addition has already made its way into the
-upstream kernel (v3.19), so eventually this module can be removed. The
-`extra/usb_serial/install` script will build and install the kernel module as
-well as install the udev rules file.
-
-If for some reason you can't or don't want to use the kernel module the install
-script provides a `--fallback` option that will install a udev rules file and
-helper script instead that will add each new CCD capable device that is attached
-to the host to the list of devices that usbserial will handle. The disadvantage
-of this method is that it will generate `/dev/ttyUSB*` entries for any USB
-interface on the device that has an IN/OUT pair of bulk endpoints. This results
-in extra `/dev/ttyUSB*` entries that should not be used because they are
-actually I2C or SPI bridges.
-
-The raiden module solves this by identifying a CCD serial port by the subclass
-and protocol numbers of the USB device interface. This means that there does not
-need to be a list of CCD capable device IDs anywhere.
-
-## Basic CCD
-
-Here's the basic information for how to use CCD. Cr50 restricts debugging
-features to try and ensure only the device owner can use CCD. For information on
-how to get access to Cr50 CCD see the [Cr50 specific CCD doc][Cr50 CCD].
-
-### Consoles
-
-The serial consoles exposed by case closed debugging can be found in
-`/dev/ttyUSB*` or `/dev/google/<device name>/serial/<console name>` if you
-installed the Udev rules. The consoles can be opened with any program that you
-would normally use to open a TTY character device such as minicom or screen.
-
-If you installed the Udev rules, the console path will be determined based on
-the device and USB bus. The `<device name>` field is generated from the DUT's
-USB descriptor `iProduct` field as well as the USB bus index and device path on
-that bus (the list of port numbers for the hub connections between the Host and
-DUT). As such it is unique to a particular setup and won't change across reboots
-of either the Host or the DUT. The `<console name>` field is just the
-`iInterface` USB descriptor field from the particular USB interface that is
-associated with this console device. This allows a single DUT to expose multiple
-serial consoles in a discoverable and consistent manner.
-
-If you're using the consoles at `/dev/ttyUSB*`, you can just check which console
-it is by running a few commands like `version`.
-
-### Flash AP
-
-Programming the AP SPI flash with a new firmware image can be done with flashrom
-using the command:
-
-```bash
-(chroot) $ sudo /usr/sbin/flashrom -p raiden_debug_spi -w /build/<board>/firmware/image.bin
-```
-
-If there are more than one case closed debug capable devices connected to the
-host you will have to disambiguate the DUT with additional programmer
-parameters. Flashrom will list all DUTs that are found along with programmer
-parameters that can be used to identify the intended DUT. Flashrom programmer
-added to the programmer name (the `-p` argument) by appending a colon and then a
-colon and then a comma separated list of `key=value` pairs. The `serial`
-parameter is best for this.
-
-```bash
-(chroot) $ sudo /usr/sbin/flashrom -p raiden_debug_spi:serial=${SERIAL} -w /build/<board>/firmware/image.bin
-```
-
-Cr50 can be used to flash the AP or EC. You will need to specify the AP as the
-target device, so cr50 knows to flash the AP.
-
-```bash
-(chroot) $ sudo flashrom -p raiden_debug_spi:target=AP -w image.bin
-```
-
-### Flash EC
-
-You can use `util/flash_ec` to flash the EC. Steps for flashing the EC are more
-complex and board specific than flashing the AP. This script will handle all the
-board specific setup.
-
-## Known Issues
-
-1. Charge and the use of the Type-A port on [Suzy-Q] do not work, so for now if
- you need to attach a flash drive, or use Fastboot/adb you'll need to swap
- cables.
-
-2. Ryu implementation: software sync of the EC/PD processor and the jump from
- RO to RW versions will cause the case closed debugging USB device to
- disconnect and reconnect. This can be prevented by disabling software sync.
- This is done by setting the `GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC` and
- `GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC` flags with`gbb_utility.
-
-## Troubleshooting
-
-Check for the CCD device using the following `vendor:product` IDs
-
-Device | VID:PID
---------------- | -----------
-[`servo_micro`] | `18d1:501a`
-[`servo_v4`] | `18d1:501b`
-[`servo_v2`] | `18d1:5002`
-`ryu` | `18d1:500f`
-`cr50` | `18d1:5014`
-
-See the [`SERVO_PID_DEFAULTS`] in the servo code for all values.
-
-### Can't see the CCD device on the host
-
-1. Type-C cable from [Suzy-Q] to the DUT may be upside down. The SBU lines used
- for case closed debugging are not orientation invariant.
-1. You may be using the wrong device port. Try using the other port.
-1. The device may not be charged enough to boot. [Suzy-Q] can't charge the
- device or supply enough power for the DUT to boot. Make sure the device is
- somewhat charged.
-
-### No console interfaces are available in the "/dev/google/<name>" directory
-
-1. Kernel module may not be loaded.
-1. Udev rules file might not be installed correctly.
-1. PD firmware version may be too old.
-1. Type-C cable from [Suzy-Q] to the DUT may be upside down. The SBU lines used
- for case closed debugging are not orientation invariant.
-
-### Garbage messages (AT command set) show up on one or more consoles
-
-1. ModemManager has claimed the interface, Udev rules file may not be installed
- correctly.
-
-### Console interfaces appear and then quickly disappear
-
-1. Software sync from the AP has replaced the PD firmware with a version that
- is not compatible with case closed debugging.
-
-[`servo_v4`]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/servo_v4.md
-[`servo_v2`]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/servo_v2.md
-[`servo_micro`]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/servo_micro.md
-[Cr50 CCD]: ./case_closed_debugging_cr50.md
-[Suzy-Q]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/ccd.md#suzyq-suzyqable
-[`SERVO_PID_DEFAULTS`]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/ff8e96686ef3d9ad2e26125ca8268cb7f7666f6c/servo/interface/ftdi_common.py#28
+The has been moved into a [different
+branch](https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging.md)