Quantcast
Channel: The ever-expanding world of sigrok blogs
Viewing all 215 articles
Browse latest View live

Major sigrok releases: libsigrok, libsigrokdecode, sigrok-cli, PulseView

$
0
0

We're happy to announce a set of major new releases of the following sigrok projects: libsigrok 0.4.0, libsigrokdecode 0.4.0, sigrok-cli 0.6.0, and PulseView 0.3.0.

The tarballs are available for download from sigrok.org/download, as usual.

A lot of work has gone into each of those releases, with many new supported devices, many more protocol decoders, various new GUI features, and lots more. See below for details.

libsigrok

Let's start with the most interesting part for most people, newly supported devices in this release:

  • Logic analyzers: AKIP-9101, BeagleLogic, LeCroy LogicStudio, mcupro Logic16 clone, Pipistrello OLS, SysClk LWLA1016
  • Oscilloscopes: Rigol/Agilent DS1000Z series, Yokogawa DLM2000 series, Yokogawa DL9000 series, Hung-Chang DSO-2100, GW Instek GDS-800
  • Multimeters: Agilent U1241A/B, Agilent U1242A/B, Brymen BM25x series, MASTECH MS8250B, Metrahit 16T/16U/KMM2002, PeakTech 3415, Tenma 72-7730/72-7732/72-9380A, Testo 435-4, UNI-T UT372, UNI-T UT71A/B/C/D/E, Velleman DVM4100, Voltcraft VC-870/VC-920/VC-940/VC-960
  • Programmable power supplies: Fluke/Philips PM2800 series, HP 663xx series, Manson HCS-3xxx series, Motech LPS-30x series, Rigol DP800 series, Korad KAxxxxP series (a.k.a Velleman LABPS3005D and others)
  • AC/DC sources: Agilent N5700A series (DC sources), Chroma 61600 series (AC sources), Chroma 62000 series (DC sources)
  • Electronic loads: Maynuo M97 (and compatibles)
  • LCR meters: DER EE DE-5000
  • Scales: KERN EW 6200-2NM
  • BeagleBone Black capes: BayLibre ACME (revA and revB)

Pretty much every existing hardware driver has also received numerous fixes and improvements.

The fx2lafw driver specifically now supports (together with the already-released sigrok-firmware-fx2lafw >= 0.1.3) the new "official" sigrok USB VID/PID pairs you can use in purely FX2-based logic analyzers. For details see this blog post.

There are also a few new input modules (raw_analog, trace32_ad) and output modules (wav, srzip).

One of the bigger new features are the language bindings for libsigrok (based on Doxygen + SWIG): You can now use libsigrok functionality in C++, Python, Ruby, and Java. The C++ bindings are already used by PulseView (see below), and the Python bindings are used by the (still in development) sigrok-meter frontend. Let us know if you're using some of the bindings for your own projects!

There have also been an unusually huge set of random new features and facilities, bugfixes, documentation fixes, portability fixes, build system improvements, and so on.

The API has changed quite a bit since the last major release, you can read up all the details in the API docs.

See the NEWS file for a much more detailed list of changes, or browse the git history for even more details.

libsigrokdecode

Let's start with the newly supported protocol decoders as well:

  • adns5020: Bidirectional command and data over an SPI-like protocol
  • am230x: Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor
  • arm_etmv3: Decode ETM instruction trace packets
  • arm_itm: Trace data from Cortex-M / ARMv7m ITM module
  • arm_tpiu: Filter TPIU formatted trace data into separate streams
  • eeprom24xx: 24xx series I²C EEPROM protocol
  • em4100: EM4100 100-150kHz RFID protocol
  • jitter: Retrieves the timing jitter between two digital signals
  • max7219: 8-digit LED display driver
  • mdio: Half-duplex sync serial bus for MII management (MAC/PHY)
  • modbus: Modbus RTU protocol for industrial applications
  • mrf24j40: IEEE 802.15.4 2.4 GHz RF tranceiver chip
  • nrf24l01: 2.4GHz transceiver chip
  • pwm: Analog level encoded in duty cycle percentage
  • qi: Async serial protocol for Qi charger receivers
  • rfm12: HopeRF RFM12 wireless transceiver control protocol
  • sdcard_sd: Secure Digital card (SD mode) low-level protocol
  • spdif: Serial bus for connecting digital audio devices
  • stepper_motor: Absolute position and movement speed from step/dir
  • swd: Two-wire protocol for debug access to ARM CPUs
  • tca6408a: Texas Instruments TCA6408A 8-bit I²C I/O expander
  • timing: Calculate time between edges
  • usb_power_delivery: USB Power Delivery protocol
  • usb_request: USB (low-speed and full-speed) transaction/request protocol

