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

New protocol decoder: parallel

$
0
0

libsigrokdecode now supports a new protocol decoder (PD) named parallel.

This PD can decode various simple synchronous, parallel buses that have one clock line and a (pretty much) arbitrary number of data lines.

The decoder can be configured to sample the data lines (e.g. D0-D3 for a 4-bit sync parallel bus, D0-D7 for an 8-bit bus, or D0-D31 for a 32-bit bus, and so on) on either the rising or falling clock edge.

It can then print the data in various formats (currently only 'hex' is supported, but more can be added easily), e.g. 0x55 for an 8-bit bus or 0x55667788 for a 32-bit bus, and so on.
 


Norma DM950 support

$
0
0

We're happy to announce that libsigrok now supports yet another multimeter, the Norma DM950 (a.k.a. Normameter 950, a.k.a. Siemens B1028).

This is a 21000 counts autorange DMM with RS232 connectivity.

Many thanks to Matthias Heidbrink for writing the driver and figuring out the protocol! As always we have a nice wiki page for this device now, including teardown photos, protocol description, and so on.

The DMM uses a custom microcontroller internally, and the protocol is a SCPI-like ASCII based protocol with the familiar-looking "IDN?" strings and so on. Please also check the driver source code if you're interested in the details.

There are various other DMM models from this series which can be supported relatively easily via this driver. Please contact us (and/or the driver author, "mh") in the #sigrok IRC channel on Freenode if you own one of these devices and can test further patches. Thanks!

 

libsigrok 0.2.2 released!

$
0
0

Hi everyone!

We're happy to announce the release of libsigrok 0.2.2! This is a minor bugfix release without any API changes, but it also adds support for a few new devices.

We added support for one new logic analyzer in this release, the Saleae Logic16. This is a streaming 16-channel device with a max. samplerate of 100MHz (when 3 channels are used; lower samplerates must be used if you use more channels). The driver was contributed by Marcus Comstedt, thanks a lot! You can use the sigrok-fwextract-saleae-logic16 tool from our sigrok-util repository to extract the required bitstream and firmware files from the vendor software.

We now also support a few more multimeters (all of them with RS232 connectivity):

And two new thermometers (temperature dataloggers):

  • UNI-T UT325, a 2-channel temperature logger with USB connectivity
  • Center 309 (a.k.a. Voltcraft K204), a 4-channel temperature logger with RS232 connectivity

Finally, the first "device" in the "Energy meters" category that we support: the EDF Teleinfo (thanks Aurelien Jacobs!). This is not a specific piece of gear per se, but rather a standard protocol that is used for energy metering purposes in France.

Apart from the expanded device support, there is also the new csv input module (file format), thanks Marc Schink! That means you can now read logic analyzer data from various CSV-like files into libsigrok (and then do everything with that data you can do normally, e.g. convert to other formats, display, run protocol decoders on it and so on).

There have also been a number of improvements and fixes for various drivers (e.g. uni-t-dmm, ols, rigol-ds1xx2, agilent-dmm) and some random bugfixes and portability fixes in the rest of the code. Feel free to browse the NEWS file or git log for the details.

You can download the libsigrok-0.2.2.tar.gz tarball from sigrok.org/download as usual.

Have fun!
 

Probe groups support

$
0
0

libsigrok has gained a long-overdue feature recently: support for so-called probe groups.

Until now, various config options for drivers have always applied to all probes of a device. For example, on a 2-channel oscilloscope like the Rigol DS1052E you could set e.g. the "Volts per division" config option to a certain value (say, 2V). However, the setting would always be applied to all probes (i.e., both channels of the scope). It was not possible to set different values for each individual probe.

The new probe groups feature (via the respective API changes in the drivers and libsigrok backend code) allows each driver to define groups of probes that have the same properties and the same settings. This applies to all kinds of drivers/devices (not just oscilloscopes), including multimeters, logic analyzers, MSOs, thermometers, and so on.

The following example sigrok-cli call will change the V/div setting on a Rigol DS1052E scope to 2V, but only on the "CH1" probe group (which happens to only contain one probe, the first channel of the scope):

 $ sigrok-cli --driver rigol-ds1xx2:conn=/dev/usbtmc0 --probe-group CH1 -c vdiv=2V --set

It does not change the V/div setting of all other probe groups (i.e., the second channel of the scope in this case).

Thanks a lot to Martin Ling for coming up with the proposal for probe group support in libsigrok, as well as the initial implementation!

So far the rigol-ds1xx2 driver has been converted to actively use the new probe groups feature. Various other drivers will follow over time.
 

