HackRF Oneのhost softwareをWindowsでbuildしようとしたのですが,
いろいろと嵌ったので,メモを残しておきます.
公式の手順はこちら.あっさりしすぎ.
HackRF: How to build host software on Windows
まずは,MinGWをインストールします.
MinGW: mingw-get-setup.exe (2013-10-04)
インストール先はC:\MinGWを選びます.
(クリックで拡大)
Basic Setupからは,以下のパッケージを選択しました.
mingw-developer-toolkit
mingw32-base
mingw32-gcc-g++
msys-base
(クリックで拡大)
pthreadsも忘れずにインストールします.
(クリックで拡大)
パッケージの選択が完了したら,InstallationメニューからApply Changesをクリックし,
インストールを開始します.
(クリックで拡大)
さて,ここでMinGWのインストールの確認のためにgccを実行してみると,
ドライブにディスクがありませんと警告がでます.
(クリックで拡大)
どうやら,MinGWのパッケージに含まれるgccは,まずはEドライブを探しに行くようです.
実行環境によっては,Eドライブが存在しないために,この警告が出てしまいます.
MinGWのフォーラムにバグとして報告されているのですが,去年の12月から動きがありません.
MinGW: No Disk error when running g++ from cmd/tcc while a card reader with empty slots is connected
Windows版のgccの開発は,MinGW-w64にシフトしたようなので,こちらをインストールします.
MinGW-w64: mingw-w64-install.exe (2014-10-30)
設定はとりあえずデフォルトで.インストール先はC:\mingw-w64にしています.
(クリックで拡大)
次に,CMakeをインストールします.
CMake: Win32 Installer (cmake-3.1.0-rc2-win32-x86.exe)
インストール先のフォルダはC:\CMakeを選びます.PATHは後から追加します.
(クリックで拡大)
これで開発ツールは整いました.環境変数のPATHに以下の順番でフォルダを追加します.
C:\CMake\bin;C:\mingw-w64;C:\MinGW\bin;C:\MinGW\msys\1.0\bin
つづいて,libusbxをダウンロードして,C:\libusbx-1.0.18-winへ展開します.
libusbx: libusbx-1.0.18-win.7z (2014-01-25)
最後に,HackRFのパッケージをダウンロードして,C:\hackrfへ展開します.
HackRF: hackrf-2014.08.1.zip (2014-08-28)
これでbuildに必要なパッケージがすべて揃いました.
Windowsのアクセサリからコマンドプロンプトを起動し,以下の手順でhost softwareをbuildします.
>cd C:\hackrf\host
>mkdir build
>cd build
>cmake ../ -G "MSYS Makefiles" -DLIBUSB_INCLUDE_DIR=C:\libusbx-1.0.18-win\include\libusbx-1.0 -DLIBUSB_LIBRARIES=C:\libusbx-1.0.10-win\MinGW32\dll\libusb-1.0.dll
>make
こでれ,HackRFのツールとライブラリがbuildされます.
ツールの実行に必要な以下のファイルを一式,C:\hackrf\binにコピーします.
C:\MinGW\bin\pthreadGC2.dll
C:\libusbx-1.0.18-win\MinGW32\dll\libusb-1.0.dll
C:\hackrf\host\build\libhackrf\src\libhackrf.dll
C:\hackrf\host\build\hackrf-tools\src\hackrf_info.exe
C:\hackrf\host\build\hackrf-tools\src\hackrf_transfere.exe
HackRFのUSBドライバのインストールには,zadigを使用します.
zadig.akeo.ie: zadig_v2.1.1.exe (2014-11-30)
HackRFをUSBポートに接続し,zadigを実行します.
デバイスにHackRF Oneを選び,WinUSBをインストールします.
(クリックで拡大)
デバイスマネージャーを開くと,Universal Serial Bus devicesとして
HackRF Oneが認識されています.
(クリックで拡大)
コマンドプロンプトからhackrf_infoを実行すると,無事にHackRF Oneが見つかりました.
(クリックで拡大)
ubuntuと同様に,まずはファイル書き込みなしで受信データの転送を確認します.
Linuxの/dev/nullは,Windowsではnulになります.(nullではないので注意.)
>hackrf_transfer.exe -r nul -f 1575420000 -s 2600000 -n 260000000 -g 30 -l 40 -a 0
データ転送は問題ないようですが,実行停止の際にエラーが発生します.
これは,HackRFのページでもNote for Windows buildとして言及されていますが,
コマンドプロンプトを使っても解決しない?
とりあえず,WindowsからでもHackRF Oneが動きそうなので,
taro君のGNSS-SDRLIBに繋いでみよう.
taroz: GNSS-SDRLIB
いろいろと嵌ったので,メモを残しておきます.
公式の手順はこちら.あっさりしすぎ.
HackRF: How to build host software on Windows
まずは,MinGWをインストールします.
MinGW: mingw-get-setup.exe (2013-10-04)
インストール先はC:\MinGWを選びます.
![](https://blogimg.goo.ne.jp/user_image/77/f4/5bd230b93eb1718357cfd05095f57331.png)
Basic Setupからは,以下のパッケージを選択しました.
mingw-developer-toolkit
mingw32-base
mingw32-gcc-g++
msys-base
![](https://blogimg.goo.ne.jp/user_image/16/ad/def6ad68cf42734aa52d8772ba123388.png)
pthreadsも忘れずにインストールします.
![](https://blogimg.goo.ne.jp/user_image/52/d9/5b78792cfe44ad63d7de58b965d9c1b2.png)
パッケージの選択が完了したら,InstallationメニューからApply Changesをクリックし,
インストールを開始します.
![](https://blogimg.goo.ne.jp/user_image/48/77/a497717acb8f0bc2836529e33605bafb.png)
さて,ここでMinGWのインストールの確認のためにgccを実行してみると,
ドライブにディスクがありませんと警告がでます.
![](https://blogimg.goo.ne.jp/user_image/5a/d4/a4bcd42301c8a6f6d3b83743eded647a.png)
どうやら,MinGWのパッケージに含まれるgccは,まずはEドライブを探しに行くようです.
実行環境によっては,Eドライブが存在しないために,この警告が出てしまいます.
MinGWのフォーラムにバグとして報告されているのですが,去年の12月から動きがありません.
MinGW: No Disk error when running g++ from cmd/tcc while a card reader with empty slots is connected
Windows版のgccの開発は,MinGW-w64にシフトしたようなので,こちらをインストールします.
MinGW-w64: mingw-w64-install.exe (2014-10-30)
設定はとりあえずデフォルトで.インストール先はC:\mingw-w64にしています.
![](https://blogimg.goo.ne.jp/user_image/0a/13/748fb6e865d3053e701abe94c3478101.png)
次に,CMakeをインストールします.
CMake: Win32 Installer (cmake-3.1.0-rc2-win32-x86.exe)
インストール先のフォルダはC:\CMakeを選びます.PATHは後から追加します.
![](https://blogimg.goo.ne.jp/user_image/58/44/bbac66d1e2bfcda8390398dfb350f9b2.png)
これで開発ツールは整いました.環境変数のPATHに以下の順番でフォルダを追加します.
C:\CMake\bin;C:\mingw-w64;C:\MinGW\bin;C:\MinGW\msys\1.0\bin
つづいて,libusbxをダウンロードして,C:\libusbx-1.0.18-winへ展開します.
libusbx: libusbx-1.0.18-win.7z (2014-01-25)
最後に,HackRFのパッケージをダウンロードして,C:\hackrfへ展開します.
HackRF: hackrf-2014.08.1.zip (2014-08-28)
これでbuildに必要なパッケージがすべて揃いました.
Windowsのアクセサリからコマンドプロンプトを起動し,以下の手順でhost softwareをbuildします.
>cd C:\hackrf\host
>mkdir build
>cd build
>cmake ../ -G "MSYS Makefiles" -DLIBUSB_INCLUDE_DIR=C:\libusbx-1.0.18-win\include\libusbx-1.0 -DLIBUSB_LIBRARIES=C:\libusbx-1.0.10-win\MinGW32\dll\libusb-1.0.dll
>make
こでれ,HackRFのツールとライブラリがbuildされます.
ツールの実行に必要な以下のファイルを一式,C:\hackrf\binにコピーします.
C:\MinGW\bin\pthreadGC2.dll
C:\libusbx-1.0.18-win\MinGW32\dll\libusb-1.0.dll
C:\hackrf\host\build\libhackrf\src\libhackrf.dll
C:\hackrf\host\build\hackrf-tools\src\hackrf_info.exe
C:\hackrf\host\build\hackrf-tools\src\hackrf_transfere.exe
HackRFのUSBドライバのインストールには,zadigを使用します.
zadig.akeo.ie: zadig_v2.1.1.exe (2014-11-30)
HackRFをUSBポートに接続し,zadigを実行します.
デバイスにHackRF Oneを選び,WinUSBをインストールします.
![](https://blogimg.goo.ne.jp/user_image/19/eb/a9ab15c3285cbea5ad41c569634b248d.png)
デバイスマネージャーを開くと,Universal Serial Bus devicesとして
HackRF Oneが認識されています.
![](https://blogimg.goo.ne.jp/user_image/35/1e/b456007e41bbe1a1b9fb0ea46b3b5b5c.png)
コマンドプロンプトからhackrf_infoを実行すると,無事にHackRF Oneが見つかりました.
![](https://blogimg.goo.ne.jp/user_image/39/f6/21ddec21b13090846f96586e080e49c2.png)
ubuntuと同様に,まずはファイル書き込みなしで受信データの転送を確認します.
Linuxの/dev/nullは,Windowsではnulになります.(nullではないので注意.)
>hackrf_transfer.exe -r nul -f 1575420000 -s 2600000 -n 260000000 -g 30 -l 40 -a 0
データ転送は問題ないようですが,実行停止の際にエラーが発生します.
これは,HackRFのページでもNote for Windows buildとして言及されていますが,
コマンドプロンプトを使っても解決しない?
とりあえず,WindowsからでもHackRF Oneが動きそうなので,
taro君のGNSS-SDRLIBに繋いでみよう.
taroz: GNSS-SDRLIB