なぜかWiFiが接続不能になりました。
wlan0が消えています。
ググってみると、OSアップデートでネットワークまわりの大規模な仕様変更があったそうで、ちょっと素人には解決困難っぽいです。悩んでいるよりも、クリーンインストールしたほうが早そうだったので、クリーンインストールにしました。
linuxは、カーネルのソースコードを読めるレベルの方なら、ハマるのもいいですけど、自分のような素人だと、解決策探しに時間かけるより、クリーンインストールが一番早いと思います。ラズパイのハードウェアは商品ではあるけど、ソフトはオープンソース利用なので、Windowsより不具合多め、情報少なめ、しかも情報源はマニアのブログばかり。linux遊びでは、撤退、諦めが肝心です。一旦ハマると無駄に時間かかってしまう。
それと、Linux、ラズパイも、一般的にはハッキング対策で、定期的にOSアップデートをするように進められていますが、目的通り安定動作しているならば、下手にアップデートしないほうがいいかも。Linuxは、Windows Updateのように、単一企業がサポートしてくれるわけではないので、Linuxのアップデートは博打要素あります。トラブル避けるには、安定構成のままイジらないのがベスト。
ということで、最新版Rasipbarry Pi OSで、direwolf受信サーバー構築する方法を、記録のために記事にいたしました。
私のラズパイ:Raspberry Pi 2 Model B Rev 1.1 (ちょっと古いが、このような用途には十分)
RTL-SDR←これは何でもいいですが、自分は、RTL-SDR Blogからの購入品を使っていますが、中華品でも全く問題なく動きます。
OSインストール
のRaspberry Pi Imagerを使用。
操作は超簡単です。
まず、お手持ちのラズパイの種類を選択。そして、希望のOSを選択。
OSは、Raspberry Pi OS (Other)の下の、
Raspberry Pi OS Lite (32-bit) (デスクトップなしのもの)を使用。
SSHでヘッドレスで使いますのでGUI不要。
そういえば、昔はraspbianだったと思うのですが、ポリコレの関係でその名前は辞めたのかな??
Raspberry Pi Imagerが超便利になっていて感動しました。
「設定を編集する」からいろいろ設定できます。
ロケールやキーボードも設定しておくと、コンソールつないだときに助かります。
「サービス」からSSH有効化する必要あります。
これで、ヘッドレスでいきなりSSHできますね。
Micro SDに書き込みします。
windowsにもSSHが最近は入っていますが、自分はchromeのSecure Shellを愛用しています。
尚、ラズパイクリーンインストールで、ラズパイのSSHの公開鍵が変更になっている場合、chromeのSecure Shellは、known_hostsの削除が必要です。オプション→SSHファイル→known_hostsをクリアすればOKです。
また、要注意点として、最新のRaspberry Pi OSでは、固定IPのやりかたが最新版で変更になっています。
昔は、WIFI設定が/etc/wpa_supplicant/wpa_supplicant.confで、
DNSが/etc/resolv.confで、
固定IPが/etc/dhcpcd.confの編集でした。
ところが、上記全てが廃止になっており、代わりに、
/etc/NetworkManager/system-connections/[SSID].nmconnection
で固定IPの設定をするようになっています。
尚、WiFiの設定は、Micro SDカード書き込み時にRaspberry Pi Imagerから行うのが簡単ですが、もしやりわすれた場合は、コンソールからやる場合は、sudo raspi-configのGUIを使うのが簡単です。
こんな感じで、System Optionsを選び、
「S1 Wireless LAN」からSSIDとパスワード設定できます。残念ながら、固定IPの設定はできないようです。
固定IPは、上記の通り、sudo nano で
/etc/NetworkManager/system-connections/[SSID].nmconnection
を編集する必要があるようです。
SSIDのファイルが無いときは、
sudo cp /etc/NetworkManager/system-connections/preconfigured.nmconnection /etc/NetworkManager/system-connections/asus.nmconnection
のような感じで作ればOKです。
[connection]
id=preconfigured
のところは、SSID名に変更する必要があります。
asus.nmconnection の[IPV4]の項目に、希望するIP、ゲートウェイ、DNSなどを書き込むだけです。自分は下記のような感じにしていますが、詳しくはググってください。
設定が終わったら、
sudo nmcli connection reload
sudo nmcli connection up SSIDから付けられているID
で新しいIPに変わります。再起動不要です。
2行目を入力するとハングアップのような状態になってSSHが切れるので、新しいIPで再度SSHしてください。
あと、/etc/rc.localも廃止になっているようです。systemctlを使え、ということらしいです。めんどくせー。
無理やりrc.localを有効化することはできるようです。
(下記のサイトの情報を参考にさせていただきました。https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd)
rc.local有効化方法は以下の通りです。
sudo nano /etc/systemd/system/rc-local.service
で、
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
というようなファイルを作成し、
sudo systemctl enable rc-local
で、/etc/rc.localが実行されるようになるようです。
自分のrc.localは、このような内容です。(sudo chmod +xしてください)
pi@nagano:~ $ cat /etc/rc.local
#!/bin/sh
sudo /home/pi/igate/exewolf.sh
exewolf.sh は以下のようになっており、144.66MHz(1200bps)と144.64MHz(9600bps)のデコードを開始します。
#!/bin/sh
screen -dmS direwolfs12 bash -c 'su - pi -c "rtl_fm -d 0 -f 144.66M -M fm -p 36 -s 24000 -g 42 - | direwolf -t 0 -c /home/pi/igate/sdr.conf -r 24000 -B 1200 -D 1 -"'
screen -dmS direwolfs96 bash -c 'su - pi -c "rtl_fm -d 1 -f 144.64M -M fm -p 36 -s 48000 -g 42 - | direwolf -t 0 -c /home/pi/igate/sdr96.conf -r 48000 -B 9600 -D 1 -"'
尚、標準のRaspberry Pi OSに対して追加しているのは、次の3つのソフトです。
sudo apt-get install rtl-sdrsudo apt-get install direwolfsudo apt-get install screen
簡単に言うと、rtl_fmからパイプで受信音声をdirewolfに流して、direwolfが受信パケットをデコードして、APRS網に流すということをやっています。
ずっとパイプで流すので、ログアウトすると止まってしまいます。そのため、screenという仮想スクリーンソフトを使っています。
このやり方が正しいのは、よくわかりませんが、自分の環境ではこれでうまくいっています。
direwolfの設定ファイルは以下のようになっています。
pi@nagano:~/igate $ cat sdr.conf
ADEVICE null null
CHANNEL 0
MYCALL 7N3RLX-10
IGSERVER asia.aprs2.net
MODEM 1200
AGWPORT 8002
KISSPORT 8003
IGLOGIN 7N3RLX-10 ★★★★ ←これは、APRS登録時のパスワードです
OBEACON sendto=IG DELAY=0:10 EVERY=10:00 OBJNAME=7N3RLX-10 SYMBOL=\& overlay=R lat=36^03.33N long=138^15.45E comment="RX-Only I-Gate 144.66MHz 1200bps"
aprs.fiにビーコン出すところのコマンド(OBEACON)がややこしいですが、それ以外は、マニュアルに書いてあることだと思います。
設定ファイル中、オーディオデバイスがNULLになっているのは、パイプでrtl_fmから音を流してこんでいるためです。サウンドカードは使っていません。
あとは、I-Gateのサーバー設定、モデムのスピード、ログインID・パスワードなどです。
こんな感じで、Raspberry Pi+RTL-SDRで受信専用I-Gateを運用しています。
今回は、Raspberry Pi OSのネットワーク設定の仕様変更やrc.localの廃止などで詰まってしまい時間かかりましたが、それらのロス時間を除外すれば、1時間もあればセットアップできると思います。けっこう簡単です。
尚、AGWTracker(https://www.sv2agw.com/)で、ラズパイのIPアドレスの"AGWPORT"(つまり8002)に接続すると、RTL-SDRがデコードしたパケットを直接画面表示できます。
電波でどんなパケットが受信できているか確認できるので楽しいです。
尚、私で分かることでしたら質問にはお答えいたしますが、これはlinuxですので、さすがに、「ssh、ポートってなんですか」、というレベルだと、さすがに難しいと思います。
いきなりdirewolfに挑戦するのではなく、ごく普通のLinuxの入門書で、Apache2やNginxでローカルWEBサーバー遊びしたり、sambaで自作NAS作ったり、みたいな感じの普通のlinux遊びからスタートするのがおすすめです。
ひととおり、普通のネットワーク構築ができるようになってから、次には、RTL-SDRでFMラジオとかを聞いてみて、その次にdirewolfに挑戦っていうのがステップとしてはちょうどいいかと思いました。