Logic 2.2.6 - High Level Analyzers!

Small suggestion.
If the UI is currently displaying the “Measurements”, “Capture Settings”, or “Extensions” subwindow, it seems appropriate to automatically switch to the “Analyzers” subwindow after a Ctrl+Click occurs on the bubbletext.

1 Like

Good point, we’ll fix that

Changelog mentions RMS analog measurement and digital clock frequency measurements, but I couldn’t find it anywhere in the interface. Or is it supposed to be an upcoming extension ?

They are part of the built-in measurements. Let me know if it doesn’t work for you
image

image

I’m using a MacBook Pro running macOS Catalina 10.15.3. I’m using the JTAG analyzer ad it locks up every time I try to capture. The screen just goes blank.

Hey @paul.b.patterson we were just discussing this a few minutes ago. Can you send us a capture (without the JTAG analyzer of course) so we can reproduce this over here and fix it? Thanks!

Here’s a simple capture.JTAG_3_17_2020.sal (33.5 KB)

1 Like

Hello,

Is there anyway to load a custom analyzer created for the Logic 1.x series in 2.2.6 on linux?
I am currently using the AppImage build and the tricks listed here Custom analyzers do not seem to work.

-Chris

@chris.peterson, sorry we haven’t added proper support for this yet! I don’t have a Linux machine in front of me to test a the moment, but I’d guess that the appimage makes this more difficult on Linux.
Try running the application with --appimage-extract <path> to extract the app image, then try running the extracted Logic binary directly, rather than using the app image. Then try placing your analyzer along side the other analyzers you will find in the extracted files.

@markgarrison
I was able to get the analyzer to show up using the method you described above. However it does not show my any of the results in UI.
Just to make sure I didn’t miss something obvious, I built using the 1.1.32 SDK (the analyzer works just fine in Logic 1.2.29, for the most part). There isn’t a newer version of the SDK I should be using is there?

Anyway, it was worth a try.
Thank you,
Chris

Hm… Off the top of my head I’m not sure why it’s not working. If you want to give it another shot, I would try downloading the source and building one of our other analyzers, too see if that works. (be sure to change the string name returned by GetAnalyzerName and Analyzer::GetAnalyzerName() first).
e.g. https://github.com/saleae/i2c-analyzer

That would help determine if it’s a problem with your code or just with loading a third party analyzer.

Also, feel free to send us the source code (preferably via github). I won’t be able to test it right away, but I can compile it here and give it a shot.
Unfortunately, the whole bay area is working from home for a while and I only brought a Windows machine and a MacOS machine home with me, so I would need to setup a VM to test on Linux, if the issue turns out to be OS specific.

Quick note: Be sure your analyzer inherits from the Analyzer2 base class. There is still some example code somewhere (not sure where) that doesn’t include that. The alpha software requires that, and ignores results from analyzers that only inherit from the original Analyzer base class. Take a look at the i2c analyzer source linked above for reference. Analyzer2 just adds one new virtual function, SetupResults, which is called BEFORE the worker thread starts. You just need to move some initialization from the top of that thread to the SetupResults function.

@markgarrison
I was able to build the serial analyzer locally using the most recent github project and it appeared to work just fine in Logic 2.2.6

I am using the SDIO Analyzer located here: https://github.com/ewfuentes/SaleaeSDIOAnalyzer

I then used the same build system as the serial analyzer (cmake method, previous it was using python scrips) and updated to using Analyzer2 and the analyzer still does not show the overlays on the signals.

It was worth a go.

-Chris

@markgarrison
I was able to get this working. I noticed that the Analyzer2 includes a new function - SetupResults - so I split all the results stuff out of the WorkerThread function and pulled that into the SetupResults function and everything works now.

Thank you for the help.
-Chris

Glad to hear it Chris!

We need to take care of a few more things first, but we’re planning on expanding the extension manager in the app to include C++ analyzers (which we’re now calling low-level analyzers, do distinguish them from the new python high-level analyzers).

