Quantcast
Channel: Uwe Hermann's blog
Viewing all 200 articles
Browse latest View live

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!

New protocol decoder: rgb_led_spi

$
0
0

We're happy to announce that there's a new protocol decoder available in libsigrokdecode since today, rgb_led_spi (thanks to Matt Ranostay for the contribution!).

This is a small PD that decodes RGB (red/green/blue) values for a certain type of LED controller that are sent from a host/microcontroller via SPI in order to light up the LEDs in a certain color.

It can be used for decoding data to a WorldSemi WS2801 RGB LED controller, for example (see the led/ws2801 directory in the sigrok-dumps repo for sample files).

Since this (rather simple) "protocol" is transmitted over SPI, the protocol decoder can make use of the stacking feature in libsigrokdecode and simply stack upon the spi decoder (thus avoiding having to re-implement all of the SPI handling in the RGB LED decoder itself).

Happy LED blinking!
 

Brymen BM869 support

$
0
0

Yes, it's time for another multimeter! This time libsigrok has gained support for the Brymen BM869 multimeter (the code was written by Aurelien Jacobs, thanks a lot!).

This is a 50000 counts True RMS DMM with various "higher-end" features compared to other, cheaper DMMs.

The PC connectivity interface Brymen BU-86X is using USB/HID internally (based on the Cypress CY7C63743 enCoRe USB chip), the protocol is relatively simple and documented by the manufacturer.

You can also browse the source code if you're interested in some of the implementation details.

 

New protocol decoder: ir_nec

$
0
0

We're happy to announce that libsigrokdecode now supports yet another protocol decoder, this time: ir_nec. The PD has been contributed by Gump Yang, thanks a lot!

This is a decoder for the so-called NEC infrared (IR) protocol, a rather widely used protocol for remote controls (for TVs, VCRs, and lots of other things).

The protocol is based on a pulse-distance encoding, i.e., a 1 bit is encoded by a pulse and a long pause after that, and a 0 is encoded by a pulse and a short pause after the pulse.

The "payload" basically consists of an 8-bit address (which is a number that is supposed to be unique for a certain vendor / device), and an 8-bit command / code which identifies which button was actually pressed.

The 8-bit address is followed by the inverted 8-bit address, the 8-bit code is also followed by its inverse. This is (or can be) used for error checking on the receiver side.

You can read up on the protocol details in various online resources.

When the proper definitions for specific remote controls are added to the PD, it can also decode the actual remote control button in a more human-readable form e.g. "Matsui TV: Mute" vs. "Address: 0x40, command: 0x10", see screenshot for an example.



 

Windows support and installers

$
0
0

For a long time Windows support in sigrok was somewhat lacking and/or in the TODO state, but things have improved quite a bit recently.

While there have been both a working cross-compile setup based on MinGW (additionally based on the MXE suite of scripts) as well as working NSIS-based installer executables for sigrok-cli and for PulseView for quite a while, they weren't really all that useful.

Only very few devices used to actually work in practice due to portability issues and due to certain limitations in the way libsigrok was talking to USB-based hardware devices (e.g. various logic analyzers) and serial port based devices.

All of this has changed though. A major part of the solution and fixing was done by Martin Ling (thanks a lot!) by writing specific thread-/Event-based code for the Windows platform for allowing libsigrok drivers based on libusb to properly work on Windows (transparently, i.e. without requiring changes to the drivers).

The other part of the puzzle is the new LGPL3+ libserialport shared library, also written by Martin Ling (thanks again!), which is a portable, cross-platform C libary (that is completely independent of libsigrok, i.e. it can be used by various other open-source projects without any problems, too). So far, it supports Linux, Windows, Mac OS X, and some BSDs. More on libserialport in another blog post.

With all the above-mentioned improvements we're now providing daily-built, self-contained Windows installers for sigrok-cli and PulseView, that ship with everything you need (the executables and libraries, the protocol decoders, some firmware files, some example files you can use for testing decoders and UIs, the Windows Python 3 installer you need for running protocol decoders, the Zadig tool you need for switching devices to use the libusb driver, etc. etc.).

