- AuthorSearch Results
Found in Topics
kaiser posted on December 13, 2018 at 11:55 am View this postTopic: Precise Synchronization
in forum BB Series DiscussionsI’m trying to capture spectrum from two BB60C’s at exactly the same time, and having some issues.
The two references are locked; one set to output external reference, and the other set to receive an external reference. Good there.
Then I tried just kicking them off at the same time, via something like this, hoping that it would essentially :
` while (j < 1000)
{Thread FirstSH = new Thread(delegate () {
var status = bb_api.bbFetchTrace_32f(DeviceHandles[0], unchecked((int)traceLen), sweepsMin[j], sweepsMax[j]);
});
Thread SecondSH = new Thread(delegate () {
var status = bb_api.bbFetchTrace_32f(DeviceHandles[1], unchecked((int)traceLen), sweepsMin2[j], sweepsMax2[j]);
});
FirstSH.Start();
SecondSH.Start();FirstSH.Join();
SecondSH.Join();
j++;
}`They start at basically the same time, but I can tell that they aren’t. How? Well, I’m essentially trying to measure a signal’s characteristics in two polarizations. So one BB60C on one polarization, and the other on the second. The signal is a TDMA signal (think standard Wifi), and often times one BB60 will see the signal, but the other won’t or have a partial capture, or whatever. So it’s not super-synchronized, which is causing havoc for my measurements.
So, I hook up a waveform generator (btw, feature request; make the trig/sync port be an in/out like the reference for synzhronizing sweeping of units. That would eliminate my need for the waveform generator).
But, the API doesn’t allow me to trigger a sweep from an external trigger (just in zero-span and some other modes). Or at least I can’t find a way for it to let me.
It looks like I could maybe set it to stream, and that would work…but I need to cover ~100MHz on each, and the simple spectral display is all I need.
Maybe I could stream IQ, and then tyr to time-align the trigger buffers between the two? Would that work well for getting me a simple spectral plot?
Anyone have any ideas? Is allowing triggers something that could be added to a mode in an upcoming release?
Thanks!
Found in Topics
Anonymous
Anonymous posted on December 4, 2018 at 1:22 am View this postTopic: RealTime image frame
in forum BB Series DiscussionsHello
In previously API returned frame consist values from 0 to 1.
Values close to one meant constant pixel activity and I transformed frame values to colors to have spectrum histogram.
But in new API function bbFetchRealTimeFrame got another one parametr alphaFrame and I, as was shown in the example, ignored this parameter by setting it to 0. But in frame values I found values much less than one(even on the noise track) and my image frame became one-color.
Is this a bug in the new implementation?
Can you give pseudocode using frame and alphaframe to get the image?Thank you
Found in Replies
Andrew posted on December 3, 2018 at 9:22 am View this postIn reply to: ADCOverflow Return Value
AndrewModeratorHello Andrew,
You are correct in noting that the ADC overflow is not tied to the IQ samples. We would need to do a bit of work to make that happen.
Right now, the ADC overflow flag is a boolean that is cleared once per call to GetIQ. Setting purge to true will not clear it right now.
Until we change the behavior of the API, it might be appropriate to ignore the ADC overflow flag when you want to purge IQ?
I apologize for the inconvenience. I will make a note of this issue and in the future maybe we can improve the reporting of the ADC overflow flag.
Regards,
AndrewFound in Replies
Andrew posted on November 20, 2018 at 2:02 pm View this postIn reply to: BB60C "Error opening device" using API in Matlab
AndrewModeratorMike,
Yes I think I know what’s happening.
The MATLAB example folder includes the bb_api.dll which is outdated. If you have a newer BB60C only the latest versions of the API will be able to be used. (The older API version can’t recognize your newer BB60C) In that same SDK, go to the core API folder and copy over the newest API.
I’m assuming you are running 64 bit MATLAB so I think you just need to copy over the 64-bit API and header, overwriting what is already in the MATLAB folder. Copy the contents from
signal_hound_sdk\device_apis\bb_series\win\lib\x64
into the MATLAB folder with these existing files.I look forward to your results.
Regards,
AndrewFound in Topics
mkwilinski posted on November 20, 2018 at 11:50 am View this postWe just received our BB60C. It is recognized by Spike and seems to be working OK with that software. However, our objective is to use the unit for automated measurements under Matlab, so we also installed the SDK and have been trying to use the Matlab examples. In Matlab, whenever the bbOpenDevice() function is called, we get only “Error opening device”. We are using Matlab 2018a under Windows 10. Do you have any suggestions as to what might be wrong? Since the BB60C works with Spike, I have to assume that we have some sort of software or software configuration problem.
Thanks!
MikeFound in Topics
nluckett posted on November 6, 2018 at 5:21 pm View this postTopic: Error when using DIRECT_RF/STREAM_IF modes
in forum BB Series DiscussionsHello,
When using the latest API version (the 11/06/18 release). I am getting the error “access violation at address 0x0000000000000000” when using the DIRECT_RF or STREAM_IF flags. I am testing these options by modifying the example python code, and the only change that I am making is this flag.
Can I get some guidance as to how to get this working?
Best,
Nolan Luckett
Found in Replies
Andrew posted on November 5, 2018 at 8:54 am View this postIn reply to: Error compiling Linux sample code
AndrewModeratorRay,
Some other ideas,
1) Are you using a 32-bit OS? Our Linux APIs are compatible only for 64-bit OS’s.
2) Maybe try getting rid of all the soft links? Rename the main library to libbb_api.so and see if that resolves the issue.Regards
Found in Replies
- This reply was modified 6 years, 5 months ago by
Andrew.
Andrew posted on November 5, 2018 at 8:51 am View this postIn reply to: SCPI support to zero span mode
AndrewModeratorHi Bittware,
I don’t have a timeframe for when SCPI support for zero-span would occur. I’m assuming triggering is an important aspect of your measurement? If so, then using the API directly to request IQ, trigger, and then FFT the IQ data to create the spectrum plot is the only alternative. Otherwise if you do not need triggering, then using SCPI with standard sweep mode seems like it would be adequate.
If you haven’t seen the APIs yet, you can find them on the SDK landing page.
https://signalhound.com/software/signal-hound-software-development-kit-sdk/Regards,
AndrewFound in Replies
Andrew posted on November 5, 2018 at 8:48 am View this postIn reply to: New API
AndrewModeratorAndrew4010,
Yes, APIs with version 4.0.0 and greater support all BB60C/A devices. We don’t maintain download links for older versions of the APIs. I don’t believe the interface has changed between 3.1.1 and the current version so it should be a drop in replacement.
Regards,
AndrewFound in Topics
Anonymous
Anonymous posted on November 5, 2018 at 5:48 am View this postTopic: New API
in forum BB Series DiscussionsHello
Q1 I have old device.Is the API >= 4.0.0 backward compatible?
Q2 Where can I download BB_API Version 3.1.1?Thank you
Found in Replies
ray62202 posted on November 4, 2018 at 1:26 am View this postIn reply to: Error compiling Linux sample code
ray62202ParticipantI installed a fresh copy of Ubuntu LTS (downloaded ISO image yesterday from Ubuntu) for testing, so it is ‘factory new’.
Yeah, that linker message was so vague as to be useless (typical).The only other thing I had to do was to install g++ in the standard manner – $sudo apt install g++.
I listed the details of the compiler config in the forum post.I deleted everything and extracted the SDK from a new download, and captured the installation sequence below:
dunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/lib/Ubuntu 18.04$ ldconfig -v -n .
.:
libbb_api.so.4 -> libbb_api.so.4.0.2 (changed)
libftd2xx.so -> libftd2xx.so
dunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/lib/Ubuntu 18.04$ ln -sf libbb_api.so.4 libbb_api.so
dunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/lib/Ubuntu 18.04$ sudo cp libbb_api.* /usr/local/lib
[sudo] password for dunn874:This is the (SDK) library after the install, with libbb_api.so and libbb_api.so.4 as a soft links.
dunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/lib/Ubuntu 18.04$ ls -la
total 14836
drwxr-xr-x 2 dunn874 riocdev 4096 Nov 1 10:49 .
drwxr-xr-x 5 dunn874 riocdev 4096 Oct 18 08:53 ..
lrwxrwxrwx 1 dunn874 riocdev 14 Nov 1 10:49 libbb_api.so -> libbb_api.so.4
lrwxrwxrwx 1 dunn874 riocdev 18 Nov 1 10:49 libbb_api.so.4 -> libbb_api.so.4.0.2
-rw-r–r– 1 dunn874 riocdev 14957792 Oct 17 16:21 libbb_api.so.4.0.2
dunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/lib/Ubuntu 18.04$This is the /usr/local/lib after the install
NOTE! the soft-link libbb_api.so is NO LONGER A LINK, BUT A COPY OF THE FILEdunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/lib/Ubuntu 18.04$ ls -la /usr/local/lib
total 43840
drwxr-xr-x 4 root root 4096 Nov 1 10:50 .
drwxr-xr-x 10 root root 4096 Jul 17 06:23 ..
-rw-r–r– 1 root root 14957792 Nov 1 10:50 libbb_api.so
-rw-r–r– 1 root root 14957792 Nov 1 10:50 libbb_api.so.4
-rw-r–r– 1 root root 14957792 Nov 1 10:50 libbb_api.so.4.0.2
drwxrwsr-x 4 root staff 4096 Jul 17 06:46 python2.7
drwxrwsr-x 3 root staff 4096 Jul 17 06:24 python3.6
dunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/lib/Ubuntu 18.04$Build the device_info project:
dunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/sample_projects/device_info$ make
g++ -Wall main.cpp -o dev_info -Wl,-rpath /usr/local/lib -lbb_api/usr/bin/ld: out of memory allocating 30374008975618 bytes after a total of 282624 bytes
collect2: error: ld returned 1 exit status
Makefile:6: recipe for target ‘all’ failed
make: *** [all] Error 1
dunn874@WE31900:~/Projects/signal_hound_sdk/device_apis/bb_series/linux/sample_projects/device_info$Same problems
Please advise asap, we are on a tight schedule for a demonstration.
– Ray
Found in Topics
ray62202 posted on October 31, 2018 at 3:49 pm View this postTopic: Error compiling Linux sample code
in forum BB Series DiscussionsI have been getting an error building the linux sample code:
Linker Error for sample project – device_info
…signal_hound_sdk_10_25_18/device_apis/bb_series/linux/sample_projects/device_infoI installed the .so library per BB instructions:
…signal_hound_sdk_10_25_18/device_apis/bb_series/linux/lib/Ubuntu 18.04/libbb_api.so.4.0.2The build stops with a linker error:
g++ -Wall main.cpp -o dev_info -Wl,-rpath /usr/local/lib -lbb_api/usr/bin/ld: out of memory allocating 30374008975618 bytes after a total of 282624 bytes
collect2: error: ld returned 1 exit status
Makefile:6: recipe for target ‘all’ failed
make: *** [all] Error 1I have tried building on Linux Mint 19 (from Ubuntu 18.04) and on a real Ubuntu 18.04 LTE installation with the same results.
What am I missing? Any suggestions on what to check, since I assume your sample programs build an work fine.
– Ray
Linux info
>cat /proc/version
Linux version 4.15.0-38-generic (buildd@lcy01-amd64-023) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #41-Ubuntu SMP Wed Oct 10 10:59:38 UTC 2018>uname -a
Linux WE31900 4.15.0-38-generic #41-Ubuntu SMP Wed Oct 10 10:59:38 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux> g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v –with-pkgversion=’Ubuntu 7.3.0-27ubuntu1~18.04′ –with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs –enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ –prefix=/usr –with-gcc-major-version-only –program-suffix=-7 –program-prefix=x86_64-linux-gnu- –enable-shared –enable-linker-build-id –libexecdir=/usr/lib –without-included-gettext –enable-threads=posix –libdir=/usr/lib –enable-nls –with-sysroot=/ –enable-clocale=gnu –enable-libstdcxx-debug –enable-libstdcxx-time=yes –with-default-libstdcxx-abi=new –enable-gnu-unique-object –disable-vtable-verify –enable-libmpx –enable-plugin –enable-default-pie –with-system-zlib –with-target-system-zlib –enable-objc-gc=auto –enable-multiarch –disable-werror –with-arch-32=i686 –with-abi=m64 –with-multilib-list=m32,m64,mx32 –enable-multilib –with-tune=generic –enable-offload-targets=nvptx-none –without-cuda-driver –enable-checking=release –build=x86_64-linux-gnu –host=x86_64-linux-gnu –target=x86_64-linux-gnu
Thread model: posix
gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)Found in Replies
Andrew posted on October 15, 2018 at 9:16 am View this postIn reply to: SA44B – How to Build and Test the examples in SDK
AndrewModeratorHello Sri,
Our device APIs are standard Windows DLLs. The interface is exposed through a set of C functions, which means you can call these functions from most programming languages like Python, C++, Matlab, etc. Each language will have its own development environment. If you were programming in C++, I would use Visual Studio, which you can download and use for free (for small business/non commercial projects). We do not have any guides for using VS or for setting up your development environment.
Regards,
AndrewFound in Replies
- This reply was modified 6 years, 7 months ago by
stevecrm.
stevecrm posted on September 11, 2018 at 9:36 am View this postIn reply to: Recording Raw IQ Samples – Suspiciously low values?
stevecrmParticipantFor reference these are my capture settings
`bb_api.bbConfigureCenterSpan(id, 70000000, 4.0e6); //center hz, span hz
bb_api.bbConfigureLevel(id, -20.0, bb_api.BB_AUTO_ATTEN);
bb_api.bbConfigureGain(id, bb_api.BB_AUTO_GAIN);
bb_api.bbConfigureIQ(id, bb_api.BB_MIN_DECIMATION, 4.0e6); //bandwidth hzFound in Topics
stevecrm posted on September 11, 2018 at 9:34 am View this postI’m using the API to pull raw IQ samples and I couldn’t find the A/D output range in the manual.
I’m trying to troubleshoot some things and one thing I notice is that my IQ samples have suspiciously low values.
I’m putting in a ~2MHz wide QPSK signal at ~-30dBm, Spike gives me a nice beautiful constellation so I know my signal level must be good. My IQ samples range from -0.00662 to +0.006358. Is this correct? I was expecting something more like -1 to 1.
Found in Replies
Andrew posted on August 21, 2018 at 12:29 pm View this postIn reply to: Pull IQ Samples To Make Constellation Plot (API)
AndrewModeratorHi stevecrm,
So you may indeed be pulling the I/Q data and plotting it correctly, but unfortunately it will still not produce the constellation plot you see in Spike. The reason for this is that Spike is doing additional processing between acquiring I/Q data from the API and plotting it in the constellation plot.
The main steps the Spike software is performing is resampling, symbol timing recovery, carrier recovery, and filtering. This can be quite a complex subject and not one I can cover in a forum post. You can find more information in a digital communications textbook, by searching online for search terms like “PSK demodulation”, or exploring software packages like GNURadio which has software blocks for the major components of a PSK receiver.
Keysight has an excellent block diagram of the various components in a spectrum analyzer when making PSK modulation measurements. See the following link on page 282.
http://literature.cdn.keysight.com/litweb/pdf/E4440-90620.pdf
I hope this helps, let me know if you have follow up questions.
RegardsFound in Topics
stevecrm posted on August 21, 2018 at 11:45 am View this postI’m trying to pull out raw IQ samples to create a constellation plot using the API. When I use spike I get a nice QPSK signal constellation, but I’m having trouble getting anything similar with the API.
I’m using the example that comes with the SDK, all I’ve done is change some frequency/bandwidth values.
My carrier is 1.84MHz wide at 70MHz. The documentation says that IQ samples are interleaved and range from +/-1. I’m assuming this means that the resulting array is structured like:
I1, Q1, I2, Q2, I3, Q3…etcMy problem is that I’m getting IQ values that range from +/- 0.01, so I think I’m just seeing noise. If I plot I and Q separately they seem like roughly ok sine waves. Also if I plot IQ in 2D to make a constellation, I just get a big circular donut, nothing that looks like there are 4 converging points.
I use the reference level of -40 because that worked in Spike.
Anyone know what I’m missing? Any helps is appreciated
I’ve adjusted the demo code to take the samples and dump them to a file:
int id = -1; bbStatus status = bbStatus.bbNoError; txtResults.Text += "Opening Device, Please Wait\n"; status = bb_api.bbOpenDevice(ref id); if (status != bbStatus.bbNoError) { txtResults.Text += "Error: Unable to open BB60\n"; txtResults.Text += bb_api.bbGetStatusString(status) + "\n"; return; } else { txtResults.Text += "Device Found\n\n"; } Console.Write("Configuring the device to stream I/Q data\n"); bb_api.bbConfigureCenterSpan(id, 70000000, 4.0e6); //center hz, span hz bb_api.bbConfigureLevel(id, -40.0, bb_api.BB_AUTO_ATTEN); bb_api.bbConfigureGain(id, bb_api.BB_AUTO_GAIN); bb_api.bbConfigureIQ(id, bb_api.BB_MIN_DECIMATION, 4.0e6); //bandwidth hz status = bb_api.bbInitiate(id, bb_api.BB_STREAMING, bb_api.BB_STREAM_IQ); if (status != bbStatus.bbNoError) { txtResults.Text += "Error: Unable to initialize BB60 for streaming\n"; txtResults.Text += bb_api.bbGetStatusString(status) + "\n"; return; } int return_len = 0; int samples_per_sec = 0; double bandwidth = 0.0; bb_api.bbQueryStreamInfo(id, ref return_len, ref bandwidth, ref samples_per_sec); txtResults.Text += "Initialized Stream for \n"; txtResults.Text += "Samples per second: " + (samples_per_sec / 1.0e6).ToString() + " MS/s\n"; txtResults.Text += "Bandwidth: " + (bandwidth / 1.0e6).ToString() + " MHz\n"; txtResults.Text += "Samples per function call: " + return_len.ToString() + "\n"; // Alternating I/Q samples // return_len is the number of I/Q pairs, so.. allocate twice as many floats float[] iq_samples = new float[return_len * 2]; int[] triggers = new int[80]; bb_api.bbFetchRaw(id, iq_samples, triggers); txtResults.Text += "Retrieved one I/Q packet\n\n"; StringBuilder sb = new StringBuilder(); foreach(float sample in iq_samples) { sb.Append(sample.ToString() + Environment.NewLine); } File.WriteAllText("output.csv", sb.ToString()); txtResults.Text += "Closing Device\n"; bb_api.bbCloseDevice(id);
Found in Replies
Andrew posted on August 21, 2018 at 9:09 am View this postIn reply to: Compressed IQ stream
AndrewModeratorNoeldi,
Good question, and it’s a bit tricky to answer. Our waterfall plot currently is only available in the sweep mode. Each sweep is plotted on the waterfall and generally each sweep is going to take 1ms+ depending on the analyzer and settings. So that would be your minimum resolution.
To get 10us resolution in a waterfall plot, we would need to introduce the waterfall plot into the zero-span mode (or some other I/Q mode) and perform overlapping FFT’s on the IQ data. We don’t have anything like this in Spike right now.
As Justin mentioned, our max bandwidth IQ device is 40MHz right now with the SM200A, or 27 MHz with the BB60C. Both are programmable and this type of resolution is possible if you were willing to program and work with the I/Q data yourself using our API.
We are working to increase the I/Q bandwidth of the SM200A to 160MHz for up to 1 second captures. This is still in development.
Regards,
AndrewFound in Replies
Andrew posted on August 21, 2018 at 8:55 am View this postIn reply to: shr file size restrictions
AndrewModeratorYou can change the max file size allowed in the preference menu. It is limited to 1GB when running the 32-bit version of Spike.
There are several ways you could reduce file size depending on your needs, you can increase RBW, add a sweep interval, or take advantage of the decimation in time/freq on the recording toolbar.
If you need even more flexibility than what Spike provides, you could consider programming to the API directly, then you full control over the acquisition and recording process.
Regards
Found in Replies
Andrew posted on August 21, 2018 at 8:53 am View this postIn reply to: .shr file format specification
AndrewModeratorYou can change the max file size allowed in the preference menu. It is limited to 1GB when running the 32-bit version of Spike.
If you need even more flexibility than what Spike provides, you could consider programming to the API directly, then you full control over the acquisition and recording process.
Regards
- This reply was modified 6 years, 5 months ago by
- AuthorSearch Results