At that time I want to spend some time opening PRs on a lot of the open source analyzers on github to update them to use the latest build system and library, as well as add cloud CI builds - travis-ci.com and others offer free build resources for open source projects. That will help eliminate the need for building 3rd party analyzers yourself.

I’m running Logic 2.2.6 on Ubuntu 18.04 with electron v8.1.1. The software starts up fine, and can open a recorded clip, but when I attempt to run an analyzer on it the application crashes part way through with the following message:
[9242:0319/164710.750174:FATAL:memory_linux.cc(37)] Out of memory.
Trace/breakpoint trap

I’ve tried a couple different analyzers, and each crashes, so I think it is due to the process of running an analyzer rather than an issue in a particular analyzer itself.

Doing some searching on this issue seems to indicate it is related to Chromium, but I wasn’t able to find a fix beyond simply ensuring the latest version is being used.

Hm… We did see one other mention of Out of memory. and it may have been related to how we currently process analyzer results in the front end - however we haven’t figured it out yet.

Could you tell me which analyzer(s) you’re using, and can you estimate the number of data bytes might be in your capture? Also let me know the sample rate and typical length of the recording.

Also, assuming you have crash reporting enabled, could you send us your machineId, in case these crash reports were successfully uploaded? You can find it by opening the main options menu, and select “switch devices”. There, click the “?” button in the lower left, which will copy all of the software’s build details to the clipboard.

This may be a performance problem with how we handle analyzer data. We’ve spend the last week and a half working on digital processing performance, and we’ve made huge gains, which we hope to release shortly. We haven’t started working on analyzer performance yet.

I believe this may be related to what @halbert and @chris.peterson have mentioned but can’t say. One big difference is that the software doesn’t crash, just my computer.

I’m using a Logic Pro 8 with the Logic 2.2.6 software on an Ubuntu 18.04 machine. I love the looping capability so I use that quite a bit but I’ve noticed that what I’m assuming is a circular buffer doesn’t appear to be constrained to what I’m setting it to. I have the Logic software set at a 1.1 GB loop and the software appears to think that is working correctly. However, my computer was locking up so I ran htop along with Logic and noticed by memory usage continues to grow until my swap file is full. If I stop and then restart the capture before my memory is full, memory utilization drops back to the same initial point and I’m good to go as long as I don’t forget to stop it now and then.

Hi! First of all - great job, this is one of “killer features”, that I think most of developers wanted to see in Logic application! :slight_smile:

For future improvements, I see one main problem with using this feature - I can’t install any required python packages in Logic’s virtual environment. For example, my extension requires “crcmod” package (that I installed earlier on my system), and when I try to use this extension in Logic 2 application I got:

High-Level Analyzer error - ModuleNotFoundError(“No module named ‘crcmod’”)

Could you add any possibility for passing required python packages, e.g. in extension.json file (maybe path to requirements.txt)? It would be nice, if I could also pass local packages in editable mode (installed by pip with -e).

I am using a Logic Pro 8 analyzer, and running a 20 second clip at 125 MS/s on 7 data lines. I’m not sure how many data bytes that would come out to.

The machineId is as follows:
{“Environment”:“production”,“Branch”:“master”,“Commit”:“0739e9eba2864fe676d63597cae1576bbe095552”,“Version”:“2.2.6”,“MachineID”:“a09981d1-9b65-4f80-944e-90c572bd4901”}

Note that I am having these crashes when analyzing some recorded clips from a colleague, so I’m not sure if the crash report will contain my mahcine Id or his.

Thanks John, I was able to find 7 crashes from your machineId, all the same. The system timed out while trying to delete a session. This is a known issue, and it’s the highest priority, since it ends up “soft crashing” the app pretty frequently for users recording large amounts of digital data. We should have it fixed in the next-next release. (2.2.7 comes out today, but won’t have the fix)