PPC Macでrtl-sdr

macportsからinstallして、

[~/src/macports]rtl_test
Found 1 device(s):
  0:  Generic, RTL2832U, SN: 77771111153705700
Using device 0: Generic RTL2832U
No supported tuner found	

FC0012 tunerが見つかりません。
gitのソースで試します。
エラーが出るので修正します。
src/rtl_test.c

        struct timespec ts;
#ifdef __unix__
        rv = clock_gettime(CLOCK_MONOTONIC, &ts);
        tg->tv_sec = ts.tv_sec;
        tg->tv_nsec = ts.tv_nsec;
#elif __APPLE__
        struct timeval tv;
        rv = gettimeofday(&tv, NULL);
        ts->tv_sec = tv.tv_sec;
        ts->tv_nsec = tv.tv_usec * 1000;
#endif
        return rv;

ts->をtg->に変更します。これで無事コンパイルできました。

追記 2018.03.25
macportsもupdateされて動くようになりました。
ただ上記部分のパッチが

diff --git a/src/rtl_test.c b/src/rtl_test.c
index 42d2c94..8009c6e 100644
--- a/src/rtl_test.c
+++ b/src/rtl_test.c
@@ -162,8 +162,8 @@ static int ppm_gettime(struct time_generic *tg)
 	struct timeval tv;
 
 	rv = gettimeofday(&tv, NULL);
-	ts->tv_sec = tv.tv_sec;
-	ts->tv_nsec = tv.tv_usec * 1000;
+	ts.tv_sec = tv.tv_sec;
+	ts.tv_nsec = tv.tv_usec * 1000;
 #endif
 	return rv;
 }

tsに代入しても直後にreturnしてどこにも使っていないし、
__unix__定義された場合の動作と異なっていますがいいのかな?

追記 2018.05.14
gitのソースが上記の修正されました。
やぱっりMacPortsのパッチは間違ってうたようです。

commit c403ef0bc1e3ac586495ad0338c56f47e2026b20
Author: Steve Markgraf 
Date:   Thu Apr 26 23:51:15 2018 +0200

    rtl_test: fix build on Mac OS
[rtl-sdr/rtl-sdr/build]/usr/local/bin/rtl_test
Found 1 device(s):
  0:  Generic, RTL2832U, SN: 77771111153705700
Using device 0: Generic RTL2832U
Found Fitipower FC0012 tuner
Supported gain values (5): -9.9 -4.0 7.1 17.9 19.2 
Sampling at 2048000 S/s.

チューナが認識されています。
git logで確認すると

commit 4520f001d85f01d051eaa42af7b18b6ef0837e14 
Author: Steve Markgraf 
Date:   Tue Feb 20 22:09:56 2018 +0100

    lib: fix FC0012 reset GPIO
    
    Since a typo in rtlsdr_set_gpio_output() was fixed,
    FC0012 tuners were not detected anymore, as the reset pin
    is actually 4, not 5.
    
    Thanks to David Basden et al for reporting the bug.

    Signed-off-by: Steve Markgraf 

で修正されたようです。
macportsは、
commit b04c2f9f035c5aede43d731e5d58e4725d2f8bb4
Author: Hoernchen
Date: Tue Sep 19 19:23:00 2017 +0200
です。

FM放送を受信してみます。

[rtl-sdr/rtl-sdr/build]/usr/local/bin/rtl_fm -f 77.8M -s 32k -M wbfm> 0.out
Found 1 device(s):
  0:  Generic, RTL2832U, SN: 77771111153705700
Using device 0: Generic RTL2832U
Found Fitipower FC0012 tuner
Tuner gain set to automatic.
Tuned to 78071000 Hz.
Oversampling input by: 6x.
Oversampling output by: 1x.
Buffer size: 8.03ms
Exact sample rate is: 1020000.026345 Hz
Sampling at 1020000 S/s.
Output at 170000 Hz.

出来上がったファイルをspwaveで再生出来ました。
-s 32kは、spawaveで対応しているサンプリング周波数
最初は-M wbfmを指定していなかったので、うまく再生出来ませんでした。
spwaveの読み込みは
フォーマット raw
ビット/サンプル 16
サンプリング周波数 32000
チャンネル数 1
で再生出来ました。
ハード的には使える事が判ったので、本格的なアプリをinstallしてみます。

Error: SDRplay cannot be installed for the configured build_arch ‘ppc’ because it only supports the arch(s) ‘x86_64’.
Error: gqrx cannot be installed for the configured build_arch ‘ppc’ because it only supports the arch(s) ‘i386 x86_64’.

どちらもPPCは、対象外のようです。

soxをinstallして直接再生してみます。

/usr/local/bin/rtl_fm -f 77.8M -r 32k -M wbfm -E deemp| play -t raw -r 32k --encoding signed-integer -b 16 -c 1 -
Found 1 device(s):
  0:  Generic, RTL2832U, SN: 77771111153705700
Using device 0: Generic RTL2832U
-: (raw)
 File Size: 0         
  Encoding: Signed PCM    
  Channels: 1 @ 16-bit   
Samplerate: 32000Hz      
Replaygain: off         
  Duration: unknown      
In:0.00% 00:00:00.00 [00:00:00.00] Out:0     [      |      ]        Clip:0    Fo

FM放送には、プリエンファシスがかかっているので-E deempを追加しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です