MT8205 review – piece of junk

I’m always looking for bargain test equipment, and sometimes I get burnt; hopefully this review saves you from wasting some time and money.

I bought the Mustool MT8205 from Banggood who advertise it as a “2 in 1 Digital Intelligent Handheld Storage Oscilloscope Multimeter AC/DC Current Voltage Resistance Frequency Diode Tester”; it sells for just under $50 shipped.  I love Banggood and have had lots of good experiences with them, but buyer beware: this product is a waste of money at any price.  (Update: Although this product is something to avoid, Banggood is wonderful and I highly recommend them.  They took this product back at their cost just because I was unhappy with it…now that’s great customer service!)

Mustool MT8205

While it looks good, feels solid, and comes with nice probes and case, it simply isn’t useful for making measurements as my tests below will show.

Let’s start with how it works as an oscilloscope since that’s the interesting feature of this device.  When I ordered it, the ad said 200ksps which would suggest it is useful to look at signals up to at least 20kHz…not great, but at good enough for looking at audio and PWM waveforms.  However, as the ad now says, the analog bandwidth is limited to 10kHz.  A 15kHz signal is severely distorted and it won’t even try 20kHz.  A 10kHz ramp looks just like a 10kHz sinewave.  See the pictures below where I feed it a 15kHz sinewave and a 20kHz sinewave from a Rigol signal generator showing that the bandwidth is indeed limited to 10kHz (i.e. useless).  There are other issues too: there is no trigger control, the signal is always AC-coupled (so you can’t measure anything DC), there are none of the controls you’d expect to find on an oscilloscope and it’s too slow for virtually anything these days.  The scope feature is a complete bust.

To add insult to injury, the multimeter functionality is useless too!  The readout is only 3 digits and even those aren’t accurate!  I hooked the meter up to a lab voltage standard and checked the output with a calibrated 7-digit HP bench meter.  The 10.0000V standard was dead on with the HP meter, but read 9.95v on the Mustool.  What’s worse, when I used it to measure 2.5v and then used it to measure 10v again, it took several (I’m talking 4-5) seconds for the readout to gradually climb to 9.95.  Useless.


  • Large/heavy/manual-ranging multimeter
  • Only 3 digits, only 2 of which are accurate (see 10vdc lab standard)
  • Incredibly slow: takes several seconds for voltage to read properly
  • Limited to 10kHz analog bandwidth
  • AC coupled only
  • Oscilloscope has no controls so not even useful as a teaching tool

10VDC from Lab Standard

15kHz sinewave

20kHz sinewave


I’ve been looking for a relatively lightweight cross-platform embedded development environment for some time.  I target mainly STM32, ESP8266, and ESP32 platforms and use both Linux and Windows development machines.  For various reasons I’m not satisfied with the existing solutions:

  • Arduino – too primitive
  • EmBitz – very nice but no linux and no version control integration
  • VisualStudio+VisualMicro – nice but no linux support
  • Eclipse/NetBeans – too heavyweight and poor embedded integration

So I tried the Atom editor with the PlatformIO-IDE plugin on Windows workstations and on a low-end linux laptop and it works nicely!  I’ve since switched to the VSCode editor which I prefer over Atom.  The install, initial test build using the Arduino Core, and download/run worked well for an ESP8266 target.  I have since used it for Java projects as well.  VSCode is cross platform (Windows/Linux/Mac), and lightweight/fast.

I consider several features essential for an IDE:

  • code completion
  • source-level debugger integration with svn
  • version control integration
  • serial upload/monitor integration (especially for EspressIf platforms)

The community (free) version supports code completion, version control integration, and a rich set of plugins although it clearly prefers git; the subversion plugin doesn’t work very well (see below).  The debugger is not available in the free version and requires the Basic paid version ($10/mo).

