Clone
6
OpenAirExpressMimo2
Raphael Defosseux edited this page 2019-04-16 15:09:34 +02:00

To use lte-softmodem (eNodeB) with express MIMO card:

1 - checkout the code

Refer to Get the sources.

In the following, we will suppose that you cloned the repository into the directory /tmp/exmimo.

2 - initialize environment

/tmp/exmimo> cd openairinterface5g/
/tmp/exmimo/openairinterface5g> . oaienv

3 - compile code

Two options:

  • compile and install dependancies:

    /tmp/exmimo/openairinterface5g> cd cmake_targets/
    /tmp/exmimo/openairinterface5g/cmake_targets> ./build_oai -I --install-system-files --eNB -x -w EXMIMO
    
  • dependancies already installed, only compile:

    /tmp/exmimo/openairinterface5g> cd cmake_targets/
    /tmp/exmimo/openairinterface5g/cmake_targets> ./build_oai --eNB -x -w EXMIMO
    

If the compilation is a success, you should see the following messages in green on your screen:

lte-softmodem compiled
openair_rf compiled
updatefw compiled
oarf tools compiled

4 - initialize express MIMO card

/tmp/exmimo/openairinterface5g/cmake_targets> cd tools/
/tmp/exmimo/openairinterface5g/cmake_targets/tools> . init_exmimo2

You should see the following output on the console:

loading openair_rf
Using firware version 10

Running dmesg, you should see something ending with:

[782979.116663] [openair][IOCTL] ok asked Leon to set stack and start execution (addr 0x40000000, stackptr 43fffff0)
[782979.116782] [LEON card0]: FWINIT: Will start execution @ 40000000, stack @ 43fffff0
[782979.228844] [LEON card0]: pcie_initialize_interface_bot(): firmware_block_ptr 3200100, printk_buffer_ptr 3240100, pci_interface_ptr 3240500, exmimo_id_ptr 3240700
[782979.229321] [LEON card0]: System Info:
[782979.229464] [LEON card0]: Bitstream: SVN Revision: 5307, Build date (GMT): Wed 2014-03-19 15:55:01,  User ID: 0x0001
[782979.229600] [LEON card0]: Software:  SVN Revision: 5541, Build date (GMT): Wed 2014-03-19 08:45:08
[782979.229691] [LEON card0]: ExpressMIMO-2 SDR! (Built on Nov  7 2014 15:14:44)
[782979.229819] [LEON card0]: Initialized LIME.
[782979.229935] [LEON card0]: Initializing RF Front end chain0 (to TVWS_TDD).
[782979.230209] [LEON card0]: ready.

Read carefully the dmesg log to see if something is wrong.

If there is a problem:

  • first, as root unload the kernel module:
```shell
rmmod openair_rf
```
  • Then reset the card, there is a little button near the ethernet port.
  • Then, find out which PCI bus the card is on:
```shell
lspci -nn|grep Xilinx
```

Here it returns:

```
04:00.0 Signal processing controller [1180]: Xilinx Corporation Default PCIe endpoint ID [10ee:0007]
```
  • And as root, do (replace numbers to match yours):
 echo "1" > /sys/bus/pci/devices/0000\:04\:00.0/remove
 echo "1" > /sys/bus/pci/rescan
  • And then rerun init_exmimo2.

Or, simpler procedure: power off the computer, and on again.

5 - setup EPC configuration

Edit /tmp/exmimo/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf.

Set correct IP addresses / network interfaces in mme_ip_address and NETWORK_INTERFACES (this will vary based on your setup).

Take care of correct mobile_country_code / mobile_network_code (I have to set mobile_network_code to 93 for example).

6 - run lte-softmodem

Once the EPC is running, do:

/tmp/t/openairinterface5g/targets/bin> sudo ./lte-softmodem.Rel10 -O /tmp/t/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf

If things go well, the logs should end with more or less:

eNB_thread: mlockall in ...
eNB_thread: mlockall out ...
waiting for sync (eNB_thread)
TYPE <CTRL-C> TO TERMINATE
Entering ITTI signals handler
[HW][I]eNB Frame 0, time 783298744650417: slot 0, hw_slot 9, diff 86

The important line is Entering ITTI signals handler.

Then the eNodeB is running, waiting for UEs.

When an UE tries to connect you will have more logs.

You may pass the -d option to have the scope. Be sure that the root can access the X environment (xhost + might be necessary for example).