Problem Starting AMPS with B210 USRP

Hello all.
I am attempting to use osmocom-analog as an AMPS base station.
uhd_find_devices reports:
</> INFO] [UHD] linux; GNU C++ version 11.4.0; Boost_107400; UHD_4.6.0.0-141-g0f2007fc

– UHD Device 0

Device Address:
serial: 191796
name: MyB210
product: B210
type: b200
</>

I am using the following to start AMPS:
</> amps -v 1 --sdr-uhd -s 960000 -k 334 -p -d -F no --sysinfo sid=18 ,</>

There is a lot of output text. I think eveything is normal until here:
</> --------------------------------------±--------------------------------------
DSDR INFO sdr.c:135 Frequency 1 = 835.0200 MHz
DSDR INFO sdr.c:469 Total bandwidth (two side bands) for all RX Frequencies: 108000 Hz
DSDR INFO sdr.c:477 Using center frequency: RX 834.984000 MHz
DSDR DEBUG sdr.c:482 Frequency #0: RX offset: 0.036000 MHz
DSDR INFO sdr.c:492 Using gain: RX 0.0 dB
DSDR INFO sdr.c:525 Using local oscillator offseet: -1000000 Hz
DUHD INFO uhd.c:59 Using device args “”
DUHD INFO uhd.c:60 Using stream args “”
DUHD INFO uhd.c:61 Using tune args “”
DUHD INFO uhd.c:64 Creating USRP with args “”…
[INFO] [UHD] linux; GNU C++ version 11.2.0; Boost_107400; UHD_4.1.0.5-3
DUHD ERROR uhd.c:263 Given TX frequency 879984000 Hz is not supported, try 0 Hz
DUHD DEBUG uhd.c:521 Clean up UHD
DSDR DEBUG sdr.c:741 Close SDR device
DUHD DEBUG uhd.c:521 Clean up UHD
DSENDER ERROR sender.c:240 No device for transceiver!
DAMPS DEBUG amps.c:654 Destroying ‘AMPS’ instance for channel = 334.
DDSP DEBUG dsp.c:293 (chan 334) Cleanup DSP for treansceiver.
DSENDER DEBUG sender.c:276 (chan 334) Destroying ‘Sender’ instance
DJITTER INFO jitter.c:129 (334) Reset jitter buffer.
DJITTER INFO jitter.c:156 (334) Destroying jitter buffer.
DJITTER INFO jitter.c:129 (334) Reset jitter buffer.
DJITTER INFO jitter.c:156 (334) Destroying jitter buffer.
</>

Am I using an incorrect sample rate? Is there another argument I need to pass?
Any help of suggestions would be appreciated.
Thank you very much,
-Shawn

I looked the source amps.c file and other amps files for something obvious. But I can’t find what the problem is. I will also say that I do not understand what the problem is. There is an error. But is it the computation of transmit frequency? Sample rate?
I saw a YouTube video of a person running AMPS on a Ettus B205. So, the code works on at least one USRP.
The output looks correct until this line:
“DUHD ERROR uhd.c:263 Given TX frequency 879984000 Hz is not supported, try 0 Hz”
0 Hz? Why would I use a transmit frequency of 0 Hz? Also, my TX frequency should be 880.020 MHz (kanal 334). Why does the software think the frequency should be 879.984 MHz?

Below is the full output of what I see when I run the code.
Any help would be truly appreciated.
Thank you.

