Commit Graph

199 Commits

Author SHA1 Message Date
Marcus D. Leech 3764dcb8af uhd: add options for wire-format, time-synchronization, and refclock/PPS
This patch-set adds substantial new support for UHD features relating to
wire-format, time-synchronization, and refclock/PPS.

It is intended for both sources and sinks. The get-precision-time
function I simply made static and copied into both source and sink
files. It really belongs in osmosdr utiltiies, it uses Boost to hide the
Windows-vs-Unix-like precision time "goop".
2014-01-26 17:32:33 +01:00
Brian Padalino 36a6b8fe1f bladeRF: Modifying correction calls.
Modifying correction function calls to match libbladeRF API.
2014-01-26 17:19:06 +01:00
Jon Szymaniak cd38413803 bladerf: Removed sign extension and masking of samples
This is no longer required as of FPGA v0.0.1, and has been removed to
remove some unnecessary computation on samples.
2014-01-26 17:18:45 +01:00
Jon Szymaniak 43af3a851e bladerf: Updates for libbladeRF v0.11.0 API changes 2014-01-26 17:17:19 +01:00
Jon Szymaniak 734ba42989 bladerf: Use rational sample rate functions
libbladeRF provides accessors for rational sample rates, which the
integer sample rate functions use under the hood. Therefore, there's no
need to check if the requested rate contains a fractional portion and
switch between the two sets of functions.
2014-01-26 17:17:14 +01:00
Jon Szymaniak 1e742bc186 bladerf: Added start()/stop() implementations 2014-01-26 17:16:53 +01:00
Dimitri Stolnikov aaedaa2c97 bladerf: shorten the serial number that is being shown to the user 2014-01-26 17:08:47 +01:00
Dimitri Stolnikov 58648a3124 bladerf: implement DC offset and IQ imbalance correction
This patch has been provided by Brent J.
2014-01-26 17:08:31 +01:00
Dimitri Stolnikov 5da9aafa2c bladerf: prepare functions to control DC offset / IQ balance (WIP) 2014-01-26 17:08:22 +01:00
Dimitri Stolnikov 3f281d9705 rfspace: add missing header for basename() 2014-01-26 17:07:59 +01:00
Dimitri Stolnikov 7b1c5dc8a0 rfspace: add support for RFSPACE SDR-IQ and SDR-IP
Usage example:

osmocom_fft -a sdr-iq=/dev/ttyUSB0
osmocom_fft -a sdr-ip=host[:port]
osmocom_fft -a netsdr=host[:port][,nchan=2]

The following named gain stages are available:

SDR-IQ: ATT: -20 to +10 dB, in 10dB steps
SDR-IP: ATT: -30 to 0 dB, in 10dB steps

The ftdi_sio driver is being used for SDR-IQ. It creates a character
device of the form:

crw-rw---- 1 root dialout 188, 0 Dec 19 22:14 /dev/ttyUSB0

To be able to open the device without root permissions add yourself to
the "dialout" group or do a "chmod 666 /dev/ttyUSB0" after pluggin in.
2014-01-26 17:07:35 +01:00
Dimitri Stolnikov 03f9532945 device: implement "nofake" hint to exclude dummy devices from discovery
usage example:

osmosdr::device_t hint( "nofake" );
osmosdr::devices_t devs = osmosdr::device::find( hint );
2014-01-26 16:29:48 +01:00
Steve Markgraf 86ecf305be rtl/rtl_tcp: add 2.56e6 as 'good' sample rate
Several tests have shown that this is the
highest sample rate where no samples
are being dropped on rtl devices.

Signed-off-by: Steve Markgraf <steve@steve-m.de>
2013-12-05 00:09:16 +01:00
Dimitri Stolnikov 62127aada0 file: add missing include for boost::format 2013-12-05 00:02:37 +01:00
Dimitri Stolnikov 05e17c6417 sink/source: fix error message when unable to connect blocks internally 2013-12-05 00:02:22 +01:00
Dimitri Stolnikov 70cd91f505 netsdr: implement sample rate change in run mode 2013-12-05 00:02:16 +01:00
Steve Markgraf fa75a253c7 rtl: add R828D tuner
Signed-off-by: Steve Markgraf <steve@steve-m.de>
2013-11-04 22:25:46 +01:00
Dimitri Stolnikov b2049ba5ef netsdr: replace boost asio sockets with native bsd sockets
until we find out what's exactly interfering with fosphor when using
python based flowgraphs (osmocom_fft). c++ flowgraphs are not affected.
2013-11-04 22:25:30 +01:00
Jon Szymaniak 743dc07b43 bladerf: Don't reload the FPGA unless the force-reload param is set 2013-11-04 22:11:23 +01:00
Jon Szymaniak b7fff27300 bladerf: Moved initializations to bladerf_common.c, misc. cleanup
Common parameter handling has been moved into bladerf_common::init().

