本文整理自我 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>;