ELCE 2013 presentation and slides

$
0
0

If you were unable to attend the Embedded Linux Conference Europe 2013, a video of the sigrok presentation at the event is now available:

You can download the slides here.

Thanks again to Matt Ranostay.

Hameg HMO scope support and SCPI backend code

$
0
0

The list of contributed hardware drivers for libsigrok is getting longer yet again. This time, support for the Hameg HMO series oscilloscopes (tested on Hameg HMO1524) has been added by poljar (Damir Jelić), thanks a lot! It has recently also been successfully tested on a Hameg HMO2024 at 30C3 in Hamburg.

This driver should support the Hameg HMO compact series device (70MHz - 200MHz) for now, other devices can be added later though. It also makes use of the recently added probe groups feature to allow setting coupling, trigger slope, timebase and so on independently for each scope channel. Currently the driver supports the serial port connectivity of the scope.

Since SCPI commands are used for controlling and querying the scope, poljar also added an initial set of common SCPI related functions to libsigrok, which other drivers can also make use of later. Those functions initially assumed a serial port transport, but have been made more generic in the mean time by Martin Ling (thanks!), now supporting SCPI over USBTMC and SCPI over TCP too.
 

jhol's sigrok year in review (and 30c3)

$
0
0

Happy New year - 2014! I was barely used to the idea of 2013! - where does the time go?

So I decided it's time for a quick roundup of the year from my own very personal perspective.

Project Status

By any measure, 2013 was a great year for sigrok. The project has grown to over 100kLOC and the number of contributors is growing steadily. Last month was the project's best ever month for contributors - with 12 different people contributing code.

For me it's been particularly heartening to see that many people are interested in contributing. Some have come to provide whole drivers, others providing major features, others contributing all kinds of tweaks and bug fixes. It's great to see the people think that sigrok is a project worth giving their time to. There is even now a commercial fork of sigrok by the DSLogic team.

This year Uwe and Bert continue to be the commit-count-kings building features at all levels of the stack.

In recent months Martin Ling has provided a fresh burst of energy adding the libserialport library and writing drivers for many (all?) Rigol oscilloscopes.

In April we had the first ever PulseView release.

I'm really glad we reached this milestone, because there have been some false starts on the sigrok GUI front. I was keen for the project to get to the point where it was very basically usable. I absolutely did not want to add another tombstone to a graveyard of dead sigrok GUIs. Therefore, v0.1 was not meant to be anything very special, just enough to "close the loop", and provide a basic minimal, not to buggy GUI for sigrok.

Now that this has been achieved, I have been able to add some more exciting features to the project - most notably support for sigrok signal decoding.

PulseView pulseview-0.1.0-195-gdfb9f75 with mixed-signal data, and decoding.

Because of Martin's recent work, there is agreement that we need to make an all-sigrok release as soon as possible. However, PulseView decode support still has some way to go. Therefore, as a compromise I've decided to make decode support a compile-time option in v0.2, which allows fans of the bleeding edge to test this code, but without compromising the overall quality of PulseView in this release.

Once the release is done, I hope decode support will be completed within a short time, and then we can release PulseView v0.3 with the feature enabled.

PulseView is in reasonably good shape, but it's still quite small, and progress is slow. 12 people have contributed to the code in the last year, but I remain by far the largest contributor, contributing 79% of commits in the past 12-months. Some have said that they find the C++ rather impenetrable, but my hope for 2014 is that we broaden out the contributor base so that the project is not so dependent on one person.

It is now easier than ever to contribute to PulseView. I always find GUIs are particularly difficult to design by committee, but once there are some coherent concepts in place, it is much easier for people to understand how their feature should fit into the general scheme of things.

https://events.ccc.de/congress/2013/wiki/Main_Page

30C3

Many of the regular contributors to sigrok, including myself, met at 30c3 in Hamburg for four days of intense sigrok hacking. For me this was my first time to visit the conference, and my first time to meet many of the guys who I've been working alongside for the past two years.

The Sigrok Table at 30C3

We were extremely busy. There's nothing quite like face-to-face meeting to tackle large scale design questions, so much of the time was spent in design meetings trying to bash things out - which to my surprise was quite fruitful, resolving many of the big questions. Whether these ideas ever become code remain to be seen.

Walking round the conference there were a couple of cases where people were using sigrok to solve actual problems. Uwe met a team of guys investigating network controller backdoors, using sigrok to collect SPI data - this without any of us telling them to use the project.

Most of the time was spent working on the code. We hoped to complete the release during the conference. We didn't quite reach this goal - but we are very close. Therefore hopefully there will be a sigrok release within the next couple of weeks.