Downloads:

Please make sure to read the Windows wiki page, it contains some more information related to drivers, firmware files, current device status, and so on.

We've tested the basic functionality on Windows XP and Windows 7 (and we don't expect any issues on Windows Vista or Windows 8 either), but we're happy to hear any feedback you may have and/or issues you might encounter.

 


New major release of various sigrok components

$
0
0

Hi everyone! We're very happy to be able to announce a major new, coordinated release of:

There have been a lot of improvements in pretty much all parts of the code, including more supported hardware, more protocol decoders, more features, various bugfixes, better portability, improved GUIs, and lots more. Many thanks to all the contributors who helped to make this happen!

libserialport

Starting with the libsigrok 0.3.0 release, all libsigrok drivers that talk to serial ports are using the cross-platform LGPL3+ libserialport library now (which has its first release, 0.1.0, today). This also helps to improve the Windows support for sigrok.

The library was written by Martin Ling (thanks a lot!) and supports a number of OSes, including Linux, Mac OS X, Windows, and others. Supported features include port enumeration, opening/closing ports, setting port parameters (baud rate, parity, and so on), reading/writing/flushing data, etc. etc. You can take a look at the API docs for more details.

Note: libserialport is completely independent of sigrok, i.e. it can be used by various other open-source projects without any problems, too.

libsigrok

The most interesting libsigrok changes for users will likely be the new hardware support, so here goes:

There have also been a number of other (infrastructure) changes and improvements, though:

  • We added support for channel groups (multiple channels of the device, that share some properties and are configured together).
  • There's a generic SCPI backend now that drivers can use, supporting various transports: serial ports, USBTMC, TCP/RAW, TCP/Rigol, VXI, and librevisa.
  • The session file format (*.sr) has changed and its version was bumped to 2.
  • There's improved Windows support now for serial port and USB based devices, though it's partially still experimental! Please checkout the current list of known Windows issues, since there are some problems e.g. with the popular FX2 based devices (bug #343) and the Openbench Logic Sniffer (bug #205). Feedback, bug reports and patches are highly welcome!
  • Various API improvements were also done, to allow for some of the new features and to ease future extendability. You can take a look at the API docs for more details.
  • And of course there was a huge amount of bugfixing, as usual.

See the NEWS file for the full list of changes.

libsigrokdecode

Same deal for libsigrokdecode, most people will probably want to know which new protocol decoders are supported:

  • guess_bitrate: Guess the bitrate/baudrate of a signal
  • ir_nec: NEC infrared remote control protocol
  • ir_rc5: RC-5 infrared remote control protocol
  • midi: Musical Instrument Digital Interface
  • parallel: Parallel synchronous bus decoder
  • rgb_led_spi: RGB LED string decoder (SPI)
  • xfp: 10 Gigabit Small Form Factor Pluggable Module
  • z80: Zilog Z80 microprocessor disassembly

The protocol decoder backend has also received a bunch of new features and facilities in this release:

  • Support for annotation rows (groups of annotation classes to be shown together).
  • The new OUTPUT_BINARY facility allows PDs to output decoded data in various (file) formats (e.g. I²S output in WAV format, USB output in PCAP format for Wireshark, LCD controller output in PNG format for viewing, and so on).
  • The new OUTPUT_META facility allows PDs to report certain data points or events to the frontend, which can be used for various post-processing and statistics purposes (e.g. simple counts, average/mean values, min/max values, and more).
  • The protocol decoder API has changed, the API version is bumped to 2. Decoders using the old PD API no longer work with this library release.
  • A large amount of PD fixes have been done to improve the usability of all PDs when used with GUIs (long/short annotations for zoom-dependent display, corrected annotation sample numbers, use of annotation rows, and so on).
  • Various API improvements were also performed to allow for all the new features. You can take a look at the API docs for more details.
  • And of course all PDs and the library code have received quite a few bugfixes, as usual.

See the NEWS file for the full list of changes.

sigrok-cli

sigrok-cli (a command-line sigrok frontend) now depends on both libsigrok >= 0.3.0 and libsigrokdecode >= 0.3.0 and supports all the new features of the libraries, including channel groups, PD annotation rows, the new *.sr file format, plus the usual bunch of bugfixes.

The following changes have been performed for the command-line options:

  • The -g | --channel-group option was added.
  • The -M option (for PD meta output type support) was added.
  • The -B option (for PD binary output type support) was added.
  • The -p | --probes option was renamed to to -C | --channels.

There were also a bunch of improvements related to the (experimental) sigrok-cli Windows installer. You can download an (experimental) nightly build here: sigrok-cli-NIGHTLY-installer.exe. Any feedback, bug reports, or patches are highly welcome!

See the NEWS file for the full list of changes.

PulseView

PulseView (a Qt based sigrok GUI for logic analyzers, oscilloscopes and MSOs) has also received quite a huge amount of improvements and new features (thanks a lot to Joel Holdsworth!):

  • Support for protocol decoding (via libsigrokdecode) has been added, including support for annotation rows, multiple decoders in the same GUI window, support for stacking protocol decoders (e.g. I²C -> RTC8564, UART -> MIDI, or SPI -> SDcard) and lots more.
  • Support for loading and saving sigrok session (*.sr) files has been added.
  • Initial support for analog data sources (specifically oscilloscopes, e.g. the Rigol DS1052E) has been added.
  • The Windows installer has received a bunch of fixes and improvements, too. You can download an (experimental) nightly build here: pulseview-NIGHTLY-installer.exe. Any feedback, bug reports, or patches are highly welcome!
  • And of course there were quite a number of bugfixes, as usual.

See the NEWS file for the full list of changes.

sigrok-firmware-fx2lafw

This release of sigrok-firmware-fx2lafw, the open-source firmware for FX2-based logic analyzers, is only a minor bugfix release. It basically only fixes one bug which lead to the data pins not being tri-stated after an acquisition, but rather being driven.

See the NEWS file for the full list of changes.

 

Have fun analyzing your signals!

New protocol decoder: nrf24l01

$
0
0

libsigrokdecode has gained support for a new protocol decoder recently, the nrf24l01 PD.

Thanks a lot to Jens Steinhauser for contributing the decoder, as well as a bunch of test files that we're using for some automated decoder tests (and that you can use to easily try out the decoder as well).

This decoder stacks on top of the SPI PD, decoding some higher-level commands used by the Nordic Semiconductor nRF24L01(+) 2.4GHz RF transceiver ICs.

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


Yokogawa DLM2000 series oscilloscope support

$
0
0

We're happy to announce even more hardware support in libsigrok. It now supports the Yokogawa DLM2000 series oscilloscopes / mixed-signal scopes.

Thanks a lot to Soeren Apel for writing the code and testing on a Yokogawa DLM2054! We're especially happy about this new driver since it's the first Yokogawa device at all that we now support.

The DLM2000 series features 2 or 4 analog channels, and the 4-channel models can alternatively capture 3 analog channels + 8 digital ones. The scopes sample at 2.5GSa/s and feature a bandwidth of 200MHz-500MHz (depending on the model) and up to 250 Mpoints of memory.

The DLM2000 devices seem to specifically target various industrial uses and include some interesting analysis/reporting features like a "history search" and "replay" function, enhanced trigger facilities, Go / No-Go functions, a power-supply analysis feature, and more.

While the device can do some simple decoding of certain digital protocols such as SPI (apparently those are optional add-ons to buy), you can of course widely broaden the range of protocols by using the sigrok protocol decoders on the PC side.

The devices can be connected to a PC via either USB (USBTMC protocol), Ethernet (LXI), or GPIB. The protocol itself is SCPI-based, have a look at the source code if you're interested in this kind of stuff.

It might be possible to support the DLM4000 series with some minor updates of the driver at some point, probably even others. Patches and testers for that are highly welcome, if you own such a device please let us know!

 

 

 

New protocol decoder: spdif

$
0
0

libsigrokdecode now supports the spdif decoder.

The Sony/Philips Digital Interface Format (S/PDIF) is a (nowadays standardized in IEC 60958) digital audio protocol that is used in various devices and supported by a number of ICs, such as the TI PCM2707 and many others.

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

Thanks a lot to Guenther Wenninger for contributing the decoder!

Manson HCS-3xxx series programmable power supply support

$
0
0

We're happy to announce that libsigrok now supports the Manson HCS-3xxx series of programmable power supplies (PPS).

Thanks a lot to Matthias Heidbrink for improving the driver and extending it to support more models in this series! See the model overview for more details. There are various rebadged versions sold by Conrad/Voltcraft, PeakTech, and probably other resellers.

All power supplies in this series have one channel only, featuring various voltage/current/power combinations though. They're connected to the PC via a (built-in) USB-to-serial IC (e.g. the SiLabs CP2102 in the Manson HCS-3202). A relatively simple ASCII-based protocol is used to communicate with the devices and control them.

You can control the power supplies e.g. via sigrok-cli like this:

 $ sigrok-cli -d manson-hcs-3xxx:conn=/dev/ttyUSB0 --show
 manson-hcs-3xxx - Manson HCS-3202 with 1 channel: CH1
 Supported configuration options:
    output_current: 0.000000
    output_current_limit: 0.000000
    output_enabled: on (current), off
    output_voltage: 3.390000
    output_voltage_target: 0.000000

 $ sigrok-cli -d manson-hcs-3xxx:conn=/dev/ttyUSB0 --samples 2 -O analog
 CH1: 3.300000 V DC
 CH1: 0.000000 A
 CH1: 3.380000 V DC
 CH1: 0.000000 A

 $ sigrok-cli -d manson-hcs-3xxx:conn=/dev/ttyUSB0 --config output_voltage_target=5.0 --set

 $ sigrok-cli -d manson-hcs-3xxx:conn=/dev/ttyUSB0 --config output_enabled=yes --set

The code was tested on the Manson HCS-3202 and the Voltcraft PPS-11815. Please let us know if you are able to test any of the other devices the driver is supposed to support, and/or whether you experience any issues.

 

New protocol decoder: rfm12

$
0
0

libsigrokdecode now supports yet another protocol decoder, rfm12.

This one decodes the SPI-based protocol of the HopeRF RFM12 and RFM12B wireless FSK transceiver modules. These devices can transmit and receive in the 433MHz, 868MHz and 915MHz bands (depending on chip).

Thanks a lot to Sławek Piotrowski for contributing the decoder (as well as an example file for sigrok-dumps)! We've also added a small test-case in the sigrok-test repository to be able to keep track of any potential regressions that might occur later.

sigrok at the Chaos Communication Congress (31C3)

$
0
0

As in previous years various sigrok developers will be at the Chaos Communication Congress (31C3) in Hamburg, Germany. The conference takes place December 27th to 30th, 2014.

There will be a sigrok assembly (on all 4 days) with a few tables and chairs to allow for sigrok hacking and development planning, various demos and Q&A for visitors, and so on.

Apart from sigrok hacking the conference also features the usual set of awesome talks related to security, hardware hacking, and lots of other interesting topics that you shouldn't miss.

If you're interested in sigrok as user or developer, please drop by and say hello. Bring your gear (if possible) for reverse engineering and driver writing purposes. Chat with us, give us your suggestions which features you'd like to see, which devices you want to be supported, which protocol decoders you'd like to have, or even help us write some drivers/decoders!

 


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.

 

Viewing all 200 articles
Browse latest View live


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