libsigrokdecode 0.5.1 released!

We're happy to announce the release of libsigrokdecode 0.5.1. Tarballs are available from the Downloads page, as usual.

This is a "minor" release that doesn't change or remove any existing public API functions, so all existing clients will continue to work (without even the need to recompile).

The following new protocol decoders are now available:

  • ac97: Audio and modem control for PC systems
  • ds243x: Maxim DS243x series 1-Wire EEPROM protocol
  • maple_bus: Maple bus peripheral protocol for SEGA Dreamcast
  • morse: Demodulated morse code protocol
  • graycode: Accumulate rotary encoder increments, timing statistics
  • counter: Count number of edges
  • sda2506: Serial nonvolatile 1-Kbit EEPROM
  • rc_encode: PT2262/HX2262/SC5262 remote control encoder protocol

In total, we now support 85 different protocol decoders. If you're working on additional PDs, please send patches our way!

One of the more important changes to the backend is that the code has been changed to allow for multithreaded usage of the library (i.e., clients such as PulseView can now call libsigrokdecode API functions from different threads without any issues).

All protocol decoders shipped with libsigrokdecode have now been converted to the new PDv3 API that was introduced in libsigrokdecode 0.5.0. This usually means simpler and easier to understand protocol decoders as well as (quite massive, in some cases) performance improvements.

As mentioned in the 0.5.0 release notes, support for the old PD API has now been dropped, as all PDs have been converted to the PDv3 API. If you have any out-of-tree protocol decoders, please consider contributing them to mainline libsigrokdecode to benefit from such updates automatically. If that's not possible or desirable for some reasons, you can usually update your local PDs to the PDv3 API relatively easily (check the wiki page, or any of the 85 already converted PDs, for details).

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

New protocol decoder: graycode

A new libsigrokdecode decoder that has been added a while back is graycode.

This PD allows decoding of gray code and rotary encoder protocols. Check out the source code for more details.

As usual there's a few sample files in sigrok-dumps and test-cases in the sigrok-test repository.

The decoder was contributed by Christoph Rackwitz, thanks a lot!

 

sigrok-firmware-fx2lafw 0.1.6 released!

We're happy to announce the sigrok-firmware-fx2lafw 0.1.6 release. This is an open-source firmware that allows you to use almost any of the popular Cypress FX2 based devices as logic analyzers. It also supports a number of FX2 based USB oscilloscopes/MSOs like the Hantek 6022BE/BL or the Sainsmart DDS120.

The source code and pre-built firmware files are available from the usual place:

This is a bugfix release (no new device support has been added), mainly fixing an issue that could cause non-working and/or prematurely aborted acquisitions with FX2 based logic analyzers on some systems (bug #655).

Additionally, FX2 based logic analyzers will now toggle pin PA1 during acquisition, and keep it high while idle. On fx2grok-tiny and fx2grok-flat devices there's a LED connected to PA1. Thus, those devices will visually indicate whether a firmware has been uploaded (LED will light up and stay like that while the device is idle). During any acquisition the LED will blink.

The NEWS file contains some more details.

 

New protocol decoder: morse

libsigrokdecode yet again gained support for another protocol decoder: morse.

This decodes the well-known Morse code signals (recorded via oscilloscope or logic analyzer).

Have a look at the source code and/or the example file in the sigrok-dumps repo for details.

The decoder was contributed by Christoph Rackwitz, thanks a lot!

 

sigrok at 34C3

If you're at this year's CCC Congress (34C3) December 27-30 in Leipzig, Germany, please feel free to drop by at the sigrok assembly.

We'll be there all 4 days of the congress (with the usual set of random test & measurement devices) for hackathons and random development discussions.

We're always happy to chat with users and contributors, hear about your feature requests and ideas for improvements etc. You can also bring your own devices, chances are we might be able to write drivers for some of the "simpler" devices right then and there, or at least grab some relevant information (photos, lsusb, possibly teardowns if you want).

Assembly location: Exhibition hall 2, c3nav (map). We have 4 seats (2 tables) near a wall.

 

fx2grok-tiny: an 11x11mm FX2 based Open Hardware logic analyzer for use with sigrok

This blog post won't be about the sigrok software for a change. Instead, it is meant to introduce a little hobby project for a tiny DIY FX2 based Open Hardware logic analyzer (that you can use with sigrok, of course): fx2grok-tiny.

The original plan for a tiny logic analyzer was devised by me (Uwe Hermann) in 2012, but being a sigrok developer, I've concentrated on various more important tasks, features, and bugs in the sigrok stack for quite a while. Near the end of 2017 I finally got around to finishing this project.

So the plan was to make an 8-channel, 24MHz FX2 based logic analyzer that is
* Open Hardware (CC-BY-SA 4.0 license for schematics and layout),
* uses Open Source EDA tools (KiCad),
* uses Open Source software on the PC side (libsigrok, PulseView),
* uses Open Source firmware on the FX2 microcontroller (sigrok-firmware-fx2lafw),
* and is as tiny as possible

As you probably know, there are tons of (larger) FX2 based LAs around already, so there's no point to make just yet another one of those. What's unique about this one is that it's completely open, and it may just be the smallest logic analyzer on the planet (don't quote me on that, though).

