aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M
AgeCommit message (Collapse)AuthorFilesLines
2013-10-18Transceiver52M: Verify global config sanity before usingThomas Tsou1-8/+65
The configuration table is instantiated as a global variable with no means to check constructor status. This means various types of database failure conditions (e.g. file existence, permissions, etc.) are not reported. This patch performs a small number of checks to make sure that the configuration is sane. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Remove unused test code from mainThomas Tsou1-35/+4
The commented out test code is not maintained and behaviour is unknown. Remove for clarity. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Use exception blocks for rate changesThomas Tsou1-5/+17
UHD will throw if something goes awry in these sensitive sections, so we should catch and shutdown gracefully. There is no recovery if we can't set rates. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Set resampling option automatically based on deviceThomas Tsou10-150/+184
Remove the built time resampling selection and link both options. Move the normal push/pullBuffer() calls back to the base class and overload them in the inherited resampling class. USRP2/N2xx devices are the only devices that require resampling so return that resampling is necessary on the device open(), which is the point at which the device type will be known. The GSM transceiver only operates at a whole number multiple of the GSM rate and doesn't care about the actual device rate and if resampling is used. Therefore GSM specific portion of the transceiver should only need to submit the samples-per-symbol value to the device interface. Then, the device should be able to determine the appropriate sample rate (400 ksps or 270.833 ksps) and if resampling is appropriate. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Remove and rename oversampling variablesThomas Tsou3-9/+4
The transceiver only uses a single integer oversampling value, which is more simply referred to as samples-per-symbol. mRadioOversampling --> mSPS mTransceiverOversampling (removed) Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Remove periodic alignment update from UHD buildThomas Tsou3-13/+8
Periodic timing alignment should never be required for UHD devices, though the mechanism was used as a fallback mechanism should UHD not properly recover after an underrun - as may occur in old 003.003.000 based revisions. This issue is not a concern in more recent UHD releases and deprecates this code for legacy USRP1 use only. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Add device offset correction tableThomas Tsou4-29/+64
Previously, two timing correction values were used for UHD devices depending on the sample rate of 270.833e3 or 400e3 for native GSM or resampled device rate respectively. The correction values compensate for residual timing effects due to analog component delays, filters lag times, and general fudge factors. These values are device specific and over-generalized by the two value configuration. This patch adds the following struct to store these correction values by device type and sample rate - through samples-per-symbol. struct uhd_dev_offset { enum uhd_dev_type type; int sps; double offset; }; Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Add UHD device type checkingThomas Tsou5-40/+53
UHD device type was previously detected, but only categorized in terms of bus type, USB or Ethernet, and sample rate capability. With the number of supported device increasing, we can no longer easily group devices since we need to handle more and more device-specific peculiarities. Some of these factors are managed internally by the UHD driver, but other factors (e.g. timing offsets) are specific to a single device. Start by maintaining an enumerated list of relevant device types that we can use for applying device specific operations. Also rename the USB/Ethernet grouping to transmit window type because that's what it is. enum uhd_dev_type { USRP1, USRP2, B100, NUM_USRP_TYPES, }; Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Update to UHD streamer interfaceThomas Tsou1-28/+15
This patch is long overdue and can now be merged after better understanding of timestamp stability issues. UHD tick / timespec conversions were generally used with the streamer interface, though these calls are actually independent change sets. The combination would lead to internal rounding errors and a timing drift most notably on B100 running at GSM symbol rate multiples. There are no known issues, however, with the streamer code itself. The aforementioned issue was discovered in test code only, which was never merged to mainline. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-06-16Fix build of the Transceiver.Alexander Chemeris6-4/+10
2013-06-15Transceiver52M: Add more complete specification of GPRS typesttsou2-8/+20
Submitted by: Ivan Kluchnikov <kluchnikovi@gmail.com> Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@5690 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-06-15Transceiver52M: Add GPRS combinations to correlation typesttsou2-1/+8
Submitted-by: Andreas Eversberg <jolly@eversberg.eu> Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@5677 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-04-04Transceiver52M: Fix calculation of TS correlation for 2 sps and higherttsou1-2/+2
The correlation starting point for normal burst training sequence calculation should be a scaled value of the same symbol regardless of the samples-per-symbol used. Use of 2 samples-per-symbols double the index values, but yields the following outputs, which results in a late time-of-arrival value at the output of the correlation. This patch modifies the parameter calculation accordingly. 1 sps parameters maxTOA = 3 spanTOA = 5; startIx = 61; endIx = 87; windowLen = 26; corrLen = 7; 2 sps parameters (errant case) maxTOA = 6; spanTOA = 10; startIx = 112; endIx = 184; windowLen = 72; corrLen =13; 2 sps parameters (corrected) maxTOA = 6; spanTOA = 10; startIx = 122; endIx = 174; windowLen = 52; corrLen =13; Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@5183 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-03-27Transceiver52: allow for handling of TCH/H slotsttsou1-4/+1
Although currently unsupported in GSM core, enable TCH/H support in Transceiver52M for testing and future availability. Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@5169 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-12-22Correction of trivial warnings.kurtis.heimerl1-2/+2
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4670 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-12-16Transceiver52M: Read IP address and port to bind to from a configuration ↵ttsou1-1/+1
instead of hardcoding them. Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4634 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-12-16Transceiver52M: Properly pass samplerate to RadioDevice::make()ttsou1-1/+1
Without this patch, if SAMPSPERSYM is set bigger than 1, then erratic behaviour will occur. Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4633 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-12-06transceiver52m: reset energy threshold on receive gain changesttsou1-1/+4
The adaptive energy detection threshold does not scale relative to signal level. In other words, the adjustment factor will be the same whether the at 40% of signal level or 4%. If the receive gain is reduced by a large amount, suppose 20 dB, the receiver may take minutes to adjust to the new level. When the receive gain is changed, reset the threshold back to the initial level. This reduces issues of runtime gain adjustment and prevents blocking bursts while the threhold level slowly adjusts. Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4595 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-11-23Alexander's patches:kurtis.heimerl3-5/+4
1)I did an experiment and compiled OpenBTS with clang yesterday, which immediately highlighted two potential bugs in the Transceiver52 code. I'm not sure they are indeed bugs and not the intended behavior, but they look very much like that. The first one is below and the second one is in the following mail. GSM::Time() arguments are defined like #define USB_LATENCY_INTRVL (10,0), which means that they are expanded into GSM::Time((10,0)). This expression is a GSM::Time() with a single parameter where (10,0) return value of the last argument, 0 in this case. I.e. GSM::Time((10,0)) is equivalent to GSM::Time(0). I think this was not the intention. 2) Printing \n after every complex number breaks output when you want to print it in a single line, e.g. in many debug output. I do not claim any copyright over this change, as it's very basic. Looking forward to see it merged into mainline. git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4515 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-10-22Transceiver52M: UHD: Setup option to pass arguments from command linettsou6-10/+22
UHD accepts optional 'args' that can be used for device descriptions such as IP address, device type, etc. Allow these to be passed in on the transceiver command line as the third argument (number of supported carriers is the second argument). This option benefits those who may have multiple UHD devices attached to a single system. This option is not yet supported by GSM core and requires starting the transceiver independently on the command line. This option has no effect when USRP1 is used. Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4315 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-08-08transceiver: uhd: prevent output of underrun message at ERROR levelttsou1-4/+8
The appearance of underruns on B100 due to the latency transmit window scares people. These should not be logged at ERROR level because the events are generally not real errors. So use the same behaviour of USRP1 of not logging these events. The presence of underrun events can be determined by changes in the latency window that is shown with log level set at INFO. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3988 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-08-08transceiver: uhd: allow underrun flag to reset during timing alignmentttsou1-1/+1
Allowing the underrun flag to reset will prevent a single event from causing large jumps in the transmit latency threshold. This should keep unreasonable timing latencies from occurring (e.g. latencies of 20+ frames). git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3981 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-08-08transceiver: b100: raise minimum transmit latency valuettsou1-3/+13
Put a floor on the transmit latency of the B100 in order to suppress underruns in typical conditions. Empirical data from a handful of relatively recent machines shows that the B100 will underrun when the transmit threshold is reduced to a time of 6 and a half frames, so we set a minimum 7 frame threshold. The overall benefit should be marginal and may increase the possibility of bursts arriving stale (after the trasmit deadline), but will reduce the number of alarming UHD related messages that appear in the log file. This patch is UHD and B100 specific - USRP1 is unaffected. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3980 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-03-13transceiver, usrp1: fix transmit gain setting bugttsou1-1/+1
Transmit gain setting would deceptively set the receive gain instead. Since transmit attenuation is a combination of RF gain and digital scaling, this major copy/paste bug may have gone unnoticed by many users. Reported-by: Robin Coxe <coxe@close-haul.com> Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3309 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-03-13transceiver, uhd: output timestamps on monontonic errorttsou1-2/+2
The "Loss of monotonic time" error occurs when a timestamp arrives from the device that is earlier in time than the previous timestamp. The output is an ALERT level message generally accompanied by a transmit side timeout from the device. UHD: Loss of monotonic time UHD: Loss of monotonic time UHD: Device send timed out Add to the error description the timestamp values that generated the error and output with ALERT rather than ERR log. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3307 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-02-14transceiver, uhd: fix build error due to log levelttsou1-1/+1
Previous commit r3181 used a 2.6 logging level. ALARM->ALERT Fix for 2.8 levels. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3187 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-02-14transceiver, uhd: display device information on make failurettsou1-1/+1
The failure "UHD make failed" implies that a suitable device was found, but construction failed. Output the the found target device information along with message. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3181 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2012-01-09transceiver, uhd: alert user on unrecoverable errorsttsou1-5/+13
Unrecoverable device errors include send and receive timeouts and mangled packets. Other device errors, such as non-monotonic timestamps are sometimes recoverable through a soft restart. These fatal are generally limited to development versions of UHD driver or device firmware, but can occur in release versions. Alert user on such device errors along with current UHD version. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@3012 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-12-15Matching UHD changes in gnuradiokurtis.heimerl1-3/+3
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2817 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-28transceiver52M: bump critial errors to ALERT levelkurtis.heimerl3-6/+8
Device errors regarding properties such as sample rate or frequency tuning are almost always fatal and lead to the common error "assuming TRX is dead". Make sure that these errors are clearly presented to the user. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2700 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-28transceiver, uhd: exit informatively if no devices are foundkurtis.heimerl1-4/+11
Perform a UHD device search before constructing the object, and inform the user if no device is found. No device found is the most common reason for the transceiver to fail with the dreaded error "assuming TRX is dead". Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2699 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-28transceiver, uhd: reject usrp1 if compiled with uhd supportkurtis.heimerl1-5/+6
This configuration is invalid because of FPGA based timestamp support for the USRP1 in the UHD driver. Kindly inform the user to recompile with libusrp support from GNU Radio. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2698 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-28transceiver, uhd: runtime check for setting master clock ratekurtis.heimerl1-0/+11
Before setting the master clock rate, make sure that the device is capable of being set. For now, assume that devices that operate with default clock rates above 64 MHz, specifically USRP2/N200/N210, cannot be set at 52 MHz. Inform the user that these devices can be used with the compile time option of host based resampling. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2697 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26changing config scripts to explitly target UHD/USRP1kurtis.heimerl1-0/+12
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2692 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver, resamp: enlarge transmit resampler output bufferkurtis.heimerl1-2/+10
It was possible to reach a state where a resampled burst would overrun the transmit output buffer and corrupt the global allocated signal vectors. The result was a segmentation fault when attempting to access heap allocated signal vectors since the pointers were garbage. Whether the segfault occured or not appears to depend on the memory location of the signal vector pointers, since it does not occur on all systems. Double buffer size to accomodate an incoming burst plus up to a full chunk that may be remaining from the previous resampling operation. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2691 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: enable USRP1 firmware binary installkurtis.heimerl1-4/+4
Not sure why this functionality is commented out. Make install places the FPGA firmware image in: /usr/local/share/usrp/rev2/ /usr/local/share/usrp/rev4/ Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2690 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver, resamp: insert missing filter valueskurtis.heimerl4-5/+87
With transceiver integration, the resampling filter files were dropped. This created a working resampling implementation for the USRP2 / N200, but with spectrum irregulaties that likely caused issues at longer range operation. Simply reinsert the filter files and modify the filter initialization to use them. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2689 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: uhd: increase log level on constructor errorskurtis.heimerl1-1/+1
Exceptions on make are major no-start conditions. Make these errors more apparent. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2688 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: usrp1: select single dboard use at compile timekurtis.heimerl1-0/+8
The following option selects single daughterboard use on side A only. Otherwise, the default setting is TX on A and Rx on B. ./configure --with-singledb Other options are possible, as per the following enum, but for simplicity with configure options, there are only two choices. enum dboardConfigType { TXA_RXB, TXB_RXA, TXA_RXA, TXB_RXB }; Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2687 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: uhd: make external reference a compile time optionkurtis.heimerl1-6/+4
External reference selection was already compile-time determined by a hard coded value. Make it selectable as a configure option. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2686 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26uhd: increase initial transmit transport latencykurtis.heimerl1-1/+1
For network based devices (USRP2, N200, etc.), increase the latency from 2 to 3 frames, which effectively buffers more samples on the host in front of the Ethernet interface. USB devices (USRP1 and B100) utilize an adaptive mechanism so they are less effected by this value. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2685 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: update main to non-device specific interfacekurtis.heimerl1-5/+11
The low-level RadioDevice interface is agnostic to libusrp or uhd based devices. 'make' allocates and returns a pointer to a generic RadioDevice implemented for whatever class of device determined at compile time. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2684 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: update to log messages to work with P2.8kurtis.heimerl3-33/+33
Log level changes in P2.8: ERROR -> ERR WARN -> WARNING DEEPDEBUG -> DEBUG Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2683 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26build: insert autofoo for usrp transceiver and optionskurtis.heimerl1-7/+25
Usage: ./configure --with-usrp1 Enable non-UHD USRP1 support through the gnuradio-based driver. Requires gnuradio (libusrp) to be installed. ./configure --with-resample Enable host-based 400ksps to 270.833ksps resampling. Only supported for UHD devices. If not enabled, the GSM sample rate is requested directly from the device. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2681 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: add a newline for uhd information outputskurtis.heimerl1-3/+3
Minor change to clarify the logging output. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2679 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: reject usrp1 if detected using uhdkurtis.heimerl1-20/+40
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2678 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: make the transmit drive loop bus dependentkurtis.heimerl5-25/+58
With the introduction of the B100, there is USB support using UHD devices. The characteristics of the trasmit side burst submissions are more reflective of the bus type than the device or driver. Use a fixed latency interval for network devices and the adaptive underrun approach for USB devices - regardless of driver or device type. The GPMC based transport on the E100 appears unaffected by either latency scheme, which defaults to network. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2677 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: reroute uhd messages to logging facilitykurtis.heimerl1-0/+26
Pipe the following uhd message types to standard warning levels (INFO, WARN, ERROR) respectively. Ignore fastpath logging messages and, instead, catch them from the asynchronous device interface. enum type_t{ status = 's', warning = 'w', error = 'e', fastpath= 'f' }; Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2676 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: clean variable init of radio interface constructorkurtis.heimerl1-13/+6
Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2675 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26transceiver: move various radio interface definitionskurtis.heimerl2-11/+41
Move them out of the interface file - primarily for readability. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2674 19bc5d8c-e614-43d4-8b26-e1612bc8e597