xref: /aosp_15_r20/external/gsc-utils/docs/ccd_howtos.md (revision 4f2df630800bdcf1d4f0decf95d8a1cb87344f5f)
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