The original plan was to fit all required components in a 13x13mm PCB, but the final device ended up being even a little smaller, 11x11mm. The limiting factors are the Cypress CY7C68013A (a.k.a. FX2) chip itself (QFN-56, 8x8mm) plus the micro USB connector and 24MHz crystal, so getting it even smaller than 11x11mm is not easily possible.

I'm using a 2-layer PCB (components on both sides), 5 mil traces, 6 mil trace clearance, 8 mil via drill hole diameter, 5 mil annular ring. The PCB has to be 0.8mm thick so that the 5x2 1.27mm PCB edge connector will fit. All passives are 0402.

The design intentionally sacrifices a lot of things (no EEPROM, no input protection, various Cypress hardware recommendations are ignored) in order to be able to make it very tiny.

This project was a lot of fun for me. Being a software guy, I learned quite a bit about creating schematics and doing PCB layouts (in KiCad), PCB manufacturing details, solder stencil and solder oven usage, and lots more. I also learned that when you screw up the FX2 footprint, you'll get magic smoke (that's why the final version is 0.2, I had to completely reroute the whole PCB after fixing the footprint).

If you're wondering whether you can order fx2grok-tiny devices or bare PCBs, the answer is no. This is a purely non-commercial hobby project by a single guy. You can, however, make your own devices since everything is open and documented.

As an "enclosure" of sorts you can simply use e.g. transparent heatshrink tube. I'm also working on a tiny 3D printable enclosure, we'll see how that goes.

As for the probe cables there are various options as well. You can use a nice Samtec cable or just solder a DIY cable out of generic ribbon cable. In both cases, you'll have to use a crimp tool so you can later attach the usual logic analyzer grippers.

The fx2grok wiki page has a lot more details and photos about the device (including a BOM, you can get pretty much all required parts from e.g. Digikey) and how to assemble it.

You can also get the whole KiCad project, schematics, layout, and Gerber files via git:

 $ git clone git://sigrok.org/fx2grok

There's also a blue LED on the PCB for the obligatory blinkenlights, btw. It'll blink during a logic analyzer acquisition and just light up constantly in idle.

For the future I'm looking into maybe creating an even smaller FX2 based logic analyzer named fx2grok-bga, which employs (you guessed it) the BGA version of the FX2. The BGA chip is 5x5mm (instead of 8x8mm for the QFN version). Soldering this is going to be a bit more tricky though, we'll see how it goes.

There are also other fx2grok variants being worked on, e.g. fx2grok-flat by Piotr Esden-Tempski, more about that in another blog post.

 

New protocol decoder: maple_bus

If you're into game consoles you might want to check out the latest protocol decoder in libsigrokdecode: maple_bus.

This decodes the Maple bus, the protocol that peripherals of the Sega Dreamcast (controllers, memory cards, others) use.

The protocol decoder was contributed by Marcus Comstedt, thanks a lot!

Marcus also has documented both the low-level Maple bus wire protocol as well as the higher level frame format and the meaning of the bits and bytes involved in great detail.

As usual, there's also an example file in sigrok-dumps as well as a test-case in our sigrok-test repo to go along with it.

 

New protocol decoder: ds243x

Another protocol decoder recently added to libsigrokdecode is ds243x, which decodes the Maxim/Dallas DS243x 1-Wire EEPROM protocol.

It currently supports the DS2432 (1-Wire 1Kbit protected EEPROM with SHA-1 engine) and the DS2433 (1-Wire 4Kbit EEPROM). Support for additional chips in the same family can be added relatively easily.

The PD stacks on top of the onewire_network decoder (and that one in turn on top of onewire_link).

The protocol decoder was contributed by Kevin Redon (DS2433 support added by Soeren Apel), thanks a lot!

 

PeakTech 4390A support

It's been a while since support for a new DMM was added in libsigrok. As of yesterday we now also support the PeakTech 4390A multimeter.

This is a rebranded Metex M-3860M (even says so on the device itself, in addition to the PeakTech 4390A rebrand).

It uses the "usual" Metex 14-byte ASCII-based protocol, so adding support for it was simply a matter of adding the respective metadata entries for it in the existing serial-dmm driver.

The initial patch was contributed by Frank Stettner, thanks a lot!

 

New protocol decoder: eeprom93xx

libsigrokdecode supports another protocol decoder since a little while ago, eeprom93xx.

This is a PD that stacks on top of the previously announced microwire decoder, and provides higher-level 93xx Microwire EEPROM specific decoded data.

As usual, there are some example files in sigrok-dumps and some test-cases in sigrok-test.

The protocol decoder was contributed by Kevin Redon, thanks a lot!

Pages

Subscribe to The ever-expanding world of sigrok RSS