And with that, we now support a total of 60 different protocol decoders. There are some more in the pipeline for the next releases, and we get contributed decoders on a pretty regular basis these days, which is awesome! If you're working on additional PDs, please send patches our way!

Apart from new decoders, there have also been a number of improvements and bugfixes for existing PDs as well.

The usb_request PD is especially noteworthy, since it not only allows you to decode higher-level USB requests, but it can also export the decoded data in the PCAP format, which you can further process/analyze in other tools such as Wireshark. See this blog post for details.

There have also been the usual set of random new features, bugfixes, documentation fixes, portability fixes, build system improvements, and so on. Only minor API changes have gone into this release, though.

See the NEWS file for a much more detailed list of changes, or browse the git history for even more details.

sigrok-cli

The sigrok-cli command-line utility hasn't seen too many new features in this release. There have been various bugfixes and fixes for memory leaks and compiler warnings and such, as well as some command-line option parsing robustness improvements.

The new --get and -T|--transform-module options have been added.

See the NEWS file for a more detailed list of changes, or browse the git history for even more details.

PulseView

The PulseView GUI has seen a pretty large set of improvements compared to the last release.

It is now based on the new libsigrokcxx C++ library (the libsigrok C++ bindings), supports Qt4 or Qt5, and is written in C++11 now (obsoleting some of the Boost functionality used previously in favor of std:: equivalents).

Various new or improved features have been added:

  • Support for vertical scaling of analog or logic traces
  • A "Save selection range as..." feature
  • Some settings now survive a restart (last open/save directory location, window size/position, last used device)
  • Pinch-zoom support, always-zoom-to-fit support, "sticky scrolling" support, etc.
  • Trace group support (for dragging multiple traces around as a group)
  • ...and many, many more GUI and usability improvements...

There are Import and Export menus now, which allow you to import/export data from/to various file formats (all formats supported in libsigrokcxx).

The decoder annotation display code has received some substancial performance improvements.

Various portability improvements have been added as well, greatly increasing the usability of PulseView e.g. on Windows, Android, or Mac OS X.

There have also been a large number of random new features, bugfixes, documentation fixes, portability fixes, build system improvements, and so on.

See the NEWS file for a much more detailed list of changes, or browse the git history for even more details.

The future

As you can imagine there's basically no end to our TODO list for sigrok; as always we want to support more hardware, more input/output modules, more protocol decoders, and so on. Your contributions are highly welcome!

There are also a bunch of regressions and/or known bugs and missing features we'll be working on for the next minor bugfix release. If you notice any issues that haven't been reported yet, please file a bug.

We also have a number of larger tasks on our list, such as a new protocol decoder backend which will improve the performance of most PDs by quite a bit (10x or 20x speedup is easily possible for some PDs). We're also investigating a more generic flow-graph based framework which will tie all "blocks" we currently have (and others we'll add) more tightly together in a flexible manner, e.g. hardware drivers, input modules, output modules, transform modules, protocol decoders, etc.

Thanks a lot to everyone who has contributed to any of the sigrok projects to make these releases happen! This wouldn't have been possible without the help of the numerous contributors!

 


New protocol decoder: timing

$
0
0

