1*4f2df630SAndroid Build Coastguard Worker# CCD How-tos 2*4f2df630SAndroid Build Coastguard WorkerThis doc contains tutorials for using CCD. These tutorials only cover using GSC 3*4f2df630SAndroid Build Coastguard WorkerCCD. Some use cases will be very similar to using CCD from ryu, servo micro, or 4*4f2df630SAndroid Build Coastguard Workerservo v4, but these guides are not guaranteed to work for them. More detailed 5*4f2df630SAndroid Build Coastguard Workerinstructions on how to use different parts of CCD are in the 6*4f2df630SAndroid Build Coastguard Worker[GSC CCD doc](case_closed_debugging_gsc.md). 7*4f2df630SAndroid Build Coastguard Worker 8*4f2df630SAndroid Build Coastguard Worker[TOC] 9*4f2df630SAndroid Build Coastguard Worker 10*4f2df630SAndroid Build Coastguard Worker--- 11*4f2df630SAndroid Build Coastguard Worker## How to Use SuzyQ 12*4f2df630SAndroid Build Coastguard WorkerThis goes through the steps to connect SuzyQ and start using CCD. 13*4f2df630SAndroid Build Coastguard Worker 14*4f2df630SAndroid Build Coastguard Worker### Requirements 15*4f2df630SAndroid Build Coastguard Worker 16*4f2df630SAndroid Build Coastguard Worker* A [SuzyQ]. If you don't have one, they're sold at [sparkfun] 17*4f2df630SAndroid Build Coastguard Worker* A ChromeOS device that supports CCD. 18*4f2df630SAndroid Build Coastguard Worker 19*4f2df630SAndroid Build Coastguard Worker### Steps 20*4f2df630SAndroid Build Coastguard Worker 21*4f2df630SAndroid Build Coastguard Worker1. **Charge your chromebook.** Suzyq can't charge your device. If it's not 22*4f2df630SAndroid Build Coastguard Worker charged, the device may run out of power while debugging. 23*4f2df630SAndroid Build Coastguard Worker 24*4f2df630SAndroid Build Coastguard Worker2. **Connect the type A side of Suzyq to your workstation.** 25*4f2df630SAndroid Build Coastguard Worker 26*4f2df630SAndroid Build Coastguard Worker3. **Connect the type C part of your Suzyq to your chromebook.** 27*4f2df630SAndroid Build Coastguard Worker 28*4f2df630SAndroid Build Coastguard Worker4. **Verify the CCD device exists.** 29*4f2df630SAndroid Build Coastguard Worker 30*4f2df630SAndroid Build Coastguard Worker * **Look for a device with the right vid:pid.** Cr50 vid:pid is 18d1:5014. 31*4f2df630SAndroid Build Coastguard Worker You can use lsusb to check that it shows up. 32*4f2df630SAndroid Build Coastguard Worker 33*4f2df630SAndroid Build Coastguard Worker > lsusb -vd 18d1:5014 34*4f2df630SAndroid Build Coastguard Worker 35*4f2df630SAndroid Build Coastguard Worker * **Debug connection issues**. If the device doesn't show up, disconnect 36*4f2df630SAndroid Build Coastguard Worker suzyq from the DUT and either flip it or plug it into the other port. If 37*4f2df630SAndroid Build Coastguard Worker your device has 2 type c ports, there are 4 ways to connect suzyq. Only 38*4f2df630SAndroid Build Coastguard Worker one works. 39*4f2df630SAndroid Build Coastguard Worker 40*4f2df630SAndroid Build Coastguard Worker * **Port:** The DUT only supports CCD on one type C port. Try the 41*4f2df630SAndroid Build Coastguard Worker other port if CCD doesn't show up. 42*4f2df630SAndroid Build Coastguard Worker 43*4f2df630SAndroid Build Coastguard Worker * **Orientation:** Suzyq is orientation dependent, so it may be on the 44*4f2df630SAndroid Build Coastguard Worker correct port, but it needs to be flipped. 45*4f2df630SAndroid Build Coastguard Worker 46*4f2df630SAndroid Build Coastguard Worker5. **Check basic CCD functionality**. After the CCD device shows up, the cr50, ec, 47*4f2df630SAndroid Build Coastguard Worker and ap consoles should show up in /dev/ttyUSB\* 48*4f2df630SAndroid Build Coastguard Worker 49*4f2df630SAndroid Build Coastguard Worker * Search for console names. 50*4f2df630SAndroid Build Coastguard Worker 51*4f2df630SAndroid Build Coastguard Worker > ls /dev/ttyUSB* 52*4f2df630SAndroid Build Coastguard Worker 53*4f2df630SAndroid Build Coastguard Worker * If you run the `ls` command before and after connecting suzyq, then the 54*4f2df630SAndroid Build Coastguard Worker new devices should be the CCD consoles. The consoles are ordered. Cr50 55*4f2df630SAndroid Build Coastguard Worker should be the lowest ttyUSB device, then AP, and EC should have the 56*4f2df630SAndroid Build Coastguard Worker highest number. Running `ver` on all of them could also let you know 57*4f2df630SAndroid Build Coastguard Worker which one is which if you don't want to remember the order. 58*4f2df630SAndroid Build Coastguard Worker 59*4f2df630SAndroid Build Coastguard Worker * Open the console. 60*4f2df630SAndroid Build Coastguard Worker 61*4f2df630SAndroid Build Coastguard Worker > minicom -D /dev/ttyUSB0 62*4f2df630SAndroid Build Coastguard Worker 63*4f2df630SAndroid Build Coastguard Worker * AP and EC consoles may be read-only depending on the CCD state. See the 64*4f2df630SAndroid Build Coastguard Worker [Setup CCD] instructions to enable them. Being able to use the cr50 65*4f2df630SAndroid Build Coastguard Worker console is a good enough sign that your Suzyq setup is ok. 66*4f2df630SAndroid Build Coastguard Worker 67*4f2df630SAndroid Build Coastguard Worker--- 68*4f2df630SAndroid Build Coastguard Worker## Setup CCD for FAFT 69*4f2df630SAndroid Build Coastguard Worker 70*4f2df630SAndroid Build Coastguard WorkerThese are the most generic instructions. 71*4f2df630SAndroid Build Coastguard Worker 72*4f2df630SAndroid Build Coastguard WorkerThere are other ways to open ccd that may be faster, but they don't work for all 73*4f2df630SAndroid Build Coastguard Workerdevices. You can see the other open methods in the ccd setup doc to find other 74*4f2df630SAndroid Build Coastguard Workerways if this way doesn't work for you. 75*4f2df630SAndroid Build Coastguard Worker 76*4f2df630SAndroid Build Coastguard WorkerThe entering dev mode instructions will be for clamshell devices. If your device 77*4f2df630SAndroid Build Coastguard Workeris not a clamshell, check out the [full dev mode instructions]. 78*4f2df630SAndroid Build Coastguard Worker 79*4f2df630SAndroid Build Coastguard Worker#### Requirements 80*4f2df630SAndroid Build Coastguard Worker 81*4f2df630SAndroid Build Coastguard Worker* A [Type-C Servo V4]. FAFT needs the ethernet and usb key to run. You can't 82*4f2df630SAndroid Build Coastguard Worker run with suzyq. 83*4f2df630SAndroid Build Coastguard Worker* A micro usb cable. 84*4f2df630SAndroid Build Coastguard Worker* A chromeos PD charger. 85*4f2df630SAndroid Build Coastguard Worker* A ChromeOS device that supports CCD. 86*4f2df630SAndroid Build Coastguard Worker* Access to the AP console. 87*4f2df630SAndroid Build Coastguard Worker* The device needs to be able to boot. 88*4f2df630SAndroid Build Coastguard Worker* The GBB\_FLAG\_FORCE\_DEV\_SWITCH\_ON GBB flag is cleared. 89*4f2df630SAndroid Build Coastguard Worker 90*4f2df630SAndroid Build Coastguard Worker### Steps 91*4f2df630SAndroid Build Coastguard Worker 92*4f2df630SAndroid Build Coastguard Worker 93*4f2df630SAndroid Build Coastguard Worker1. **Charge your chromebook.** Servo V4 can charge your device, but it's good 94*4f2df630SAndroid Build Coastguard Worker to charge it before setting up ccd. Servo v4 may encounter different issues 95*4f2df630SAndroid Build Coastguard Worker if your device isn't charged. 96*4f2df630SAndroid Build Coastguard Worker 97*4f2df630SAndroid Build Coastguard Worker2. **Connect the type A side of the micro usb cable to your workstation.** 98*4f2df630SAndroid Build Coastguard Worker 99*4f2df630SAndroid Build Coastguard Worker3. **Connect the micro usb of your cable to "HOST" port of servo v4.** 100*4f2df630SAndroid Build Coastguard Worker 101*4f2df630SAndroid Build Coastguard Worker4. **Update Servo V4 from the chroot.** 102*4f2df630SAndroid Build Coastguard Worker 103*4f2df630SAndroid Build Coastguard Worker chroot > sudo emerge servo-firmware 104*4f2df630SAndroid Build Coastguard Worker chroot > sudo servo_updater -b servo_v4 105*4f2df630SAndroid Build Coastguard Worker 106*4f2df630SAndroid Build Coastguard Worker5. **Connect the PD charger to the "DUT POWER" port of servo v4.** 107*4f2df630SAndroid Build Coastguard Worker 108*4f2df630SAndroid Build Coastguard Worker6. **Connect the type C part of the Servo V4 to your chromebook.** The DUT 109*4f2df630SAndroid Build Coastguard Worker should now be charging through servo v4. Check that the green light in 110*4f2df630SAndroid Build Coastguard Worker the corner of servo v4 lights up. 111*4f2df630SAndroid Build Coastguard Worker 112*4f2df630SAndroid Build Coastguard Worker7. **Verify the CCD device exists.** 113*4f2df630SAndroid Build Coastguard Worker 114*4f2df630SAndroid Build Coastguard Worker * **Look for a device with the right vid:pid.** Cr50 vid:pid is 18d1:5014. 115*4f2df630SAndroid Build Coastguard Worker You can use lsusb to check that it shows up. 116*4f2df630SAndroid Build Coastguard Worker 117*4f2df630SAndroid Build Coastguard Worker > lsusb -vd 18d1:5014 118*4f2df630SAndroid Build Coastguard Worker 119*4f2df630SAndroid Build Coastguard Worker * **Debug connection issues**. 120*4f2df630SAndroid Build Coastguard Worker 121*4f2df630SAndroid Build Coastguard Worker * **Port:** The DUT only supports CCD on one type C port. Try the 122*4f2df630SAndroid Build Coastguard Worker other port if CCD doesn't show up. 123*4f2df630SAndroid Build Coastguard Worker 124*4f2df630SAndroid Build Coastguard Worker * **Orientation:** Orientation shouldn't matter with Servo V4. If it 125*4f2df630SAndroid Build Coastguard Worker does, please file a bug. 126*4f2df630SAndroid Build Coastguard Worker 127*4f2df630SAndroid Build Coastguard Worker * **Charge State:** Make sure the the green light in the corner of 128*4f2df630SAndroid Build Coastguard Worker servo v4 is lit. 129*4f2df630SAndroid Build Coastguard Worker 130*4f2df630SAndroid Build Coastguard Worker8. **Connect to the Cr50 console**. After the CCD device shows up, the cr50, ec, 131*4f2df630SAndroid Build Coastguard Worker and ap consoles should show up in /dev/ttyUSB\* 132*4f2df630SAndroid Build Coastguard Worker 133*4f2df630SAndroid Build Coastguard Worker * Search for console names. 134*4f2df630SAndroid Build Coastguard Worker 135*4f2df630SAndroid Build Coastguard Worker > ls /dev/ttyUSB* 136*4f2df630SAndroid Build Coastguard Worker 137*4f2df630SAndroid Build Coastguard Worker * If you run the `ls` command before and after connecting the Servo V4 138*4f2df630SAndroid Build Coastguard Worker type C cable to the DUT, then the new devices should be the CCD 139*4f2df630SAndroid Build Coastguard Worker consoles. The consoles are ordered. Cr50 should be the lowest ttyUSB 140*4f2df630SAndroid Build Coastguard Worker device, then AP, and EC should have the highest number. Running `ver` 141*4f2df630SAndroid Build Coastguard Worker on all of them could also let you know which one is which if you don't 142*4f2df630SAndroid Build Coastguard Worker want to remember the order. 143*4f2df630SAndroid Build Coastguard Worker **Servo V4 has it's own console. It might be useful to do this step to 144*4f2df630SAndroid Build Coastguard Worker find the device consoles** 145*4f2df630SAndroid Build Coastguard Worker 146*4f2df630SAndroid Build Coastguard Worker * Open the console. 147*4f2df630SAndroid Build Coastguard Worker 148*4f2df630SAndroid Build Coastguard Worker > minicom -D /dev/ttyUSB1 149*4f2df630SAndroid Build Coastguard Worker 150*4f2df630SAndroid Build Coastguard Worker * Make sure `version` shows some version information. 151*4f2df630SAndroid Build Coastguard Worker 152*4f2df630SAndroid Build Coastguard Worker9. **Open CCD.** Here's the most generic way to open ccd. For the full open 153*4f2df630SAndroid Build Coastguard Worker options see [Setup CCD]. 154*4f2df630SAndroid Build Coastguard Worker 155*4f2df630SAndroid Build Coastguard Worker * **[Enter dev mode](case_closed_debugging_gsc.md#enter-dev-mode).** 156*4f2df630SAndroid Build Coastguard Worker These are clamshell instructions for other types of chromeOS devices 157*4f2df630SAndroid Build Coastguard Worker refer to the full setup doc. 158*4f2df630SAndroid Build Coastguard Worker 159*4f2df630SAndroid Build Coastguard Worker * Boot into recovery by pressing the power button, refresh, and 160*4f2df630SAndroid Build Coastguard Worker escape. 161*4f2df630SAndroid Build Coastguard Worker 162*4f2df630SAndroid Build Coastguard Worker * At the recovery screen press Ctrl+D and enter. 163*4f2df630SAndroid Build Coastguard Worker 164*4f2df630SAndroid Build Coastguard Worker * **Use gsctool to open Cr50 from the AP. Press the power button when 165*4f2df630SAndroid Build Coastguard Worker prompted.** This will take ~5 minutes. 166*4f2df630SAndroid Build Coastguard Worker 167*4f2df630SAndroid Build Coastguard Worker AP > gsctool -a -o 168*4f2df630SAndroid Build Coastguard Worker 169*4f2df630SAndroid Build Coastguard Worker10. **Set all capabilities to Always** and confirm they're Always. 170*4f2df630SAndroid Build Coastguard Worker 171*4f2df630SAndroid Build Coastguard Worker cr50 > ccd reset factory 172*4f2df630SAndroid Build Coastguard Worker cr50 > ccd 173*4f2df630SAndroid Build Coastguard Worker 174*4f2df630SAndroid Build Coastguard Worker11. **Enable Testlab Mode.** Tap the power button when prompted. This will 175*4f2df630SAndroid Build Coastguard Worker take a couple of seconds. 176*4f2df630SAndroid Build Coastguard Worker 177*4f2df630SAndroid Build Coastguard Worker cr50 > ccd testlab enable 178*4f2df630SAndroid Build Coastguard Worker 179*4f2df630SAndroid Build Coastguard Worker 180*4f2df630SAndroid Build Coastguard Worker12. **Start servod and make sure the EC console works.** 181*4f2df630SAndroid Build Coastguard Worker 182*4f2df630SAndroid Build Coastguard Worker 183*4f2df630SAndroid Build Coastguard Worker * enter chroot with `cros_sdk --no-ns-pid` 184*4f2df630SAndroid Build Coastguard Worker 185*4f2df630SAndroid Build Coastguard Worker * start servod 186*4f2df630SAndroid Build Coastguard Worker 187*4f2df630SAndroid Build Coastguard Worker chroot > sudo servod -b $BOARD 188*4f2df630SAndroid Build Coastguard Worker 189*4f2df630SAndroid Build Coastguard Worker * Check EC uart works. 190*4f2df630SAndroid Build Coastguard Worker 191*4f2df630SAndroid Build Coastguard Worker chroot > dut-control ec_board 192*4f2df630SAndroid Build Coastguard Worker 193*4f2df630SAndroid Build Coastguard Worker13. **Try running a test** Use autotest_dir, so you don't need to about what 194*4f2df630SAndroid Build Coastguard Worker autotest packages to emerge. firmware_ECHash is just a short test. If your 195*4f2df630SAndroid Build Coastguard Worker board doesn't have an EC, try something else. Use firmware_FAFTSetup to 196*4f2df630SAndroid Build Coastguard Worker verify the setup will work with faft-ec and faft-bios. 197*4f2df630SAndroid Build Coastguard Worker 198*4f2df630SAndroid Build Coastguard Worker chroot > test_that $IP --autotest_dir \ 199*4f2df630SAndroid Build Coastguard Worker ~/trunk/src/third_party/autotest/files/ firmware_ECHash 200*4f2df630SAndroid Build Coastguard Worker 201*4f2df630SAndroid Build Coastguard Worker14. **Debug Setup** 202*4f2df630SAndroid Build Coastguard Worker 203*4f2df630SAndroid Build Coastguard Worker 204*4f2df630SAndroid Build Coastguard Worker * **Cr50 capabilities:** EC uart capability needs to always be accessible. 205*4f2df630SAndroid Build Coastguard Worker **Make sure UartGscTxECRx and all other capabilities are always.** 206*4f2df630SAndroid Build Coastguard Worker 207*4f2df630SAndroid Build Coastguard Worker cr50 > ccd 208*4f2df630SAndroid Build Coastguard Worker 209*4f2df630SAndroid Build Coastguard Worker * **Make sure servod started using the CCD device**. Verify the ccd 210*4f2df630SAndroid Build Coastguard Worker serialname has the right format. Cr50 serialname should have the 211*4f2df630SAndroid Build Coastguard Worker format [0-9a-f]{8}-[0-9a-f]{8} 212*4f2df630SAndroid Build Coastguard Worker 213*4f2df630SAndroid Build Coastguard Worker chroot > dut-control ccd_serialname 214*4f2df630SAndroid Build Coastguard Worker 215*4f2df630SAndroid Build Coastguard Worker If the control doesn't exist or the serianame is wrong try to find 216*4f2df630SAndroid Build Coastguard Worker ccd serialname and start servod explicitly selecting it. 217*4f2df630SAndroid Build Coastguard Worker 218*4f2df630SAndroid Build Coastguard Worker find serialname and use it to restart servod. 219*4f2df630SAndroid Build Coastguard Worker 220*4f2df630SAndroid Build Coastguard Worker chroot > lsusb -vd 18d1:5014 | grep iSerial 221*4f2df630SAndroid Build Coastguard Worker chroot > sudo servod -b $BOARD -s $SERIALNAME 222*4f2df630SAndroid Build Coastguard Worker 223*4f2df630SAndroid Build Coastguard Worker 224*4f2df630SAndroid Build Coastguard Worker### Final Checks 225*4f2df630SAndroid Build Coastguard Worker 226*4f2df630SAndroid Build Coastguard Worker * All capabilities are Always 227*4f2df630SAndroid Build Coastguard Worker 228*4f2df630SAndroid Build Coastguard Worker cr50 > ccd 229*4f2df630SAndroid Build Coastguard Worker 230*4f2df630SAndroid Build Coastguard Worker * Testlab mode is enabled 231*4f2df630SAndroid Build Coastguard Worker 232*4f2df630SAndroid Build Coastguard Worker cr50 > ccd testlab 233*4f2df630SAndroid Build Coastguard Worker 234*4f2df630SAndroid Build Coastguard Worker * EC uart works 235*4f2df630SAndroid Build Coastguard Worker 236*4f2df630SAndroid Build Coastguard Worker chroot > dut-control ec_board 237*4f2df630SAndroid Build Coastguard Worker--- 238*4f2df630SAndroid Build Coastguard Worker## I Just Want to Disable HW Write Protect 239*4f2df630SAndroid Build Coastguard WorkerCr50 has a couple of ways to remove HW write protect. The biggest difference in 240*4f2df630SAndroid Build Coastguard Workerthe process is whether or not you want to open the case and whether or not you 241*4f2df630SAndroid Build Coastguard Workerneed write protect disable to be permanent. 242*4f2df630SAndroid Build Coastguard Worker 243*4f2df630SAndroid Build Coastguard Worker**Opening CCD might require the AP can boot. If you're relying on CCD to recover 244*4f2df630SAndroid Build Coastguard Workera bricked machine, you may want to do the optional CCD setup steps before 245*4f2df630SAndroid Build Coastguard Workerflashing RO firmware.** 246*4f2df630SAndroid Build Coastguard Worker 247*4f2df630SAndroid Build Coastguard Worker### Process if You're Okay Opening Case 248*4f2df630SAndroid Build Coastguard WorkerCr50 will disable HW write protect if you remove the battery. 249*4f2df630SAndroid Build Coastguard Worker 250*4f2df630SAndroid Build Coastguard Worker#### Steps 251*4f2df630SAndroid Build Coastguard Worker 252*4f2df630SAndroid Build Coastguard Worker1. **Open the Case.** 253*4f2df630SAndroid Build Coastguard Worker 254*4f2df630SAndroid Build Coastguard Worker2. **Remove the battery.** Cr50 disables write protect when the battery is 255*4f2df630SAndroid Build Coastguard Worker disconnected. On chromeboxes you need to remove the write protect screw. 256*4f2df630SAndroid Build Coastguard Worker 257*4f2df630SAndroid Build Coastguard Worker3. (bob only) remove the write protect screw. Bob uses cr50 and a write protect 258*4f2df630SAndroid Build Coastguard Worker screw. Cr50 has to disable write protect and the screw has to be removed for 259*4f2df630SAndroid Build Coastguard Worker write protect to be disabled. 260*4f2df630SAndroid Build Coastguard Worker 261*4f2df630SAndroid Build Coastguard Worker4. (optional) Check write protect is disabled from the AP. 262*4f2df630SAndroid Build Coastguard Worker 263*4f2df630SAndroid Build Coastguard Worker AP > crossystem wpsw_cur 264*4f2df630SAndroid Build Coastguard Worker 265*4f2df630SAndroid Build Coastguard Worker5. (optional) Reconnecting the battery will reenable write protect. You can 266*4f2df630SAndroid Build Coastguard Worker disable SW write protect if you want to be able to rewrite RO firmware 267*4f2df630SAndroid Build Coastguard Worker without needing to keep the battery disconnected. 268*4f2df630SAndroid Build Coastguard Worker 269*4f2df630SAndroid Build Coastguard Worker AP > futility flash --wp-disable 270*4f2df630SAndroid Build Coastguard Worker 271*4f2df630SAndroid Build Coastguard Worker6. **(recommended) Run some basic commands to setup CCD.** It's really easy to 272*4f2df630SAndroid Build Coastguard Worker open cr50 with the battery removed. You might want to setup CCD while you 273*4f2df630SAndroid Build Coastguard Worker already have the case open and the battery is disconnected. Doing these 274*4f2df630SAndroid Build Coastguard Worker extra CCD setup steps may make it easier to recover a bricked device using 275*4f2df630SAndroid Build Coastguard Worker CCD. These will require SuzyQ. 276*4f2df630SAndroid Build Coastguard Worker 277*4f2df630SAndroid Build Coastguard Worker * **Open Cr50** from the AP or Cr50 console. This will happen immediately. 278*4f2df630SAndroid Build Coastguard Worker 279*4f2df630SAndroid Build Coastguard Worker 280*4f2df630SAndroid Build Coastguard Worker AP > gsctool -a -o 281*4f2df630SAndroid Build Coastguard Worker 282*4f2df630SAndroid Build Coastguard Worker or 283*4f2df630SAndroid Build Coastguard Worker 284*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd open 285*4f2df630SAndroid Build Coastguard Worker 286*4f2df630SAndroid Build Coastguard Worker 287*4f2df630SAndroid Build Coastguard Worker 288*4f2df630SAndroid Build Coastguard Worker * **Setup capabilities.** This can only be done from the Cr50 console. 289*4f2df630SAndroid Build Coastguard Worker 290*4f2df630SAndroid Build Coastguard Worker Enable flashing the AP/EC CCD open. 291*4f2df630SAndroid Build Coastguard Worker 292*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set OverrideWP Always 293*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set FlashAP Always 294*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set FlashEC Always 295*4f2df630SAndroid Build Coastguard Worker 296*4f2df630SAndroid Build Coastguard Worker Enable opening Cr50 without booting the AP. 297*4f2df630SAndroid Build Coastguard Worker 298*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set OpenNoDevMode Always 299*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set OpenFromUSB Always 300*4f2df630SAndroid Build Coastguard Worker 301*4f2df630SAndroid Build Coastguard Worker### Process With Case Closed 302*4f2df630SAndroid Build Coastguard WorkerFull instructions are at [Setup CCD], but here are are the basic steps. If 303*4f2df630SAndroid Build Coastguard Workeryou're unsure about a step here you should take a look at the [Setup CCD] doc. 304*4f2df630SAndroid Build Coastguard WorkerIt goes into a lot more detail. 305*4f2df630SAndroid Build Coastguard Worker 306*4f2df630SAndroid Build Coastguard Worker#### Requirements 307*4f2df630SAndroid Build Coastguard Worker 308*4f2df630SAndroid Build Coastguard Worker* A [SuzyQ]. Cr50 console access is required to disable write protect. 309*4f2df630SAndroid Build Coastguard Worker* The device needs to be able to boot. 310*4f2df630SAndroid Build Coastguard Worker* The GBB\_FLAG\_FORCE\_DEV\_SWITCH\_ON GBB flag is cleared. 311*4f2df630SAndroid Build Coastguard Worker 312*4f2df630SAndroid Build Coastguard Worker#### Steps 313*4f2df630SAndroid Build Coastguard Worker1. **Open CCD.** Here's the most generic way to open ccd. For the full open 314*4f2df630SAndroid Build Coastguard Worker options see [Setup CCD]. 315*4f2df630SAndroid Build Coastguard Worker 316*4f2df630SAndroid Build Coastguard Worker * **[Enter dev mode](case_closed_debugging_gsc.md#enter-dev-mode).** 317*4f2df630SAndroid Build Coastguard Worker These are clamshell instructions for other types of chromeOS devices 318*4f2df630SAndroid Build Coastguard Worker refer to the full setup doc. 319*4f2df630SAndroid Build Coastguard Worker 320*4f2df630SAndroid Build Coastguard Worker * Boot into recovery by pressing the power button, refresh, and 321*4f2df630SAndroid Build Coastguard Worker escape. 322*4f2df630SAndroid Build Coastguard Worker 323*4f2df630SAndroid Build Coastguard Worker * At the recovery screen press Ctrl+D and enter. 324*4f2df630SAndroid Build Coastguard Worker 325*4f2df630SAndroid Build Coastguard Worker * **Use gsctool to open Cr50 from the AP.** Press the power button when 326*4f2df630SAndroid Build Coastguard Worker prompted. This will take ~5 minutes. 327*4f2df630SAndroid Build Coastguard Worker 328*4f2df630SAndroid Build Coastguard Worker AP > gsctool -a -o 329*4f2df630SAndroid Build Coastguard Worker 330*4f2df630SAndroid Build Coastguard Worker2. **[Connect](#How-to-Use-SuzyQ) to the Cr50 console** using SuzyQ or servo 331*4f2df630SAndroid Build Coastguard Worker v4. 332*4f2df630SAndroid Build Coastguard Worker 333*4f2df630SAndroid Build Coastguard Worker > minicom -D /dev/ttyUSB0 334*4f2df630SAndroid Build Coastguard Worker 335*4f2df630SAndroid Build Coastguard Worker3. **Disable write protect** using Cr50 [wp console command]. 336*4f2df630SAndroid Build Coastguard Worker 337*4f2df630SAndroid Build Coastguard Worker cmd to disable until cr50 reboots: 338*4f2df630SAndroid Build Coastguard Worker 339*4f2df630SAndroid Build Coastguard Worker cr50 > wp disable 340*4f2df630SAndroid Build Coastguard Worker 341*4f2df630SAndroid Build Coastguard Worker cmd to disable it indefinitely: 342*4f2df630SAndroid Build Coastguard Worker 343*4f2df630SAndroid Build Coastguard Worker cr50 > wp disable atboot 344*4f2df630SAndroid Build Coastguard Worker 345*4f2df630SAndroid Build Coastguard Worker 346*4f2df630SAndroid Build Coastguard Worker4. (optional) Check HW WP is disabled. ccd open takes the AP out of dev 347*4f2df630SAndroid Build Coastguard Worker mode, so you can reenter dev mode and check the HW WP status from the AP. 348*4f2df630SAndroid Build Coastguard Worker 349*4f2df630SAndroid Build Coastguard Worker From AP (after reentering dev mode): 350*4f2df630SAndroid Build Coastguard Worker 351*4f2df630SAndroid Build Coastguard Worker AP > crossystem wpsw_cur 352*4f2df630SAndroid Build Coastguard Worker 353*4f2df630SAndroid Build Coastguard Worker 354*4f2df630SAndroid Build Coastguard Worker5. **(recommended) Setup capabilities**, so you can flash the device or open 355*4f2df630SAndroid Build Coastguard Worker ccd without being able to boot the AP. 356*4f2df630SAndroid Build Coastguard Worker 357*4f2df630SAndroid Build Coastguard Worker Make flashing the AP/EC accessible without opening CCD 358*4f2df630SAndroid Build Coastguard Worker 359*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set OverrideWP Always 360*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set FlashAP Always 361*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set FlashEC Always 362*4f2df630SAndroid Build Coastguard Worker 363*4f2df630SAndroid Build Coastguard Worker Enable opening Cr50 without booting the AP 364*4f2df630SAndroid Build Coastguard Worker 365*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set OpenNoDevMode Always 366*4f2df630SAndroid Build Coastguard Worker Cr50 > ccd set OpenFromUSB Always 367*4f2df630SAndroid Build Coastguard Worker 368*4f2df630SAndroid Build Coastguard Worker6. **(recommended) [Disable SW WP]** to flash RO firmware if your board has 369*4f2df630SAndroid Build Coastguard Worker issues disabling HW WP with the AP off. 370*4f2df630SAndroid Build Coastguard Worker 371*4f2df630SAndroid Build Coastguard Worker AP > futility flash --wp-disable 372*4f2df630SAndroid Build Coastguard Worker 373*4f2df630SAndroid Build Coastguard Worker[Disable SW WP]: ./case_closed_debugging_gsc.md#AP-Off 374*4f2df630SAndroid Build Coastguard Worker[enter dev mode]: ./case_closed_debugging_gsc.md#enter-dev-mode 375*4f2df630SAndroid Build Coastguard Worker[sparkfun]: https://www.sparkfun.com/products/14746 376*4f2df630SAndroid Build Coastguard Worker[Setup CCD]: ./case_closed_debugging_gsc.md#CCD-Setup 377*4f2df630SAndroid Build Coastguard Worker[SuzyQ]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/refs/heads/main/docs/ccd.md#suzyq-suzyqable 378*4f2df630SAndroid Build Coastguard Worker[Type-C Servo V4]: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/refs/heads/main/docs/servo_v4.md 379*4f2df630SAndroid Build Coastguard Worker[wp console command]: ./case_closed_debugging_gsc.md#WP-control 380*4f2df630SAndroid Build Coastguard Worker 381