Review of Tektronix MSO2024B Oscilloscope

Table of contents

RoadTest: Tektronix MSO2024B Oscilloscope

Author: Kilohercas

Creation date:

Evaluation Type: Independent Products

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: Agilent/Rigol/Lecroy

What were the biggest problems encountered?: RS232 Decode does not work, i still don't know is it because of my setup, or oscilloscope itself. RS232 is not only edge, but time related, so it much harder to decode and setup properly.

Detailed Review:

Today I received an MSO2024BMSO2024B oscilloscope from to review it


  Many thanks to element14 community for the Roadtest Program




MSO2024B Characteristics



          MSO2024B is the best from MSO2000 series. It has 4 analog channels with 200 MHz analog bandwidth  (2.1 ns of response time for input step signal). Each of the channel is coupled with 1 GSps ADC  (ADC is not shared between two channels, hence there is no drop in sampling speed even if all four channels are activated). Moreover, this oscilloscope is from Mixed Signal Oscilloscope series (MSO), so it has additional 16 channels for digital inputs, which are capable of ±40V input with TTL, CMOS, ECL, PECL predefined trigger thresholds. A user can also define its custom trigger threshold if needed ( separate threshholds can be set only for 0-7b and 8-15b ). This oscilloscope has 8b ADC resolution as any other conventional oscilloscoope,  2 mV/div to 5 V/div input range that could be scaled to ADC via the analog front end.  Such being the case one can use all of ADC‘s resolution to capture waveform,  that includes ±1V offset for 2 mV/div to 200 mV/div and ±25V offset for 200 mV/div to 5 V/div for ADC front-end scaling. That means if one has a DC input coupling, and the signal of interest is 6 mV of amplitude on top of 1V DC offset, then the ADC maximum bit value will be saturated, and the oscilloscope will only display a line. The workaround could be an AC coupling, but in case of a low frequency signal this is not always an option. The MSO2024B can record up to 1 mln. points of data while running at 1 ms/div – up to 2ns/div of time scale, and 1.25 mln. points running at 100s/div – up to 1ms/div time scale. The default buffer is 100k points (or 125k in case of a slower time base). Such capability is a huge improvement compared to my old TPS2024 oscilloscope, that only has 2.5k data points of memory. With this oscilloscope it is now possible to use slow time scale to record a signal, and then zoom in up to 2 ns/div range and still be able to see the waveform as it is. Like the Agilent 2000x and 3000x series, it has a soft power button, hence at any given time it uses 6.6 W of power. By pressing the „Power On“ button the average power usage escalates up to 30W. This feature is not very appealing, because it will cost around 4$ annually just for standby. My guess that this figure would go two times lower* for USA, because of two times lower outlet voltage. This is not a big deal, but still, why not to use a good old fashion hard switch?



          The oscilloscope also has Tektronix Versatile Probe Interface (or TekVPI in short ). Such interface allows to set the probe attenuation factor automatically by software, and at the same time supply power for active probes. The only problem is, that the TPP0200 (supplied probes) do not have TekVPI, hence the user has to set the division factor manually (unless they need the default value, which is 10x). In case of more expensive probes, for example P6139A, the MSO2024B will automatically detect that the probe is passive with attenuation factor of 10x and will not allow the user to change that, so all voltage readings will be correct. In the channel probe setup window it is possible to choose attenuation factor between 0.001x to 1000x, so if someone has TekVPI adapter to BNC, it is very easy to make 10 or even 100 gain low noise amplifier inside the adapter casing. One the other hand, to utilize this feature the adapter should be powered from a 5 V rail inside the TekVPI interface, which will allow to display voltage as low as 2 uV/div! Measurements with multimeter show, that the TekVPI interface will not supply DC offset for input corrections, so usage of such a device will be very limited. Also MSO2024B has only 1MOhm termination and no 50Ohms, which  shows that it is not a very high end oscilloscope. The reason for this is perhaps the oscilloscope is suited only for 200MHz input, and not intended to be used with active probes at high frequency, where the internal 50Ohms termination is necessary for matching output/input resistance. However, the external 50Ohms BNC adapter for ordinary people will work just fine.