The buflen parameter is now in units of samples, not bytes. This
deviates from the other gr-osmosdr items. However, with the requirement
that buffers be in multiples of 1024 samples, this makes specifying this
parameter a bit easier. The user shouldn't need to know we're operating
on SC16Q12 values under the hood, and have to calculate accordingly.

To avoid confusion when both a bladeRF source and sink are in a flow
graph a [bladeRF source/sink] prefix has been added to output. Error
number have been replaced with bladeRF string representations of these
error values.

Firmware flashing has been removed. The bladeRF-cli or bladeRF-flash
tools are the preferred route for firmware upgrades.
2013-11-04 22:10:59 +01:00
Jon Szymaniak 892433836f bladerf: Moved no longer "common" items out of bladerf_common
The gr_complex FIFO is no longer used on the TX side, so it doesn't
really make sense to have it in bladerf_common. The associated items
have been moved into bladerf_source, and some renaming has been done in
bladerf_sink to tidy up.

Pending further performance tests of the bladerf_source, the _fifo
member (boost::circular_buffer) may need to be replaced.
2013-11-04 22:09:27 +01:00
Daniel Gröber 54f2e08dd7 bladerf: Added device caching, this enables full-duplex operation. 2013-11-04 22:09:23 +01:00
Dimitri Stolnikov 7394251bd0 netsdr: add support for RFSPACE NetSDR receiver
- implements broadcast UDP based device discovery
- prints device information (serial/versions) on startup
- reads available frequency range(s) from the device
- integrity checks of IQ stream using sequence numbers
- automatic bandpass or a wideband lowpass selectable

The following named gain stages are available:

ATT: -30 to 0 dB, in 10dB steps

Known limitations:

- setting the sample rate is possible only before the
  flowgraph has been started
2013-10-26 15:04:03 +02:00
Dimitri Stolnikov 18ed13ef05 use numchan instead of nchan to prevent ambiguity...
..when specifying total number of channels offered by the block
2013-10-25 23:50:49 +02:00
Dimitri Stolnikov 6252b4144a hackrf: implement device discovery
Unfortunately libhackrf still doesn't offer a way to enumerate devices
*or* to open a specific device by index or it's serial number. Thus we
have implemented a rather hack-ish way to detect the presence of a
device by trying to open it and closing right after that.
2013-10-25 23:49:24 +02:00
Dimitri Stolnikov e394dd3922 uhd: improve device discovery 2013-10-25 23:46:39 +02:00
Dimitri Stolnikov 0923bcb687 remove unused variables 2013-10-25 23:46:34 +02:00
Dimitri Stolnikov 96b5e4388f file: allow changing the sample rate when throttle=true
this is dangerous from signal processing perspective and should be used
with caution.
2013-10-20 18:50:27 +02:00
Dimitri Stolnikov c7dcddc3cd bladerf: use newstyle version getters 2013-10-04 18:32:40 +02:00
Dimitri Stolnikov a81016d230 bladerf: make source less picky wrt rf gain 2013-10-03 14:50:24 +02:00
Dimitri Stolnikov 884ee47605 source/sink: initialize sample rate cache variable
Thanks to Jiří Pinkava for bringing this up.
2013-10-03 14:50:16 +02:00
Dimitri Stolnikov 6187f182d5 source/sink: fix automatic bandwidth selection 2013-10-03 14:45:12 +02:00
Dimitri Stolnikov 2d644d2eae rtl: don't try to parse empty device index values 2013-09-28 13:59:23 +02:00
Dimitri Stolnikov 89db739999 updated header documentation for bandwidth setter 2013-09-28 13:59:09 +02:00
Dimitri Stolnikov 681e3b7d4a bladerf: implement automatic bandwidth selection 2013-09-28 13:59:03 +02:00
Dimitri Stolnikov 5d5dc04371 hackrf: enable AMP gain stage by default 2013-09-28 13:58:57 +02:00
Dimitri Stolnikov 911f916b3b hackrf: don't set automatic bandwidth on samplerate change
automatic bandwidth selection may be triggered by calling
set_bandwidth(0) after changing the sample rate
2013-09-28 13:58:50 +02:00
Jon Szymaniak a0b534d118 bladeRF: Refactored buffering scheme in sink
Removed the use of an intermediate sample FIFO in the sink
implementation. Note the the FIFO has not been moved out of
bladerf_common --> bladerf_source_c in this commit.

work() now handles converting samples from complex to SC16_Q12, and filling
"transmit-ready" buffers. The callbacks are now only responsible for
marking the provided buffer free, and returning the next buffer.

