Before UHD version 3.9.0 on-board GPSDO modules for USRP
devices were automatically enabled if detected. After UHD
version 3.9.0 the UHD behavior changed to require explicit
setting of the reference to enable GPSDO use.
Modify the interfaces to pass 'internal', 'external' and
'gpsdo' reference options from configuration database into
the UHD driver layer. Convert the 'TRX.reference' entry in
the configuration from a boolean value to string.
Update to match socket changes for buffer underrun prevention in
CommonLibs patch
"common: Add mandatory length field to UDP receive calls"
Reported-by: Simone Margaritelli <simone@zimperium.com>
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
Previous patch fdf71fb5 "Remove unused and unmaintained files" was
incomplete. Remove remaining use of sendLPF_961.h and rcvLPF_651.h.
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
Test applications sigProcLibTest and USRPping are not used or maintained
in Transceiver52M. This has been the case for many years.
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
Version change to UHD 3.9.0 includes FIR filter changes in the FPGA that
alter group delay and consequently offset uplink/downlink slot alignment.
Only B200 is affected. Add compile time version check for new timing
values.
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
Update to minimally use the UHD driver 003.005.004 API version and set
base version requirement. In effect, this uses internal UHD timestamp
conversion calls and makes stream operations dependent on the stream
instead of the base device.
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
Alert user of overdriven RACH input indicated by a positive
threshold detector result. This indication serves as notification
that the receive RF gain level is too high for the configured
transceiver setup.
Signed-off-by: Tom Tsou <tom@tsou.cc>
X300/X310 support was missing due to the very high bandwidth X-series
being somewhat of an excessive solution for relatively narrowband GSM.
Nevertheless, the X300/X310 is a useful and capable device for OpenBTS
use.
Signed-off-by: Tom Tsou <tom@tsou.cc>
The following flags affect GPRS performance.
Add flags for HANDOVER/NOHANDOVER commands, which force RACH burst
processing on selected slots. Also turn on the previously disabled
filler table slot mask (i.e. 'Magic flag').
These changes match Transceiver52M with TransceiverRAD1 command handling
that took place in commit
5289a229d9 'sync of openbts'
Signed-off-by: Thomas Tsou <tom@tsou.cc>
An errant shuffle register value used in complex-complex convolution
causes distorted correlation peak-to-average values for certain TSC
values. The error effect varies for different TSC sequences with the
most noticeable effect of degraded detection on TSC 1 and no effect on
TSC 7.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
Patch e5aa3f9975 "Set B2XX clock frequency
to 26 MHz" was inadvertently reverted by
c13f8bde8f "merged in commercial openbts".
Signed-off-by: Thomas Tsou <tom@tsou.cc>
Change from the original USRP1 rate of 52 MHz. On B2XX we can use
26 MHz, which is closer to the default 32 MHz of the device.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@7530 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Using non-SSE4.1 enabled architecture would cause undefined
reference to 'convert_si16_ps' call.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6844 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Underruns are only explicitly set on the downlink side. Overruns
are logged but unused. In either case, reset indicators to false
to avoid sending false state information.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6817 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Use the same measurement method for RSSI as the noise level. Previous
method was to use the peak correlation amplitude relative to the
expected value. This created two very different amplitude approaches
between the noise measurement and RSSI measurement, which would
throw off the upper layer MS power control loop.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6761 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Previous removal of the energy detector requirement broke
the noise level calculation loop. The previous adaptive
approach was finicky - noticably at high gain levels. Since
we no longer use the energy threshold for primary burst gating,
we can return to a simpler world.
In the new approach, we compute a running average of energy
levels and track them with a noise vector. A timeslot that
passes the correlator threshold is a valid burst. These are
not used in the noise calculation. Everything else is
considered noise and used to compute the noise level with
respect to full scale input level, which for almost all
supported devices is 2^15.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6755 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Enabling the external reference on UHD devices through the configure
time switch is awkward. Use a database variable "TRX.Reference" with
'0' or '1' value for internal and external references respectively.
Use internal reference is no entry is defined.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6754 19bc5d8c-e614-43d4-8b26-e1612bc8e597
We want to push UHD logs to the OpenBTS logging system, but most
device errors occur at startup, so keep the output on stdout until
after device initialization. That way obvious errors are easily
viewable before seeing the useless TRX timeout message.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6753 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This primarily addresses the error case at initialization.
In the event that the transceiver fails to start, we should
be able cleanly shutdown and release while providing a useful
reason for exiting.
After the radio is started and threads launched, there
are no thread state variables or shutdown messaging between
threads, and the transceiver cannot be consistently
shutdown. This issue remains to be solved.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6752 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Previous send and receive buffers at the radio interface were
arbitrarily set to a sufficient size. For normal (non-resampling)
devices, use a block (chunk) size of 625 samples. For 64 or 100
MHz resampling devices, use 4 times the reduced resampling
numerator or denominator and provide bounds checking where
appropriate.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6751 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Move B100 to the resampling interface with default
clocking. This temporarily resolves undetermined
FPGA clocking issues. This also provides extensible
support for multiple clocking rates and resampling
ratios.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6750 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Current functionality with these old versions is questionable.
There is no reason to use any version of GNU Radio / libusrp older
than 3.3. Version 3.4.2 is the only recommended version for USRP1
users.
Non-USRP1 users must use UHD driver from Ettus Research.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6749 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This patch applies oversampling, when selected with 4 sps,
to the downlink only, while running the receiver with
minimal sampling at 1 sps. These split sample rates allow
us to run a highly accurate downlink signal with minimal
distortion, while keeping receive path channel filtering
on the FPGA.
Without this patch, we oversample the receive path and
require a steep receive filter to get similar adjacent
channel suppression as the FPGA halfband / CIC filter
combination, which comes with a high computational cost.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6747 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This requires an additional memcpy() on the signal vector
constructor, but allows the interpolation filter to use
SSE optimzationed convolution.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6746 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This patch primarily addresses observed repeated overrun
conditions in embedded environments - namely ARM.
The heartbeat of the transceiver is derived from the receive
sample stream, which drives the main GSM clock. Detach the
transmit thread from the receive loop to avoid interfering with
the receive I/O, which is sensitive to overrun conditions if
pull process is interrupted.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6745 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Unsupported at 4 sps, and performance benefits remain
to be proven at 1 sps. Disable until further testing.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6744 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Start the correlation search window at 4 symbols before
the expected correlation peak. End the search at 10
symbols and 4 + maximum expected delay for RACH and TSC
bursts respectively.
This change lowers receive side cpu utilization while
maintaining reasonable timing jitter and accuracy tolerance.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6743 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This patch only applies to resampling use at 4 samples-per-symbol.
By extention that means only USRP2 / N2xx devices are affected.
At 4 samples-per-symbol we restrict output bandwidth to roughly
roughly 700 MHz, which combined with the 2 pulse Laurent
approximation yields < 0.5 degrees of RMS phase error at the
resampler output.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6742 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Set master clock rate to 52 MHz for B200. Also, we want to avoid
floating point comparison errors on clock rate settings, but we
expect to be able really set the rates we specify. Set the
offset limit to 1 Hz. If we can't set our rates with that level
of precision, then something is wrong.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6741 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Provides substantially improved transmit phase error
performance when enabled. Requires use of 4 samples
per symbol, and is enabled by default when set.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6740 19bc5d8c-e614-43d4-8b26-e1612bc8e597
If there is an error in the sample rate determination, noted
by a negative return sample rate value, error directly and
don't try to set the device rate.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6739 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Both RACH and normal bursts are detected with the same approach of
midamble correlation combined with peak-to-average ratio. The
difference is the midamble placements and lengths. Thus, there is
no reason to have independent implementations.
This patch creates a common call burstDetect(), while leaving the
correlation window indexing in the original calls.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6738 19bc5d8c-e614-43d4-8b26-e1612bc8e597