隨著普通電腦性能逐漸提高,DSP能力越來越強。因此Software Define Radio越來越受到大家的關注。本文介紹hackrf是目前最廉價的支持發射的SDR,只可惜是半雙工的。hackrf是一個完全開源的項目,從軟體到硬體,全部開源,因此已經國產化。可以在淘寶買到,大概1200元左右。
本文介紹了一個最簡單的發射寬帶FM的方法,僅供參考。
1,確認repository裡的libhackrf版本並且安裝正確的驅動程序
如果你使用的ubuntu或kali等版本較老的,建議使用源碼的方法安裝最新的libhackrf驅動。如果使用較新的作業系統如ubuntu16.xx,可以直接使用apt-get安裝。
從軟體倉庫裡安裝
#apt-cahce search libhackrf-dev
#apt-get install libhackrf-dev
如果該驅動不能工作,請選下面的源碼安裝的方式,畢竟老的驅動支持新的硬體是比較困難的。
從源碼的方式安裝
編譯安裝hackrf要確保已經使用apt-get安裝的清理乾淨,使用下面的命令
#apt list | grep hackrf
把搜索出來的結果,使用 apt-get remove 全部刪除。
編譯條件,需要安裝cmake libusb fftw 的開發包。
#apt-get install cmake libusb-1.0-0-dev libfftw3-dev
克隆代碼:
#git clone https://github.com/mossmann/hackrf.git
Prerequisites for Linux (Debian/Ubuntu):
sudo apt-get install build-essential cmake libusb-1.0-0-dev pkg-config libfftw3-dev
Build host software on Linux:
mkdir host/buildcd host/buildcmake 。.makesudo make installsudo ldconfig
2,下載發射程序
#git clone https://github.com/aricwang88/hackrf_WBFM_Transmit.git
準備測試數據源
Option 1: Download or clone the test wave file from github.
git clone https://github.com/aricwang88/hackrf_example_res.git
Option 2: Install ffmpeg or libav-tools to convert the mp3 to wave file.
Search in repository:
apt-cache search libav-toolslibav-tools - Multimedia player, server, encoder and transcoderapt-get install libav-toolsavconv -i mm_didu.mp3 -acodec pcm_s16le -ac 2 -ar 44100 -vol 200 MM_didu.wav編譯
gcc -o HACKRF_WBFM_Transmit HackRF_WBFM_Transmit.c -lm -lhackrformakemake wav
編譯出可執行程序 HACKRF_WBFM_Transmit.
chmod +x HACKRF_WBFM_Transmit./HACKRF_WBFM_TransmitUsage:。/HACKRF_WBFM_Transmit驗證
I also upload the test wave file, please clone from other repository or convert from mp3 by ffmpeg.
。/HACKRF_WBFM_Transmit MM_didu.wavHACKRF WBFM Transmit demo 。..Begin to init hackrf 。..hackrf_init sucessfully!hackrf_open() success.Board ID Number: 2 (HackRF One)Firmware Version: 2015.07.2HACKRF init done.Load wav file:MM_didu.wav(1-4): RIFF (5-8) Overall size: bytes:32360616, Kb:31602 (9-12) Wave marker: WAVE(13-16) Fmt marker: fmt 16 0 0 0(17-20) Length of Fmt header: 16 1 0 (21-22) Format type: 1 PCM 2 0 (23-24) Channels: 2 (25-28) Sample rate: 44100(29-32) Byte Rate: 176400 , Bit Rate:14112004 0 (33-34) Block Alignment: 4 16 0 (35-36) Bits per sample: 16 (37-40) Data Marker: data (41-44) Size of data chunk: 32360580 Number of samples:8090145 Size of each sample:4 bytesApprox.Duration in seconds=183.450211Approx.Duration in h:m:s=0:3:3.450.Valid range for data values : -32768 to 32767 Alloc memory resample done.Alloc memory IQ data done.Alloc memory TX data done.Begin to process data 。..(Please wait about 20 seconds.)Processing: 0.00%Processing: 5.45%Processing: 10.90%Processing: 16.35%Processing: 21.80%Processing: 27.26%Processing: 32.71%Processing: 38.16%Processing: 43.61%Processing: 49.06%Processing: 54.51%Processing: 59.96%Processing: 65.41%Processing: 70.86%Processing: 76.32%Processing: 81.77%Processing: 87.22%Processing: 92.67%Processing: 98.12%IQ data transcode done.Release intermedia memory.Data process done, transmiting 。..
Ctrl+C to stop transmiting.
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