引文
如果你已經購買了Nuand(官方)BladeRF x40,那么就可以在上面運行OpenBTS并可以輸入一些指令來完成一些任務。一般來說HackRF,是一款覆蓋頻率最寬的SDR板卡。它幾乎所有的信息都是開源的,甚至包括KiCad文件。缺點是它沒有FPGA,使用的低速的USB2接口,ADC/DAC的精度比較低。
再使用 bladeRF 板卡時需要注意兩個“鏡像”:固件 (firmware) 鏡像與 FPGA 鏡像。二者是兩個不同的概念。但是業界叫法不一,有時候會把二者混為一談。一般而言,固件指的是嵌入到硬件設備中的軟件,存放在只讀存儲器 (ROM) 或者閃存 (flash) 中,一般不易修改,修改的操作稱為“刷新”(flashing)。固件這個名詞最初和微代碼相關,不過 bladeRF 里源代碼是嵌入式 C 程序。FPGA 全名為可編程門陣列,其門電路、寄存器連接可以編程重構,其源程序一般是硬件描述語言 (HDL),通過綜合 (synthesis) 等步驟得到二進制文件。在 bladeRF 板卡上,FPGA 只是一塊 Altera 芯片。在沒有內置非揮發存儲時,FPGA 鏡像需要每次上電時重新加載,bladeRF 就是這種情況。所以在拿到板卡時,上面已有固件,但還沒有 FPGA 鏡像。下面本文會具體說明在使用 bladeRF 時如何刷新固件、加載/更新 FPGA 鏡像、以及如何自動加載 FPGA 鏡像。注意,有時為了避免混淆,會稱 FPGA 鏡像為 FPGA 比特流,或者 FPGA 配置(因為它就是配置了門電路等組件的連接)。
本文中介紹的工具、技術帶有一定的攻擊性,請合理合法使用。
系統:
Ubuntu 12.04 LTS Server (32位)下載:(點擊我)
升級git版本
sudo apt-get install software-properties-common python-software-properties sudo add-apt-repository ppa:git-core/ppa (press enter to continue) sudo apt-get update sudo apt-get install git
安裝一些前提軟件包。
設置好之后,開始安裝。
將下面代碼復制粘貼,運行-將會開始安裝:
sudo apt-get install $(wget -qO - https://raw.githubusercontent.com/RangeNetworks/dev/master/build.sh | \grep installIfMissing | \grep -v "{" | \cut -f2 -d" ")
另外一種安裝方式是通過在所有文件中搜索文本文件 IFMissing,然后再通過apt-get 命令來安裝它。當然你也可以直接通過程序代碼來操作。
值得注意的是,安裝時候有兩個安裝包會失敗(libzmq3 & libzmq3-devel)-但可以在Ubuntu系統下直接安裝。
$ sudo add-apt-repository ppa:chris-lea/zeromq $ sudo apt-get update $ sudo apt-get install libzmq3-dbg libzmq3-dev
下一步是安裝uhd,當然還要注意GNURadio。運行下面的指令將會執行安裝,當然這回花掉一些時間,而這也取決于你的電腦。
wget http://www.sbrac.org/files/build-gnuradio && chmod a+x ./build-gnuradio && ./build-gnuradio
一旦執行完成,你將會收到失敗或成功的提示信息。如果失敗可以選擇重新安裝,并查看相關信息來解決問題。下面將會安裝和配置 OpenBTS相關軟件,包括:libgsm1-dev 、asterisk-dev 、asterisk-config。安裝
$ sudo apt-get install libgsm1-dev asterisk-dev asterisk-config
當然你可以自主選擇是否安裝libusb,請注意不是 libusbx 。安裝可以到www.libusb.org頁面下載,然后將其復制到 /usr/src目錄下。將/usr/lib/x86_64-linux-gnu/libusb.so原始文件備份后覆蓋它。
安裝OpenBTS
完成上面的事情之后,現在就開始安裝它吧。
1.為其(OpenBTS)創建一個目錄(結合實際情況)
2.然后安裝并運行它
#!/bin/bashgit clone https://github.com/RangeNetworks/openbts.git git clone https://github.com/RangeNetworks/smqueue.git git clone https://github.com/RangeNetworks/subscriberRegistry.git #From here and downwards you can copy&paste (that's why the ';' are for) for D in *; do (echo $D;echo "=======";cd $D;git clone https://github.com/RangeNetworks/CommonLibs.git;git clone https://github.com/RangeNetworks/NodeManager.git); done; git clone https://github.com/RangeNetworks/libcoredumper.git; git clone https://github.com/RangeNetworks/liba53.git
3.創建 libcoredumper
cd libcoredumper; ./build.sh && \sudo dpkg -i *.deb; cd ..
4.創建 liba53
cd liba53; make && \sudo make install; cd ..
5.在同一目錄下,check out“YateBTS”
svn checkout http://voip.null.ro/svn/yatebts/trunk yatebts
6.下一步去掉 FPGA(自動加載)信息,然后加載并打開它
vim ./yatebts/mbts/TransceiverRAD1/bladeRFDevice.cpp
從#ifdef(108行)到#endif(129行)結束,這之間是空的,應該為后來留為備用的。
7.更換目錄(YateBTS)然后運行 autogen.sh
$ cd opbts/yatebts
$ ./autogen.sh
8.這樣就可以創建配置文件,如果你立刻運行并配置腳本,將會出現錯誤然后出現搜索YATE信息。所以先要打開它配置
$vim configure
能夠找到as_fn_err $嗎?能夠找到$LINENO變量(開源軟件 Yate)并替換嗎?那么進行下一步吧
9.重新配置
./configure
10.這個時候需要開源軟件YateBTS兩個文件目錄
a) Peering
$ cd /home/openbts/obts/yatebts/mbts/Peering
$ make
b) TransceiverRAD1
$ cd /home/openbts/obts/yatebts/mbts/TransceiverRAD1
$ make
11.復制兩個文件到 OpenBTS 文件目錄下
$ cd .. $ cp ./yatebts/mbts/TransceiverRAD1/transceiver-bladerf openbts/apps/ $ cd openbts/apps/ $ ln -sf transceiver-bladerf transceiver
12.編譯OpenBTS
$ cd /home/openbts/obts/openbts $ ./autogen.sh $ ./configure --with-uhd $ make
13.下一步配置SQL-lite軟件庫(bladeRF),需要做一些修改
vim /home/openbts/obts/openbts/apps/OpenBTS.example.sql
查詢并替換以下信息
完成并進行下一步
14.創建OpenBTS配置目錄
$ sudo mkdir /etc/OpenBTS
15.在OpenBTS目錄下,安裝軟件庫
$ sudo sqlite3 -init ./apps/OpenBTS.example.sql /etc/OpenBTS/OpenBTS.db ".quit"
16.一旦完成,下一步可以通過命令來測試它
$ sqlite3 /etc/OpenBTS/OpenBTS.db .dump
如果看到了大量的輸出數據信息,那么就表明成功了。進行下一步
17.通過命令運行OpenBTS
$ cd /home/openbts/obts/openbts/apps
$ sudo ./OpenBTS
如果看見系統啟動,你的基站準備好并啟動它,如果使用手機搜尋附近網絡,應該出現測試PLMN網絡的測試信息(00101)。
18.如果開始上面的測試,退出openBTS然后安裝用戶注冊表(sipauthserve以及smqueue),需要這些才能夠運行openBTS。沒有這些,手機不會連接測試網絡。
19. 對于用戶注冊表,必須要創建一個文件目錄,即/var/lib/asterisk/sqlite3dir,創建它
$ sudo mkdir -p /var/lib/asterisk/sqlite3dir
20.創建 sipauthserve
$ cd subscriberRegistry $ ./autogen.sh $ ./configure $ make
在/home/openbts/obts/subscriberRegistry/apps目錄下創建
21.下一步配置 sipauthserve
$ cd /home/openbts/obts/subscriberRegistry $ sudo sqlite3 -init subscriberRegistry.example.sql /etc/OpenBTS/sipauthserve.db ".quit"
22.下一步安裝SMQUEUE,其與SubscriberRegistry.h文件有關聯,可以在其目錄修復它
$ cd /home/openbts/obts/smqueue $ ln -s /home/openbts/obts/subscriberRegistry/ SR $ autoreconf -i $ ./configure $ make
23.一旦完成之后,就需要修改其配置文件
$ cd /home/openbts/obts/smqueue $ sudo sqlite3 -init smqueue/smqueue.example.sql /etc/OpenBTS/smqueue.db ".quit"
bladeRF 固件升級與FPGA鏡像加載
24.在https://github.com/Nuand/bladeRF/wiki/Upgrading-bladeRF-firmware升級固件
25.完成之后在http://www.nuand.com/fpga.php下載鏡像(FPGA)
26.加載FPGA鏡像
$ bladeRF-cli -L <path to fpga image file>
這步一定要有耐心,不要突然終止,別讓板子變成磚了。
27. 完成之后,開始運行之前的配置的服務吧。
$ cd /home/openbts/obts/smqueue $ sudo ./smqueue &$ cd /home/openbts/obts/subscriberRegistry/apps $ sudo ./sipauthserve &$ cd /home/openbts/obts/openbts/apps $ sudo ./OpenBTS &
28.啟動OpenBTSCLI
$ cd /home/openbts/obts/openbts/apps/
$ sudo ./OpenBTSCLI
29. 默認情況下, OpenBTS不會接受額外的登記信息,需要做到下面幾點
a) 輸入你手機的IMSI(國際移動用戶識別碼)
b) 設置所有的IMSI號可以被登記
config Control.LUR.OpenRegistration .*
這么做將會導致信號范圍內所有的手機連接到你配置的基站上面,包括(隔壁的妹子or老王)。
現在你可以在手機上能夠搜索到基站網絡了,可以撥打服務電話(作者那邊是600)做測試(Asterisk)。
了解更多
[1]?https://github.com/Nuand/bladeRF/wiki/Minimalistic-build-and-run-test-for-OpenBTS-5
[2]?https://wush.net/trac/rangepublic/wiki/BuildInstallRun#ConfiguringOpenBTS
[3]?https://wush.net/trac/rangepublic/wiki/CommonErrors
[4]?http://openbts.org/w/index.php/Main_Page
[5]?https://github.com/Nuand/bladeRF/wiki/Upgrading-bladeRF-firmware
*參考來源:linux.net.pk
本文轉自 K1two2 博客園博客,原文鏈接:?http://www.cnblogs.com/k1two2/p/5379655.html?,如需轉載請自行聯系原作者