It appears that a small deadlock issues remains in this changest, which
can be induced by:
 1: Using a small sample rate (160Khz)
 2: Switching back and forth between sinusoid <-> GSM burst

 In this case, it appears that work() is blocked waiting for a buffer to
 become free. More investigation here is required...
2013-09-28 00:42:46 +02:00
Dimitri Stolnikov 1c9a793a70 bladerf: migration to async api (WIP)
receive works, transmit locks up in work() after few seconds
2013-09-28 00:37:58 +02:00
Frederik M.J. Vestre 2e9828f120 Support setting external sampling to bladerf 2013-08-29 23:38:20 +02:00
Dimitri Stolnikov c16a562ddc bladerf: follow recent API changes
tested against aea04c5f119288370166ece05166a8a4157da6fa
2013-08-27 22:42:24 +02:00
Dimitri Stolnikov d0a043ace3 cmake: use *_INCLUDE_DIRS in modules 2013-08-13 20:20:17 +02:00
Dimitri Stolnikov 11841ccb29 bladerf: update common sample rate values 2013-07-28 20:04:27 +02:00
Dimitri Stolnikov 41bb9a0ef9 bladerf: migrate to new api to enable/disable TX/RX modules
TX support has been verified with osmocom_siggen and fpga image from git
f6c6a3abcb22d2794946e5adbc556805a73788a3
2013-07-28 20:04:17 +02:00
Dimitri Stolnikov 65e34f6863 bladerf: add support for nuand LLC bladeRF (WIP)
This is based on the original work (https://github.com/Nuand/gr-osmosdr)
done by folks at nuand LLC for the gr3.6 branch of gr-osmosdr.

The following modifications have been done in this commit:

* port to gr-osmosdr master codebase (gr3.7)
* moved shared properties to bladerf_common
* added & verified IF filter bandwidth setters
* set LMS6002D registers with values taken from FAQ 5.27
* print device information (serial/versions) on startup
* added fpga= and fw= device arguments to program MCU/FPGA
* added bladerf=# dev. arg. to select a specific bladeRF
* grc gain field controls RF path VGA for RX/TX
* grc BB gain field controls BB path VGA for RX/TX

Usage example:

osmocom_fft -a "bladerf,fpga=/tmp/hostedx115.rbf"

The following RX named gain stages are available:

LNA: 0 to 6 dB, in 3dB steps
VGA1: 5 to 30 dB, in 1dB steps; nonlinear mapping done inside the lib
VGA2: 0 to 60 dB, in 3dB steps; not recommended to be used above 30dB

The following TX named gain stages are available:

VGA1: -35 to -4 dB, in 1dB steps, BB side
VGA2: 0 to 25 dB, in 1dB steps, RF side

Thanks a lot to the team of nuand LLC for this major contribution.
2013-07-28 19:57:45 +02:00
Dimitri Stolnikov 7058fd6610 fcd: add support for FUNcube Dongle Pro+
The "3.6" branch of the gnuradio block https://github.com/dl1ksv/gr-

Available named gains:

Dongle Classic:

LNA: -5 to 30 dB, in 2.5 dB steps
MIX: 4 or 12 dB

Dongle Pro+:

LNA: 0 or 1, meaning off/on only. no information about real values.
MIX: 0 or 1, meaning off/on only. no information about real values.
BB: 0 to 59 dB, in 1 dB steps

This patch also introduces optional "device" and "type" arguments which
allow to override the values automatically picked by gr-osmosdr:

osmocom_fft -a "fcd,device=hw:2,type=2"

The "device" argument overrides the audio device used by the underlying
driver to access the dongle's IQ sample stream.

The "type" argument selects the dongle type, 1 for Classic, 2 for Pro+.

Thanks to Alexey Bazhin for the initial patch and Volker Schroer for
testing.
2013-07-28 19:16:28 +02:00
Dimitri Stolnikov 2d02ae9b83 rtl: remove residue DC component introduced by RTL chip
received from Juha Vierinen:

A student here noticed that there is dc bias even with the rafael tuner.
We looked into this issue and found that using 127.4f instead of 127.5f
removes this bias. I assume this is associated with a bug in the digital
downconversion of the RTL chip. This change fixes the problem.
2013-07-28 17:48:42 +02:00
Dimitri Stolnikov e42752826c uhd: implement frequency correction 2013-06-10 21:21:14 +02:00
Dimitri Stolnikov 6f04a9b03a uhd: implement dc correction 2013-06-09 23:13:12 +02:00
Dimitri Stolnikov e1f4c24232 hackrf: select narrower filters in auto bw mode to prevent aliasing 2013-06-09 13:11:32 +02:00