All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.









  • Added test USB data from a real capture to fully test analyzer buffering.

  • Added fast USB traffic test.

  • Added type annotations for SetupPacket

  • Added test for emptying the packet buffer once every SOF (Start Of Frame) in tandem with the data input simulation.

  • Added missing dependency luminary-fpga for platform functionality.


  • Finished extracting tests into their own tree out of the implementation files.

  • Updated minimum python version to match with Torii, it is now 3.10.

  • Improved analyzer applet overrun handling on the secondary packet buffer side.


  • Fixed warnings coming from the CDC tests.

  • Fixed missing type annotations from the UTMI interface types.

  • Fixed missing type annotations from the stream interface type.

  • Fixed missing type annotations for the FIFOs and UTMI interfaces in the analyzer.

  • Fixed an exception getting thrown in the analyzer when the platform doesn’t support the power_a_port and pass_through_vbus signals.

  • Fixed missing type annotations for the DUT and UTMI interfaces in the analyzer tests.

  • Fixed missing type annotations in the test utilities and cleaned up the implementation of SolGatewareTestCase.wait()

  • Fixed USB analyzer polling interval requested by the exfiltration endpoint.

  • Fixed missing type annotations on the UTMI translator type in the ULPI interface.

  • Fixed missing type annotations on the ULPI interface type.

  • Fixed missing type annotations for USBAnalyzerStackTest.

  • Fixed the check to see if the bus translator was in use or not.

  • Fixed improper use of empty Torii Case() elements as stricter enforcement of using Default() has been implemented.

  • Fixed UDEV rules.



  • Added handler_condition to USB Requests

  • Added automatic construction of StallOnlyRequestHandler

  • Added pcapng support for capture applet

  • Added a file

  • Added support for dynamic capture speed selection in analyzer

  • Added ability to request supported speeds from analyzer

  • Added ability to discard invalid/unknown data in the analyzer and restart the capture

  • Added an rx_invalid signal for RequestHandlerInterface to indicate invalid reception


  • Updated from rich 12.6.0 to 13.0.0

  • Improved Analyzer speed

  • Updated SimpleSoC to bring it up to date with torii.soc and lambdasoc

  • Updated torii minimum version to >=0.5.0

  • Moved the speed test device gateware into the applet gateware library




  • Various code formatting cleanups.

  • Fixed Analyzer capture engine overflow problem

  • Fixed UTMI/ULPI typo

  • Fixed Analyzer overflow handling

  • Fixed overflow handling on the primary analyzer FIFO

  • Fixed an issue with the return type of USBPacketID.byte()

  • Fixed signed/unsigned conversion error in USB2 descriptor handling

  • Implemented missing .shape() method for ECP5DebugSPIBridge

  • Fixed using Pin objects as if they were raw Signals

  • Fixed missing **kwargs in the toolchain_prepare method of LUNAApolloPlatform



  • Added preliminary type annotations.

  • Added the


  • Changed the needed dependencies.

    • Removed all of the pure git url dependencies to allow us to be packaged for pypi.

  • Altered the way the lambdasoc dependency was used for the SimpleSoC module.

  • Changed the package name from sol to sol_usb to prevent pypi conflict.

  • Changed the name of some documents to fall more in line with expected names.

  • Changed from a poetry based build to purely using

  • Swapped out tox for nox.

  • Replaced old Amaranth HDL deps with Torii.

  • Replaced old python-usb-protocol with usb-construct.


  • Removed all of the 3rd party platform definitions except for the LUNA platforms.

  • Removed the old requirements.txt


  • Fixed a large chunk of code style and formatting.

  • Fixed the documentation, it should now be more useful.


No changelog is provided for this version as it is a hold-over / demarcation of the divergence from LUNA.