libsigrokdecode now supports another protocol decoder: timing. This has been supported for a while already actually (and is part of libsigrokdecode 0.4.0), but hasn't seen an official announce yet, so here goes.

The PD works on a single logic channel and shows (for all transitions) the time between a transition and the next one.

As usual we have a few test-cases in our sigrok-test repo to ensure there are no regressions later on as the backend code and/or PD change.

The decoder was contributed by Baruch Even, thanks a lot!

 

New protocol decoder: Aosong AM230x / DHT11

$
0
0

We're happy to announce that libsigrokdecode now supports the am230x protocol decoder.

This PD decodes the custom protocol of the Aosong AM230x and DHT11 temperature and humidity sensors.

A short description of the protocol is available on the respective wiki page, along with pointers to further reading.

There are also a bunch of teardown photos of these sensors, in case you were wondering what those look like inside. Turns out they usually use some ST STM8S (or other) microcontroller and measure temperature and humidity "directly" without further ICs. The exception being the Aosong AM2303 which actually uses a Dallas/Maxim DS18B20 (1-Wire) sensor for the measurement.

Thanks a lot to Johannes Roemer for contributing the decoder!

New protocol decoder: PWM

$
0
0

We're happy to announce that libsigrokdecode now supports the pwm protocol decoder.

The PD was contributed by Torsten Duwe and Sebastien Bourdelin, thanks a lot!

This decoder will show the duty cycle of any signal, which in practice can mean various things. E.g. Class-D amplifiers can use PWM to encode audio data.

We have a test file in the sigrok-dumps repository containing audio data.

The decoder also supports a binary output facility which you can use to decode the audio (a direct export to WAV is planned as well, though).

 $ sigrok-cli -i pwmtest.sr -P pwm:data=4 -B pwm=raw > PWM.raw
 $ sox -t raw -e unsigned -b 8 -r 64000 PWM.raw PWM.wav
 $ aplay PWM.wav

 

MASTECH MS8250B supported

$
0
0

libsigrok now supports yet another multimeter, the MASTECH MS8250B.

This is a 4000 counts autorange DMM with USB connectivity (via an internal USB-to-serial IC built into the DMM).

Apart from the usual measurement ranges it also features a nice non-contact voltage detector functionality.

Thanks to Baruch Even for contributing and testing the code for this DMM (which is now part of the serial-dmm driver via a relatively small patch)!

 

New protocol decoders: ARM TPIU, ITM, ETMv3

$
0
0

We're happy to announce that libsigrokdecode now supports three new, closely related, protocol decoders: arm_tpiu, arm_itm, and arm_etmv3.

Here's a quick overview of the protocols that are decoded:

  • The TPIU (Trace Port Interface Unit) is a stream formatter and multiplexer that combines data from several sources into one stream. It is used inside an ARM-based microcontroller or SoC to combine ITM and ETM trace output into a single port.
  • ARM ITM (Instrumentation Trace Macroblock) allows tracing of software events, and also with the help of DWT (Debug, Watchpoint and Trace) the tracing of exceptions and data watchpoints. It also supports periodic sampling of PC values.
  • ARM ETM (Embedded Trace Macroblock) allows tracing of every instruction executed on the CPU. Currently only ETM version 3 (the newest version, present in Cortex-M3 and other ARMv7-m) is supported.

The data is captured on the SWO (TRACESWO) pin, e.g. on commonly available ARM SWD (serial wire debug) programmers/debuggers. Hint: libsigrokdecode also ships with an SWD decoder, if you're interested in that...

You can test the decoders with some sample files from the sigrok-dumps repository. If you optionally supply the location of ARM (cross-)toolchain utilities such as arm-none-eabi-objdump or arm-none-eabi-addr2line you can decode even more information, including source code snippets (see screenshot below)!

That opens up a whole new bunch of debugging possibilities; you can basically debug your code by not only tracing instructions but also tracing them in relation to other signals you're capturing with your logic analyzer at the same time (e.g. GPIOs you're toggling, UART, SPI, I²C, or whatever else may be going on in the system you're debugging)!

