本文整理自我 2023 年在 HackMD 上的實作筆記,指令與版本以當時環境為準(Ubuntu 22.04、srsRAN 4G / Project、Open5GS)。 pySim 寫卡指令中的 ADM PIN、IMSI、ICCID、OPc、Ki 已以占位符取代,請用自己 SIM 卡的值。

截圖

System Requirements

截圖

Environment Building

本節將更改ubuntu開機選單,使用low-latency kernel版本的ubunbu (如果使用ubuntu伺服器版本,可以跳過此步驟)

1. Install Linux Kernel

安裝運行srsRAN所需要的low-latency kernel

sudo apt-get install linux-lowlatency
sudo apt-get install linux-image-`uname -r | cut -d- -f1-2`-lowlatency
sudo apt-get install linux-headers-`uname -r | cut -d- -f1-2`-lowlatency

2. Modify Grub Menu Setting

修改開機選單的設定以選擇方才所安裝的low-latency kernel

利用Terminal開啟grub設定檔:

sudo nano /etc/default/grub

找到以下文字:

GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10

截圖

修改為:

GRUB_TIMEOUT_STYLE=menu  // 於開機時顯示grub menu
GRUB_TIMEOUT=-1  // 取消grub menu的timeout

截圖

3. Update Grub Setting

更新grub設定檔以啟用變更的內容

sudo update-grub2

截圖

利用以下指令重新開機:

sudo reboot

開機進入grub menu後,選擇Advanced Options for Ubuntu

截圖

選擇剛才安裝的low-latency kernel

截圖

4.Check Kernel Version

利用指令檢查Kernel版本,確認是否為low-latency kernel

uname -r

截圖

srsRAN Installation

1. 使用以下指令安裝 srsRAN 所需要的基本套件:

sudo apt-get install build-essential cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev

2. 下載以及建構srsRAN:

git clone https://github.com/srsran/srsRAN_4G.git
cd srsRAN_4G
mkdir build
cd build
cmake ../
make
make test

test 完成會顯示100%通過

截圖

3. 安裝srsRAN

sudo make install
sudo ldconfig
srsran_install_configs.sh user

4. srsRAN

將srsLTE送出的封包導向自己電腦的網路介面

cd srsRAN/srsepc
sudo ./srsepc_if_masq.sh enp0s3

注意:sudo ./srsepc_if_masq.sh enp0s3每次電腦開機都要做一次!!

USRP Driver Installation

安裝windows uhd

install the file

USRP 驅動=> https://files.ettus.com/binaries/uhd/uhd_004.001.000.005-release/4.1.0.5/Windows-10-x64/uhd_4.1.0.5-release_Winx64_VS2017.exe

USRP dill檔=>https://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.25/libusb-1.0.25.7z/download

USRP 驅動更新檔=> http://files.ettus.com/binaries/misc/erllc_uhd_winusb_driver.zip

Go to libusb to copy the file ” libusb-1.0.dll ”

cd VS2019\MS64\Release\dll

截圖

Paste in the UHD

cd C:\Program Files\UHD\bin

截圖

到裝置管理員更新usrp 裝置驅動

截圖

進入ubuntu 更新系統

sudo apt-get update

在 Ubuntu 18.04 執行:

sudo apt-get -y install git swig cmake doxygen build-essential libboost-all-dev libtool libusb-1.0-0 libusb-1.0-0-dev libudev-dev libncurses5-dev libfftw3-bin libfftw3-dev libfftw3-doc libcppunit-1.14-0 libcppunit-dev libcppunit-doc ncurses-bin cpufrequtils python-numpy python-numpy-doc python-numpy-dbg python-scipy python-docutils qt4-bin-dbg qt4-default qt4-doc libqt4-dev libqt4-dev-bin python-qt4 python-qt4-dbg python-qt4-dev python-qt4-doc python-qt4-doc libqwt6abi1 libfftw3-bin libfftw3-dev libfftw3-doc ncurses-bin libncurses5 libncurses5-dev libncurses5-dbg libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev libcppunit-dev libboost-all-dev libusb-dev libusb-1.0-0-dev fort77 libsdl1.2-dev python-wxgtk3.0 git libqt4-dev python-numpy ccache python-opengl libgsl-dev python-cheetah python-mako python-lxml doxygen qt4-default qt4-dev-tools libusb-1.0-0-dev libqwtplot3d-qt5-dev pyqt4-dev-tools python-qwt5-qt4 cmake git wget libxi-dev gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 libzmq3-dev libzmq5 python-requests python-sphinx libcomedi-dev python-zmq libqwt-dev libqwt6abi1 python-six libgps-dev libgps23 gpsd gpsd-clients python-gps python-setuptools

下載uhd

git clone https://github.com/EttusResearch/uhd
cd uhd

Build uhd

cd host
mkdir build
cd build
cmake ..
make
make test

安裝uhd

sudo make install
sudo ldconfig

安裝FPGA images packages

sudo /usr/local/lib/uhd/utils/uhd_images_downloader.py

使用以下指令安裝運行USRP所需的驅動程式:

sudo apt-get update
sudo add-apt-repository ppa:ettusresearch/uhd
sudo apt-get update
sudo apt-get install libuhd-dev uhd-host

修改bash檔案

nano ~/.bash_profile

新增

export UHD_IMAGES_DIR=/usr/share/uhd/images
export LD_LIBRARY_PATH=/usr/local/lib

截圖

更新system

source ~/.bash_profile
sudo ldconfig

檢測USRP之連線狀態:

USRP 裝置要用USB3.0連接,虛擬機要確定連結上裝置

  • 使用vmware 的要先去檔案找到.vmx檔修改usb權限到 “TRUE”

截圖 截圖

  • 使用virtualbox 的開啟右下角的選項

截圖

查看系統有偵測到哪些裝置

lsusb

截圖

輸入以下指令以檢測USRP之連線狀態:

sudo uhd_find_devices

如果成功會顯示連接的裝置名稱

截圖

輸入以下指令以檢測USRP裝置狀態(需要一些時間):

sudo uhd_usrp_probe

截圖

如果跑出以上結果代表USRP裝置可以順利使用

調整rf參數

sudo srsenb --rf.srate=23.04e6

pySim Installation

安裝srsRAN套件

sudo add-apt-repository ppa:softwareradiosystems/srsran
sudo apt-get update
sudo apt-get install srsran -y

安裝pyscard

sudo apt-get install pcscd pcsc-tools libccid libpcsclite-dev python3-pyscard

檢查連接狀態

要先確保系統有偵測到裝置

截圖

確定系統偵測到後即可掃描裝置:

pcsc_scan

如果成功會顯示裝置名稱

截圖

安裝pySIM

sudo apt-get install python3-pyscard python3-serial python3-pip
pip install pytlv
git clone git://git.osmocom.org/pysim

進入pysim

cd pysim

安裝pysim工具套件

pip3 install -r requirements.txt

讀取您的SIM卡資料:

./pySim-read.py -p0

or

./pySim-read.py -p1

如果讀取成功即可看到sim卡上的資訊 (但是ADM不會在上面,購買SIM卡時會寄到信箱)

編輯SIM卡

sudo ./pySim-prog.py --pcsc-device=0 --type sysmoUSIM-SJS1 --pin-adm=<ADM-PIN> --mcc=901 --mnc=70 --imsi=<IMSI> --iccid=<ICCID> --opc=<OPc> --ki=<Ki>;

以上參數及key要跟登錄在核心網路上的一致

格式請參考pysim官網 https://osmocom.org/projects/pysim/wiki