As a result, it can act as a no-compromise High-Speed USB protocol analyzer, a USB-hacking multi-tool, or a USB development platform. Out-of-the-box, Cynthion acts as a USB protocol analyzer capable of capturing and analyzing traffic between a host and any Low-, Full-, or High-Speed (“USB 2.0”) USB device. It works seamlessly with our...
CHAPTER GETTING STARTED WITH CYNTHION 2.1 Prerequisites To use Cynthion you will need to ensure the following software is installed: • Python v3.8, or later. 2.2 Cynthion Host Software Installation The Cynthion host software distribution can be obtained from the...
Homebrew, MacPorts or some other route. If you are not using a Python distribution from Homebrew you may be able to direct Cynthion to the correct location by explicitly setting DYLD_FALLBACK_LIBRARY_PATH to the location of the libusb native library.
--upgrade cynthion 2.5 Updating Cynthion Microcontroller Firmware and FPGA configu- ration flash To upgrade the Cynthion Microcontroller firmware and FPGA configuration flash to the latest versions run: cynthion update You can update the Microcontroller firmware separately with: cynthion update --mcu-firmware...
Page 12
Cynthion Chapter 2. Getting Started with Cynthion...
Packetry 3.2 USB Analyzer Bitstream Cynthion ships from the factory with the USB Analyzer as the default bitstream for the FPGA. If you have previously flashed a different default bitstream you can run the USB Analyzer bitstream with: cynthion run analyzer...
CHAPTER FOUR USING CYNTHION WITH FACEDANCER Warning: Facedancer is not currently supported on Windows. Attempting to use Facedancer on Windows may cause USB analysis to stop working. For more information please see the tracking issue: #170 Before proceeding, please ensure you have completed all steps in the section.
# Type a string with the device await device.type_string("echo hello, facedancer\n") main(device, type_letters()) Open a terminal and run: python ./rubber-ducky.py If all goes well, you should see the string hello, facedancer typed into the target host. Chapter 4. Using Cynthion with Facedancer...
CHAPTER FIVE USING CYNTHION WITH USB PROXY Warning: USBProxy is not currently supported on Windows. Attempting to use USB Proxy on Windows may cause USB analysis to stop working. For more information please see the tracking issue: #170 Before proceeding, please ensure you have completed all steps in the...
If all goes well you should see the output from device enumeration in your terminal and the proxied USB device should be detected by the target computer. 5.3 More Information For further information, see the Facedancer USB Proxy documentation. Chapter 5. Using Cynthion with USB Proxy...
Display Cynthion Microcontroller information: cynthion info --force-offline Note: Once you have switched to the Cynthion Microcontroller by pressing the PROGRAM button or the --force-offline option you will need to press the RESET button to return control to the FPGA.
Page 22
Remove all files installed during set up: cynthion setup --uninstall 6.1.3 Update Cynthion Update both the Cynthion Debug Microcontroller firmware and USB Analyzer bitstream to the latest installed factory versions: cynthion update Update Cynthion Debug Microcontroller firmware to the latest installed factory version:...
Page 23
Cynthion cynthion flash --mcu-firmware <filename> Overwrite the SoC firmware with the one specified by <filename>: cynthion flash --soc-firmware <filename> 6.1. Command Documentation...
Page 24
Cynthion Chapter 6. The cynthion command line interface...
• TARGET C - USB Type-C connector for Packetry traffic capture and Facedancer device emulation. • TARGET A - USB Type-A connector shared with the TARGET C connector. • RESET - Press this button to reset Cynthion’s debug microcontroller and reconfigure the FPGA from flash.
Cynthion 8.4 Front View • A & B - Two Digilent Pmod™ Compatible I/O connectors for a total of 16 high-speed FPGA user IOs. – B can also be configured to act as a serial port and JTAG connector for debugging SoC designs: ∗...
SELF-MADE HARDWARE BRINGUP This guide is intended to help you bring up a Cynthion board you’ve built yourself. If you’ve received your board from Great Scott Gadgets, it should already be set up, and you shouldn’t need to follow these steps.
Page 30
Cynthion saturn-v $ make If you’re building a board that predates r0.3 hardware, you’ll need to specify the board you’re building for: saturn-v $ make BOARD=luna_d21 The build should yield two useful build products: bootloader.elf and bootloader.bin; your SWD programmer will likely consume one of these two files.
"Flash" If your device shows up as a Cynthion board, congratulations! You’re ready to move on to the next step. 9.3.1 Optional: Bootloader Locking Optionally, you can reversibly lock the bootloader region of the Debug Controller, preventing you from accidentally overwriting the bootloader.
Before you can run the applet, you’ll need to have a working cynthion development environment. See Introduction to get your environment set up. Next, we can check to make sure your Cynthion board is recognized by the Cynthion toolchain. Running the apollo info command will list any detected devices: $ apollo info Detected a Cynthion device! Hardware: Cynthion r1.4...
CHAPTER THE APOLLO COMMAND LINE UTILITY The cynthion distribution provides the apollo command-line utility, that can be used to perform various simple functions useful in development; including simple JTAG operations, SVF playback, manipulating the board’s flash, and debug communications. $ apollo usage: apollo [-h] command ...
Page 34
Cynthion Chapter 10. The apollo command line utility...
CHAPTER ELEVEN GETTING HELP Before asking for help with Cynthion, check to see if your question is answered in this documentation, or addressed in Cynthion GitHub repository issues. For assistance with Cynthion general use or development, please look at the issues on the GitHub project.
CHAPTER TWELVE CYNTHION PROJECTS AND MENTIONS Have you done something cool with Cynthion or mentioned Cynthion in one of your papers or presentations? Email us at info@greatscottgadgets.com with a link to what you’ve done and we might post it here!
Page 38
Cynthion Chapter 12. Cynthion Projects and Mentions...
• A pass-through power supply connected to Cynthion must supply at least 5 V DC and no more than 20 V DC. The pass-through power supply must be rated for the current drawn by the pass-through device connected to Cynthion.
CHAPTER FOURTEEN INTRODUCTION 14.1 Setting up a Development Environment This guide highlights the installation and setup process for setting up a local copy of the Cynthion source code for development. 14.2 Prerequisites • Python v3.8, or later. • A working FPGA toolchain. We only officially support a toolchain composed of the...
Page 42
Cynthion Use git to clone the repository: git clone https://github.com/greatscottgadgets/cynthion.git Note: To install the cynthion Python package and allow for in-place editing of the sources you can use the pip --editable command: # change to the 'cynthion' Python package directory...
• analyzer – USB analyzer for using Cynthion with Packetry. • soc – System-on-Chip for using Cynthion with Facedancer. Bitstreams can be generated from the cynthion Python package sub-directory as follows: 15.1.1 Analyzer Gateware # change to the 'cynthion' Python package directory...
Page 44
Cynthion 15.1.3 Additional Options Additional options for bitstream generation can be listed by appending --help to the command: $ python3 -m cynthion.gateware.analyzer.top --help usage: top.py [-h] [--output filename] [--erase] [--upload] [--flash] [--dry-run] [--keep-files] [--fpga part_number] [--console port] Gateware generation/upload script for USBAnalyzerApplet gateware.
16.3 Building and Running Firmware for the Cynthion SoC can be found in the firmware/moondancer/ sub-directory. You can rebuild the firmware using cargo as follows: # change to the Cynthion firmware directory cd firmware/moondancer/...
Once the firmware is running on the SoC you can execute some unit tests to exercise the firmware. In order to do this you will need to connect both the CONTROL and AUX ports of the Cynthion to the host and then...
Need help?
Do you have a question about the Cynthion and is the answer not in the manual?
Questions and answers