All three decoders were contributed by Petteri Aimonen (including sample *.sr files and a small test-suite for our sigrok-test repository), thanks a lot!

Happy debugging!

 

BayLibre ACME now supported

$
0
0

libsigrok now supports the BayLibre ACME device.

This a BeagleBone Black cape with an I²C-attached Texas Instruments INA226 current/power monitor and an I²C-attached TI TMP435 temperature sensor.

The sensors are supported in mainline Linux. The drivers expose a standard interface via the Linux sysfs pseudo file system, which the libsigrok driver uses.

The driver was contributed by Bartosz Golaszewski (of BayLibre), thanks a lot!

Bartosz will also present a Sigrok: Adventures in Integrating a Power-Measurement Device talk at the Embedded Linux Conference on March 24, 2015 (schedule) in San Jose, CA.

 

UNI-T UT372 now supported

$
0
0

libsigrok now supports a new device class, tachometers! The first supported device of this type is the UNI-T UT372.

It's a USB-attached device (uses one of the WCH CH9325 ICs commonly found in UNI-T gear) that can measure RPM and counts.

The protocol of the device (now documented in the sigrok wiki) was reverse engineered by Mike Walters, using a somewhat unusual and quite interesting technique. Instead of the usual method of sniffing the USB traffic and then staring at hex numbers until things start to make sense, he used the following method:

After a first quick look at the USB traffic it was pretty clear that the packets usually look something like this:

    070?<3=7<60655>607;007885

Now, instead of trying to figure out which bit and byte means what by looking at many of these packets, Mike instead generated his own packets that looked like the real packets from the UT372. He sent them to the vendor's PC software (via a custom-built "emulator" on a USB-enabled Arduino), which then interpreted and displayed the values and flags that it thought were sent by an actual UT372 device.

By randomly flipping bits in these packets and observing how the PC software's interpretation of the packets differed, Mike was able to figure out the individual protocol details a lot faster than using other methods.

Shortly after the protocol was known, Martin Ling wrote a libsigrok driver for the UT372 by hooking up a device-specific ut372 parser to the existing uni-t-dmm driver in libsigrok (which already handles the somewhat "special" CH9325 details).

Thanks a lot to Mike Walters and Martin Ling for their contributions!

 


New protocol decoder: 24xx I²C EEPROM

$
0
0

It's been a while since the eeprom24xx protocol decoder was added to libsigrokdecode, but there hasn't been an "official" announce yet, so here goes.

The eeprom24xx PD can decode the I²C-based protocol of (almost) all 24xx series EEPROMs from various vendors.

Supported chips include for example the Microchip 24LC64 or 24AA025UID, the ST M24C01 or M24C02, the Siemens SLx24C01 or SLx24C02, and others. Various other chip families can be added relatively easily via chip spec entries in the decoder's lists.py file.

These ICs usually have only very few bytes of storage (e.g. 128 or 256 bytes), where the memory is organized into pages (the page size is e.g. 8 or 16 bytes). They usually support various types of accesses (command sequences) such as "byte write", "page write", "current address read", "random read", "sequential random read", "sequential current address read", and others.

Apart from a common command subset, some of the chips also support custom non-standard commands such as "set write protection" or "read write protection status" (on ICs that have write-protectable areas), and some others.
 

New protocol decoder: Avago ADNS-5020

Maynuo M9812 now supported

$
0
0

We're happy to announce that libsigrok now supports the Maynuo M9812 digital load.

The driver was contributed by Aurelien Jacobs, thanks a lot!

It was written in a pretty generic way so that it probably also supports many of the other devices in the Maynuo M97 series of devices.

If you are able to test one of the other devices in that list, please let us know!

