# ThunderScope
Low-Cost Four Channel 1GSPS Oscilloscope using Thunderbolt/USB4 to stream data to PC for processing and display. 

Join our [development discord server](https://discord.com/invite/pds7k3WrpK)

We are now at #thunderscope:matrix.org on matrix or #thunderscope:libera.chat on IRC as well!

Some older long-form documentation is on the [Hackaday.io project page](https://hackaday.io/project/180090-thunderscope)

Get the hardware through our [crowdsupply page](https://www.crowdsupply.com/eevengers/thunderscope) 

Catch up with these videos on the project: 

[TEARDOWN 2023 - Open Sourcing the Secrets of Oscilloscope Design](https://www.youtube.com/watch?v=58P7UrNaYS4)

[Hackaday Supercon 2023 - A Circuit to Measure Circuits: How do Oscilloscopes do it?](https://www.youtube.com/watch?v=6kINL2e2XGs)

[Teardown Session 39: ThunderScope](https://www.youtube.com/watch?v=HIrENqQAbHI)



## Quick Start Guide 

### LiteX

1. Follow the instructions in the [LiteX Build and Setup Guide](Docs/LiteX.md) guide to build the gateware and software for running LiteX firmware on the Thunderscope.
2. Build TS.NET.Engine using the [build scripts](https://github.com/EEVengers/TS.NET/tree/main/build-scripts)
   - Dependences for build scripts on Debian/Ubuntu Linux: `sudo apt-get install -y dotnet-sdk-8.0 libgdiplus`
   - On Windows, should just need Visual Studio with the C# plugins
   - Copy [appsettings.json](https://github.com/EEVengers/TS.NET/blob/main/source/TS.NET.Engine/appsettings.json) and [thunderscope.yaml]
3. Install ngscopeclient, following the instructions in their [user manual](https://www.ngscopeclient.org/manual/GettingStarted.html)
4. Run TS.NET.Engine and ngscopeclient
5. Add ThunderScope in ngscopeclient under Add -> Oscilloscope with "thunderscope" Driver, "Twinlan" Transport and "Localhost:5025:5026" for the Path

### XDMA [DEPRECATED]

These instructions have moved to the [ts_xdma_archive repo](https://github.com/EEVengers/ts_xdma_archive)

## Troubleshooting 

If you are getting under ~1000MB/s throughput on Linux, try turning off VT-d (Intel) or IOMMU/AMD-Vi (AMD) in BIOS or using "intel_iommu=off" in GRUB (Intel)

## Beta 2 Errata and Fixes

Follow the [rework instructions](Docs/Beta%202%20Errata.md) to bring your Beta 2 to production level frequency response and noise performance

## Baseboard Hardware 

| Revision | Label | Status | Location |
| ------ | ---- | ---------- | ------------------------------ |
| Rev.1  | N/A  | DEPRECATED | Hardware/Altium/Thunderscope_E |
| Rev.2  | N/A  | DEPRECATED | Hardware/Altium/Thunderscope_Rev2 |
| Rev.3  | Alpha  | DEPRECATED | Hardware/Altium/Thunderscope_Rev3 |
| Rev.4  | Beta 1  | ACTIVE | Hardware/Altium/Thunderscope_Rev4 |
| Rev.4.1  | Beta 2  | ACTIVE | Hardware/Altium/Thunderscope_Rev4.1 |

## FPGA Module Hardware 

| Revision | Status | Location |
| ------ | ---------- | ------------------------------ |
| TE0712  |  ACTIVE | [Trenz Electronics TE0712 Module, 100T or 200T Varients](https://wiki.trenz-electronic.de/display/PD/TE0712+TRM) |
| Rev.1  | DEPRECATED | Hardware/Altium/FPGA_Module |
| Rev.2  | ACTIVE | Hardware/Altium/FPGA_Module_Rev2 or Hardware/KiCad/FPGA_Module_Rev2|

## Beta Unit FPGA Module Type by Serial Number

| Serial Numbers | Module Type |
| ------ | ---------- |
| TS0004, TS0006, TS0015  | TE0712 100T |
| TS0007, TS0008, TS0011-TS0014  | TE0712 200T |
| TS0009, TS0010, TS0016-TS0018  | Custom Rev.2 |