InsideGadgets Logic Observer
| Status | planned | 
|---|---|
| Channels | 8 | 
| Samplerate | 50MHz | 
| Samplerate (state) | — | 
| Triggers | high, low | 
| Min/max voltage | 2V — 5.5V | 
| Threshold voltage | ? | 
| Memory | 131ksamples/ch | 
| Compression | none | 
| Website | insidegadgets.com | 
The insideGadgets Logic Observer is an 8-channel logic analyzer with up to 50MHz sampling rate. It is a mostly open project with all source code (CPLD, MCU) available, as well as a schematic of the PCB.
See insideGadgets Logic Observer/Info for more details (such as lsusb -v output) about the device.
Hardware
Protocol
The device is controlled entirely via USB control messages. The command is encoded in the request value of the control message; value and index are unused.
The following requests are defined:
USB_TRANSFER (1)
This tells the device to transfer the samples captured in memory to the host. This is called multiple times; the buffer memory is transferred 254 bytes at a time, with the address increasing automatically. The address is reset when a capture is started or settings are updated.
USB_SETTINGS (2)
Send new settings to the device. The settings consist of the following eight bytes sent along with the control request:
| Byte | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Bitmask of the channels to trigger on. All channels marked according to the trigger level must match before a trigger is considered to have fired. | ||||||||||||||||||
| 1 | Level to trigger on (0 or 1). | ||||||||||||||||||
| 2 | Delay after trigger, in milliseconds. | ||||||||||||||||||
| 3 | Trigger count: number of times the trigger must fire before the capture starts. | ||||||||||||||||||
| 4 | Sample rate, as follows:
  | ||||||||||||||||||
| 5 | Number of samples to capture | ||||||||||||||||||
| 6 | Start capture flag: a capture is started if this is not 0. | ||||||||||||||||||
| 7 | Always 0. | 
USB_STATUS (3)
Returns a 2-byte status field. The first byte indicates whether capturing has finished (1) or not (0). The second byte is always 0.
USB_CANCEL (4)
This cancels a capture in progress.