USB "SainSmart DDS120" 2-channel oscilloscope 20 MHz 50Msps (Buudai/Rocktech BM102)

For approximately € 50 (10.09.2014) SainSmart offers a 2-channel USB oscilloscope with 20 MHz of analogue bandwidth and maximum 50Msps (mega samples per second). Identical models are the "BM102" by Rocktech/Buudai.

The technical data read as follows:

Interface USB 2.0
Channels 2
Calibration signal 1 kHz, 3.25V rectangle
Bandwidth (analog) 20 MHZ
maximum samplerate 25Msps (1 channel), 50Msps (2 channels)
Resolution (vertical) 8 bit
Input voltage ±5V, ± 50v (1:10), ± 500v (1:100)
Noise ±25mv 500mv/div
±10mV 200mv/div
±8mV 100 mV/div
±4mV at 50mv/div
Trigger coupling AC AC-coupled, DC DC-coupled
Triggering Trigger level rising / falling edge trigger
Trigger Auto, normal, single shot
Input impedance 1M / 25pf
Memory depth 1K-2M
Power requirement < 2 W
Weight < 400 g
Auto measurement Vmax, Vmin, VPP, Vavg, Vrms, frequency
Rise time, pulse duty factor
Dimensions 12 cm X 7.5cm X 2.5 cm

In addition 2 probes (1:1, 1:10, 60 MHz - without compensation), a USB cable and software on CD are included. The latter is "nice" to look at in the implementation unfortunately inconsistently - there are numerous bugs and shortcomings.


  • Analog devices AD9288BSTZ-40 (2-channel ADC)
  • Cypress CY7C68013A FX2LP - EZ-USB 100 pin (Controller/interface)
  • Microchip 24LC64 (8KByte I2C serial EEPROM)
  • Analog devices AD8065 (OPAMP)
  • Texas Instruments CD4052B (2 x 1:4 MUX)


SainSmart proclaims "Open-Source Software Interface", of which little/nothing is yet to see. The attached "SDK" or the demo programs are undocumented and flawed.


The oscilloscope is based on the EZ-USB FX2LP "hi speed USB peripheral controller". Currently, the following control commands are known (determined via USBPCAP Wireshark):

CommandCodeBit maskChannelDescription
0x 240x 000000 00001AC-Coupling
0x 240x 080000 10001DC-Coupling
0x 250x 000000 00002AC-Coupling
0x 250x 010000 00012DC-Coupling
0x 220x 080000 1000150mV/div
-6dB input
10dB gain (x 3.5)
0x 220x 040000 01001100 mV/div
-6dB input
3.3dB gain (x 1.46)
0x 220x 000000 00001200mV/div
-6dB input
-4.4dB gain (x 0.6)
0x 220x 060000 01101500mV/div
-20dB input
3.3dB gain (x 1.46)
0x 220x 020000 001011-5V/div
-20dB input
-4.4dB gain (x 0.6)
0x 230x 200010 0000250mV/div
-6dB input
10dB gain (x 3.5)
0x 230x 100000 10102100 mV/div
-6dB input
3.3dB gain (x 1.46)
0x 230x 000000 00002200mV/div
-6dB input
-4.4dB gain (x 0.6)
0x 230x 120000 11002500mV/div
-20dB input
3.3dB gain (x 1.46)
0x 230x 020000 001021-5V/div
-20dB input
-4.4dB gain (x 0.6)
0x 940x 110001 0001 240kHz sample rate
0x 940x 010000 00012.4 MHz sample rate
0x 940x 100001 000048 / 50 MHz sample rate
0x 340x 000000 0000Scope mode
0x 340x 010000 0001*Logic Analyzer mode
0x 620x 000000 0000*Signalgenerator
0x 600x 000000 0000*Signalgenerator
0x 610x 000000 0000*Signalgenerator
0x 330x 000000 0000Datenabruf(polling)

A major problem lies in the fixed polling period (100/200ms), with which the data is queried from the ADC. Depending on the timebase/sample rate different sized packages of data arise which, logically, have different transfer times. Also, the oscilloscope is "blind" during the data transfer. In consequence, the software crashes sooner or later. The following table shows these facts (tested with Rocktech version 1.2):

Time baseSample rateRequests per second
Packets per second (pps)Packet size (bytes)
50ns-1us50 MHz10101024
4us2.4 MHz10102048
20US2.4 MHz10104096
200ns2.4 MHz5565536
500ns2.4 MHz5565536

As you can easily see, be in time bases > = 10ms provided than can be answered more requests per second.

AGML battery charger


You may so like...

2 responses

  1. angel says:

    can i get recorded waveform of dds120 (.dds120)

Leave a reply

Your email address will not be published.

* Checkbox GDPR is required,,en,This form collects your name, email and content so that we can keep track of the comments placed on the website. For more info check our privacy policy where you'll get more info on where, how and why we store your data.,,en,I agree,,en


I agree