-
Notifications
You must be signed in to change notification settings - Fork 4
Testing UmTRX
This guide will help you test UmTRX and/or UHD release.
The usual procedure (change git clone argument if you want to install Fairwaves version of UHD):
git clone https://github.com/EttusResearch/uhd.git
cd uhd/host
mkdir build
cd build
cmake ../
make
make test
sudo make install
sudo ldconfig
(Currently, if you want to test UHD-Fairwaves umtrx_update branch, you need to do the above and then install UHD from umtrx_update again.)
Connect UmTRX USB debug port to your computer USB port, listen to it:
picocom -b 230400 /dev/ttyUSB0
(run sudo apt-get install picocom if picocom is not installed)
Now turn on UmTRX. You should see something this from picocom:
USRP N210 UDP bootloader
FPGA compatibility number: 8
Firmware compatibility number: 11
Production image = 0
Checking for valid production FPGA image...
Valid production FPGA image found. Attempting to boot.
USRP N210 UDP bootloader
FPGA compatibility number: 9
Firmware compatibility number: 12
Production image = 1
Valid production firmware found. Loading...
Finished loading. Starting image.
TxRx-UHD-ZPU
FPGA compatibility number: 9
Firmware compatibility number: 12
LMS1 chip version = 0x0
LMS2 chip version = 0x0
00:1F:11:02:19:37
192.168.10.2
ethernet flow control: WE_TX
Speed set to 1000
eth link changed: speed = 1000
(enter C-a C-x to exit from picocom)
Test if UHD can find UmTRX:
uhd_find_devices
Expected output:
linux; GNU C++ version 4.6.3; Boost_104800; UHD_003.007.001-68-gc4b1f810
-- UHD Device 0
Device Address:
type: umtrx
addr: 192.168.10.2
name: UmTRX
serial: 55
Show detailed UmTRX information:
uhd_usrp_probe
Expected output:
linux; GNU C++ version 4.6.3; Boost_104800; UHD_003.007.001-68-gc4b1f810
-- Opening a UmTRX device... 192.168.10.2
-- user_mtu.recv_mtu = 1472
-- user_mtu.send_mtu = 1472
-- Time register self-test... pass
|_____________________________________________________
/
| Device: UmTRX Device
| _____________________________________________________
| /
| | Mboard: UMTRX-REV0
| | hardware: 64000
| | mac-addr: 00:1f:11:02:19:37
| | ip-addr: 192.168.10.2
| | subnet: 255.255.255.255
| | gateway: 255.255.255.255
| | gpsdo: none
| | serial: 55
| | name: UmTRX
| | tcxo-dac: 1962
| | FW Version: 12.0
| | FPGA Version: 9.0
| |
| | Time sources: none, external, _external_
| | Clock sources: internal, external
| | Sensors:
| | _____________________________________________________
| | /
| | | RX DSP: 0
| | | Freq range: -13.000 to 13.000 Mhz
| | _____________________________________________________
| | /
| | | RX DSP: 1
| | | Freq range: -13.000 to 13.000 Mhz
| | _____________________________________________________
| | /
| | | RX Dboard: A
| | | ID: Unknown (0xfa07)
| | | Serial: 55.A
| | | _____________________________________________________
| | | /
| | | | RX Frontend: 0
| | | | Name: LMS-RX-FE
| | | | Antennas: RX0, RX1, RX2, RX3, CAL
| | | | Sensors: lo_locked
| | | | Freq range: 232.500 to 3720.000 Mhz
| | | | Gain range VGA1: 0.0 to 126.0 step 1.0 dB
| | | | Gain range VGA2: 0.0 to 30.0 step 3.0 dB
| | | | Connection Type: IQ
| | | | Uses LO offset: No
| | | _____________________________________________________
| | | /
| | | | RX Codec: A
| | | | Name: RX LMS ADC
| | | | Gain Elements: None
| | _____________________________________________________
| | /
| | | RX Dboard: B
| | | ID: Unknown (0xfa07)
| | | Serial: 55.B
| | | _____________________________________________________
| | | /
| | | | RX Frontend: 0
| | | | Name: LMS-RX-FE
| | | | Antennas: RX0, RX1, RX2, RX3, CAL
| | | | Sensors: lo_locked
| | | | Freq range: 232.500 to 3720.000 Mhz
| | | | Gain range VGA1: 0.0 to 126.0 step 1.0 dB
| | | | Gain range VGA2: 0.0 to 30.0 step 3.0 dB
| | | | Connection Type: IQ
| | | | Uses LO offset: No
| | | _____________________________________________________
| | | /
| | | | RX Codec: B
| | | | Name: RX LMS ADC
| | | | Gain Elements: None
| | _____________________________________________________
| | /
| | | TX DSP: 0
| | | Freq range: -13.000 to 13.000 Mhz
| | _____________________________________________________
| | /
| | | TX DSP: 1
| | | Freq range: -13.000 to 13.000 Mhz
| | _____________________________________________________
| | /
| | | TX Dboard: A
| | | ID: Unknown (0xfa09)
| | | Serial: 55.A
| | | _____________________________________________________
| | | /
| | | | TX Frontend: 0
| | | | Name: LMS-TX-FE
| | | | Antennas: TX0, TX1, TX2, CAL
| | | | Sensors: lo_locked
| | | | Freq range: 232.500 to 3720.000 Mhz
| | | | Gain range VGA: -35.0 to 21.0 step 1.0 dB
| | | | Connection Type: IQ
| | | | Uses LO offset: No
| | | _____________________________________________________
| | | /
| | | | TX Codec: A
| | | | Name: TX LMS DAC
| | | | Gain Elements: None
| | _____________________________________________________
| | /
| | | TX Dboard: B
| | | ID: Unknown (0xfa09)
| | | Serial: 55.B
| | | _____________________________________________________
| | | /
| | | | TX Frontend: 0
| | | | Name: LMS-TX-FE
| | | | Antennas: TX0, TX1, TX2, CAL
| | | | Sensors: lo_locked
| | | | Freq range: 232.500 to 3720.000 Mhz
| | | | Gain range VGA: -35.0 to 21.0 step 1.0 dB
| | | | Connection Type: IQ
| | | | Uses LO offset: No
| | | _____________________________________________________
| | | /
| | | | TX Codec: B
| | | | Name: TX LMS DAC
| | | | Gain Elements: None
Run osmo-trx:
osmo-trx -c 2 -s 4 -l DEBUG
Expected output:
linux; GNU C++ version 4.6.3; Boost_104800; UHD_003.007.001-68-gc4b1f810
Config Settings
Log Level............... DEBUG
Device args.............
TRX Base Port........... 5700
TRX Address............. 127.0.0.1
Channels................ 1
Samples-per-Symbol...... 4
External Reference...... Disabled
C0 Filler Table......... Disabled
Diversity............... Disabled
Tuning offset........... 0
-- Opening a UmTRX device... 192.168.10.2
-- user_mtu.recv_mtu = 1472
-- user_mtu.send_mtu = 1472
-- Time register self-test... pass
-- Setting UmTRX 4 SPS
-- Transceiver active with 2 channel(s)
Watch for error messages here or on UmTRX debug port. Here is how osmo-trx could fail:
ALERT 139815784093440 19:02:10.0 UHDDevice.cpp:832:check_rx_md_err: UHD: Receive timed out
An example of UmTRX failure (USB debug output):
!Error in control packet handler: Expected compatibility number 12, but got 1
!Error in control packet handler: Expected payload length 36, but got 16
If there are errors you may wish to try osmo-trx with single channel (-c 1) or with lower (GSM) samples/symbol (-s 1).
Download "ideal" GSM data file:
curl -OL https://github.com/fairwaves/umtrx_scripts/wiki/multiframe_norm.dat
Transmit from file to first UmTRX channel (A:0):
tx_samples_from_file --rate 1083333 --freq 9550e5 --bw 1500000 --file multiframe_norm.dat --type float --repeat --gain 18 --subdev A:0
Look at GSM transmitter tester (e.g. Agilent E4406A) to check if signal looks right. At the same time check output from tx_samples_from_file command. Good example:
linux; GNU C++ version 4.6.3; Boost_104800; UHD_003.007.001-68-gc4b1f810
Creating the usrp device with: ...
-- Opening a UmTRX device... 192.168.10.2
-- user_mtu.recv_mtu = 1472
-- user_mtu.send_mtu = 1472
-- Time register self-test... pass
Using Device: Single USRP:
Device: UmTRX Device
Mboard 0: UMTRX-REV0
RX Channel: 0
RX DSP: 0
RX Dboard: A
RX Subdev: LMS-RX-FE
RX Channel: 1
RX DSP: 1
RX Dboard: B
RX Subdev: LMS-RX-FE
TX Channel: 0
TX DSP: 0
TX Dboard: A
TX Subdev: LMS-TX-FE
Setting TX Rate: 1.083333 Msps...
Actual TX Rate: 1.083333 Msps...
Setting TX Freq: 955.000000 MHz...
Actual TX Freq: 955.000000 MHz...
Setting TX Gain: 18.000000 dB...
Actual TX Gain: 18.000000 dB...
Setting TX Bandwidth: 1500000.000000 MHz...
Actual TX Bandwidth: 1500000.000000 MHz...
Checking TX: LO: locked ...
Press Ctrl + C to stop streaming...
^C
Done!
(use --subdev B:0 to transmit from second UmTRX channel)
There are different ways to test reception. One way is to take additional UmTRX board and send the ideal signal from it (see above). Another way is to dump data from a real operator (take a test phone, find some ARFCN that is in use, and receive from it: --freq option):
rx_samples_to_file --freq 9512e5 --rate 1083333 --gain 18 --bw 1500000 --type float --subdev A:0 --ant RX1 --file umtrx_rx_test.dat
Example output:
linux; GNU C++ version 4.6.3; Boost_104800; UHD_003.007.001-68-gc4b1f810
Creating the usrp device with: ...
-- Opening a UmTRX device... 192.168.10.2
-- user_mtu.recv_mtu = 1472
-- user_mtu.send_mtu = 1472
-- Time register self-test... pass
Using Device: Single USRP:
Device: UmTRX Device
Mboard 0: UMTRX-REV0
RX Channel: 0
RX DSP: 0
RX Dboard: A
RX Subdev: LMS-RX-FE
TX Channel: 0
TX DSP: 0
TX Dboard: A
TX Subdev: LMS-TX-FE
TX Channel: 1
TX DSP: 1
TX Dboard: B
TX Subdev: LMS-TX-FE
Setting RX Rate: 1.083333 Msps...
Actual RX Rate: 1.083333 Msps...
Setting RX Freq: 951.200000 MHz...
Actual RX Freq: 951.200000 MHz...
Setting RX Gain: 18.000000 dB...
Actual RX Gain: 18.000000 dB...
Setting RX Bandwidth: 1500000.000000 MHz...
Actual RX Bandwidth: 1500000.000000 MHz...
Waiting for "lo_locked": ++++++++++ locked.
Press Ctrl + C to stop streaming...
^C
Done!
(to receive from a second channel use --subdev B:0 --ant RX1)
You can then do transmission test with the file just written to make sure data looks "right" on GSM tester.