SDR羽田支局開設へ向けて(試作版)

はじめに

NACK5リスナーの皆様が東京圏のFMラジオを日本全国、そして端末を選ばすいつでも聴けるそんな支局があればいいんじゃないかと思いこのプロジェクトを立ち上げました。SDR(ソフトフェア無線)が少しでも身近な物になって頂ければと思います。

STiNCへ備忘録を兼ねて記事を掲載させていただきます。

構成

構想自体はかなりまえからあったものの、試作を始めるまでに時間がたってしまいました。

一旦LAN内での稼働するシンプルな構成で作成しています。

  • RTL-SDR V4
  • Raspberry Pi 4(Ubuntu Server 24.04.4 LTS 64bit)
  • アンテナ
  • PC

初期設定

Raspberry Pi ImagerでOSのインストールを行います。SSH、固定IP、UFWの初期設定は割愛させて頂きます。便利ツールたちも入れておきます。

user:~$ sudo apt install -y vim curl wget git htop net-tools usbutils

RTL-SDRのインストール

user:~$ sudo apt install -y rtl-sdr librtlsdr-dev #インストール
user:~$ rtl_test -t #SDRを認識していると下記のような表示が出ます。
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

ブラックリストの設定

デフォルトドライバと競合するため、無効化を行います。

user:~$ echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/blacklist-rtl.conf

一般ユーザでも使えるようにして、再起動。

user:~$ sudo modprobe -r dvb_usb_rtl28xxu
user:~$ sudo reboot

ffmpegのインストール

user:~$ sudo apt install -y ffmpeg
user:~$ ffmpeg -version #確認

nginxのインストール

user:~$ sudo apt install -y nginx
user:~$ sudo systemctl status nginx #確認

HLS出力ディレクトリの作成

user:~$ sudo mkdir -p /var/www/html/hls
user:~$ sudo chown $USER:$USER /var/www/html/hls

配信スクリプト

user:~$ nano /etc/nginx/sites-available/radio
FREQ="80.0M"
GAIN=40
HLS_DIR="/var/www/html/hls"
SEGMENT_TIME=4
LIST_SIZE=10

rm -f ${HLS_DIR}/*.ts ${HLS_DIR}/*.m3u8

rtl_fm -f ${FREQ} -M wbfm -s 200000 -r 44100 -g ${GAIN} - | \
ffmpeg -re \
  -f s16le -ar 44100 -ac 1 -i pipe:0 \
  -c:a aac -b:a 128k -ar 44100 \
  -f hls \
  -hls_time ${SEGMENT_TIME} \
  -hls_list_size ${LIST_SIZE} \
  -hls_flags delete_segments \
  -hls_segment_filename "${HLS_DIR}/seg%05d.ts" \
  "${HLS_DIR}/stream.m3u8"

権限付与

chmod +x ~/radio_stream.sh

ブラウザ又はVLC(メディア→ネットワークストリームを開く)で

http://(サーバーのIP):8080/hls/stream.m3u8

上記へアクセスでとりあえず聞けます。

コメント