The version control integration is spartan and on Windows relies on TortoiseSVN (which is good to install anyway).  Tortoise really needs PuTTY installed too if you use an svn+ssh server.  The right way to do it is to generate a signed certificate and install it on your servers so ssh access is seamless as described here or you can do it in cygwin:

  • ssh-keygen -b 4096 -t rsa -N ”
    (creates private & public certs: id_rsa and in ~/.ssh)
  • ssh-copy-id
    (install your public certificate on server

Once your certificate is installed (puts public cert into ~/.ssh/authorized_keys on your server), logins no longer require password authentication.  Note that if you use cygwin or linux you’ll need to convert your key to be PuTTY compatible…see here.

The serial monitor isn’t as friendly as I’d liked, but is actually quite effective using hotkeys.  See the bottom of this page.

A good video on installing for ESP8266 is here and another on installing external libraries here. Information on managing the Arduino Core is here.

A video on STM32 support is here.


Home Automation

Several  years ago, we had a water leak in an upstairs bathroom that did a surprising amount of damage overnight.  We had it all repaired, but I resolved to put some automation in place so I would know much earlier if something was going wrong in the future.  I wanted a way to monitor my home remotely using my cell phone and to receive push notifications and an audible alert (even when I am home) if something’s going wrong.

I had experimented with home automation years ago using X-10 which was neat, but their current-carrier and wireless technologies weren’t quite mature enough and the system was problematic.  Technology has come a long way since then so I decided to try home automation again.

I didn’t want WiFi devices for a host of reasons including security, wireless range, and battery life, so I chose Z-Wave for the wireless technology and deployed a Staples Connect hub (made by D-Link).  That worked well for several years until Staples discontinued support; they handed support off to another company, but they are gone too and DLink won’t support it so the Connect Hub is now a $99 brick.  My lesson: don’t buy Staples branded products…and shame on DLink for allowing Staples to use their brand; I bought it because I trusted the DLink brand.

Fortunately, since Z-Wave is a standard, I only needed to replace the hub, not all of the sensors and controls.  I replaced it with a Wink Hub which is also multi-protocol (Z-Wave, Zigbee, WiFi, Lutron, Kidde,…). It was incredibly inexpensive ($34 on Amazon Prime), but I had some challenges getting it going (see below); it’s saving grace is that Wink tech support is the best I’ve ever encountered.  More than once during the first week of ownership, I was ready to ship it back to amazon, but each time, a call to support quickly solved my problem and left me enthusiastic about Wink; they answer the phone right away and their techs are patient, knowledgeable, and get the problem solved quickly; I’m impressed.  If it continues to work well, I’ll buy their newer Hub2.

I installed water leak sensors in the bathrooms and in the basement by the hot water heater and then added motion and door switches, light controls, door locks, etc..  The Z-wave devices work well, with long battery life, excellent wireless range, and very low latency.  So far I have the Wink hub working with:

As mentioned above, the Wink Hub has had some foibles too:

  • Initial Firmware Update was a bear; although my hub was brand new with a blue dot on the box, it needed to update its firmware and couldn’t do so using my access point.  Even though it was connected to the WiFi network (solid yellow light), it couldn’t reach the Wink servers (which would yield a solid blue light).  I eventually succeeded and it worked fine after that, but here’s what I had to do:
    1. turn off my wifi access point to force the hub to disconnect (blinking purple light)
    2. set up a cell-phone hotspot configured for 2.4GHz
    3. Run the wink app on another cell-phone and use it to configure the hub to connect to my hotspot and through it to their server (blink yellow->solid yellow->blink blue->solid blue)
    4. Allow the hub to download its new firmware (blinks all sorts of colors as it updates…when finished, it returns to solid blue).
    5. Turn off the hotspot to force the hub to disconnect (blinking purple)
    6. turn my wifi access point back on
    7. Use the wink-app to reconfigure the hub to use my access point wifi (blinks yellow->solid yellow->blink blue->solid blue)
  • Adding Devices: Initial paring of new sensors/devices can also be finicky; once a sensor is paired, it seems to stay paired and work well; the magic formula seems to be:
    1. use the wink app to put the hub in exclusion mode (blinking blue light)
    2. press the z-wave button on the new sensor once every second or two until the hub light turns green
    3. use the wink app to put the hub in incusion mode (blinking blue light)
    4. press the z-wave button on the new sensor once every second or two until the hub light turns green
    5. If the above doesn’t work, try power-cycling the hub and then trying again.
  • The Wink App: seems to stop working once in a while and I have to shut it down via Android and start it again.

Frequency Counters

Although less exotic than the SA and VNA tools I use during development, I find I make use of basic frequency counters pretty often (mainly to calibrate equipment).

A frequency counter does only one thing: measures the frequency of an RF signal.  What’s important for a good counter is frequency range, timebase accuracy, speed of measurement, and of course cost.  I try to only purchase counters with an OCXO frequency standard although a good TCXO is often sufficient.  An external reference input is very useful when you need very high precision so you can slave the counter to a higher accuracy lab frequency standard (OCXO, GPSDO, or Rubidium).

Having had quite a few counters, I’ve concluded that older HP/Agilent counters offer the best value, especially if you’re willing to spend $200-250 on eBay for one with their excellent OCXO timebase option (4).  If that price is too high, you can find lower priced counters, but I think it’s a mistake to buy one without at least a good TCXO and/or external reference input.

I have a couple of HP5385A counters that work to 1GHz; one has the TCXO timebase and is quite accurate; the other has the superior OCXO timebase.  I also have an HP 5386A with OCXO that is good to 3GHz.  For higher frequency measurements, I have an HP 5347A that integrates a power meter and frequency counter up to 20GHz, its maximum frequency resolution is 1Hz (plenty for higher frequency measurements); it only has a TCXO timebase so I almost always use it with an OCXO or rubidium lab standard; it is larger/heavier than the other counters, but it’s hard to get an affordable counter with that much bandwidth.

For counters that are no longer officially in calibration (per certificate), I use a Trimble Thunderbolt GPS-disciplined oscillator (GPSDO) to calibrate them annually.

Pocket Multimeter

During robotics season, I carry a multimeter in my backpack and as much as I love the UNI-T meters, weight and size start to matter when you carry something all the time so I wanted a smaller, lighter multimeter that still offered full functionality.  In my car, I keep an old Triplett 2030-C which has served me well over many years; the Aneng AN8203 is a knock-off that can be had for under $10 on AliExpress; both have frequency and duty cycle measurement (important for looking at PWM signals in robotics) along with the standard voltage/resistance/continuity and capacitance…but the Aneng has no current measurement where the Triplett does (however the scale isn’t useful for robotics).

Cheap Ultrabooks

Updated 8/2019: My daughter inherited the Acer CB3 and makes extensive use of it; I no longer have the Toshiba; it is still a great machine, but my over-50 eyes now need larger fonts than are rendered on a 13.3″ FHD screen.
I’m not a big fan of expensive laptops.  Computer equipment depreciates at a terrific rate and portable computers are subject to loss, theft, and damage so I want the least expensive machine that will do the job.  That said, I also want it to be compact, light, fast, and last all day on a charge (i.e. an ultrabook).  This may seem like a tall order, but I have found three solutions that I’m happy with.  All involve hacks:

Toshiba Chromebook 2

For MS Windows: The Toshiba Chromebook 2 Model CB35-C3350 has a Core i3-5015U with 4GB DDR3 and a 13.3″ 1920×1080 IPS display.  It’s meant as a Chromebook, but you can replace the internal SSD with a larger one (necessary for it to be useful and I had a spare 64GB M.2 drive on hand) and thanks to, you can install Windows, turning it into an excellent Windows ultrabook.  The main downsides are limited battery life (4-6 hours) and as I’ve gotten older, I find that 13.3″ screen is a little too small.  However, it is extremely portable, fast, sleek, and can regularly be found on eBay for $250-300.

Acer Cloudbook 14

Ultra-cheap-book: Ubuntu Linux: The Acer One Cloudbook 14 has only 2GB of RAM, a slow 1.6GHz Celeron N3050 processor, 14″ 1366×768 display, 64GB SSD, and 10 (real) hour battery life.  So other than the battery life, this is low-spec.  It’s woefully under-powered for running Windows and slows to a crawl as soon as you start doing anything with it.  Fortunately, it is better spec’d for Linux and once I loaded Ubuntu, it was surprisingly snappy and effective.  My old eyes appreciate the larger screen and the very long battery life makes it a great knock-around machine.  You can’t use it for for much software development: the big IDEs like NetBeans and Eclipse are too much for it, but most other apps run just fine.  It can often be found on eBay for $50-$100 and it’s tough to beat that for a thin, light, all-day laptop that’s practically disposable.

Gallium (Ubuntu) Linux: Last but not least is the Acer CB3-431 which is a 14″ Chromebook with a full HD screen (1920×1080), 4GB of RAM, 32GB eMMC storage and a quad-core Celeron N3160 1.6GHz processor; the case is aluminum and looks pretty snappy – an apple knockoff. This is my current carry machine.

Acer Chromebook 14

You can follow these instructions which use Mr. Chromebox to replace the BIOS and install Gallium OS (a great Ubuntu variant designed for Chromebooks) and turn it into a real linux laptop while keeping ChromeOS as a bootable option.  Because linux is relatively lightweight, even with LibreOffice, Slack, Thunderbird, Wine, EmBitz, Eagle, Oracle Java, NetBeans, Tomcat, Arduino, and a full gnu cortex cross development environment installed, I still have used only 50% of the Gallium root partition and it runs fast.  Battery life appears to be > 8 hrs.  Dual-boot has come in handy (it let me recover when a grub update prevented linux from booting) so I recommend it as well as setting the GBB flags as described in the instructions.

Note: if you update grub, it will ask you which partition to use: select the one that covers the entire disk (mmcblk0 I think), not just linux partition (mmcblk0p7).  If you select the wrong one (or both), it will not boot linux.  If you’ve dual-booted, you can reboot to chromeOS (ctrl D at startup screen) and recover.

If you are OK with (or prefer) linux on a light, inexpensive laptop, the Acer CB3-431 is a nice choice and is now the laptop I regularly carry.  It is commonly available “recertified” from vendors like NewEgg for $180 making it not quite disposable, but still very inexpensive. The main downsides are the non-expandable storage (32GB) and the lightweight processor, however I’ve found it extremely usable, all of my apps fit nicely and run at acceptable speeds.  Unfortunately, 1920×1080 is proving tough on my over-50 eyes, even on a 14″ screen.

So I’ve ended up with a Chromebook running Linux, another running Windows, and a Cloudbook running Linux…none of them running what they were intended for…weird!

What I’m still looking for is a thin laptop, less-than 4lb, 15.6″ screen with full HD, Core i5 processor, 8GB of RAM, 128GB+ of SSD, and 8hr+ battery life…for around $300.  Suggestions are welcome!

LG Ultrawide Monitor

There is no such thing as too much monitor…although I think I’ve come close this time.

I bought an LG 34UM69G 34″ ultra-wide monitor for the office from amazon for $215 on Cyber Monday. It has 2560×1080 resolution and is indeed very very wide (21:9 aspect ratio). It’s taking the place of another high-def (QHD) monitor with a more traditional aspect ratio.

When I first saw the box, I worried that it might not fit on my fairly large desk, but I was pleasantly surprised; the ultra-wide monitor fits nicely and looks great. The panel itself had no dead pixels and is very thin with almost no bezel so it looks and feels smaller than the 28″ monitor it is replacing. The base is elegantly designed, feels solid, installs with no tools, and has good adjustments for height and tilt. The internal speakers are good enough that I’ll get the external speakers off my desk; the width helps with the stereo effect.

The full resolution is obtained using the included (but somewhat short) HDMI 1.4 cable and it even works with my ancient Zotac GeForce 210 video card (something that needs to be upgraded soon). Overall, this monitor is a winner and provides a lot of screen real estate without making the text so small that my over-50 eyes have trouble. I don’t think I’d want anything wider or higher resolution (as that would cause text to become too small). Recommended!

Bare Metal STM32 Development on Windows

It’s been a year and a half since I last posted on this and some new tools are available; they work great with STM32L1xx, STM32F1xx, STM32L4xx, etc.

  1. For an integrated IDE, I still like EmBitz
  2. When working from the command line, I still like vim for Windows
  3. For hardware-level debugging (JTAG/SWD), OpenOCD has dramatically improved their support for STM32 and is now better than the Texane STLink IMHO.  You can download windows binaries and the pdf manual or browse the online documentation.  OpenOCD is a GDB server that listens on:
    • port 3333 for a GDB debugger connection for source-level debugging
    • port 4444 for a telnet connection and sophisticated command line interface that lets you use commands like these:

      > stm32l4x unlock 0 (unlock flash bank 0)
      > stm32l4x mass_erase 0 (erase all flash)
      > flash probe 0
      > flash list
      > flash erase_address 0x08000000 0x3000
      > flash write_image myProgram.bin 0x08000000
      > reset halt
      > mdb 0x08000000 32 (dump 32-bytes at start of flash)

    OpenOCD supports many target processors and many hardware interfaces; when you launch OpenOCD, you must pass it two parameters that tell it which hardware interface to use and what target it will be controlling. For example:

    openocd -f interface\stlink-v2.cfg -f target\stm32l4x.cfg

    There are many pre-built configuration files in the interface and target sub-directories wherever you installed openocd. If your interface or target aren’t supported, the configuration files are text and can be easily edited to support your needs.

  4. GNU ARM Embedded Toolchain continues to be the best pre-compiled toolchain and is kept up-to-date.  It includes gdb which can attach easily to an OpenOCD server and let you do source-level debugging from its command-line interface and is well documented and there are many tutorials and cheatsheets.  An example of the CLI use is:
    arm-none-eabi-gdb <myApplication.elf>
    (gdb) target extended-remote localhost:3333
    (gdb) load myApplication.elf (loads image into flash)
    (gdb) file myApplication.elf (to debug an image already in flash)
    (gdb) set remote hardware-watchpoint-limit 6
    (gdb) b main
    (gdb) monitor reset run
    (gdb) c
    (gdb) step (s) or next (n)
    (gdb) i b (info breakpoints)
    (gdb) list [fnName]
    (gdb) interrupt (halt execution)
    (gdb) print <symbolName>
  5. Note: the ‘monitor’ command lets you issue any of the OpenOCD CLI commands from within GDB. For example:
    (gdb) monitor reset halt(reset target and halt target)

  6. Eclipse CDT (especially the standalone version) integrates nicely with gdb and OpenOCD and provides a friendly, smart, graphical source-level debugger.
    • On launch, select the appropriate .elf file for debugging at first dialog
    • Under Window->Preferences->C/C++->Debug->GDB set GDB debugger to arm-none-eabi-gdb (in the appropriate directory – you only need to do this once)
    • In a separate Command window, start OpenOCD with the appropriate interface and target (see above)
    • Under File->Debug Remote Executable: set Binary to the .elf file, Hostname to localhost, Port to 3333, check Attach (you should see gdb connect in the OpenOCD window)
    • In the bottom panel of Eclipse CDT, select the Debugger Console tab (accesses the gdb console)
      • file myProgram.elf (if the firmware is already running on the target)
      • load myProgram.elf (to program the .elf file into the target flash)
      • b main
      • monitor reset run OR
      • monitor reset halt
      • jump Reset_Handler
      • next
      • print myVariable
      • continue
    • From there you can step into/over lines of source code, browse variables and C and assembler source code, view/set/clear breakpoints graphically, and do everything you would expect from a modern debugger.
    • You can read more about it here.

Hybrid Smartwatch

For a long time, I resisted the urge to buy a smartwatch.  Most of them look like you’ve strapped a cellphone to your wrist,  they need to be recharged nightly, they require a button press or a wrist flick just to see the time, many aren’t waterproof, and most of the features aren’t appealing to me due to the small screen.  I tried wearing a fitness band and a regular watch, but wearing two things bugged me.

To the rescue comes the Withings Steel HR, a hybrid of an analog watch, a smart watch, and a fitness band in a nice looking package that is slightly smaller than my old watch.  I’ve been wearing it for several weeks now and I really like it.

The winning features include:

  • Small and light, no bigger than a normal watch
  • Professional appearance
  • Analog hands show time at a glance
  • Fitness dial shows steps at a glance
  • Heartrate monitoring
  • Waterproof
  • Bluetooth link to decent smartphone app
  • 3 week battery life for smart features, longer for watch and steps.
  • Full charge takes about an hour
  • OLED display covers the rest with a single button: date, steps, miles, calories, etc.
  • OLED and gentle vibration also alert you to incoming calls (displays caller) and text messages (displays from whom) and calendar events (displays event title), allowing you to decide whether you need to fish your phone out of your pocket.
  • Note: my eyes and I are over 50 so I was concerned about the size of the text on the small OLED display, but it turned out to be OK.

The watch comes in two sizes, I prefer the smaller (36mm) variant; it includes a black silicone band that is very comfortable and secure, but I am used to a stainless band; fortunately, this watch takes any standard 18mm band so I bought a nice looking replacement on eBay for $10 and it fit perfectly.

It’s not yet officially available in the US, but it will be soon, you can read more about it here.

I still don’t understand why we don’t see old-fashioned LCD or modern eInk smart watches that show the time continuously and run for years on a coin cell, but for whatever reason, we don’t and for now, this is the best solution I’ve found.  Other features I’d like to see in the future:

  • blood pressure monitoring
  • display text of messages (not just who they are from)
  • saphire crystal and/or better protection for the crystal like a standard dive watch

10/24/2017 – A new contender is the Amazfit BiP or the snazzier Amazfit Pace. The BiP has very long battery life (45 days) and the Pace has much less (~5 days) but looks better, both are waterproof, have fitness monitor, GPS, smarter watch features, low price, and always on display. The only down-sides I can see are appearance/size: both are large and considerably less attractive than the Steel HR (the Pace looks better, but the battery life is too short). You can see a video review of the BiP here. When they make one that looks like the Pace but has the battery life of the BiP, I’ll buy one.

Handheld O’Scope

Owon USB scopes are great and I carry one in my robotics bag, but they aren’t ideal for field use because they take too much time and space to setup (laptop, wires, …).  So I purchased a the low-cost JinHan handheld oscilloscope and so far, I’ve been pleasantly surprised.  I bought the JDS2023 on AliExpress for $113 shipped via DHL (quickly); it integrates a 200MS/s dual channel 20MHz digital o’scope with a 5MHz signal generator in a remarkably small, light package.  It has a bright, readable 3.2″ LCD color display and a reasonably intuitive UI (I never needed the manual) although the addition of even a single knob would make the UI better.  It offers all the basic scope functions including automatic frequency and p-p amplitude measurements.  The Auto button does its job well.

JINHAN JDS2023 20MHz 200MSa/s Handheld Oscilloscope with Signal Generator

The company makes several models with a variety of speeds and features such as the JDS2012A that integrate a scope and multimeter.  However, I prefer to keep carrying my UT136B meter which is smaller, easier, more functional (as a meter), and cheap enough that I won’t care when students lose or destroy it.  For advanced diagnostics or impromptu demonstrations, the JDS2023 will replace the Owon USB scope in my robotics bag

EEVBlog does a teardown of the JDS2012a.  The user manual is here.

The scope comes well packaged and includes a single 6100 (ostensibly 100MHz) scope probe, BNC to alligator-clips cable for the signal generator, USB cable, and separate battery charger.  It does not include the required 18650 lithium battery (probably due to air shipping restrictions) or a carrying case…but what do you expect for $113?  Power over the USB cable will run the scope.

I haven’t seen anything close to this level of functionality at this price.  If I need more, I’ll probably step up to the Owon HDS1021M-N or UNI-T UTD1025CL, but they are twice the price, considerably larger, and sans signal generator.

I tested it quickly using a lab-grade RF signal generator and confirmed the 20MHz bandwidth specification; it clearly shows at least 10 points per cycle of the sinewave (validating the 200MS/s specification) and there is no amplitude compression of the 0dBm signal (nominally 0.632vpp into a 50-ohm load – this is unloaded so it correctly shows 2x vpp); the analog front end 3dB compression point is somewhere north of 40MHz.

20MHz Sine Wave

5MHz Sine Wave