It's possible to run the software in Docker containers. This way is recommended for beginners.
Note: at the moment, there is a build script for gr-gsm based transceiver only.
The build script for gr-gsm (i.e. Dockerfile) is shipped as a part of a separate project called "docker-playground". It's based on "base/archlinux" image, which provides the recent versions of both UHD and GNU Radio without tons of dependencies such as Xorg, GTK, fonts, etc.
Building Docker image¶
You need to clone the "docker-playground" repository first:
$ git clone https://gitea.osmocom.org/osmocom/docker-playground
Then make sure you have stable Internet connection and enough disk space, and start building:
$ cd docker-playground/ $ cd gr-gsm-master/ $ make build
It will take a while...
As soon as the building process is finished, you should see the new images:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE user/gr-gsm-master latest c5912ee7d6ae About an hour ago 2.09GB base/archlinux latest 7477438791e3 28 hours ago 689MB
Please note that this container requires privileged access to the host USB devices (USRPs).
Running Docker image¶
Read the above part about running first.
As soon as you build the image, feel free to start it:
$ cd docker-playground/ $ cd gr-gsm-master/ $ make run
The last command will drop you into a bash shell. As there are no build scripts for the higher layer applications of OsmocomBB, the following part assumes that you are running OsmocomBB on the host side.
By default, Docker should create a network interface for interacting with containers:
$ ip addr # ... 5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:13:85:c2:c9 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever
In this example, the host has 172.17.0.1 assigned. Remember this address.
Note: make sure your firewall doesn't block the connections with Docker's interface.
The container itself should also have it's own address. You can check it:
[root@f7e86148c1c2 tmp]# pacman -S net-tools [root@f7e86148c1c2 tmp]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0 ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet) RX packets 40 bytes 139097 (135.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 32 bytes 2752 (2.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Now, make sure your hardware is available within the container:
[root@f7e86148c1c2 tmp]# uhd_find_devices # Device list will appear here
And finally, start the transceiver:
# You need to use IP address of the host [root@f7e86148c1c2 tmp]# grgsm_trx --remote-addr 172.17.0.1
and trxcon on the host side:
$ cd osmocom-bb/src/host/trxcon/trxcon/ # You need to use IP address of the host $ ./trxcon --trx-ip 172.17.0.2