Skip to content
sergforce edited this page Jul 26, 2014 · 6 revisions

This guide will help you test UmTRX and/or UHD release.

1. Build and install UHD

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.)

2. Boot UmTRX

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)

3. Find UmTRX

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

4. Probe UmTRX

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

5. Test osmo-trx

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).

6. Test transmission from UmTRX

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)

7. Test UmTRX reception

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.

Clone this wiki locally