Finally, I have news that the sigrok project has made the news - specifically Aljazeera TV. The piece is mostly about NSA surveillance, but watch carefully at 0:13 to see a nice sweep of the sigrok table - with some guy, but I don't know who he is.

Gossen Metrawatt Metrahit multimeter support

$
0
0

A few weeks ago libsigrok received support for various Gossen Metrawatt multimeters, a line of DMMs we didn't yet support at all.

The respective gmc-mh-1x-2x driver (for the Gossen Metrawatt Metrahit 1x/2x series multimeters) was contributed by Matthias Heidbrink (thanks a lot!).

It already supports a number of devices, e.g. the

Other devices are already being worked on, and/or can be added to the driver by interested users (patches welcome!).

The driver was tested with the Metrahit RS232 PC interface, support for other interfaces may follow (again, patches and people who can test with these interfaces are highly welcome).

 


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.


A new, better Openbench Logic Sniffer

$
0
0

The venerable Openbench Logic Sniffer has long been a popular logic analyzer: it's cheap, capable and entirely open source. Unfortunately the project was abandoned long ago, so no new features were ever added. The one major problem with the OLS was always its limited available memory: it has no memory chip on the board, using only the small amount of memory available on the FPGA to store samples. Its slow, PIC-based USB interface made it impossible to use a streaming architecture, like the fx2lafw devices.

Enter the Saanlima Pipistrello: an inexpensive but very capable FPGA development board. It has a newer Spartan-6 FPGA, 16MiB flash, 64MiB DRAM and an FTDI-based USB interface. It also comes with lots of ports: HDMI, audio, Micro-SD, PMOD, and 48 GPIO pins in a Papilio Wing configuration. The board is completely open source: schematics and Eagle design files are available under the CC-BY-SA 4.0 license. The board itself sells for $155 at the Saanlima Store.

A buffer wing is also available. This protects the FPGA with 5V-tolerant transceivers. Highly recommended: I destroyed many unbuffered pins on my OLS board long ago.

The original OLS verilog code couldn't use DRAM for storage, so the Saanlima folks adapted it. Proper edge triggers were also added to the FPGA code, something that was cumbersome on the OLS. They also contributed a sigrok driver, which has been merged into libsigrok. Thanks, Magnus!


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_max: 0.000000
    output_enabled: on (current), off
    output_voltage: 3.390000
    output_voltage_max: 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_max=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 + UNIX = Awesome! - part III - Fun and Games with gpsd

$
0
0

So here I am hanging out at the local hacker space in Richmond. We, the group that meet up every Tuesday evening are small, yet perfectly formed. This evening Paul (MØTZO), a friendly radio ham, and co-founder of our group brought along an interesting device to encode GPS location data in APRS (Automatic Packet Reporting System) packets. These packets are fed into to a VHF radio transmitter which transmits the signal at 144.8 MHz. A network of receivers, run by amateur radio operators receives the packets, and streams them over the internet. An interesting device indeed.

Tonight we were just playing with Paul's GPS board, which contains a U-Blox Neo 6 GPS receiver. As with most GPS receivers, simply powering it on is enough to make it emit coordinates encoded in NMEA 0183 sentences transmitted over UART at 9600bps.

These are trivial to receive with an fx2-based logic analyzer and sigrok-cli:

$ sigrok-cli --driver=fx2lafw --config samplerate=50k \
    --continuous -P uart:baudrate=9600:tx=0 -B uart=tx

With the UART protocol decoder and the ASCII binary output, we can see the NMEA sentences:

Here we can see that we're locked on and receiving coordinates. "cat -v" is used to protect the terminal state from being clobbered by any errant binary data being emitted.

Yawn. Let's make this more interesting.

There is a very interesting package called gpsd. This is a GPS location server than can connect to various types of GPS devices, and can serve the position information over the network. And best of all, thanks to the power of UNIX pipes, we can feed the data from sigrok directly into it:

$ gpsd -N <(sigrok-cli --driver=fx2lafw --config samplerate=50k \
    --continuous -P uart:baudrate=9600:tx=0 -B uart=tx)

There are a variety of gpsd clients available. There's a nice ncurses based client, gpsmon:

And best of all, KDE's Marble integrates with gpsd. Here we see Marble, showing a live stream of location data captured by the fx2lafw firmware, decoded by sigrok, handled by gpsd, plotted by Marble on OpenStreetMap map data - a complete free-software stack! Pretty freetarded:

Viewing all 215 articles
Browse latest View live


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