Rigol DS1054Z, GW-INSTEK GDS1054B and Hantek DSO4084C digital oscilloscopes
Over a period of five years I have bought myself three low-end modern digital oscilloscopes, the Rigol DS1054Z, GW-INSTEK GDS1054B and Hantek DSO4084C. None of them gets any serious use because my projects have so far been done on my old but trusted HP 54615B 500MHz oscilloscope. My HP 54615B has only two channels but is fully populated with various options (FFT + serial) and was last calibrated in 2010 – nothing can beat its reliability and accuracy!
Recently due to various reasons I had to sell away the HP54615B, leaving me with these three low end digital oscilloscopes, which are still sufficient for my day-to-day job, which is at present mostly limited to embedded micro-controller design. With some free time, I performed several tests to answer a very simple question – which scope is the best among them?
Out of the box the Hantek DSO4084C is a 80MHz digital oscilloscope while the GW-INSTEK GDS1054B and Rigol DS1054Z are 50MHz. The Hantek DSO4084C is the only one which comes with a 25MHz built-in function generator. All three come with various hacking capabilities, in theory up to 300MHz for GDS1054B, 250MHz for DSO4084C and 100MHz for DS1054Z. We’ll test later to see if these hacks actually work.
Upgrading the Rigol DS1054Z is trivial, just follow the instructions here and use the key generator here to generate the correct license key for 100MHz, and other modules (triggers, decoder, etc.). Hacking the Hantek DSO4084C requires you to open the case, solder a 2mm 4-pin (not 2.54mm) connector for UART TX/RX/GND, and run a few Linux commands to update the scope model to 250MHz files – the detailed instructions can be found here.
Upgrading the GW-INSTEK GDS1054B to a theoretical bandwidth of 300MHz is non-trivial, at least for my scope, and will be covered in details in this article. First you need to retrieve the scope serial number (something like GEU16XXXX) by pressing the Utility button, choose System tab, and choose System Info:
Then, download the license generator file at the end of the article (or here on the eevblog forum). It is a very simple HTML file with some Javascript which will generate various license key files for a given serial number. Open it in your favorite browser, enter your serial number, and download the license key files for the Power Analysis, Serial Decode, Waveform Search, Segmented Memory and 300 MHz (or 100MHz/200MHz if you prefer) Bandwidth modules. Copy these file (extension .lis) onto your FAT32-formatted (not NTFS) USB2.0 (not USB 3.0) thumbdrive, insert it into the Rigol, press the Utility button and choose File Utilities:
Select the license key you want to install (for example 300M.lis). If you are lucky, it will say license has been successfully applied. You can then reboot the scope and the System Info panel should show that your scope has been upgraded to 300MHz (or so it says):
If the scope complains that the license key is invalid, check your Firmware version. Apparently GW-INSTEK has removed the ability to install the license key this way in recent firmware version, e.g. 1.34. If so, you will have to downgrade to an earlier firmware such as v1.12 (link to download at the end of the article). To do so, turn the scope off, copy the firmware upgrade file (gds1000b_v1.12.upg) to the USB thumbdrive (remove all other files), insert the drive into the scope and press the POWER button while at the same time rotating the VARIABLES knob repeatedly. The scope will then detect the firmware file and begin the flashing process. When the status indicator is 100% and the status says “NAND Flash Successful”, wait a good 10 minutes before restarting the scope. Once the scope has finished booting up, verify that you are on the older firmware before attempting to install the license files again.
If the scope does not recognize the USB thumb drive in safe mode (but works well in normal mode), try to use an old and small FAT32-formatted USB 2.0 drive. Safe-mode only loads a limited set of drivers and may not support USB 3.0 devices.
Once all license files have been loaded you can also see the serial bus decode, search trigger setting and segmented acquire in Utilities > System > Function Module (last page):
Now, keeping in mind that an input sine wave whose frequency approaches the oscilloscope’s rated frequency will have its amplitude attenuated to 70.7% (the 3db point), let’s test whether the upgrade actually works by feeding a sine wave with constant amplitude (Vpp = 1.2V) and varying frequency from 50MHz to 450MHz into these test scopes. We will then note down Vpp, rise times and fall times measured by the scopes for comparison.
The results are summarized in this table with voltages in mV. Take note that the Hantek is the least accurate scope (see later) and the measured Vpp fluctuates, even for a stable signal.
Frequency (MHz) | 50 | 70 | 83 | 100 | 150 | 211 | 220 | 234 | 250 | 278 | 300 | 323 | 344 | 387 | 400 | 433 | 450 |
GW-INSTEK GDS1054B | 1030 | 976 | 984 | 816 | 564 | 202 | 182 | 142 | 108 | 84 | 68 | 48 | 36 | 17 | 14 | 9.2 | 8 |
Hantek DSO4084C | 1120 | 1230 | 1010 | 1190 | 1060 | 1100 | 976 | 744 | 624 | 552 | 396 | 206 | 94 | 5 | 2.68 | 3.16 | 0.16 |
Rigol DS1054Z | 1140 | 1180 | 928 | 944 | 752 | 616 | 576 | 508 | 460 | 444 | 444 | 420 | 392 | 344 | 328 | 166 | 154 |
The results are also plotted below as a line chart for illustration:
The following photo (created using this tool) combined all oscilloscope screenshots from the above tests into a single image. Click on it to download and view the full resolution image, preferably with Irfanview:
We can see from the results that the 3dB point is approximately 100MHz for the GW-INSTEK GDS1054B (theoretically upgraded to 300MHz), 130MHz for the Rigol DS1054Z (theoretically upgraded to 100MHz), and 230MHz for the Hantek DSO4084C (theoretically upgraded to 250MHz). Taking into account measurement inaccuracies, we can say that the upgrade to 100MHz for the Rigol DS1054Z (official bandwidth: 50MHz) and to 250MHz for the Hantek DSO4084C (official bandwidth: 80MHz) has been successful. The upgrade to 300MHz for the GW-INSTEK GDS1054B is in no doubt a failure, in so far as the 3dB point is at only 100MHz, and not at 300MHz, had the upgrade been successful. Clearly, the bandwidth of our upgraded GDS1054B is not 300MHz, regardless of what the system information screen shows. Most likely, the GDS1054B hardware will also need to be upgraded for it to support 300MHz. I did not measure the 3dB point of the GDS1054B prior to the upgrade. I do not know if an out-of-the-box GDS1054B (without any upgrades) would do worse at 100MHz.
Another observation from the tests is that on the Hantek, beyond the 3dB point, the measured Vpp of the input signal drops sharply from 624mV at 250mV to 5mV at 387mHz, down to the noise floor, after which the scope can no longer trigger on the input sine wave (Vpp=1.2V). The INSTEK drops sharply from 816mV at 100MHz to 202mV at 211MHz, after which the drop is not as sharp. On the Rigol DS1054Z, Vpp decreases at a constant rate from 444mV at 300MHz to 154mV at 450MHz, and continues into the noise floor at approximately 800MHz. For an input Vpp of 1.2V, 450MHz is the highest frequency I could get the GDS1054B to trigger (displayed Vpp=8mV), beyond which the scope would only display noises. For the Hantek, this frequency is around 370MHz. Some aliasing happens on the DS1054Z at 450MHz, but the frequency measurement is still correct. At higher frequencies up to 800MHz, although the Rigol could still display what resembles the sine wave input, due to aliasing, the measurements are all wrong. Here is the DS1054Z displaying a 666MHz signal with Vpp=1.2V (displayed Vpp=42mV):
During my tests, the Hantek, despite its higher 3dB point, has worse measurement accuracy than the other two scopes. The measurement could jump by as much 0.2V for an input Vpp of 1.2V depending on voltage per divisions settings. This did not happen for the other two scopes. The GW-INSTEK DSO1054B has the most accurate frequency counter among all, being able to measure to up to 4 decimal places (e.g. 99.9949 or 149.995) up to 400MHz. The Rigol DS1054Z has 2 frequency counters, one in Measure > Counter (left menu, shown at top) and another in Measure > Freq (right menu, shown at bottom). For a signal having not too high frequency and not too low amplitude, both counters usually agree, although the top counter is usually more accurate (up to 5 decimal places). For a high frequency signal that is heavily attenuated, the bottom counter is still accurate while the top counter will be incorrect (e.g. displaying 100MHz for a 400MHz signal).
Another thing worth mentioning is that the shape of the sine wave on the Rigol is less smooth for frequencies 70MHz and above, compared with the rest of the scopes. At 70MHz and 80MHz, there are also some distortions on the sine wave peaks on the Hantek scope, but these effects are not noticed at high frequencies. I believe this is simply due to subtle differences in input sampling/smoothing algorithms between the scopes.
Rise times and fall times measurements on all scopes appear to be correct to around 250MHz (<2ns). At this frequency, both the Rigol and the Hantek measures 1.2ns-1.3ns whereas the INSTEK measures 1.7ns. The INSTEK measurements for rise/fall times are always higher, likely due to its limited bandwidth and hardware. At 322MHz, the Rigol measures 1.1ns whereas the Hantek measures 0.9ns. At 344MHz measurement becomes inaccurate on the Hantek (3.84ns) fall time while the Rigol continues to do well (<900ps for both rise time and fall time). At 400MHz the Rigol finally fails (rise time undefined, fall time 3.3ns). You could increase the input Vpp to e.g. 5V and observed slightly better high frequency performance on all scopes. However, once the frequencies are too high, their limited bandwidth renders any measurements on these scopes useless even if the attenuated Vpp is well above the noise floor.
The following pictures demonstrates how FFT and cursor works on these scopes, for a 1MHz square wave input. The FFT shows harmonics at 3MHz, 5MHz, 7MHz, expected for a 1MHz square wave:
Among the scopes, the Rigol has the most difficult to use FFT. It is highly unresponsive and adjusting the horizontal / vertical FFT scale could take 3 seconds for the scope to respond. FFT adjustment is immediate on the Hantek and on the INSTEK. On the Rigol and Hantek, the cursor can be set to point to the FFT channel, which can’t be done on the INSTEK. FFT measurements using cursor are accurate at low frequencies on all three scopes. At high frequencies, it took some efforts to get accurate FFT display on the Hantek scope, which only has 64K points memory (the Rigol has 24M while the INSTEK has 10M). The Hantek has an AUTO-SCALE for FFT, while the other two don’t.
I also fed in a 100MHz sine wave and took the FFT screenshot for all scopes. The cursor measurements remain accurate.
The Hantek also has an integrated multimeter, which can be configured in Utility > DVM. Available settings are input source, display (AC RMS/DC RMS/DC) and autorange. In my view the DVM is useless as its RMS measurement often disagrees with other measurements except for signals less than a few hundreds kilohertz. The DVM frequency display is nevertheless accurate:
The Hantek DSO4084C also has a built-in 25MHz function generator, accessible via the WAVE GEN button:
The generator supports modulation (AM/FM), sine/square wave/ramp only, no external modulation:
The signal generator is not very useful for me as I prefer a dedicated generator whose display and knobs are still accessible to me while I use the scope for troubleshooting. Still, I must say that this generator is very accurate, a 25MHz sine wave output reads as 24.99810 on my Victor VC3165:
If you can’t change the frequency of the generator after setting to 25MHz, likely it’s a bug of the firmware and you will have to press the DEFAULT button to clear all settings. Don’t confuse this button with the AUTO-SCALE button, which sets the voltage per division and timebase settings, among other things. I like the AUTO-SCALE button on the DSO4084C, which works instantly and often sets the correct settings.
What I don’t like about the DSO4084C, after the successfully 250MHz upgrade, is its low memory depth (64K points), poor measurement accuracy (likely because of low memory depth) and the lack of a hard copy button. I can only take a screenshot through the Save/Recall button, which will often hide the right bar menu. Images are saved instantly, albeit in BMP format (and not JPG/PNG), wasting disk space. The motherboard has an RTC backed by a CR2032 battery, so the saved images are correctly timestamped, unlike the Rigol DS1054Z which sets the file creation time to 2014, and the INSTEK, which doesn’t set timestamp for the files at all. Finally, the USB port (at least on my unit) only works well with USB 2.0 thumb drives – plugging in a USB 3.0 thumb drive and the scope will repeatedly show “USB connected”/”USB disconnected”, requiring a reboot. USB 3.0 thumb drives work well on the other two scopes, in normal mode. The motherboard also has a (frivolous) SD card slot, which if installed, will serve as another destination to save files, in additional to the USB port. As a reminder, when you disassemble the scope, be careful not to severe the plastic power switch which protrudes through the case. If you do, your scope will have to remain permanently on, just like mine!
The Hantek DSO4084C also has a bug in its printout feature. If a measurement changes while the printout is in progress, then there will be strange characters in the saved image. This rarely happens though because the printout finishes almost instantly. I believe this is because the printout feature directly streams live bitmap data to disk, instead of using a buffer. To avoid this issue, stop the signal before saving it. See the photo below, the affected area is highlighted in red:
The Rigol DS1054Z scope is a rock solid scope in my opinion, working well above its theoretically upgraded frequency of 100MHz. The scope has memory of 24M points, accurate measurements, and remains usable at frequency much higher than its rated bandwidth. It also has an Ethernet port for network data transfer. It does have its drawback such as slow auto-set and slow “quick-print” feature, which often takes 10 seconds or more. To workaround, press the stop button before pressing quick-print, and the process will take around 5 seconds. I can’t find any workaround for autoset, which takes around 15 seconds. But then again, how often do you need to use Autoset? As for the slow FFT adjustment, I just have to learn how to live with it. Actual FFT updates are fast, just that screen updates after changing settings can be slow.
The GDS1054B’s autoset and printout feature (via the HARDCOPY button) works almost instantly. There is also an Ethernet port. The memory depth is 10M and and measurement accuracy is great. Its FFT is spot on, fast and accurate. Despite a failed upgrade to 300MHz, the GDS1054B is still very good 100MHz digital scope, in my opinion.
All in all, the cost effectiveness of the DSO4084C, even after the successful upgrade to 250MHz, is questionable. If you have 400USD to spare and can stand the low memory depth, poor measurement accuracy and firmware instabilities of the DS4084C, then you can buy the scope to be used in times when you need to have a very rough idea of whether a known 200MHz signal is present on a particular pin. If not, I would suggest saving money to buy a more well-designed scope. If I have to pick one, I would choose the DS1054Z as my 100MHz scope. The GDS1054B would be kept as backup.
The files needed to update the GDS1054B firmware is available under a compressed ZIP archive (Instek DS1054B Firmware Update.zip) at this link.
See also:
Vintage oscilloscopes to the test: Hitachi VC-6025, GW-INSTEK GOS-6103 and Kenwood CS-5275
Programming the Tektronix TDS 340 100MHz digital storage oscilloscope
Tektronix 1230 Logic Analyzer
GDS1000B series can be upgraded only to 100 MHz, the reason there is a 300 MHz option is because the same hack can be applied to higher spec series like GDS2000E, etc. I upgraded mi GDS1054B to 100 MHz. Testing risetime with Leo Bodnar’s pulsers gave me a worst case rise time of 3,2 ns so about 109 MHz. However if considering overall system performance, using 150MHz testec probes theoretical effective bandwidth remains at about 88 MHz IIRC; and indeed the measurement using a upgraded rigol DG811 confirms that. To get overall system performance about 100 MHz would require to use 300 MHz proobes so Keysight advice to get probes rated 3x the bandwith one want to measure holds true.