ADI ADALM2000 Data Acquisition Module Roadtest Review

Table of contents

RoadTest: Sign Up to Roadtest the ADI ADALM2000 Data Acquisition Module

Author: saadtiwana_int

Creation date:

Evaluation Type: Test Equipment

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?: Digilent Discovery 2, Digilent Discovery 3

What were the biggest problems encountered?: The Scopy software needs polishing. Some features from ALICE are not yet ported to Scopy (and I couldn't get ALICE to work with M2k)

Detailed Review:

Introduction

When it comes to exploring the fascinating world of electronics and engineering, having a reliable, versatile and (very importantly) convenient tool can make all the difference. The ADALM2000 promises to transform the way we learn, prototype, and experiment with analog and digital circuits. Packed with features and designed to cater to both beginners and experts, it combines the functionalities of multiple analog and digital instruments, all conveniently condensed into a single portable device. The datasheet/brochure boasts the following features:

The ADALM2000 accomplishes providing all these instruments by using a set of base hardware building blocks, complimented by clever software utilizing this hardware to provide higher level functionality to the user.

Recently, I had the opportunity to get my hands on the ADALM2000 from Analog Devices Inc. (ADI), as part of element14's roadtest program, and it's safe to say that this compact device has left a lasting impression, as well as earning a permenet place on my desk (and bag). In this review, I will dive into my personal experiences with the ADALM2000, exploring its hardware, user-interface, practical applications, and overall performance, to determine whether it truly lives up to its claims as an invaluable tool for electronics enthusiasts, professionals and learners alike.

Prior experience with Similar Devices:

I'd like to provide a brief background on my experience in the domain, as our prior knowledge plays a crucial role in shaping our perspectives on devices:

  • In my professional capacity, I have extensive experience using most of the individual instruments contained within the ADALM2000 as part of my daily work. This hands-on familiarity has allowed me to develop a good level of proficiency with these tools. The exception would be the Network Analyzer, whereby my exposure has been limited to a few instances of characterizing specific components, particularly focusing on impedance. While I possess a fair theoretical understanding of its principles, the nature of my usual work hasn't provided as many opportunities for hands-on experience with this specific instrument.
  • Outside of work, I have a modest home-lab where I dedicate a decent amount of my free time pursuing my personal projects and exploring nerdy ideas. Although I have gathered a wide range of electronic components over time, my home lab's testing and instrumentation capabilities leave much to be desired, mainly due to the high costs associated with professional-grade instruments. Perhaps for this reason I generally feel more comfortable in the digital domain than the Analog. At home, my trusty "Saleae Logic Pro" serves as my go-to instrument for embedded stuff, excelling as a digital logic analyzer but falls short in terms of its performance as an oscilloscope (bandwidth <5MHz).

For this reason, I was super excited to receive the ADALM2000 as it promised to give a major boost to my home-testing needs. Little did I know I would end up using it quite a bit at work too, just because of how convenient it is to use.

Kit Contents & First Impressions

The kit came well packed, thanks to the element14 team. 

 

 

The contents of the ADALM2000 box include:

  • The ADALM2000 device, packed inside an ESD bag with (moisture absorbing) silica gel bag.
  • A USB-A to USB-micro-B cable
  • A set of wires to connect the ADALM2000 to the outside world. The connectors on one side fit the ADALM2000, while the other ends of cables all have single 2.54mm pitch "DuPont" female type connectors. These are breadboard friendly due to their 2.54mm spacing.
  • A set 6-pin of male header pins (2.54mm spacing)

Few initial impressions & observations:

  • The device is a little bigger than what I had imagined in my head (for some reason) before receiving the device. However, I have to say it's a good size (better than what I had imagined) and feels nice in the hand. It also has the right weight, so as to not feel like a cheap electronic device.
  • The device has a plastic casing which does a decent job of protecting the internals. Additionally, there is rubber padding on both its sides, which add a nice grip and also give the device a nice feel when holding in the hand.
  • The package did not come with any getting started guide in card/paper/booklet form. In the beginning I initially wondered what would be the right place to get started (official webpage?). More on this later.
  • I initially wondered what the 6-pin male header pins were for. Later, when looking at ADALM2000 tutorials, I realized these are provided to connect the ADALM2000 cables to a breadboard. You insert the header pins into the breadboard and then the DuPont female ends can be plugged into these to establish connections with breadboard circuitry.
  • Personally, I ended up using the device mostly with a set of Mini "grabber" test clips I already owned. While the provided header pins are good for breadboard setups, in most other real world scenarios (e.g., using with production systems) the grabber clips are a lot more convenient. The fact that the ends of the ADALM2000 cables were 2.54mm female type helped here because these were directly compatible with all the types of grabber clips I had (most of them come with a male pin). Note that although not included with the ADALM2000, the BNC Adapter Addon (AD-M2KBNC-EBZ) does come with such grabber clips (in addition to oscilloscope probes) so I'll recommend it as a worthwhile upgrade.
  • One nice thing I observed was that the set of breakout cables that comes included in the package is actually not one but two separate harnesses. One connects to the mostly Analog side (left portion of  interface connector) while the other connects to the digital side (right side of interface connector). I realized that this was a good thing to have them separately because I found myself using the Analog side (Oscilloscopes, signal generators, dual power supplies) much more than the Digital side (Logic analyzer, Virtual IO, Pattern generator). If it came as one connector, it would have caused a huge mess of cables all the time. As it is, I can only connect the side I need and keep the other side in the box to keep thing nice and tidy. You can see the two connectors in the picture below (the right connector is not inserted completely here, to allow easy differentiation in the picture). 
  • The device comes with a USB-micro-B connector for connecting it to your computer. While it works fine, I did find myself wishing it had a type-C connector whenever I was connecting the USB cable to it (for not having to determine the correct orientation first). I hope ADI makes the switch in the next revision/version.

Related/Comparable Parts

I think the main comparable devices to the ADALM2000 in the market are the Digilent's "Analog Discovery" series of devices.

When I received the ADALM2000, the Analog Discovery 2 was the latest version available from Digilent. During the course of my review, Digilent released the Analog Discovery 3, which is the successor to it's older sibling (AD2). 

The three devices are quite similar to each other so instead of listing a full comparison I will only attempt to point out the differences for easier comparison:

Feature ADALM2000 Analog Discovery 2 Analog Discovery 3 Remarks
ADCs 12-bit, 100 MSPS, 15Mhz bandwidth (with BNC adapter) 14-bit, 100 MSPS, 10Mhz+ Bandwidth (30Mhz with BNC Adapter) 14-bit, 125 MSPS, 30Mhz BW (with BNC Adapter) I want to point out that I found different specs on "Bandwidth" in different places, and they also change depending on whether the BNC adapters are used or not. So take these with a grain of salt.
DACs 12-bit, 150 MSPS, 30Mhz bandwidth (with BNC adapter) 14-bit, 100 MSPS, 9Mhz Bandwidth (12 Mhz with BNC Adapter) 14-bit, 125 MSPS, 12Mhz BW (with BNC Adapter) <Same as above>
Power supplies 0 to +-5V, 50mA/ch +-0.5 to +-5V, 700mA/ch (with external power) +-0.5 to +-5V, 800mA/ch (with external power) The ADALM2000's power supplies can be beefed up to 700mA using an add-on board with external supply
PC connection port USB-micro-B USB-micro-B USB-C
Embedded OS Runs embedded Linux No embedded Linux No embedded Linux
FPGA Zynq 7010  Spartan-6 (6SLX16) Spartan-7 (XC7S25) Zynq 7010 has dual core "hard" A9 processors. Spartan series have no hard processors.
Firmware Source code Open Closed Closed The Analog Discovery series seem more geared towards end users (only) while the ADALM2000 also keeps the more advanced users in consideration. 
Schematics availability Open, publicly available Not available Not available
Standalone operation (without a PC) Possible Not possible Not possible The embedded linux makes it possible for ADALM2000 to run scripts natively. Useful for data logging or for running scripts unattended.
Remote operation options Ethernet-over-USB, Wifi using external USB-Wifi dongle Always needs a host PC Always needs a host PC The embedded linux makes it possible for ADALM2000 to work with USB wifi dongles.
Application Software Scopy (Windows, Linux, Android, OSX) Waveforms (Windows, Linux, OSX) Waveforms (Windows, Linux, OSX) No Android support on Digilent Waveforms. Both Scopy as well as Waveforms have "Demo" modes available for anyone to try the UI without needing hardware.
Approx List Price (US$) 240$ 299$ 379$ Prices from respective Analog Devices and Digilent websites. May be different on distributor websites.

Overall, the ADALM2000 provides the lowest barrier to entry due to its lower price. Generally the devices have similar features, but some differences are there with each device having its own strengths and weaknesses. Overall, the ADALM2000 is a very solid offering for the price. I especially like the fact that the hardware and firmware are Open Source in case anyone wants to dig deeper or use it as a basis for designing their own system.

Getting started / Out-of-Box experience

As I mentioned earlier, the package does not come with a booklet or getting started guide. So when I opened the box, I initially wondered what would be the best place to get started. My initial plan was to look up the official product page for software to install. However, when I plugged the device into my PC, it appeared as a drive in my computer. Inside this drive, I saw a "info.html" web page. It turned out that this file (a local webpage) serves as a decent starting point for this device (although it would still have been nice to have a small booklet/getting started guide in the box).

This local webpage includes information on:

- Getting Started (updating firmware, installing drivers, Scopy software)

- Frameworks (Info and links to support packages for using the ADALM2000 with Scopy, MATLAB, LabVIEW, Gnu Radio, ADI-LibM2k interface library, IIO commands)

- Firmware (Gives link to download latest firmware (also auto detects the current firmware and tells you if it's not the latest. Also retrieves and displays device's version info, device configuration settings, wireless/wired LAN settings, etc)

- Help and Support (Links to AD's virtual classroom and a link to online help wiki)

I noticed that the online help page link was wrongly pointing to the Pluto SDR help page instead of ADALM2000 help page. Anyway, at this stage, I was mostly interested with getting the device updated with latest firmware and getting started quickly. Under the "Firmware" section I could see that my device shipped with v0.27 while a newer version v0.31 was available.

I clicked the "Download version v0.31" button and that took me to the GitHub page for the v0.31 release which detailed the summary of fixes for the GitHub release as well as a bunch of files for download related to this release:

However, unfortunately there were no instructions on this page regarding which files to download and how to update the firmware after downloading those files. 

So I went back to the "Getting started" section on the "info.html" webpage, which looked more promising:

For a moment I thought clicking the "Firmware" hyperlink in step 1 will do the trick, but instead it took me back to the "Firmware" section that I had looked earlier Smiley

Anyway, this time I noticed the words "For help upgrading firmware, check out the online documentation." This had a hyperlink to an online documentation page that detailed the firmware upgrade process. 

Roughly, it consisted of the following steps:

1. Download the (first) zip file from the GitHub release page.

2. Unzip and open to make sure it has the required files as described on the page

3. Copy the "m2k.frm" file (only) onto the mass storage device, and then eject it. Ejecting in this case meant right-clicking the Mass Storage device and clicking "Eject" and NOT physically disconnecting the device from the PC (which will make it lose power). This done, LED1 (on the ADALM2000) started blinking rapidly for some seconds and then went back to normal. At this point, I unplugged the device and plugged it back again. Now going back to the "info.html" inside the "M2k" mass storage drive, I could see under the "Firmware" section that I was now running the latest:

With the firmware updated, I now needed to get the necessary drivers and application software installed. So I went back to the "Getting started" section on the "info.html" page to:

- Install the drivers (PlutoSDR-M2k-USB-Drivers.exe) - it seems that Pluto SDR and ADALM2000 use the same drivers! Installing these was simple.

- Install Libiio for windows

- Install Scopy - You have the option to download the .exe which is an installable version, or the .zip which is a portable version as it doesn't require installation. I tried both. Either takes ~1GB of disk space.

The above three steps were simple as the required files were downloaded directly from the hyperlinks. 

At this point, installation was complete. I launched the "Scopy.exe" application from the Scopy zip file (after extracting the zip), and I could see that the ADALM2000 device was detected.

We finally have a working Device....Hurray!

Documentation and Training Materials

Documentation is perhaps one of the most important things for such devices, and has the potential to make or break a product. Devices that offer good documentation (and examples) always end up being more popular with developers, hobbyists, and academics alike.

Open Design

One very major positive point about the ADALM2000 is that Analog Devices has made the Schematics available to everyone. As a user, this is very good because I can find answers to many questions about the device by just looking at how the particular hardware is implemented. For example, I was wondering why there is the 50mA limit on the Power supplies, and since the schematics are open, I quickly looked through the schematics to see that it's because these use ADA4805-1 (low noise amplifier) for the user power supplies, which can source/sink this much current at max. For comparison, I couldn't find the schematics for the Analog Discovery series of devices. For me personally, this is a plus for ADALM2000 and I'm sure many engineers will agree!

The schematics and other hardware information, including even the Cadence PCB project and board files for ADALM2000 are available at https://wiki.analog.com/university/tools/m2k/devs/hardware 

Also keep in mind that all the firmware for the ADALM2000 is also open and made available via GitHub. This is awesome!

Lab Activities

The ADALM2000 is built as a "Learning Module", and so Analog Devices has generously made available a huge wealth of information in the form of "Lab Activity Material" for free!!!. Over the past few years ADI has added so many lab activities that if you were to go through one every day it would take you at least 84 days to just finish these! The activities are divided into few categories:

  • General Lab materials (6 activities)
  • Electronics - I  (26 activities)
  • Electronics - II  (19 activities)
  • Miscellaneous Labs (11 activities)
  • Communication circuits (16 activities)
  • Power Management Circuits (6 activities)

In fact some of these activities (or "Labs") actually consist of multiple sub activities, so they are sure to keep a curious mind occupied for a long time! Personally I am really amazed by this wealth of hands-on materials covering such a diverse range of topics. Absolutely Amazing!

One thing I want to mention here is that while you could source/build your own components for these activities, the best way to go about would be to pick up one of the ADALP2000 kits. For about 110US$ you can save yourself the hassle of gathering components separately and it sure will save you a lot of time! I noticed that most of the training material actually refers to components in this kit. Personally I didn't have the ADALP2000 kit during the review period but if I had to do it again, I would get it right away. Regardless, since I had quite a few components from before, I was able to follow along several activities with my own components and had a lot of fun doing that!

I encourage you to visit the official wiki page (https://wiki.analog.com/university/courses/electronics/labs ) to see the full list of these activities. I think just the value of these training materials is enough to justify the price of an ADALM2000 for anyone! And afterwards you get to keep the ADALM2000 device too! Slight smile

Online Documentation

Most of the documentation for the ADALM2000 is made available via online wikis. Generally I found the information sufficient for most of the things I've looked for, so far.

One thing I noticed noticed time and again during my roadtest was that in many places the online documentation refers to ADALM-PLUTO, while that information is also relevant to the ADALM2000 (aka "M2k"). It would be nice if these wiki pages get updated over time with both names. This would also improve search results for relevant information. As an example, when searching for compatible WIFI adapters for the ADALM2000, i didn't get any hits on google. However, when I instead searched for the ADALM-PLUTO compatible WIFI adapters, I immediately got to the relevant page. I realized later that this page was actually referring to the ADALM2000 by it's shorter name "M2k" which is why it wasn't appearing in search results. As I understand, both the ADALM-PLUTO and ADALM2000 are built on some common building blocks (The Zynq 7010 being a major one) so a lot of information applies to both devices. 

(Video) Tutorials

One thing I especially like in Scopy is that when you have any instrument open, you get a "See more info" button on the top left.

If you click this button, it takes you directly to a wiki webpage, that serves as a user guide for that particular instrument. Also, included on all these pages is a video tutorial from ADI which I found very helpful. In some cases, these tutorials were a life saver because there are cases were I found that the Scopy user interface is not the most intuitive. For example, I couldn't initially figure out how to group the channels in the Pattern generator, and the video tutorial came to my rescue. Similarly when using the Logic Analyzer, I couldn't initially figure out how to assign a protocol decoder to a channel, and got my answer from the video tutorial afterwards (you need to select the channel/group in the display window first). This didn't look too good on the UI design, but thankfully the documentation made up for it!

The video tutorials are available on Analog Devices' YouTube channel. The full ADALM2000 playlist can be watched at the following link:

(99) ADALM2000 Videos - YouTube

ADALM2000 host connection options

The ADALM2000 provides several options in terms of connecting with the host computer. This makes it very useful for lab/field use scenarios where you can't always have your PC connected to the device directly. 

Since the device built with a Zynq 7010 FPGA which has dual core A9 "hard" processors inside and running Linux, this has opened up some interesting connectivity possibilities via the "USB On-The-Go" function. This is where the the ADALM2000 gets even more interesting. 

Overall, there are 4 ways you can connect the device to a host, plus a 5th bonus way!

1. USB

This is the simplest, easiest and most common method that most people will use most of the time. Once the drivers are installed, this works flawlessly over a USB cable. The device comes included with a USB-A to USB-micro-B cable. However, if your computer/tablet only has a USB-C port available, then a USB-C to USB-A adapter works very well!

2. Ethernet over USB via Host

When you connect the device to your computer, it appears as a USB disk drive. Inside this disk drive, there is a config.txt file.

Inside this file we can configure three different types of network connectivity. The first one requires no additional hardware, while the next two require respective (supported) USB dongles.

The first one "NETWORK" is the settings for Ethernet over USB via the host. Once you configure it, and follow the few steps at the top of the file, the device will appear as a Ethernet device on your host computer. This means now it's on the network and as long as you have the network configured appropriately, you can access the device from another computer on the same network. Basically the host PC (which could be a Raspberry Pi even!) is just acting as a network adapter...sort of. I was able to get this working in no time, and it didn't require any additional hardware. Now whenever I connect the device to my computer's USB port, it appears as a Ethernet connection on my computer. This does not interfere with the normal USB functionality needed to use the device via Scopy.

3. Ethernet over USB - Standalone 

For this one you need a USB-to-Ethernet adapter, and then you need to configure the "USB_ETHERNET" section of the config file. I didn't have a dongle available so I couldn't try, but the option is there. The good thing about this one is that you don't need to have a host connected to the device (unlike the previous option). Since the middle USB port will get with the dongle, you can use the off-center USB port on the ADALM2000 to power up the device.

4. WIFI over USB - Standalone

Like the previous option, you don't need a host for this mode also. For this to work, you need to source a supported USB-WIFI dongle, and then edit the "WLAN" section of the config file accordingly. Due to the limited flash space on the device, the developers chose to support a limited set of WIFI chipsets. Any dongle that uses one of those should work. The support list of chipset can be found on one of the wiki pages

More details can be found on the Pluto USB-OTG wiki page: https://wiki.analog.com/university/tools/pluto/usb_otg_host_function_support 

5. *Bonus* 100% Standalone operation

Did I mention a 5th bonus option? Well, again thanks to the Linux running natively on the device itself, you can run some applications on the device itself without requiring any external network connectivity or needing to connect to a host computer. The device only needs power and will keep running your scripts as long as the power is there! This is very helpful for logging applications. I found a short video on the ADI official YouTube channel that describes the process very well, so instead of replicating the process here, I will just leave a link here:

https://www.youtube.com/watch?v=-QblCcu9x_o&t=284s

Needless to say, I was able to follow along with the tutorial and replicate the logging experiment without any issues. This is one of the features I will definitely be using for some long running tests for work, in future.

As a final word, I want to briefly mention here that, to my best knowledge, in comparison to the ADALM2000 you always need a host computer connected directly to the Analog Discovery series of devices so this is a huge plus point for the ADALM2000.

ADALM2000 Software options

The main app that Scopy is intended to be used with is the "Scopy" application from ADI. The same app is available for Windows, Linux, Mac OS as well as Android. The full list of compatible OS can be seen from the files on the release page:

Releases · analogdevicesinc/scopy · GitHub

Sorry iPhone users...no iOS!

So far I have tried Scopy on Windows and Android and both worked effortlessly without any issues. Since for most of the roadtest I used the Scopy Windows app, my observations are mentioned in the relevant sections in this review and I will refrain from repeating that here. I'll just say here that Scopy is very usable application and although it leaves room for improvement/polishing, overall it will get most of the things done in today's form.

During the course of this roadtest I found that previously ADI had made available the "ALICE" app for ADALM1000. From my understanding, the version 2.0 of ALICE is supposed to work with ADALM2000, as per the wiki page dedicated to ALICE for "M2k" (ADALM2000). The wiki page is available here:

Active Learning Interface (for) Circuits (and) Electronics for M2K: [Analog Devices Wiki]

However, even after multiple attempts of following the instruction on the wiki page, I couldn't get it to work as I was getting an error that libiio wasn't found.

I did make sure that libiio was installed and that it could even see the ADALM2000 devices but it somehow didn't work (I tries on 2 PCs!)

The reason I wanted to try ALICE was some interesting extra features I saw in the ALICE specifications that are not (yet?) implemented in Scopy:

When I came across ALICE, I was coincidentally doing some work that involved making such measurements and I wanted to try those out with ALICE + ADALM2000. However it didn't work. I also saw that a v2.1 of ALICE for ADALM2000 was created which uses the "ADI-LIBM2k" library instead of the lib-iio library. However, I couldn't find any release binaries for it so I gave up on going further on that. I do hope that these extra features from ALICE make it to the Scopy software in the future software updates.

Apart from Scopy and ALICE, I tried to look around if there are any open source community tools that also support Scopy. I was mainly curious if Sigrok (sigrok.org) supports it as that was something I had used in the past. Anyway, long story short, it doesn't support ADALM2000. However, I also noticed that the project seems stale now and not being actively updated anymore, so no love lost there!

Scopy App on Android

The Scopy app, as per my understanding, is designed for cross-compatibility across platforms, i.e., the same application can be compiled and used for most major platforms. This includes Windows, Linux, Mac/OSX, and.... Android! The good thing about this approach is that you get the same familiar user interface irrespective of what host platform you're using. I found this to be a potentially useful feature since I wanted to be able to use ADALM2000 with my Android devices. This would take things to another level in terms of mobility for me. Put the Scopy in one pocket and phone in another and carry your lab with you!

Installing on Android is as simple as downloading the app from the app store. I verified that the version on Google Play store was indeed the latest one.

Since my phone uses USB-C, I used an appropriate OTG adapter to connect with ADALM2000.

After executing the app, it took permission to use the USB device, and that was it! I had ADALM2000 working with my phone!

I then played around with it to see how usable it was with my phone. A simple test is shown below whereby I started the Signal generators to generate Sine and Square waves. 

Then, after connecting the signal generator channels to respective oscilloscope channels, I could observe these on the oscilloscope channels as well as on the Spectrum Analyzer.

All the above screenshots are taken directly from my phone. I used the Light Mode here (from the "Preferences" page in Scopy) instead of the default dark mode.

Although the user interface was usable, due to smaller sizes of controls (compared to my fingers) it was a bit harder to tap in the right places. Of course the controls had scaled down based on my phone screen (6 inch). So I figured it's more suited to a tablet instead, something with a bigger screen. Unfortunately I didn't have access to any android tablet except my BOOX ePaper tablet. It runs android so I decided to try it anyway despite the ePaper screen. Again, installing was easy and the device did seem to get connected without issue. However, I found that the interface element didn't display too well with the ePaper display (I tried all ePaper modes).

Unfortunate outcome for me, but to be fair this is NOT Scopy's fault since I am sure no one had ePaper displays in mind when they thought of Android support. ePaper tablets are an extremely small population among android tablets anyway so it doesn't matter. Should work fine on a normal Android tablet.

Going back to my experience of using the ADALM2000 with phone, I observed that while it was usable, there were few things which I think can be improved:

  • The UI elements do not respond to touch gestures like we have come to expect in the smartphone age. For example, to scroll up/down you need to drag the scroll bar. Just touching and dragging the screen on any scrollable UI element doesn't work as it does in modern touch interfaces. In case of using on the phone, this made it very difficult since the scrollbar becomes very small compared to finger size. For tablets this should be better but my point still remains. 
  • Similarly, even inside the graphic display parts of the screen (which displays the actual data), pinch-zoom (in or out) doesn't work. To zoom-in you need to tap and drag like you would with a mouse. To zoom-out, you need to double tap the screen. This double tapping, in my experience, didn't work too well as sometimes it would take the double taps as a tap-and-drag and zoomed-in instead. Also there was no way to pan once zoomed. Again I would highly advocate support for the popular touch gestures (pinch zoom, pan, etc).

One word of caution: Keep in mind that when used with phone/tablet in the configuration shown above, the ADALM2000 consumes power from your Android phone/tablet so the phone/tablet battery will deplete (much) faster than usual. For prolonged usage in this configuration, if needed, you can use the second USB port on the ADALM2000 to provide power to the ADALM2000 separately while still staying connected to your phone/tablet.

Instrument Testing

I have used the ADALM2000 quite extensively over the last two months. The arrival of the device at my doorstep coincided with some projects at work that required things like characterizing different types of (long) cables and components (e.g. signal transformers) for low frequency wired communications. This was a somewhat new territory for me since I mostly try to stay on the digital sides of things. Anyway, this turned out to be a very good opportunity and the ADALM2000 helped me tremendously with trying to understand the behaviour of things on a very fundamental level for these items. Even though I had access to big, specialized (and expensive) instruments, this was the instrument I could even use at my desk to run different experiments on the components and study their behaviour to get an intuitive sense of how they worked. Interestingly, I ended up using the Network Analyzer the most, which as I have learnt, is one of the most interesting instruments when you want to characterize components for communication/transmission systems.

I have previously written two blog posts with experiments which were heavily inspired by some of that work:

Oscilloscope, Spectrum Analyzer, Network Analyzer, Signal Generator instruments

I have grouped these Instruments together since most of the time I ended up using all of these instruments in succession to look at the DUTs in time and frequency domains. I thoroughly enjoyed this process.

BLOG POST - ADI ADALM2000 - Exploring the Mysteries of a Crystal Oscillator

I published this blog post several weeks ago. In this blog post I experimented with a 12 MHz crystal oscillator, using the ADALM2000 to stimulate and capture response of a crystal oscillator. I first considered the oscillator as an unknown oscillator and tried to find the oscillation frequency. Once that was accomplished, I then explored how the crystal responds to frequency stimuli close to its oscillation frequency, which showed some very interesting behaviour in terms of Amplitude and phase response of the oscillator.

I encourage you to read the full blog post if you haven't already done so.

  ADI ADALM2000 - Exploring the mysteries of a Crystal Oscillator 

BLOG POST - ADI ADALM2000 - Exploring Twisted-Pair transmission lines

In this blog post I connected a slightly long (~30m) twisted pair cable with the ADALM2000 and studied it's response. First I looked at why it was a good idea to use a BALUN for such testing to convert from ADALM2000's single ended function generator signal to a differential signal. Then I moved on to looking at the DUT in the time domain. This involved launching a pulse down the cable and observing the pulse travelling and reflecting between the ends. I also tried to use this information to try to estimate the speed at which the electrical pulses were travelling inside the cable. After this I moved to the frequency domain (using the Network Analyzer) and here I saw the reflections appear as standing waves inside our cable at certain frequencies. I tried to explain the theory of what was being observed with some diagrams. Finally, I tried to determine the characteristic impedance of the cable by tuning the termination resistor at the receiving end to minimize reflections.

  

 

Again, I encourage you to read the full blog post if you haven't already done so.

 ADI ADALM2000 - Exploring Twisted-Pair transmission lines 


Other than these two blog posts, I did a lot of other experiments with the various instruments inside the ADALM2000. As much as I would have liked to blog about each experiment I performed, it wasn't possible to do so due to the time it takes to write every blog (perhaps I need to learn the art of writing short blog posts!). However I did note down observations regarding the experience of using the ADALM2000 to conduct all those experiments. After all the roadtest is about the ADALM2000 device and less so about the things I tested.

2-ch Oscilloscopes: 

Overall, I found the oscilloscope channels to work as advertised and was very easy to use.  You get the usual oscilloscope settings of  setting time base, Voltage/div scale, trace positions in X and Y, etc. 

I did not have the BNC adapter board for the ADALM2000, and so with the flying lead setup I could see the ringing at the edges even at 100kHz (although it has more to do with the fast edge than the frequency of the square wave). I think if I had the BNC Adapter board with some proper probes, I could have used the compensation potentiometer on the probe to get rid of the ringing.

Although the frequency of the oscilloscope channels is much limited compared to most lab bench oscilloscopes, the fact is that 90% of the time we are looking at signals that don’t go beyond a few Mhz. That said, do keep in mind that Bandwidth and Sample rate are not the same thing!! There is a very good video by "The bald engineer" on this topic that I would refer you to (https://www.youtube.com/watch?v=9AJRaDJ0ofQ ). My point here being that 100MSPS is the sample rate of the ADCs, not the bandwidth! A visual demonstration in this case is that at 10Mhz, the captured signal (square wave) is already looking like this:

One strange observation I had was that there is something with the sample rates or the input filters such that when I increase the timebase, the signals seemed to get filtered. As an example, the 10Mhz signal displayed above was captured at 100ns timebase (minimum possible value). If i switch the timebase to 100us, the signal totally disappers.

I am not sure if this is the expected behaviour. At least I don't remember the normal benchtop oscilloscopes doing this. Perhaps someone more experienced with this can help explain!

Anyway, you get to display the 2 hardware channels, and in addition you can also display Math channels, Import and display reference signals (that you perhaps saved before), and you can also enable the mixed signal view to show logic channels alongside the oscilloscope channels.

For the snapshots, I noticed that you can display up to 4 snapshots at a time for comparison (the "Snapshot") button on bottom right of screen is handy for that! Once you take and display the snapshots, you can shift them in the Y direction but not in the horizontal direction.

You can also enable the FFT, X-Y and Histogram displays, which then appear as tabbed displays in the window (you can view up to 2 at a time). I did not use these views too much in my own testing but I believe these would be useful when you're looking for the relevant information.

The (edge) triggering worked fine and having the option to set hysteresis on the trigger was helpful especially when dealing with noisy signals. You can also trigger on digital signals as well as from an external trigger.

Lastly, you can add the usual cursors (2 horizontal, 2 vertical), as well as vertical and horizontal measurements (Duty cycle, freq, pk-pk voltage, etc etc etc)

One very interesting thing about the oscilloscope in the ADALM2000 is that the inputs are "differential" in nature, which is very interesting since most lab oscilloscopes have single ended inputs and require special (expensive) differential probes for looking at differential signals. This was very useful to me when doing the experiments with twisted cables (differential signals), and also when looking at some differential encoder signals during a field visit.

2-ch Function Generator:

The function generator is a very integral part of an instrument like the ADALM2000 since in many experiments you need a controlled source to stimulate your Device Under Test. The dual channel function generator inside the ADALM2000 worked well in my testing. Keep in mind that the outputs of the function generator are single ended (unlike the oscilloscope channels which are differential). For this reason in my experiments with twisted cables I used a BALUN to convert the signals to differential.

Some things I really liked about the Function generator:

  • The "Buffer" function allows you to load a csv, tab-delimited text file or a .wave (sound) file as your pattern. Once loaded, you can scale the signal in Amplitude, offset, phase and sample rate which is very handy. I also found that the format of the csv file is so simple that I was able to create different signals in excel itself and just export the data as one column. Extremely easy and convenient. I was also able to load sound files in .wav file, play them through the Signal generator outputs, and connected them to headphone wires to hear the signals (with just a bit of distortion due to the 12bit ADC instead of the usual 16bit for sound)
  • I found the Math functions very handy to generate signals that otherwise are not possible to generate with the basic waveforms. For example, I was trying to generate "Sinc" signals which I couldn't generate from the basic waveforms. The math function allowed me to generate the signals using the equation for Sinc functions easily.
  • I really loved the feature to be able to add "Noise" to any generated waveform. This is a very well-thought feature. Adding noise to signals helps us simulate real-world signals much better. I used this feature several times when playing around with signal coupling transformers to see how the behaved in terms of filtering and passing noise, for example. You can choose from 4 different types of noise types (Uniform, Gaussian, Laplacian, Impulse) and also set the Amplitude for the noise.

One thing I missed in the function generator was a way to generate a frequency sweep. Currently if I were to do that, I would need to generate a sequence using an external tool like MATLAB , save it as a buffer, then load and use that. It would be very nice if the instrument can do that directly.

Network Analyzer:

Before this roadtest, this was the instrument I had least amount of experience with. Little did I know I would fall in love with the Network Analyzer. I think of all the instruments in the ADALM2000 this is the one I used the most over the past two months. I tested so many components as DUTs using the network analyser to see how they behaved at different frequencies and how the phase response changes. I did this with twisted and coax cables, communication transformers, BALUNs, RC/LC filters, crystals, etc and learned a lot about them during the process.

I will not go into too much detail on the Network analyzer her since I covered them quite a bit in my blog posts published earlier (linked in this post above). I again encourage you to have a read through those.

One thing I want to mention here is that I really liked the "buffer previewer" feature in the Network analyzer which allows the user to look at the raw signals on both ends of the DUT. I found it really handy to "see" how the signals changed in the time domain.

Spectrum Analyzer:

The spectrum analyzer in the ADALM2000 allows you to look at the signals (on the oscilloscope channels) in the frequency domain. There are a few settings, and so getting it to work was simple and easy. You mainly select the frequency span and hit Run. Here you can see a screenshot of a 10MHz sine wave on Channel 1. If you look carefully, you'll also see a smaller peak on channel 2 due to cross talk; something not as easy to notice in the time domain on the oscilloscope channels.

There are a few settings to give you more control. For example you can change to different units (shown on bottom right), as well as change to a lower or higher resolution on the displayed FFT by switching to a different "Resolution Bandwidth". Overall it worked well in my use and helped increase my knowledge by seeing signals in the frequency domain. 

Pattern Generator & Logic Analyzer Instruments

The pattern generator allows you to use a single or multiple (grouped) Digital IO lines (of which there are a total of 16) to generate different types of signals. 

The Logic Analyzer does the reverse (i.e., receive the signals) and in addition allow you to decode them using a protocol analyzer.

When working with both these instruments, you can divide the available 16 Digital IO channels between the Pattern Generator (outputs) and Logic Analyzer (inputs) in any combination. In fact, I was even surprised to find that I could use the same channel to generate a pattern and read back the pattern from the same channel in the Logic Analyzer. I had expected that the application would complain, but it didn't.

For the pattern generator, once you select (double click) a single channel or group in the graphic window, you can see the "Channel settings" window on the right where you can rename a channel and also select

  • Whether you want a push-pull  signal (actively driven to both logic levels) or as Open Drain (only sinking current when in LOW state)
  • What pattern you want to assign. 

Once you assign a particular Pattern, then the settings window gets populated with more controls related to that particular pattern. For example, if I set it to send UART message on channel 0 

This start sending the selected pattern on the chosen lines. You can choose whether you want to do this "one shot" or continuously.

I also tried to use the Pattern generator to generate BT.656 frames, since that's something I use quite a bit for some projects. I estimated that for a full frame set of  (Even + Odd) frames, I need to be able to send a 8-bit pattern of ~1M samples long  sequence. I tried this using the "Import" function in the pattern generator, which takes in a csv file with each column as one "channel" of data. I created a dummy pattern using excel and exported it as csv file. I got to more than ~600k samples length without issues. However once I tried a ~1M points long file, Scopy crashed on me. I tried this several times and then repeated it on a different PC and Scopy would crash without saying anything. I am not sure if this was due to a limit on how many samples can be sent to the device's buffer at one time, or if the app crashed while loading this many points. 

On the Logic Analyzer side, you similarly select what DIO channels to use and optionally assign a decoder to single or group of channels. The difference, though, is that in this case there is a LONG list of decoders to choose from, which I was very pleased to see.

  

A uart decoder on the same channel with matched baud rate enabled me to see the decoded data on the screen.

Some issues I encountered:

  • The way the grouping is not immediately clear (not very intuitive). I struggled with it for 5 mins and then finally went to the video tutorials to see how it was done. 
  • While I was working with Scopy to generate and receive patterns at the same time (with physical wires looped together), I experiences Scopy crashing several times on me. I noticed that these crashes happened more when I tried running them in continuous mode rather than single run mode. One thing that I tried several times and always got a crash was setting channel 0 to UART output (pattern generator) and channel 1 to UART decoder (logic analyzer), with both set to baud rate of 9600. The application crashed every time I started running the Logic Analyzer's decoder. Interestingly, the same configuration did not crash when baud rate of 115200 was used. There is certainly some bug there.
  • The "Stream" mode on the Logic analyzer almost always froze the Scopy application and I had to shut it down from Task manager each time. 
  • I couldn't find a way to show the decoded protocol analyzer data in table form, and also I couldn't find a way to even export the decoded data to a csv file or similar. This REALLY limits the usability of the protocol analyzers.

One limitation of the pattern generator is that as you go to higher frequencies (tens of megahertz), you cannot generate a signal of just any frequency. For example you can generate a clock of 25Mhz or 33.33Mhz, but nothing in between. My guess is that it has to do with the fixed maximum sample rate of the instrument. Since there is no PLL which is generating these frequencies, so the frequency options get limited.

Overall, my verdict for the Logic Analyzer is that it is only usable for basic use. For me, the gold standard for logic analyzer is the Saleae Logic devices, but it's not so much the hardware but their software that makes those devices so usable! The user interface is very clean and intuitive. You can setup and begin capturing & decoding the traces in seconds. Above all, it provides a very good interface to browse through the captured traces, see them in tabular form, search through the captures etc. I would really recommend the Scopy developers to have a look at the Saleae software for some good inspiration.

For now, as far as logic analyzer goes, I will not be moving from my Saleae to the ADALM2000.

Voltmeter

For some reason the datasheet on Farnell for ADALM2000 (https://www.farnell.com/datasheets/2261938.pdf ) said "Single channel voltmeter (AC, DC, ±20V)". However, in practice I have found it to be a 2 channel Voltmeter. In fact, the voltmeter uses the same hardware (and the same pins for connection) as the Oscilloscope channels. My guess is that the difference probably is on the software side, whereby the voltmeter channels have more filtering to only capture DC voltages or AC voltage in the 20-40kHz range. The datasheet also mentioned +-20V range, while the Scopy UI shows +-25V. Perhaps the datasheet is out-dated and needs updating.

In the following screenshot I have the voltmeter wires(same as oscilloscope wires) connected to Signal generator channels and feeding it with 0.2Hz signals of 2V and 5V (pk-pk) signals. 

You can see that the voltmeter instrument is correctly displaying the real time voltages. In my experience the voltages displayed are not as accurate as a 5 digit multimeter, but for many normal usages they should work fine. If you need to measure/log very accurate voltages then you should be using the more expensive dedicated DMMs.

The voltmeter also displays a "History" (the graphs), which can be turned on or off. You can also change the length of this history graph to 1, 10 or 60 seconds.

Lastly, a nice feature is that the voltmeter gives you the option to do data logging from the same screen (bottom right). Using this is very simple. Select a file, set the timer and Turn it on. The timer sets the logging interval, not the total logging time, which ends when you turn the logger off manually. The file is saved in csv file and contains the following data after I opened it in Notepad.

Programmable power supplies

The ADALM2000 has two power supplies built-in that you can use to power up small circuits. One goes from 0 to +5V and the other goes from 0 to -5V. Both of them can supply a maximum of 50mA, which is why i said "small circuits". Nevertheless it's enough to power up most ICs like op amps, logic ICs, etc. If you need more current  or voltage than either you will need to switch to a different power source, or use the AD-M2KPWR-EBZ power booster board (up to 700mA) which is an optional accessory for the ADALM2000. 

Overall, the Power supplies work well for what they are. 

The UI is simple and functional. You can set the voltage for each channel independently, or in "tracking" mode (see top-right of screenshot). In this mode you set a ratio between the Positive and negative outputs. So for example if you set it to 50%, then the negative supply will always be at 50% of the positive supply. So 5V at positive supply will give you -2.5V at the negative supply. Interestingly, you cannot set the ratio such that the negative voltage has a higher magnitude than the positive voltage in this mode. I am not sure why this is set as such.

One nice thing I noticed in the Programmable power supplies is that they also measure and report back the "actual" voltage at the pins in real time. This is helpful because sometimes the actual voltage on the power supply output pins is not same as what the power supply is set to output. This is especially true when the outputs get overloaded so the voltage cannot be maintained. The fact that the ADALM2000 power supplies can source a maximum of 50mA each makes this even more useful since you can see if the power supply cannot keep up with what the circuitry being powered up requires.

One day the power supplies inside the ADALM2000 served an interesting purpose. A colleague of mine asked me to look at her wireless earphones that seemed dead. I was at my office desk without any instruments. However, I had my ADALM2000 in my bag. Anyway, I opened the cover and checked the voltage on the single cell battery (with ADALM2000's voltmeter), which was below 2.5V so the protection circuitry had decided to disconnect it and was refusing to charge it back. I then used the power supply inside the ADALM2000 to "jump start" the battery again by setting it to the measured voltage, and slowly increasing it to 4.2V in steps of few hundred millivolts. Since the measured value is shown along with the commanded value, I could see when the battery had charged to the commanded value (so I could increase further). Long story short, the battery was brought back to life and the earplugs started working again without me having to even leave my desk.

 

The ADALM2000 clearly saved the day!

Scopy - Exporting data out of the device

First of all, you can save screenshots of the graphic window in any instrument window directly by clicking the "Print" button on top left of screen. This allows you to save the graphic window in one of several image and pdf file options. The list of supported formats is quite extensive so you're sure to find the format you like.

Sometimes you want to export the actual values you record in Scopy to process it in an outside tool. This can be the raw data recorded on the oscilloscope channels, or it can be the processed output form a tool like the Spectrum Analyzer or Network Analyzer. Scopy provides an easy way to do this. Click the Gear icon on the top right while in any instrument and then click the "Export" button.

The export window will allow you to export the data in the graphic window as:

  • Comma Separated value (csv) file
  • Tab delimited text file

Form here the data can be process in other tools like MATLAB, python, excel, etc. Not only does this open some additional use cases, but it also allows to work around some of the current shortcomings/limitation in Scopy.

As an example, I was experimenting with FT-X3 communication transformer from Echelon which has 4 coils wound around a single core. I was interested in verifying the polarities of terminals relative to each other as well as see any differences in coupling between the 4 coils. I used the Network Analyzer to get the gain and phase graphs for each coil output, with one coil fixed as the input. To compare, however, I found that the NWA only give option to load one previous reference trace (I needed to load 3!). So I exported the Amplitude graphs for all the coils to csv files, combined them together in excel, and was able to graph them all together for comparison:

Secondary development options

While the Scopy app should work fine for basic to intermediate testing needs of many users, sometimes you need the "extra power" to accomplish more complex tasks. I was pleased to find that the ADALM2000 gives several different options to work with the device. The best way to see all options actually is the "info.html" webpage on the device's virtual disk drive:

You can see in the list that the available options cover all major frameworks that one could use.

  • As far as popular frameworks are concerned MATLAB, LabVIEW, Gnu Radio are supported directly. 
  • For users wanting to use Python, C or C++, the ADI-LIBM2k interface library has you covered!
  • Even if you want to use the command shell to do some test automation, the iio command line tools should have you covered

Overall this is an impressive set of supported frameworks and should cover the needs for most users.

On a side but related note, talking of LabView, I found while looking at these frameworks that NI has made available a fully featured "community" version of LabVIEW at NO COST for home/hobby use. In the past the licensing costs was one thing that prevented me from using it for hobby projects, so I will definitely be seeing more of it in the coming times.

On-device Scripting

One interesting feature I found while browsing the wikis is that you can execute scripts on the device itself. This is supposed to provide an advantage in terms of speed since the host machine is not in the loop anymore, so you could for example, run things like control loops on the device itself. This is accomplished via support for JavaScript, along with a set of commands for each instrument. 

The relevant wiki page gives very detailed information on this so I don't want to replicate that info here.

https://wiki.analog.com/university/tools/m2k/scopy/scripting-guide 

I did not try running these scripts myself, however, I did follow the links in the wiki to see that several example scripts are provided to get started, which should make for an easy start for anyone interested in this functionality.

Using Multiple instruments at the same time

I want to briefly touch this topic since I saw some confusion/misunderstanding about this on the online forums.

As such, the ADALM2000 datasheet/brochure mentions the following 11 instruments inside the device:

However, it's important to note that at the hardware level, the ADALM2000 works on a set of 5 base hardware devices, as shown below:

The first three are analog devices (function generators, oscilloscope channels, +-5V power supplies), while the last two are digital functions. So how does the ADALM2000 manage to get 11 instruments out of the 5 hardware devices? Well, that happens via the software running on the ADALM2000.

Instrument Hardware used
2-ch Oscilloscope 2 x ADC channels
2-ch Arbitrary Waveform Generator 2 x DAC channels
16-ch Logic Analyzer 16-ch Digital IO
16-ch Pattern Generator 16-ch Digital IO
16-ch Virtual (digital) IO 16-ch Digital IO
Digital Trigger synchronization (for multiple devices) Digital Trigger hardware
2-ch Voltmeter 2 x ADC channels
Network Analyzer 2 x ADC channels, 1 x DAC channel
Spectrum Analyzer 2 x ADC channels
Logic Analyzer (Digital Bus Analyzer) 16-ch Digital IO
2 x programmable power supplies 2 x Power supplies

You can see from the above table that the hardware components are shared by some instruments. As a result:

  • On the analog side, if a particular hardware device is being using by one instrument, you cannot simultaneously use another instrument that uses the same underlying hardware component. As an example, you cannot use the Oscilloscope or Spectrum Analyzer while running the Network Analyzer since they all share the same ADCs. As another example, you cannot use the oscilloscope channels while using the Voltmeter channels. In such cases if you're running one instrument and then you click "Run" on another conflicting instrument, the recent one will start running while the instrument running previously will automatically be stopped.
  • On the digital side things are slightly different. All the digital instruments (Logic Analyzer, Virtual IO, Pattern Generator) share the same Digital IOs. However, the instruments only use the IOs assigned to them and not ALL of the IOs. So this means you can, for example, use some IOs for Digital Pattern Generator and use some others for Logic Analyzer simultaneously without any conflict. Infact, I even observed that you can use the same IO for both of the Instruments simultaneously. In this way you can read what is being produced by the pattern generator via the Logic Analyzer without a physical (external) loop back.

Add-Ons for the ADALM2000

Analog Devices has made available some optional purchases to complement the ADALM2000:

  • AD-M2KBNC-EBZ: (~63US$) This is a BNC adapter board for the ADALM2000 allows using oscilloscope probes and BNC cables/adapters to the analog inputs/outputs. The other connections on the ADALM2000 are bypassed to the connector on the other side so you can still use those features with this board connected. Note that this kit not only comes with the board, but also oscilloscope probes, and grabber clips, as shown below. Having all of these included justifies the price of this add-on, I think. In contrast, the BNC adapter board for Digilent's AD2/AD3 is cheaper (20$), but does not come with any accessories.

 

  • AD-M2KPWR-EBZ: (~38US$) The power booster board increases the current sourcing capability of the ADALM2000 to 700mA, solving a significant limitation on the power supplies included in the ADALM2000. Needs external power via USB-C or screw terminal connector. The other connections on the ADALM2000 are bypassed to the connector on the other side so you can still use those features with this board connected.

  • ADALP2000 : (~109US$) This is a parts kit that can be used to build a variety of circuits. This is especially useful if you want to follow along the training course made available by ADI (for free). Includes components such as transistors, LEDs, resistors, potentiometers, capacitors, diodes, inductors, sensors ,op-amps, converters, comparators, regulators, etc.

  • AD-M2KCBL-EBZ: (~10US$) This is the same set of cable assembly with keyed connectors that comes with the ADALM2000 device. In case you lose/damage your original set you can buy a replacement. Although any 2.54mm DuPont Female cables should also work just fine in such cases.
  • WIFI Adapters: Although not made available by ADI directly, since the ADALM2000 runs Linux, you can get one of the supported WIFI adapters and connect them to the (middle) USB port on the ADALM2000 to allow it to connect to WIFI networks. This can be a very good option if you require remote access without any wires. But be aware that due to limited flash size on the device, only certain WIFI adapters are supported. You can get the full list on this wiki page. Note that the page lists the chipsets, so you will have to find a USB WIFI adapter that uses one of those chipsets yourself.   

On a related note, I have read on some forums that since the interface connectors on the ADALM2000 and Analog Discovery are the same, some of the add-on boards are compatible between the two. I especially noticed the BNC adapter boards being mentioned. I have not tried this myself, but if you happen to have one type of add-on board and the other type of device you might be able to reuse across devices. 

Issues encountered/ Wishlist /Suggestions for Improvement

While using the device over the past 2 months, I kept a log of observations and issues I encountered in a notebook. Some I have mentioned previously, but I will try to summarize the major points here:

Hardware

  • One main thing I would like to suggest (Wishlist?) for the next hardware revision would be higher current on the power supplies. Although 50mA can power up some basic circuits, I think it's a bit on the low end and limits the usability for many experiments. I can imagine that due to the 500mA limit on USB2 it was not possible to go higher (consider that the device itself also consumes power!). However now with USB-C with PD protocol that's no longer a limitation.
  • Talking of the power supplies, it would be really handy to have current measurement on the power supplies. Not only does it provide very important information about the Device Under Test, it will also open up more testing possibilities. For example, a user could write a script to characterize a component's V/I characteristics (or perhaps there can even be an instrument for that in Scopy!) or log current/power consumption of connected DUTs at different stages of operation.
  • Adding a few mini "grabber" clips to the ADALM2000 kit contents would be very handy. 
  • One thing I found a bit annoying is the need for recalibration every time on device power up. When the "Connect" button is pressed in Scopy, it gives a message "Always disconnect analog inputs/outputs before calibration". In my case, I have been mostly experimenting with the analog side of ADALM2000. The need to disconnect after every power cycle was an issue because this would require me to disconnect the connector from the device every time I reconnected the device (or resumed my PC after sleep) to continue with experiments I was doing earlier. 

Now I am not entirely clear what all the calibration does, and how much the calibration parameters drift over shorter periods of time (a few hours to few days) but I kept wondering if one could calibrate it once when convenient, store the calibration values to file in Scopy, and just reuse them until a new calibration was done at some time later. This would save the hassle of disconnecting and reconnecting the analog connector after every power cycle of the device.

  • Currently the ADALM2000 supports WIFI using USB-WIFI dongles (which I was very excited about), however i found it tricky to find a USB adapter with one of the supported chipsets locally. Many cheaper, more commonly available dongles don't say what chipset they're using on the box, which makes it trickier. Now that small WIFI chips are getting more common and cheaper, it would be nice to have one inside the device, in the next version. 

Software

  • While I was able to upgrade the firmware and install the drivers + Scopy app on my windows machines without major issues, I do feel it was involved too many steps for 2023. For example, the same processes are a breeze for my trusty Saleae Logic Pro device, which requires a single installation of their "Logic" app to handle all of this. A more fluid installation experience also gives the feeling of a more premium device, in my opinion.
  • I experienced quite a few cases of the Scopy app freezing ("Not responding") for different amounts of time while running Oscilloscope, Network Analyzer and Logic Analyzer. This happened initially when running Scopy on my primary computer (Intel i7, 16GB RAM, 1TB SSD) and I thought maybe it's because I have too many other things running. So I also installed it on my secondary computer (Intel i7, 16GB RAM, 1TB SSD) and experienced the same, with no other apps running. Over the days and weeks I saw this issue come and go. Sometimes the app would continue running for hours, while at other times either the app would freeze for a few seconds, or freeze completely requiring me to kill the process and start over again.
  • I experienced scenarios where the Scopy app would consistently crash. I can give two examples (1) When I was trying to load a ~1M points long file to the arbitrary function generator to simulate a BT.656 frames and (2) when I was trying to transmit a UART message using Pattern Generator over DIO 0 and receive it using Logic Analyzer on DIO1. In both cases the app would crash consistently, even after trying on a different computer. My guess is that I hit a limit on the software and/or firmware. However, the main point I want to make is that the software should gracefully handle such as situation instead of just crashing and disappearing without a notice.
  • The usability of the interface can be improved by adding support for touch gestures. This is especially relevant to the Scopy Android app, or even for users with Windows laptops/tablets with touchscreens. Currently there is no support for touch-scroll, pinch-zoom, drag-pan in the various UI elements, which makes things a bit difficult in an age when we are all accustomed to using these gestures on modern touchscreens.
  • I also feel that the Scopy user interface has quite a bit of wasted space which then requires more scrolling up an down when configuring the instruments. I would argue that the spaces between UI elements can be condensed considerably without compromising the "touch" support, making it a better user experience overall. Note that you don't see this issue when using a full desktop screen, for example, however for smaller screens it becomes relevant. I think in a lot of cases the wasted space might just be "padding" on the UI elements.
  • The Scopy app has a "preferences" page that has several settings, some specific to individual instruments. I feel that these settings I(relevant to each instrument) should be made available on the individual instrument pages themselves rather than the preferences page. This way the user will know those options exist the first time they use any of the instruments, and also available right next to where the user might need those. As an example, when using the Network Analyzer, by default the Amplitude graph did not always show the 0db value. I kept wishing that there was a way to easily see the 0db value while doing some experiments. Only when I went to the preferences page later, I saw there was an option to enable exactly that. In my opinion, this setting should have been there on the Network Analyzer page itself.

A similar example was me wishing there was a way to see multiple waveforms (since they're cyclic) when configuring the Arbitrary Waveform Generator to generate a "Sinc" pulse, and I was worried about how it will transition from one pulse to the next. And later I saw the option to do exactly that on the Preferences page. Would have made more sense to keep that on the Function generator page itself (I think!)

  • I noticed that in some cases, the user doesn't get full control over how the data is displayed in some add-on graphs. As an example, when I use the Spectrum Analyzer, I can change the Top/bottom and Scale/Div settings for the displayed data. However, when I instead display a FFT I could no longer scale chose the min/max and scale for the displayed data. I did notice the scales changing when I changed the time base, for example, so it's possible my understanding is limited in this case. 
  • The Scopy UI has issues with scaling the UI elements in some places, mostly when scaling to the lower sizes. These are not evident when you're using the Scopy app on a desktop screen, but if you detach the widgets to arrange several instruments on one screen, then these kinds of issues pop up. As an example, the below screenshot shows what happened when I detached the Voltmeter and scaled it to one-quarter of my 1080p screen. The UI elements start to overlap and it becomes messy. The same thing happens with the Power Supply UI as well.

  • The Preferences page gives options to "Double click to detach a tool" and also to "Enable dock-able widgets". For me the first one worked fine, but I couldn't get the widgets to dock inside the window. I tried searching for how to get this done but couldn't find anything about it.
  • The instrument that I think needs most improvement in terms of software is the Logic Analyzer. I have mentioned several issues I encountered with the Logic Analyzer in one of the previous sections. I hope that those get addressed in future updates to make it more usable for serious work.
  • I really missed not having the option to generate a frequency "sweep" in the function generator. I hope that's something that can be added in future releases.
  • One issue that I found very annoying when working with the Scopy UI in general was that when you type a number in any control's textbox, you MUST hit enter for it to take effect. For example if you type 300ns as the new timebase in your oscilloscope settings and then just clicked on another textbox/button, the time base value will change back to what it was before. This happened to me a lot of times and I found it quite annoying. The way it should work instead is that as soon as you click out of a control, it should take the new value.
  • If the device disconnects for any reason while working with Scopy, the whole interface goes back to the start screen. This makes you lose you current readings, sometimes inadvertently due to the USB plug moving if you're in a more "mobile" situation. It would be nice if the current readings can stay on the screen and the person can just reconnect with the device. For reference, the Saleae Logic app implements this very well!
  • The horizontal and vertical markers in the relevant instrument screens (oscilloscope, NWA, etc) all lump together in one place when turned on. Also, there is no indication of which one is which..you have to manually move the markers and see which values are changing to determine if a marker is Marker#1 or #2. Small labels on the marker "handle" controls would be nice.
  • Sometimes you want to read the values of a trace at a particular position on the screen. It would be nice if the readings on the screen would "snap" to the closest trace and show the readings instead of just showing the value at the mouse position at all times (which gets painful to read)
  • The Nyquist chart has no on-screen data labels which makes it harder to get readings out.
  • The Network Analyzer "buffer previewer" doesn't show any scale or legend which makes interpreting it confusing especially with the NWA switching to Low/High gain settings from one sample to next.
  • On the Network Analyzer, the displayed scale numbers don't go higher than 2 decimal points even when you zoom past that point. At this point all the readings on the X scale show the same values which makes it harder to find the actual frequency values when zoomed in that much. It would be nice if the displayed scale numbers would change the decimal points as the user zooms in more or less. 
  • I couldn't, for the life of me, get the Notes functionality to work. Perhaps the interface can be improved to make it more intuitive.
  • The network Analyzer doesn't allow showing multiple reference traces which limits the usability when you are comparing multiple variations or multiple ports of a single device. Also, it would be helpful to set the colour of the reference traces.
  • At the time of this writing (July 2023), the latest Scopy software release available is from August 2022, which is almost a year ago. It would be good to have more frequent releases with bug fixes and functionality improvements/updates.

Misc.

  • Some wiki pages containing information relevant to the ADALM2000 only refer to the ADALM-PLUTO, even though the information is relevant to both. It would be nice that these pages get updated over time. I would suggest at-least adding "M2k" and "ADALM2000" tags to such pages so that they can appear in the search results.

Final Thoughts

In conclusion, the ADALM2000 stands out as an exceptional hardware offering, providing remarkable value at an affordable price point. However, on the software front, while it is currently functional for most applications, there is ample room for improvement. The user interface, although visually appealing, could benefit from further refinement to elevate the instrument to top-notch status.

Personally, my inclination has always been toward the digital side of electronics. Yet, having the ADALM2000 on my desk and immersing myself in its capabilities over the past couple of months has rekindled my interest in the analog side of electronics. The convenience of being able to experiment right at my desk has resulted in more hands-on exploration of analog electronics in these past two months than I have undertaken in the previous two years. This convenience is where the true value of the ADI ADALM2000 shines for hobbyists and professionals alike. Since acquiring the device, I have relied on it extensively for quick measurements and debugging tasks, both at home and in the office. Its compact size and lightweight nature have seamlessly integrated it into my everyday carry without even realizing it.

Reflecting on my college years, I can't help but wish I had access to a device like the ADALM2000. It would have undoubtedly enhanced my practical understanding of electronic circuits in ways I can only imagine.

If I were to highlight a single standout feature of this device above all others, it would be its unparalleled convenience. The ADALM2000 simplifies experimentation to such an extent that sometimes engaging in the experiments becomes more convenient than procrastination itself. Just imagine that! Therefore, I propose a new marketing slogan for the ADALM2000:

"ADALM2000 - Procrastinate less, do more!"

I am very thankful to Element14 and Analog Devices for giving me this opportunity to test and review his very nice piece of test equipment.

Anonymous
  • Hi,

    The documentation is sketchy in some places (and can be a bit biased to PLUTO as mentioned) but it looks like you can run m2kcli from either the tethered host PC:  

    https://wiki.analog.com/university/tools/m2k/libm2k/m2kcli

    or you can run it from a runme[0-9].sh shell script from an OTG mass storage device, if you want standalone on-device scripting/logging. 

    https://wiki.analog.com/university/tools/pluto/devs/usb_otg

    Looks like you can also use iio_attr to access/configure the device in standalone scripting.

    https://wiki.analog.com/resources/tools-software/linux-software/libiio/iio_attr

    The JavaScript scripting appears to be part of the Scopy application, so presumably has to be run on a tethered host PC.

  •  The Scopy interface does indeed show up to 50Mz for the spectrum analyzer, which makes sense considering the maximum sample rate of the ADCs (100MS/s) and the shannon's sampling theorem. However, the flying leads reduce the effectiveness to lower bandwidths unless you're using the BNC adapter board, so that's something to keep in mind, especially if the signals you'll be looking at will have faster edges. 

    If there are any particular signals that you want to test with the device, do let me know and I will try to produce and capture those for you so you can see what they look like on the Spectrum analyzer. Let me know if that interests you.

    In the meantime, here's a screenshot of the Spectrum Analyzer interface. On the right side you can see all the settings/options.

    image

  •  Thanks for going through the review!

    Indeed in terms of platforms supported, Scopy probably gets a top spot.

    For advanced users who want to take the existing firmware to the next level, this device is indeed very good because you get access to all the Hardware and Software designs, which is very rare for a device like this. I think we're lucky in this case because ADI itself has built the device (which is using a lot of ADI components), and so for ADI this is also sort of a reference design for people who want to build similar designs. In fact I even remember seeing the PCB design publicly available, in case anyone wants to build their own ADALM2000 Slight smile

  • Hi  . Yes you are right. 
    So either you an run the commands on the device standalone like this, or you can also just log the data with Scopy directly if standalone operation is not required. You can also run Javascript scripts, however that happens through the Scopy app as far as I can see (didn't see a mention of standalone operation this way) You can see more details about it here
    https://wiki.analog.com/university/tools/m2k/scopy/scripting-guide

  •  Thank you very much for taking the time to answer my question. What you say makes all the sense now ( the video you shared was spot on too!). Funny thing is I am very well aware of aliasing. I had (wrongly) observed that the ADALM2000 keeps the sample rate irrespective of the time-base, so I thought this ought not have happened. Also, I didn't remember observing this in my office's lab scopes. So I went back to this after seeing your message above and have concluded the following:
    - My initial observation regarding the fixed sample rate was wrong. It does use the maximum sample rate for quite a range of time base values, and then it indeed switches at some point to a lower sample rate (as you pointed out on the screenshot). I had missed this earlier, my bad! In fact, I had failed to see the sample rate text on the screen too (How? I don't know!).
    - The scopes I use in the lab have much high sample rates and much much deeper sample depths. And the function generators there have relatively slower maximum frequencies, so I think I never observed this because even when the scopes switch to lower sample rates they are still higher than the typical signals I encounter. To observe this on my lab scopes, I need to feed them with a signal that is higher freq (at least twice, as you pointed out) than the minimum sample rate on the scopes.

    Anyway, now it all makes a lot of sense. Once again, thank you very much for clarifying this!

    Best Regards,
    Saad

  • Do you know what the upper frequency range is for the spectrum analyser.

    I spotted a YouTube video from Analog devices that suggests 50MHz but then the headline figure for the network analyser says 10MHz.

  • There is a demo of using the ADALM2000 in standalone mode as a datalogger here:

    Using the ADALM2000 as a Standalone Datalogger
    https://www.youtube.com/watch?v=-QblCcu9x_o

    Looks like it uses the m2kcli command line tool from within a shell script. 

  • This is a great review and I am seriously considering getting one of these.

    Almost all the USB electronic measurement instruments I have come across before, such as USB oscilloscopes, only comes with Windows software, so key attraction for me with this product is that the software runs on Linux and is open to allow for modification and improvement. This is win-win for me.

  • Hi,

    You're right, this shouldn't happen, but it is most likely because the sample rate may have dropped a lot. If that occurs, then it's very likely for the signal to either disappear, or look to be an incorrect frequency or amplitude. If you generate a 9.9 MHz signal instead of 10 MHz, you may see it again.

    I don't know if Scopy displays the sample rate anywhere on the display, if it does, then it is worth checking that. If the sample rate falls below more than 2 times the signal frequency content, then there will be a misrepresentation. Even lab scopes will have this problem, but they usually display the sample rate, to avoid it.

    I've not watched this video, but it may describe the phenomenon:

    https://www.tek.com/en/support/faqs/what-aliasing-and-how-do-i-detect-it-and-fix-it-my-oscilloscope#:~:text=Aliasing%20occurs%20when%20an%20oscilloscope,basically%20a%20form%20of%20undersampling.

    EDIT: I just saw this on a screenshot, it is 1 Msps, so it will have the issue you observed. The text ought to be a bit clearer in Scopy.

    image

  •    

    Btw, one thing I wanted to ask your opinion about.

    I mentioned this issue in the review whereby if, for example,  I am looking at a 10Mhz signal on Scopy's oscilloscope instrument and I switch my time-base to 100us/division or more, then the signal totally disappears from the display. Would you know why this might be happening, and if this is how it's supposed to be? I can't remember my lab oscilloscopes doing this. The main "danger" I see with this is that this creates a potential of missing a signal that is actually present, but you don't see it (and think it's not there!) just because of being on the wrong time-base.

    What do you think?