$ amps -v 1 --sdr-uhd -s 960000 -k 334 -p -d -F no --sysinfo sid=18
DOPTIONS INFO options.c:128 Config file ‘/home/shawn/.osmocom/analog/amps.conf’ seems not to exist, using command line options only.
DOPTIONS INFO options.c:280 Command line option ‘-v’ (‘–verbose’), parameter ‘1’
DOPTIONS INFO options.c:296 Command line option ‘–sdr-uhd’
DOPTIONS INFO options.c:280 Command line option ‘-s’ (‘–samplerate’), parameter ‘960000’
DOPTIONS INFO options.c:280 Command line option ‘-k’ (‘–kanal’), parameter ‘334’
DOPTIONS INFO options.c:282 Command line option ‘-p’ (‘–pre-emphasis’)
DOPTIONS INFO options.c:282 Command line option ‘-d’ (‘–de-emphasis’)
DOPTIONS INFO options.c:280 Command line option ‘-F’ (‘–flip-polarity’), parameter ‘no’
DOPTIONS INFO options.c:294 Command line option ‘–sysinfo’, parameter ‘sid=18’
Selected System ID (SID) 18 belongs to:
Alexandria, VA (Bell Atlantic Mobile)
Baltimore, MD (Bell Atlantic Mobile)
Frederick, MD (Bell Atlantic Mobile)
Silver Spring, MD (Bell Atlantic Mobile)
Washington, DC (Bell Atlantic Mobile)
DDSP DEBUG dsp.c:150 Generating sine table for SAT signal.
DAMPS NOTICE amps.c:583 You selected ‘combined control & paging & voice channel’. This is a hack, but the only way to use control channel and voice channel on one transceiver. Some phones may reject this, but all my phones don’t.
DAMPS DEBUG amps.c:597 Creating ‘AMPS’ instance for channel = 334 of band B (sample rate 960000).
DSENDER DEBUG sender.c:77 (chan 334) Creating ‘Sender’ instance
DJITTER INFO jitter.c:129 (334) Reset jitter buffer.
DJITTER INFO jitter.c:113 (334) Created jitter buffer. (samperate=8000, target_window=60ms, max_window=1000ms, flag:latency=true flag:repeat=true)
DJITTER INFO jitter.c:129 (334) Reset jitter buffer.
DJITTER INFO jitter.c:113 (334) Created jitter buffer. (samperate=960000, target_window=60ms, max_window=1000ms, flag:latency=true flag:repeat=true)
DDSP DEBUG dsp.c:202 (chan 334) Init DSP for transceiver.
DSENDER DEBUG sender.c:308 (chan 334) Maximum deviation: 8.0 kHz, Maximum modulation: 10.0 kHz
DSENDER DEBUG sender.c:309 (chan 334) Deviation at speech level: 2.9 kHz
DDSP DEBUG dsp.c:218 Use 96.0000 samples for full bit duration @ 960000.
DDSP DEBUG dsp.c:234 Bit window length: 96
DDSP DEBUG dsp.c:235 → Samples in window to analyse level left of edge: 24…47
DDSP DEBUG dsp.c:236 → Samples in window to analyse level right of edge: 48…71
DDSP DEBUG dsp.c:175 Generating smooth ramp table.
DDSP DEBUG dsp.c:259 Sat detection interval is 66 ms.
DDSP DEBUG dsp.c:927 (chan 334) SAT detector reset: Initial state.
DAMPS DEBUG amps.c:399 (chan 334) State change: (NULL) → IDLE
DAMPS INFO amps.c:685 (chan 334) Entering IDLE state, sending Overhead/Filler frames on combined control & paging & voice channel.
DDSP DEBUG dsp.c:927 (chan 334) SAT detector reset: Change to FOCC.
DDSP INFO dsp.c:944 (chan 334) Change mode to FOCC
DDSP DEBUG dsp.c:967 (chan 334) Reset FSK frame transmitter, due to setting dsp mode.
DAMPS NOTICE amps.c:638 Created channel #334 (System B) of type ‘CC/PC/VC’ = combined control & paging & voice channel
Base station on channel 334 ready (combined control & paging & voice channel), please tune transmitter to 880.020 MHz and receiver to 835.020 MHz. (-45.000 MHz offset)
DLCC DEBUG endpoint.c:1356 Creating new endpoint instance.
DLCC DEBUG endpoint.c:1207 setting automatic remote peer selection
DSDR DEBUG sdr.c:149 Open SDR device
DSDR INFO sdr.c:168 Require bandwidth of each channel is 2 * (8.0 deviation + 10.0 modulation) = 36.0 KHz
DSDR INFO sdr.c:307 We shift center frequency 18 KHz down (half bandwidth), to prevent channel from overlap with DC level.
DSDR INFO sdr.c:133 TX Spectrum:
1
---------------------------------------±--------------------------------------
DSDR INFO sdr.c:135 Frequency 1 = 880.0200 MHz
DSDR INFO sdr.c:357 Total bandwidth (two side bands) for all TX Frequencies: 108000 Hz
DSDR INFO sdr.c:365 Using center frequency: TX 879.984000 MHz
DSDR DEBUG sdr.c:370 Frequency #0: TX offset: 0.036000 MHz
DSDR INFO sdr.c:391 Using gain: TX 0.0 dB
DSDR INFO sdr.c:433 We shift center frequency 18 KHz down (half bandwidth), to prevent channel from overlap with DC level.
DSDR INFO sdr.c:133 RX Spectrum:
1
---------------------------------------±--------------------------------------
DSDR INFO sdr.c:135 Frequency 1 = 835.0200 MHz
DSDR INFO sdr.c:469 Total bandwidth (two side bands) for all RX Frequencies: 108000 Hz
DSDR INFO sdr.c:477 Using center frequency: RX 834.984000 MHz
DSDR DEBUG sdr.c:482 Frequency #0: RX offset: 0.036000 MHz
DSDR INFO sdr.c:492 Using gain: RX 0.0 dB
DSDR INFO sdr.c:525 Using local oscillator offseet: -1000000 Hz
DUHD INFO uhd.c:59 Using device args “”
DUHD INFO uhd.c:60 Using stream args “”
DUHD INFO uhd.c:61 Using tune args “”
DUHD INFO uhd.c:64 Creating USRP with args “”…
[INFO] [UHD] linux; GNU C++ version 11.2.0; Boost_107400; UHD_4.1.0.5-3
DUHD ERROR uhd.c:263 Given TX frequency 879984000 Hz is not supported, try 0 Hz
DUHD DEBUG uhd.c:521 Clean up UHD
DSDR DEBUG sdr.c:741 Close SDR device
DUHD DEBUG uhd.c:521 Clean up UHD
DSENDER ERROR sender.c:240 No device for transceiver!
DAMPS DEBUG amps.c:654 Destroying ‘AMPS’ instance for channel = 334.
DDSP DEBUG dsp.c:293 (chan 334) Cleanup DSP for treansceiver.
DSENDER DEBUG sender.c:276 (chan 334) Destroying ‘Sender’ instance
DJITTER INFO jitter.c:129 (334) Reset jitter buffer.
DJITTER INFO jitter.c:156 (334) Destroying jitter buffer.
DJITTER INFO jitter.c:129 (334) Reset jitter buffer.
DJITTER INFO jitter.c:156 (334) Destroying jitter buffer.

