Review: Saleae Logic16 Logic Analyzer

My newest toy is a sixteen channel Saleae logic analyzer:

../../../_images/saleae_logic16_1_small.jpg ../../../_images/saleae_logic16_2_small.jpg ../../../_images/saleae_logic16_3_small.jpg

The Saleae Logic16 is one of the very few cross platform logic analyzers available, with application software that runs under Linux, Windows, and on the Mac.

Below you will find my first impressions, if you would like to know something more specific then ask in the comments or have a look at the Saleae homepage.

Hardware

It works with logic levels between 1.8V and 5V, you either select 1.8V to 3.6V or 3.6 to 5.0V from the menu. The lower voltage settings should work in most circumstances. The 5V setting is provided to reduce the likelihood of channel to channel crosstalk when using 5V signals.

The inputs are protected against overvoltage (high DC impedance, low-capacitance diode clamps) and a resettable fuse protects the USB ground return line.

It can sample 2 channels at 100MHz, 4 channels at 50MHz, 8 channels at 25MHz or all 16 channels at 12.5MHz and can record up to 10 billion samples.

The aluminum case looks high-end and the carrying case is really nice and handy.

I haven’t opened the device and don’t know what’s inside, I would guess some kind of FPGA but that’s all I can tell at the moment. (Update: a very nice review on YouTube: https://www.youtube.com/watch?v=5yZ-2rxwRmU)

Software

The software is cross platform and works on Linux, Windows, & Mac. There is also an SDK available for writing your own analyzer plugins in c++ and a device API, which provides low-level access to the logic analyzer.

Installation

  • Download the Logic 1.1.15 (64-bit).zip from http://www.saleae.com/downloads or the beta version from http://www.saleae.com/beta
  • Extract it somewhere
  • And run the install_driver script, which only copies the udev rules file 99-SaleaeLogic.rules to /etc/udev/rules.d/99-SaleaeLogic.rules

Features

  • Supported Protocols: asynchronous serial, I2C, SPI, CAN, 1-Wire, UNI/O, I2S/PCM, MP Mode 9-bit Serial (i.e. Multidrop and Multiprocessor mod), Manchester, DMX-512, Parallel, JTAG*, LIN*, Atmel SWI*, MDIO*, BiSS C*, PS/2 Keyboard/Mouse*, HDLC*, HMDI CEC*, and USB 1.1*. (* currently in beta)
  • Measure pulse wide and period and calculate frequency
  • Measurement cursors
  • Export data in different formats
  • ...

Some experiments

Generally a logic analyzer has the advantage (compared to using another micro controller, what I’ve done until now), that you can not only see the decoded data, but also the timings and that you can analyze unspecified protocols. A logic analyzer has also mush more channels than an oscilloscope and can capture a large amount of digital data.

Async serial

Recently I bought some cheap FT232RL USB to TTL serial adapters from eBay that work with 3.3V and 5V logic levels.

After adding a serial decoder and specifying which channel should be decoded I can see the decoded characters right above the signal:

Saleae Logic16: Decoding "Test\r\n"

Saleae Logic16: Decoding “Test\r\n”

To test this I’ve used the maximum possible baudrate of 921600 in CuteCom and just sent Test\r\n:

CuteCom: Sending "Test\r\n"

CuteCom: Sending “Test\r\n”

If you look exactly at the screenshoot of the logic analyzer you will also notice that I’ve selected the trigger for a falling edge, so that the capturing starts with the first character.

SPI

[root@olinuxino ~]# echo -n "test" > /dev/spidev1.1
Sending "test" ``echo -n "test" > /dev/spidev1.1`` (scope)

Sending “test” echo -n "test" > /dev/spidev1.1 (scope)

Sending "test" ``echo -n "test" > /dev/spidev1.1`` (logic analyzer)

Sending “test” echo -n "test" > /dev/spidev1.1 (logic analyzer)

I2C

[root@alarm ~]# ./i2c-tool -w 0 0x48 4 0x02 0xA0 0x40 0x03
SLAVE ADDRESS: 0x48
NUMBER OF BYTES TO WRITE: 4
MEMORY ALLOCATED AT ADDRESS: 0x1F8C008
/dev/i2c-0 OPENDED!
WRITE:SUCCESS
[root@alarm ~]#
Turning on the relays on my Olimex MOD-IO2 via i2c

Turning on the relays on my Olimex MOD-IO2 via i2c

But where does the Write [0x90] come from?

Workbench with Saleae Logic16, OLinuXino, MOD-IO2, etc

Workbench with Saleae Logic16, OLinuXino, MOD-IO2, etc

What’s next

I’ve used the opportunity and updated the following blog posts and added some screenshoots from the logic analyzer:

And I have still to

Conclusion

The Saleae Logic16 is a device that just works. The software does what it should, it isn’t cluttered and has some nifty features but it is a great pity that it isn’t open source.

Possible improvements

  • It looks like the GUI uses still old Qt 3 libraries (just like Eagle and Xilinx).
  • The GUI hangs on start during device initialization, why not do it in the background?
  • And of course I would cut capors if the software would be open source.

If you want something cheaper and fully open source, then have a look at the Openbench Logic Sniffer logic analyzer and the sigrok project.

Acknowledgments

A big thanks goes to Mike Bergmann and Bones AG for providing me the Saleae Logic16!

It will surely speed up my future work ^^

Other Reviews

What logic analyzer do you use and does it work on Linux too? Do you have some cool photos of your work? Just leave a comment below or post a link.