Triggers and bus decode



    What I most like about this scope are the advanced triggers. Since I have TPS2024 oscilloscope in my lab, I could only trigger on rising or falling edges. Using rising/falling trigger combined with trigger holdoff I was able to achieve excellent triggering on small signals. Recently, I started working on complex digital designs, so it would be good to be able to trigger on a specific condition in SPI, I2C, CAN, LIN buses for debugging purposes. For example if I have a very large array, let it be 4000 data points to paint The Batman emblem, then it is hard to trigger by just using edge triggering. I was able to use a 16b logic analyzer to trigger on a 16b DAC bus without any problem and get a stable Batman symbol on the screen. In the original photo I used the rising edge and trigger holdoff. Those settings were good enough, although the waveform had a lot of jitter. I tested the SPI, I2C and parallel bus trigger options, which worked without any flaw. Unlike using the former options I somehow was unable to use the RS232 to trigger on the ““ string, hence something must be wrong with the RS232 triggering/decoding. At first, I blamed my STM32F4 unit and UART configurations, although they were working with the computer without any problems. Perhaps there may be something wrong with the decoding itself, because I just get junk data. If other Roadtest winners can test it, it would be nice to know, if it was my fault, or was it the software bug. (Note that RS232 is not only edge, but time related, so it is much harder to decode compared to, let us say I2C, where the bit value is read by a simple if condition on the clock edge. The same simple idea may be applied to SPI). After playing around with the RS232 decoder I finally managed to compel it to correctly decode the UART packets using ASCII interpretation.



(RS232 decode on  left and triggering on data packet on B1 parallel bus for 0x7CF5h on right picture  )

<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.


(I2C and SPI decode example)

          There are several available triggers: edge, pulse width, runt, logic, setup and hold, rise/fall time, video, and my favorite – bus. The bus decode runs inside the application processor and will impact responsiveness of the user interface. (this statement is based upon my guess that the bus decode is done at the software layer, unlike Agilent‘s hardware decode approach, which makes user interface still responsive while running bus decode). After turning on the oscilloscope the first time, I activated the trial mode for 30 days for all triggers (Automotive, Embedded,Computer). But I found an embedded trigger application module inside the shipping box, so I will be able to use a trigger on the SPI and I2C for an unlimited amount of time. This oscilloscope has two slots for applications keys, so only 2 out of 3 functions could be enabled at any given time. By using an another oscilloscope I was able to figure out, that the key uses I2C EEPROM, to enable built in functions. The key also uses 000 and 010 addressing (0xA0 and 0xA2 without read bit), so even hacking will not give full access for triggering and decoding. One must always keep an extra application key module at hand if the triggers may become needed. And because it is very small, it could be lost or stolen in a lab or other public environment. A suggested  choice would be a serial code input like Rigol or Agilent do. Right now all the modules in cost 225 pounds at, so they are not cheap.



          Serial triggering and Analysis Module adds triggering on packet level information in serial buses used in embedded designs (I2C and SPI), (RS-232, RS-422 and RS-485),(CAN and LIN), as well as analytical tools to help you efficiently analyze your serial bus. These include bus views, packet decoding, search tools, and event tables with timestamp information.


Variable noise filter "FilterVu"


          One of the great features inside this oscilloscope is the variable frequency filter. Usually in an analogue or a digital storage oscilloscope one only had an ability to use hardware frequency limiting (for example varicap or some differential ADC drivers that have this feature already built in). This is rather useful for cleaning the signal from noise, so one does not get trigger errors. This is also helpful in limiting parasitic inductance effects on fast rising/falling edges. Because of that having a fixed 20MHz filter is not good enough. For example, the Batman Emblem was created inside the STM32F4 by using floating point mathematics. To get a filled emblem I was switching positive and negative sides of the emblem envelope to get a nice outline as well as filling. But because I have a 50 MSps DAC  with a ±10 V span (1 kV/us slew rate), I get a 10MHz clock signal with a varying amplitude, and at the highest point I have a 20 V difference in signal “height” at only 20ns edge. In this case even a small parasitic inductance  inside this loop will generate overshoot Vout=Vin - L*dI/dt . Hence it may be a good idea to use a 10MHz filter to eradicate fast edges present in the signal. However because the hardware limiting is fixed at 20MHz I have lot of noise. By pressing the “FilterVu” noise filter button, I selected a 11MHz filter (“FilterVu” has predefined filters, so one cannot chose exact values, and the filter only works at slow time base >1 us/div ). Suddenly, after that, I got an incredibly clean signal. Even though the edges of the signal became degraded, the settling to the original value was still perfect [see pictures below]:




          This filter is implemented at software layer. The idea* is simple: one must take the signal data, perform FFT, and convert it to frequency domain. The real and imaginary parts of the data needed must be kept unchanged and the noise frequency data must be multiplied by zero. The last step is to perform a simple inverse FFT (IFFT). The result will be a filtered signal. In other terms it would be a convolution with sync function in the time domain, or multiplication with rectangular function in the frequency domain. Such operation  is easy to implement in an FPGA, or a DSP processor. So a huge “thumb up” for Tektronix for making this feature in a budget scope!