The hardware is attached via a (virtual) serial port and communication happens via a protocol on top of Modbus RTU (as documented in the user's guide)

There are also a bunch of teardown photos (plus links to the relevant ICs and their datasheets) of the device on the wiki page, if you're interested in that kind of stuff.

libsigrokdecode 0.3.1 released!

$
0
0

We're happy to announce that libsigrokdecode 0.3.1 has been released.

You can download the libsigrokdecode-0.3.1.tar.gz source tarball from sigrok.org/download as usual.

This is mostly a bugfix-release, the C library API was not changed. This means existing frontends that work with / are linked against libsigrokdecode 0.3.0 will continue to work just fine, without requiring relinking or recompiling.

However, some of the protocol decoders' output changed in ways which are not compatible with the state of the decoders in the last libsigrokdecode release. This means, if you're using any scripts to parse decoder output, or if you have any "private" protocol decoders that stack on top of one of those shipped with libsigrokdecode, you will have to do some adaptations. You're also encouraged to submit such decoders to be included in libsigrokdecode proper, of course!

In addition to all kinds of improvements and bugfixes in existing protocol decoders (PDs), you're probably most interested in what new protocol decoders are now supported (backported from git HEAD). So here's the list:

  • adns5020: Bidirectional command and data over an SPI-like protocol
  • am230x: Aosong AM230x/DHTxx/RHTxx humidity & temperature sensor
  • arm_etmv3: Decode ETM instruction trace packets
  • arm_itm: Trace data from Cortex-M / ARMv7m ITM module
  • arm_tpiu: Filter TPIU formatted trace data into separate streams
  • eeprom24xx: 24xx series I²C EEPROM protocol
  • jitter: Retrieves the timing jitter between two digital signals
  • mdio: Half-duplex sync serial bus for MII management between MAC and PHY
  • mrf24j40: IEEE 802.15.4 2.4 GHz RF tranceiver chip
  • nrf24l01: 2.4GHz transceiver chip
  • pwm: Analog level encoded in duty cycle percentage
  • rfm12: HopeRF RFM12 wireless transceiver control protocol
  • spdif: Serial bus for connecting digital audio devices
  • stepper_motor: Absolute position and movement speed from step/dir
  • swd: Two-wire protocol for debug access to ARM CPUs
  • tca6408a: Texas Instruments TCA6408A 8-bit I²C I/O expander
  • timing: Calculate time between edges

This adds up to currently 54 supported PDs in total.

Please check the libsigrokdecode NEWS file for the full list of user-visible changes in this release. As always, we're happy about bug reports, feature suggestions, comments about which protocol decoders you'd want supported next, or even better — patches :)

Happy decoding!

New protocol decoder: Jitter

$
0
0

libsigrokdecode has had support for the jitter protocol decoder for a while now (it is already shipped with the recently-released libsigrokdecode 0.3.1), but this hasn't been officially announced yet, so here goes.

The decoder allows you to retrieve the timing jitter between two digital signals. This can be useful for a number of things, e.g. finding jitter/delay between a sender and receiver (be it wired or over some form of wireless communication), or for debugging your firmware interrupt setup by checking how much jitter you have between multiple consecutive invocations of the interrupt handler that should in theory always be equally spaced.

We also added a small test-case in our sigrok-test repository so we can ensure that the PD works fine (and continues to do so upon changes).

This protocol decoder has been contributed by Sebastien Bourdelin, thanks a lot!

New protocol decoder: Stepper motor

$
0
0

Another protocol decoder that hasn't had an official announce yet is stepper_motor, a PD which decodes speed and position of a stepper motor.

The PD takes a "step" and "direction" pin as input.

You can select either steps or millimeters as unit for the decoder output.

As usual we also have a few sample dumps in the sigrok-dumps repository, and a few test-cases in sigrok-test.

The decoder was contributed by Petteri Aimonen, thanks a lot!


 

KERN scale series supported

$
0
0

We're happy to announce that libsigrok now supports various weighing scales from KERN & SOHN GmbH.

The new kern-scale driver currently supports (and was tested on) the KERN EW 6200-2NM scale and all scales from the series which have the same protocol.