I guess only @jolly would have some input into this

1 Like

This is weird! It looks like there is some other UHD device (sound card) that is used by default. Can you run “uhd_find_devices”, to get a list? It would be possible to specify the UHD device with osmocom-analog.

Thank you SO much for responding.
Here is the result of uhd_find_devices:

:~$ uhd_find_devices
[INFO] [UHD] linux; GNU C++ version 11.4.0; Boost_107400; UHD_4.6.0.0-141-g0f2007fc
[INFO] [B200] Loading firmware image: /usr/local/share/uhd/images/usrp_b200_fw.hex…

– UHD Device 0

Device Address:
serial: 191796
name: MyB210
product: B210
type: b200

I do find it odd that the product is B210 but the type is B200.
But any suggestions would be great.
Thank you again,
-Shawn

I can try an old UHD device tonight. Does your B210 runs with some other software?

No. I have not run other software. This is the first project I have tried using the B210.
I have GnuRadio and GRC installed. I want to make a simple transmitter and receiver flowgraph using the B210. But, I have not done it yet. I have found examples, but GnuRadio has changed since the examples were posted. The blocks for the transmitter require additional inputs I have not been able to figure out.
Thank you very much,
-Shawn

I tried the old two USRP like devices, but they both don’t show up. They are old and firmware is old too. I cannot check the UHD interface. I used it at the end of December and it worked without any problem. I think there is something wrong with your installation, but I may be wrong.

Thank you for taking the time to look at the problem. I will continue to try to get things to work.
Thanks,
-Shawn

I was able to use an Ettus N210 for testing. uhd_find_devices reports:

UHD Device 0

Device Address:
serial: EAR28M5UP
addr: 10.10.8.3
name: usrp-3
type: usrp2

I am getting the same error as when I use a B210:

DSDR INFO sdr.c:135 Frequency 1 = 880.0200 MHz DSDR INFO sdr.c:357 Total bandwidth (two side bands) for all TX Frequencies: 108000 Hz DSDR INFO sdr.c:365 Using center frequency: TX 879.984000 MHz DSDR DEBUG sdr.c:370 Frequency #0: TX offset: 0.036000 MHz DSDR INFO sdr.c:391 Using gain: TX 0.0 dB DUHD INFO uhd.c:61 Using tune args "" DUHD INFO uhd.c:64 Creating USRP with args ""... [INFO] [UHD] linux; GNU C++ version 11.2.0; Boost_107400; UHD_4.1.0.5-3 DUHD ERROR uhd.c:263 Given TX frequency 879984000 Hz is not supported, try 0 Hz DUHD DEBUG uhd.c:521 Clean up UHD DDSP DEBUG dsp.c:293 (chan 334) Cleanup DSP for treansceiver.

Very minor typo here. Should be ‘transceiver’

Looking over the text, is the problem here?

DSDR INFO sdr.c:365 Using center frequency: TX 879.984000 MHz
DSDR DEBUG sdr.c:370 Frequency #0: TX offset: 0.036000 MHz

I understand that you want to move away from the center of the bandwidth to avoid the DC offset spike. Is the software telling the USRP to tune to 879.984 but the FPGA can only tune in 1 or 10 MHz steps?
Can the software be modified to tune the USRP to, say, 880 MHz, and then have the DSP apply the offset?

I know you’ve put a lot of work in to the osmocom-analog code. I really appreciate the work you’ve done in making this available.
Thank you,
-Shawn