Wave Inspector



          One of the main advertised features of this scope is wave inspector. Basically what it does is allows a user to find an event of interest in a captured data. For example, with 1.25 M points of memory, it is possible to capture multiple page_write commands to an SPI flash. By pressing the search button, a user can define which packet to search inside the captured waveform. In the picture below, I captured 7 page writes, each containing 256 write operations. In search parameters i defined to find a 0xXF packet (basically search an XXXX1111 packet, where X can be of any numeric value), in return the wave inspector found all of the packets with the specified data, and marked them with a white triangle. By pressing the arrow key, a user can jump between events without touching the horizontal position knob, so it is possible to jump through all of the search events in a matter of seconds. That saves a lot of time and effort in debugging one’s circuit. It is possible to search for many types of events, (basically it is the same functionality as triggering, just with a different purpose, hence all triggers options apply to search events)






      The wave inspector also allows a one to “replay” his waveform at low speed, so one does not have to turn on the horizontal position knob again and again. The replay is controlled by spring loaded pan and zoom ring which change the speed of scrolling, and the knob on top of that controls the zoom (with 1.25 M point of memory, it is possible to zoom 50 000 times, and still be able to see a usable signal!). Although strange it may be, but the “TEST” button is still inactive, and will be used in future updates. A huge improvement compared to other oscilloscopes, it saves a lot of time and I use it very often (it also helps because the application processor is not that quick, so any input on a large decoded signal will result in a lag, and a simple jumping between events works very well, without any lag).





User interface and oscilloscope usage in general


          Anyone who worked with analogue or digital oscilloscopes will find this one very easy to use. All basic stuff for vertical, horizontal and trigger setup is the same. The only thing that could confuse a user is that the oscilloscope has so many features, that sometimes one does not know where to find them. Though after 1 week of using this scope, I learned user interface and little catches that can impact measurement, performance and so on. Although, I still have some complains: The only pushable knob is „Set trigger to 50%”. I would like to have pushable knobs to set vertical and horizontal positions to zero. For vertical it is not that difficult to do so, one just has to turn the vertical knob a few times. However, if the bus decode is enabled, and one has a slow time scale with a lot of packets, any input on the horizontal axis will lag badly. If the trigger is far from one’s current position on the screen and needs to be set to zero, it will take a lot of time to reset. Moreover after one or two turns of the horizontal position knob the scope will become unresponsive. It will try to redraw the screen to match one’s input. And if a user keeps turning the horizontal knob, the oscilloscope will remember this input, and the original target will be overshot.

          Sometimes the scope can be unresponsive up to 30s, which is not acceptable!!! The workaround it to press the “acquire” button, set the delay on, and set the vertical position to zero. As far as I know, Agilent MSOX2000 series have pushable knobs for setting vertical and horizontal positions to zero. Why can not Tektronix do the same? Though I was able to find in the internet, that Tektronix uses a FreeScale MPC870VR133 MPU that runs only on 133MHz clock speed. Why can not Tektronix use Blackfin or Shark DSP? At least it would be ten times faster, and cost just extra 30EUR for a chip (maybe because all licenses and programming for Analog DSP are expensive, I realy do not know) .That explains* why MSO2024B only has a 480x234 screen, because it would become too slow to use at 800x480.  No wonder that it can only capture 5000wf/s at best*, while Agilent and Rigol can do so at 50 000 wf/s.




(only 8 digital and 2 analog channels are enabled (10 of 20 channels) on a small screen on the top left corner, measurement gating on the bottom left corner, aliasing problem on the top right corner, note that zoom factor is 10.000x and measurement selection on the bottom right corner)



          And they also have a much better colour grading than Tektronix “Digital Phosphor Technology”. More to that what I really like in this oscilloscope is – measurements, because they can be selected for: all record length, only for screen, and for signal in between cursors, which is very handy to have. Measurements can also count edges, pulses, burst length, positive and negative pulses, area, not to mention all the usual stuff like phase difference, min ,max, mean, rms, overshot and undershoot. Huge “thumbs up for” Tektronix! On the other hand this scope is suffering from aliasing (I prefer to call it strobing). Supplying high frequency sine wave, at slow time scale one will see a lower  frequency sinusoidal signal that is multiple times slower than the original signal. The only thing that informs that something is wrong, is a „glitch“ background. The glitch is of a lighter colour than the signal on the screen. And it looks like the oscilloscope uses linear interpolation* – again because of a weak processor, though it is not hard to perform convolution to a sync function to recover points. Furthermore the colour scheme looks a bit old, like Windows 98 GUI, while Agilent and Rigol look like Windows 7 – more polished, with modern looking colours, though that is not a huge problem.


XY Mode



          Like many oscilloscopes, MSO2024B has an XY mode. Not only that, it has specialized cursors that help doing measurements on the display. This is very useful for phase, frequency, resistance and capacitance measurements, volt-ampere characteristic visualization, and for Lissajous curves. I used an integrated calibration output for painting a circle, and a ±10V DAC controlled by an STM32F407 to get diode VI characteristics. Cursors for measurements include ratio, polar angle and product (area).


(diode VI on the left curve, and RC Lissajaus curve on the right picture)