The scale can report the currently measured values (both unstable and stable ones) via the RS232 cable it ships with.

The protocol is a simple (14- or 15-byte) packet-based ASCII protocol containing the measured value, the unit (gram, ounce, etc.) and an indicator of whether the measured value is stable or not.

Support for other KERN scales with a different protocol can be added easily. Please let us know if you are able to test on other devices!

Usage example:

 $ sigrok-cli -d kern-ew-6200-2nm:conn=/dev/ttyUSB0 --samples 10
 Mass: 26.920000 g
 Mass: 26.920000 g
 Mass: 134.600006 ct UNSTABLE
 Mass: 134.600006 ct UNSTABLE
 Mass: 134.600006 ct UNSTABLE
 Mass: 134.600006 ct UNSTABLE
 Mass: 134.600006 ct
 Mass: 134.600006 ct
 Mass: 134.600006 ct
 Mass: 134.600006 ct

 


New protocol decoder: Microchip MRF24J40

$
0
0

We're happy to announce that libsigrokdecode supports yet another new protocol decoder: mrf24j40.

This PD decodes the SPI-based protocol of the Microchip MRF24J40, an IEEE 802.15.4 2.4 GHz RF tranceiver chip.

As usual we also have a few sample dumps in the sigrok-dumps repository, and a few test-cases in sigrok-test.

The decoder was contributed by Karl Palsson, thanks a lot!

Hung-Chang DSO-2100 supported

$
0
0

We're happy to announce that libsigrok now supports another PC oscilloscope, the Hung-Chang DSO-2100 (also sold under different brand names such as Voltcraft or Protek).

This is a 1999-era parallel-port based device with 30MHz analog bandwidth and 100MS/s samplerate.

The hardware (see also PCB shots) is somewhat non-trivial, it uses a QuickLogic FPGA, an Analog Devices DSP/microcontroller, some SRAM and Harris/Intersil ADCs. It also has some other properties or quirks you might be interested in.

The driver was contributed by Daniel Glöckner, thanks a lot!

Since this is the first parallel-port device in libsigrok, the build system also gained detection support for libieee1284, a cross-platform parallel port access library that the driver uses.

 

GW Instek GDS-800 series supported

$
0
0

We're happy to announce that the GW Instek GDS-800 oscilloscope series is now supported in libsigrok.

These are devices ranging from 60MHz bandwidth up to 250MHz, with a samplerate of 100MSa/s (or 25GSa/s for equivalent-time sampling).

They have RS232 connectivity per default, but there are also options to extend them with GPIB or USB ports. A (publically documented) SCPI-based protocol is used for the communication.

The scopes are also sold under the Voltcraft brand name (and the code was actually tested on a Voltcraft DSO-6060C).

The driver was contributed by Martin Lederhilger, thanks a lot!

 

New protocol decoder: Modbus

$
0
0

Yes, it's that time of the week again — libsigrokdecode supports yet another protocol decoder since somewhat recently: modbus.

In the current state the PD stacks on top of the UART decoder and decodes the Modbus RTU protocol. Support for e.g. Modbus ASCII may be added later (to the same PD), possibly also Modbus TCP or other variants (as an extra decoder).

Check the PD's wiki page or Wikipedia for some more info on Modbus in general.

As always, we have a few example files in the sigrok-dumps repo and some test-cases in the sigrok-test repo.

The decoder was contributed by Bart de Waal, thanks a lot!

 

New protocol decoder: Qi

$
0
0

Another somewhat recently added protocol decoder for libsigrokdecode is the qi PD.

This PD decodes demodulated data streams used by the Qi standard for communication from the receiver to the charging station. You can read more about the Wireless power consortium's Qi standard on Wikipedia.

As always, we have a few example files in the sigrok-dumps repo and some test-cases in the sigrok-test repo.

The decoder was contributed by Josef Gajdusek, thanks a lot!

Viewing all 215 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>