diff options
Diffstat (limited to 'chromium/docs/website/site/chromium-os/twinkie/index.md')
-rw-r--r-- | chromium/docs/website/site/chromium-os/twinkie/index.md | 334 |
1 files changed, 0 insertions, 334 deletions
diff --git a/chromium/docs/website/site/chromium-os/twinkie/index.md b/chromium/docs/website/site/chromium-os/twinkie/index.md deleted file mode 100644 index 999b9046bff..00000000000 --- a/chromium/docs/website/site/chromium-os/twinkie/index.md +++ /dev/null @@ -1,334 +0,0 @@ ---- -breadcrumbs: -- - /chromium-os - - Chromium OS -page_name: twinkie -title: USB-PD Sniffer ---- - -[TOC] - -## Overview - -This page describes a USB-PD sniffing dongle with Type-C connectors. The dongle -can be supported by Chrome devices as part of a USB-Type C implementation. - -<img alt="image" src="/chromium-os/twinkie/twinkies-2.png" height=156 width=200> -<img alt="image" src="/chromium-os/twinkie/twinkies-1.png" height=156 width=200> -<img alt="image" src="/chromium-os/twinkie/twinkies-3.png" height=156 width=200> - -## Hardware Capabilities - -* Sniffing USB Power Delivery traffic on both Control Channel lines - (CC1/CC2) -* Transparent interposer on a USB Type-C connection -* Monitoring VBUS and VCONN voltages and currents (WARNING: VBUS path - designed for SPR voltages up to 20V. Not appropriate for use with - USB PD 3.1 EPR systems when in EPR mode) -* Injecting PD packets on CC1 or CC2 -* Putting Rd/Rp/Ra resistors on CC1 or CC2 - -[<img alt="image" src="/chromium-os/twinkie/Twinkie-diagram.png" height=314 -width=400>](/chromium-os/twinkie/Twinkie-diagram.png) - -Complete schematics, layout, and enclosure are attached at the bottom of this -page. - -## **Firmware Source Code** - -The firmware is located In the Chromium Embedded Controller repository under -*[board/twinkie/](https://chromium.googlesource.com/chromiumos/platform/ec/+/firmware-twinkie-9628.B/board/twinkie/),* -the release version is on the firmware-twinkie-9628.B branch : - -<https://chromium.googlesource.com/chromiumos/platform/ec/+/firmware-twinkie-9628.B/board/twinkie/> - -### **Building Firmware** - -Within your Chromium OS chroot, the syntax is: - -```none -For the impatient, here is a very cut-down version of the detailed instructions. -``` - -```none -If anything here gives you trouble, refer to the [official documentation](http://www.chromium.org/chromium-os/developer-guide) instead. -``` - -```none -``` - -```none ## Install the prerequisite tools ``` - -```none -goobuntu$ sudo apt-get install git-core gitk git-gui subversion curl -``` - -```none -goobuntu$ git clone <https://chromium.googlesource.com/chromium/tools/depot_tools.git> -``` - -```none -goobuntu$ export PATH=$(pwd)/depot_tools:$PATH -``` - -```none ## Check out the sources ``` - -```none -goobuntu$ mkdir chromiumos && cd chromiumos -``` - -```none -goobuntu$ repo init -u https://chromium.googlesource.com/chromiumos/manifest.git \ -``` - -```none - --repo-url https://chromium.googlesource.com/external/repo.git \ -``` - -```none - -g minilayout -b firmware-twinkie-9628.B -``` - -```none -goobuntu$ repo sync -``` - -```none ## Enter the chroot ``` - -```none -goobuntu$ cros_sdk -``` - -```none ## Install the board-specific compiler toolchain ``` - -```none -chroot$ ./setup_board --board=falco -``` - -```none ## Check out the EC sources ``` - -```none -chroot$ cros_workon-falco start chromeos-ec -``` - -```none -chroot$ repo sync ../platform/ec -``` - -```none ## Build things ``` - -```none -chroot$ cd ../platform/ec -``` - -```none -chroot$ make BOARD=twinkie -j -``` - -Alternately, you can use the **pre-built firmware** -*[twinkie_v1.11.19-9e81762f2.bin](https://storage.googleapis.com/chromeos-vpa/twinkie-20171122/twinkie_v1.11.19-9e81762f2.bin)* -attached at the bottom of this page. - -### **Flashing Firmware** - -The USB-PD dongle behaves as a USB DFU device when the ID pin is grounded on the -USB micro-B connector. - -This is done either by plugging an A-A USB cable into an A-to-microB OTG adapter -as shown in the photo below - -or by typing the` dfu` command on the USB console (if you already have a recent -firmware, e.g. *v1.11.19*+). - -Within your Chromium OS chroot: - -```none -./util/flash_ec --board=twinkie -``` - -or on Ubuntu Linux: - -```none -sudo apt-get install dfu-util -``` - -```none -sudo dfu-util -a 0 -s 0x08000000 -D twinkie_v1.11.19-9e81762f2.bin -``` - -[<img alt="Programming Twinkie with OTG and A-to-A cables" -src="/chromium-os/twinkie/twinkie_programming.jpg" height=161 -width=320>](/chromium-os/twinkie/twinkie_programming.jpg) - -if you have entered the DFU mode by using the dfu console command, you need to -use the following command to exit it : - -sudo dfu-util -a 0 -s 0x08000000:force:unprotect -D -twinkie_v1.11.19-9e81762f2.bin - -else plugging the regular USB cable will do it automatically. - -## Using the Integrated Command Line over USB - -The USB-PD dongle exports its internal command-line console as a pair of USB -bulk endpoints. - -On a Linux system, you get the console as a /dev/ttyUSB*n* device. - -On recent systems (kernel v3.19+), this ttyUSB device should be instantiated -automatically, or other systems you can try using the *usbserial* kernel module -: - -```none -echo '18d1 500A' | sudo tee /sys/bus/usb-serial/drivers/generic/new_id -``` - -If this fails, you might need to run `sudo modprobe usbserial` first. - -## Using as a PD Packet Sniffer - -You can use the opensource [Sigrok](http://sigrok.org) framework to acquire and -decode USB Power Delivery traces with the USB-PD dongle. You can then use -[Pulseview ](http://sigrok.org/wiki/PulseView)to display them. - -The patches for the Sigrok hardware driver for the dongle is not in the upstream -packages yet. - -The packages below also include the bleeding edge version of Pulseview which has -a convenient "Tabular Decoder Output View". - -If your machine has an x86_64 processor, you can try the following experimental -pre-built packages: - -- for Ubuntu Focal Fossal (20.04 LTS) - -```none -cd $(mktemp -d) -wget https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_20.04/libsigrok4_0.5.2-2+twinkie_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_20.04/libsigrokcxx4_0.5.2-2+twinkie_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_20.04/libsigrokdecode4_0.5.3-1_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_20.04/sigrok-cli_0.7.1-1_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_20.04/pulseview_0.5.0~git20200910+1acc207a-1_amd64.deb -sudo dpkg -i *.deb -sudo apt-get install -f -``` - -- for Ubuntu Bionic Beaver (18.04 LTS) - -```none -cd $(mktemp -d) -wget https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_18.04/libsigrok4_0.5.2-2+twinkie_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_18.04/libsigrokcxx4_0.5.2-2+twinkie_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_18.04/libsigrokdecode4_0.5.3-1_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_18.04/sigrok-cli_0.7.1-1_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/ubuntu_18.04/pulseview_0.5.0~git20200910+1acc207a-1_amd64.deb -sudo dpkg -i *.deb -sudo apt-get install -f -``` - -- for Debian Buster (stable) or Chrome OS Crostini container - -```none -cd $(mktemp -d) -wget https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/debian-buster/libsigrok4_0.5.2-2+twinkie_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/debian-buster/libsigrokcxx4_0.5.2-2+twinkie_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/debian-buster/libsigrokdecode4_0.5.3-1_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/debian-buster/sigrok-cli_0.7.1-1_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/debian-buster/pulseview_0.5.0~git20200910+1acc207a-1_amd64.deb -sudo dpkg -i *.deb -sudo apt-get install -f -``` - -- for Rodete - -```none -cd $(mktemp -d) -wget https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/rodete/libsigrok4_0.5.2-2+twinkie_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/rodete/libsigrokcxx4_0.5.2-2+twinkie_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/rodete/libsigrokdecode4_0.5.3-1_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/rodete/sigrok-cli_0.7.1-1_amd64.deb \ - https://storage.googleapis.com/chromeos-vpa/twinkie_20201028/rodete/pulseview_0.5.0~git20200910+1acc207a-1_amd64.deb -sudo dpkg -i *.deb -sudo apt-get install -f -``` - -If you want to do a full build from sources of sigrok and pulseview with Twinkie -support, - -now the USB PD protocol decoder is now upstreamed in libsigrokdecode (and -sigrok-cli / pulseview are working out-of-the-box). - -You only need to add the Chromium Twinkie hardware driver in libsigrok : [last -version of the patch applying on -libsigrok-0.5.2](https://github.com/vpalatin/libsigrok/commit/8147e36b8ffa48a23cf898332c351f6a6d85484b) -[plus the VBUS -support](https://github.com/vpalatin/libsigrok/commit/97a7e9cbb3126aa5329b96a2f017e682b9036d8f) - -A recipe to do this build is written down in [Build Sigrok and Pulseview from -sources](/chromium-os/twinkie/build-sigrok-and-pulseview-from-sources). - -### Capturing traces with the Sigrok tool - -```none -sigrok-cli -d chromium-twinkie --continuous -o test.sr -``` - -### Real-time decoding of USB PD packets while capturing - -```none -sigrok-cli -d chromium-twinkie --continuous -P usb_power_delivery:cc=CC1:fulltext=yes -P usb_power_delivery:cc=CC2:fulltext=yes -A usb_power_delivery=text -``` - -### Displaying and decoding PD traces - -```none -pulseview test.sr & -``` - -Add the **USB PD** decoder from the Decoders menu, then edit the instantiated -decoder to select the appropriate CC line. - -[<img alt="image" -src="/chromium-os/twinkie/pulseview_3packets.png">](/chromium-os/twinkie/pulseview_3packets.png) - -[<img alt="image" -src="/chromium-os/twinkie/pulseview_zoom_packet.png">](/chromium-os/twinkie/pulseview_zoom_packet.png) - -[<img alt="image" -src="/chromium-os/twinkie/pulseview_VBUS_V.png">](/chromium-os/twinkie/pulseview_VBUS_V.png) - -[<img alt="image" -src="/chromium-os/twinkie/pulseview_VBUS_V_A.png">](/chromium-os/twinkie/pulseview_VBUS_V_A.png) - -### Experimental VBUS analog traces - -As shown on the pictures above, you can try to capture the VBUS analog voltage -and current along with the CCx lines traffic. - -This feature is still *experimental and might have negative side effects* on -your PD packets capture ! - -Capturing VBUS voltage only and CCx traffic: - -```none -sigrok-cli -d chromium-twinkie:analog_channels=1 --continuous -o testvbusV.sr -``` - -Capturing VBUS voltage and current and CCx traffic: - -```none -sigrok-cli -d chromium-twinkie:analog_channels=2 --continuous -o testvbusVA.sr -``` - -then you can display the .sr files in Pulseview. - -## Using as a Power Sink - -1. Use the tw sink command. Exit sink mode by using the reboot command. -2. When a power source is detected, the dongle negotiates a power - contract, activating the green LED for 5V, the red LED for 20V, or - the blue LED for other voltage. -3. You can change the maximum negotiated voltage with the following - command in the dongle USB shell: - pd 0 dev 12 - This example sets a limit of 12 V.
\ No newline at end of file |