All in all, this oscilloscope is really well made and satisfies all needs for digital and analog designs. I really like that it has 4 analog and 16 digital channels, can decode I2C ,SPI, and other, has many measurements, fast search functions and so on. Considering the drawbacks: the  user interface lags when the decode is running because of a weak processor; has only one pushable button, so there is no quick way to set vertical and horizontal positions to zero; digital phosphor technology is still not as good as Rigol intensity grading. If I could spend 3650$ on an oscilloscope, I would take Agilent DSOX3014A, because it is almost of the same price, has better overall performance and , more to that, has double sampling frequency. Even if the analogue front-end is 100MHz, it will still work with 200MHz signals, the only problem would be the loss of amplitude and fast edges, though most of the time I am working with signals below 100MHz. In addition to that, the waveform capture rate is 1M, which makes it the fastest scope in the market up to date, because of Agilent’s developed MegaZoom ASIC, that could only be beaten by a real analogue scope!

If I do not work with a parallel bus, like 8 or 16 bit long, my option would be Rigol DS4032, because it has a very good display a with wonderful intensity grading. Besides that, it has a 350 MHz analogue front-end coupled with a 4GSps ADC. The memory depth as well as waveform capture rate are incredible compared with Tektronix MSO2024B. Moreover it does all the serial triggering and decoding as well. Although I miss the insulated analogue front-end, like the TPS2024 has. When working with power electronics, it is so nice to be able to probe not only low side switching devices, but high side as well, or probe 220 V line, without making the scope light up like a Christmas Tree! That is what I miss the most in modern digital oscilloscopes. Also the MSO2024B does not have segmented memory, which is very handy when working with fast signals (like SPI or I2C data packets) at low burst rate. Agilent (optional) and Rigol (standard) have this function.

          So in short, Tektronix MSO2024B is a great oscilloscope, and will satisfy all needs for a digital oscilloscope in general, the only problem is that the competition in this field is rather large, take for example Agilent with Rigol at this price range. (Not to mention other brands, like LeCroy, BK Precision and others).I spend few days while debugging circuits that include serial buses and I must say, my work become way to easy on testing complex digital circuits. I couldn't do that with TPS2024, or it would take ages to make the same measurements, not to mention bus decode. I am hugely impressed by thees modern scopes which include advanced triggering and bus decode. I can't say "thank you" enough for element14 community for supplying this oscilloscope for review, it changed my life, and it is really what Tektronix say in commercial, discover problems in mater of seconds not days, and yes, that is true !





( sentences marked with star " * " is my opinion, and need confirmation )



  • well, i am not very picky. if i use it frequent, i will get it easer and easer to use. Right now only problem with user interface is that i use 4 ch vertical scale as horizontal knob, but that is because i had TPS2024 as my main scope for very long time . (and last knob above trigger is horizontal knob, so i always twist 4 ch knob to set horizontal scale )


    Other than that user interface is excellent
    Only complain in general  is lack of performance in user interface, but that is also ok.

  • Great review, and very detailed. The use of that generated batman signal is an awesome way to show off the screen on this scope, makes it a lot more interesting than a standard sine wave. How did you find user interface (UI) of the instrument? I find that when I used a similar oscilloscope that the button placement / menu organization was pretty unintuitive, but perhaps that's just because I'm most used to Agilent equipment.





  • Great review.  Nice, clear photographs and a complete description of all the important features of this oscilloscope.

    I used one of these oscilloscopes for a couple of years.  You have identified the same limitations and great features that I discovered as a user of this instrument. 


    Well done



  • Great review, seems like a good scope and bat signal is awesome.

    I do think that i would like to see bigger screen since other brand *cough* agilent *cough* does provide bigger screen.

    Drop in responsiveness / lag is also very interesting. Perhaps a stress test and monitor how long it takes to recover.

  • This code will work with internal DAC inside STM32F4DISCOVERY, output is PA_04 pin

    Have fun !

  • Thanks, I saved the code. Just in case I ever get to use it:)



  • Here is function to paint batman, note that you must add math.h and other functions to make it work.


    Scaling is for 16b dac, so 0 to 65535, it is very yeasy to change to 12b or even 8b



    If some one don't have dac, and realy want to test it, and by chance have STM32F4Discovery, i could make it work on internal dac , so no other hardware is needed

  • It would be great if you could Upload the Batman code. But, I can't use it now. Maybe others can, though. I don't have an Oscilloscope now. Except an old broken Analog Oscilloscope, that I have in the Garage. Saving it, hoping to be able to fix it one day...



  • Yea, i spend some time preparing Batman emblem for this roadtest review. I wanted to make video, that includes this emblem to show triggering, and us decode options, aliasing and so on, but i was unable to film screen so you can see what i am doing image

    If some one is interest in Paint_batman() function, i can shrate it ( it is made by f32 math and printed to u16 array,8000 points long)