IRLP構築日記

2013年7月 6日 (土)

PiRLPノードのSDカードバックアップ

Raspberry Piは,SDカードをHDDの代わりに使用していますので,以前のPCベースのIRLPノードのように backup_for_reinstall をしなくても,SDカードそのもののクローンを作っておけば,それを差し替えるだけで全く同じように動作します。万が一の場合のノード復旧が大幅に簡略化されますので,おすすめです。

SDカードのクローンは,Windows PCでは Win32 Disk Imager,Linux であれば dd コマンドを使って簡単に作ることができます。(Raspberry Pi以外の別PCで行います。もちろんSDカードスロット付きPCか,無ければUSBアダプターを用意する必要あります。)

ただし注意点が一点。

SDカードはたとえ同じメーカー,同じ容量のもので揃えたとしても,個々に微妙な容量の差があるようです。もし,オリジナルのSDカードの容量が,クローン用のSDより微妙に大きい場合,上記ツールだけではうまくクローンを作れません。コピー先容量不足のエラーが出ます。特に,Raspeberry Piインストール後,raspi_configを使ってSDカードの容量をフルに使うような設定をした場合,こうなる可能性が高くなります。

このような場合には,クローンを一サイズ上のSDカードに作るか(4GBなら8GB,8GBなら16GB),あるいはオリジナルSDカード上のlinuxファイルシステムとそのパーティションを少し縮小する必要が出てきます。

後者のlinuxファイルシステムとパーティションの縮小は,GPartedというフリーツールで簡単に行う事ができます。Live CDを利用すれば,このCDからブートしますので,どのPCでも利用可能。しかし,後述の理由から,別PCはLinuxを使った方が良いと思います。

RaspbianのSDカード上には,FAT16の小さめのブートパーティションと,ext4の大きいlinuxパーティションの2つが作られています。(以下は fdisk の出力。)

Number  Start      End       Size      Type     File system  Flags

1        4194kB  62.9MB  58.7MB  primary   fat16             lba

2        62.9MB  3806MB 3743MB  primary   ext4

GPartedを使って,ブートパーティションの方は一切触らずに,linuxパーティションだけを少々(例えば200MB位。)減らしてあげます。その際,linuxパーティションの始めのfree spaceはいじらず(スタート位置はそのままに),後ろのfree spaceが増えるように(後ろから減らすように),全体サイズを減らします。Gpartedは,ファイルシステムとパーティションの両方を同時に減らしてくれますので,これだけでOK。

その後,Linux上で dd コマンドを使ってクローンを作ります。

dd bs=1M if=/dev/sdx of=/tmp/sdcard.img (オリジナルSDイメージをPCにコピー。その後SDカードを入れ替えます。)

dd bs=1M if=/tmp/sdcard.img of=/dev/sdx (上でコピーしたオリジナルイメージをクローンにコピー。)

(sdxxは,使うPC環境で変わります。)

2番目のddで(クローンに書込む時に)やはり容量不足のエラーが出るかも知れませんが,それは無視して最後まで続行します。エラーが出たときには,必要な部分は全てコピーが済んでいます。残念ながらWindows上のWin32 Disk Imagerではエラーが生じた時点でコピーが停止してしまってうまく行かないようです。

| | コメント (2) | トラックバック (0)

2013年6月 9日 (日)

PiRLPネットワークが不安定だった原因

無線LAN,有線LANともに,どうもネットワークが不安定で,ノードやリフレクターにうまく接続できない現象があったのですが,RFの回り込みが原因のようです。外部アンテナではなく,室内アンテナを利用していたのですが,試しにダミーロードに変えてみたら不安定さが全くなくなりました。Raspberry Pi本体がシールドされておらず,さらに無線機の近くに置いているからでしょうね。いよいよ無線機をQRPのハンディートランシーバーにすべき時が来ましたか。

| | コメント (0) | トラックバック (0)

PiRLPノードを無線LANで使う

無線LANを利用することでさらにPiRLPノードをコンパクトに作ることができます。

私の使っている無線LAN子機はUSBタイプ,BUFFALO社製のWLI-UC-GNM2で,1,000円しないものです。

S20130329_233758

基本的にこれをUSBに挿せば,OSはデバイスを認識します。しかし,このままでは動作しません。/etc/network/interfaces ファイルを以下のように書き換えます。

【想定】
  • 無線LAN子機はOSに wlan0 として認識されている。(子機を1個しか挿していなければwlan0です。iwconfigコマンドで確認できます。)
  • 親機はステルスモード。
  • DHCP利用。
  • 認証,暗号化方式は,WPA2-PSK/AES。
以下が,/etc/network/interfacesファイルの内容です。

auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "SSID"   <-- " "の中には,SSIDを指定します。
wpa-scan-ssid 1   <-- 親機がステルスモードの場合には 1。
wpa-proto RSN    <-- WPA2の場合
wpa-pairwise CCMP <-- AESの場合
wpa-group CCMP   <-- AESの場合
wpa-key-mgmt WPA-PSK   <-- WPA2-PSKの場合
wpa-psk "keyword"   <-- " "の中には,WPA2-PSKのキーワードを指定します。

これで再起動してみましょう。うまくインターネットに接続されたら,IPアドレスを確認して,通常どおりルーターにport forwardingを設定しましょう。

| | コメント (0) | トラックバック (0)

2013年4月23日 (火)

PiRLP (= Raspberry Pi IRLP) 構築完了

今はやりの Raspberry Pi を使ったIRLPノードを構築しました。小型軽量エコ低コストです。何とPC電源は携帯電話の充電器です これでノード無線機をハンディーにすればかなりのミニIRLPノードができますね。

Img_0231_2

↑左のボードがおなじみIRLP V3 ボード,右がRaspberry Piです。
サウンドはUSB,Raspberry PiのGPIO端子からリボンケーブルでIRLPボードのパラレルポートに接続しています。IRLPボードも3.3V駆動にするための簡単な改造を施し,Raspberry Piからのリボンケーブルで電源供給していますので5Vの別電源不要です。私はWireless LANにしましたので,LANケーブルもありません。かなり簡素化できています。

Img_0228_2

↑IRLPノードとしてはこれだけです(いや,無線機用電源とPC用携帯充電器が写ってませんね)。今は無線機が一番でかくて電気喰ってます

| | コメント (4) | トラックバック (0)

2012年1月 1日 (日)

2012 IRLP New Year QSOパーティ

明けましておめでとうございます。
今年のIRLP New Yearパーティーは残念ながら参加できませんでした。どうもネットワークの調子が悪いのです。受信音声が頻繁に途切れて実用に耐えません。またIRLPに接続中は他のPCのネット速度が極端に落ちます。インターネット回線は問題ないと思われますので,最近変えたWiFiルーターが原因かも知れません。正月休み中に見てみます。
    ↓↓↓
このWiFiルーターはBUFFALO製なのですが,その説明書を良く見てみたら,ムービーエンジンという動画サイトをきれいに再生させる機能が入っていることがわかりました。これをOFFにしてみたら,あっけなく問題解消しました。他PCでのネット速度も問題ありません。大げさな話にならず助かりました。(ちなみに,IRLPノードはWiFiではなく有線でこのルーターにつないでいます。)

最近IRLPノードはめったに立ち上げないので,この問題には今まで全く気が付きませんでした。時々使わないとダメですね。

| | コメント (0) | トラックバック (0)

2011年8月 7日 (日)

IRLP*Me

iPhone/iPad用アプリケーションです。GPSを使って近くのIRLPノードを探してくれます。

| | コメント (0) | トラックバック (0)

2011年7月16日 (土)

IRLPネイティブのIDプログラム

2011年6月中旬から,IRLPシステムそのものにIDを送信する(CWや音声等で自ノードコールサインを自動送信する)プログラムが追加されました。IRLPの自動アップデート機能により,世界中の全てのノードに追加されているはずです。

IDプログラムは何年も前から最も要望の多かったプログラムで,過去にも色々な局がアドオンプログラムを開発してきました。まぁ,やっとIRLPシステムに入ったか,という若干時期はずれの感もありますね。私自身はKK7AV開発のcwtimerというプログラムが気に入って使っています。

さて,今回ネィティブで追加されたIDプログラムですが,プログラム自体は

$SCRIPT/interval_id

です。IDの種類は,自動生成のCWと,自由なwavファイルを選べます。

使う前に,$CUSTOM/rc.irlpファイルと$CUSTOM/environmentファイルを以下のように編集します。(両ファイルともに,rootで編集する必要があります。)

$CUSTOM/rc.irlp

以下を追加。ファイル中のどこでも良いですが,一番最後が良いでしょう。

if [ "$USE_INTERVAL_ID" = "YES" ] ; then
echo -n "Starting the Interval ID script... "
killall interval_id >/dev/null 2>&1
sleep 3
/bin/su - -c "$SCRIPT/interval_id" repeater >&/dev/null 2>&1 &
echo "(put in background) done!"
fi

上を追加することで,$CUSTOM/environmentファイルの中で,USE_INTERVAL_ID=YESとすると,ノード起動時にinterval_idプログラムをバックグラウンドで自動実行します。

$CUSTOM/environment

以下を追加。ファイルのどこでも良いですが,
  #==== you should not have to edit anything below =============
の直前(上)が良いでしょう。

export USE_INTERVAL_ID=YES
export VOICE_ID_FILE="/home/irlp/custom/voice_id.wav"
export ID_PTT=AUX1
export ID_INTERVAL=600
export ID_MIX=YES
export MORSE_TEXT="VE7LTD"
export MORSE_SPEED=FAST
export MORSE_PITCH=800
export MORSE_VOLUME=30

  • USE_INTERVAL_ID=YESにすると,このIDプログラムを使用します。NOなら使用しません。
  • VOICE_ID_FILEに,実際に存在するwavファイルを指定すると,そのファイルを再生します。ここにファイルが指定されていても,実在しなければCWが自動生成になります。
  • ID_PTTには,PTTオンの為にPTT端子を使うか,AUX1端子を使うかを指定します。お勧めはAUX1端子です。しかしAUX1端子を使う場合には,PTT端子をAUX1端子が電気的にショートされていなければなりません。
  • ID_INTERVALは,ID間隔を秒で指定します。
  • ID_MIX=YESは,ノード無線機が何か送信している時でも,その信号に重ねてIDを送出します。サウンドカードがmixer機能をサポートしていなければなりません。もし,サウンドカードがmixer機能をサポートしていないにもかかわらず,YESにするとID送出時に"/dev/dsp: Device or resource busy"のようなエラーが出ます。その場合にはNOにします。
  • MORSE_TEXTには,CWで送出するコールサインを指定します。ここに指定が無い場合には,環境変数の$CALLSIGNが使われます。
  • MORSE_SPEEDにはCW送出速度を,SLOW (5wpm), MEDIUM(8wpm), FAST(15wpm), FASTEST (30wpm)から指定します。指定が無い場合,指定が無効の場合にはFASTになります。
  • MORSE_PITCHには,CWトーン周波数を300~3000Hzの範囲で指定します。指定無い場合,指定が無効の場合には800が使われます。
  • MORSE_VOLUMEには,CW音量を1~100%の範囲で指定します。指定無い場合,指定が無効の場合には,30が使われます。

ID_PTTについて補足します。お勧めはAUX1ですが,DB9コネクタ内でPTT端子とAUX1端子を電気的にショートする必要があります。隣同士のピンをショートするだけで簡単にできますから,もしAUX1を他の用途に使っていなければお勧めです。このプログラムだけでなく,多くのIDプログラムでもAUX1を使うことが推奨されています。

それでは,なぜPTT端子ではなくAUX1端子が良いのでしょうか。

PTT端子とAUX1端子を電気的にショートすることによって,プログラムはPTT端子オン(keyコマンド)だけではなく,AUX1端子をオンにする(aux1onコマンド)ことで無線機をkeyupすることができます。

PTT端子はIRLPシステムそのものが無線機をkey/unkeyするために使っています。もしIDプログラムも同じPTT端子を使ってID送出したらどうなるでしょうか。

ノードが他ノードにコネクトされており,自ノードが送信中の場合を考えます。その時IRLPは前述のようにPTT端子を使って無線機を送信状態にしています。そこでIDのタイミングが来てIDが送出されるとします。ID送出のためにPTT端子オンにしても,すでにオンになっています。これは問題ありません。しかし,

  1. ID送出中に,コネクト先の相手が話すのをやめ受信に移った。(IRLPシステムがPTTオフ)
  2. コネクト先の相手がまだ話しをしているのに,ID送出が終了した。(IDプログラムがPTTオフ)

いずれの場合もPTTはオフになり,無線機は送信をやめてしまいます。1.の場合には,IDが途中で終了してしまいますし,2.の場合には相手の話が途中で切られてしまいます。

つまり,2つのプログラムが一つのPTTを勝手にオン,オフしまうことで不都合が生じてしまうわけです。

そこでPTT端子はIRLPシステムがコントロール,AUX1端子は他のアドオンプログラムがコントロールするようにすることで Wired ORとなり,両方がオフの時のみ無線機PTTがオフにできます。このようにすることで,上記のような他方によってもう片方が切られてしまうような状況を回避できるわけです。

| | コメント (0) | トラックバック (0)

2011年7月10日 (日)

IRLPノード構築のお手伝い

この金曜夜は,クラブの古いIRLPノードを引き継いだが,Linuxの知識もIRLPの知識もないという方のお手伝いをしてきました。

そのシステムは,IRLP Version 2 ボード(初めて見ました),RedHat OS,386CPUでした。うまく動作しているのですが,CW IDプログラムを追加したいがよくわからないとのこと。私もあまりに古いシステムですとわからない所がありますし,誰がどのようにいじっているかわからない。この機会にとお勧めしたのは,PCを少々新しくして,CentOS4ベースの最新のIRLPにすること。その方の手持ちの,これまた古いけど今までよりはほんのちょっと新しいPCを使ってIRLP再構築することにしました。

金曜昼に連絡をもらってすぐにIRLP公式ページからOS+IRLPのインストールCDイメージをダウンロード,CDに焼き,夕方終業後そのままオンサイト サポートに赴きました。

ネットワークの設定や,ルーターのポート転送,既存IRLPのバックアップなど,自分の環境ならすぐにできることも,他人の環境ですとなかなか手こずります。

新OSインストール,無線機接続,オーディオ調整,など諸々終了したのが10時過ぎでした。

久しぶりのIRLP再構築という作業は色々思い出しながらの作業で楽しかった。おかげでとても感謝され,その方とも新しく友人になれました。とても良い週末の夜でした。

| | コメント (0) | トラックバック (0)

2011年6月 2日 (木)

sshリモートログイン認証問題の続き

昨日の続きです。

この問題をIRLPメーリングリストで聞いたところ,/home/irlp ディレクトリは775で正しいらしい。というのは,repeaterユーザーだけでなく他のユーザーもこの下のディレクトリにアクセスするからとのこと。以前から775だったようです。

では何でこの問題が最近になって始めたのでしょうね。何かの拍子にOSをアップデートしてしまったのかな。今となってはわかりません。同じ問題が最近出た他局もいました。

この情報と同時に,MLから問題の回避方法をアドバイスもらいました。ssh_configファイルの中に,StrictModes という項目があって,これを no にセットするとディレクトリのパーミッションを見ないようにすることができるとのこと。

早速試してみたところ,鍵ファイルを /home/irlp/.ssh に,そして/home/irlpが775であっても認証されるようになりました。まぁ,これはIRLPの問題ではなく,純粋なLinuxの話ですね。

問題解決。

| | コメント (0) | トラックバック (0)

2011年6月 1日 (水)

sshリモートログインで認証の問題

私のIRLPノードPCはCentOS5.5機ですが,ディスプレイも無ければキーボードも無いダルマ状態です。必要な時は,ウィンドウズPCからVNCやputtyを使ってリモートログインして管理しています。

震災以来節電の為ノードを落としているのですが,今日は久しぶりに電源ONしてみました。たまには動作確認したいのと,長くIRLPサーバーにアクセスしないとPGPキーが消されてしまう可能性もありますから。

さてノードPCを起動して,いざputtyからリモートログインしようとしたら認証で失敗してつながらない。VNCではうまく行きます。

私は,puttyはパスワード認証ではなく鍵認証で使っています。パスワードを入力する必要がないので便利ですし,より安全です。鍵自体と sshd.config に問題なければこの鍵認証で失敗する原因は大体決まっていて,ノードPC側の鍵ファイル自体のパーミッション属性と,鍵を置いてあるディレクトリの上位ディレクトリまで含めたパーミッションです。

鍵ファイル自体は600,鍵を置くディレクトリ(.ssh)は700,そして.sshの上位ディレクトリにはユーザー以外のwriteパーミッションが入っていてはいけません(よって,755が一般的)。

ということで確認したところ,鍵ファイルである authorized_keys とそれをおく /home/irlp/.ssh ディレクトリはOK。しかし,その上位である /home/irlp ディレクトリのパーミッションが 775 になっていました。つまり g+w になっているのです。/home下のディレクトリが775っておかしいなと思いながら手動で700に変更したところ,バッチリputtyで認証できました。

ところが,これで直ったと思いきや,ノードPCを再起動したらまた同じ状態 /home/irlp が775 に戻ってしまったのです。

これには頭を悩ましました。Linuxの仕組みのどこかで再起動時にパーミッションを変えているのか,それともIRLPか。Linux自体がそんなことしたかなと思いながら,あちこち見てもやはりそんなことをやっているような所はない。ではIRLPかと,また色々調べるが少なくとも明示的に chmod 775 みたいなことをやっているところはない。

そんなこんなで,いろいろ見てみた結果 /home/irlp/rc.irlp を実行してみてやっとIRLPが自分で775に戻していることがわかりました。

じゃ,この中の何がやっているのだろう。で,さらにいじっていると,ここから呼ばれている update files コマンドが変えていることがわかりました。

update files は,世界中のノードのIRLP関連ファイルを常に最新に維持するために,サーバーとファイルを同期するコマンドです。これが /home/irlp ディレクトリ下のファイルだけでなく,このディレクトリのパーミッションまでサーバーと同期しているようです。サーバでのパーミッションが775になっているのですね。これが理由があってそうしているのかは不明です。しかし以前はこの問題が起きていなかったことを考えると,最近このように変更が入ったのだろうと思います。

さて,こうなるとSSH鍵認証の問題解決は難しくなる。仕方ないので,公開鍵を置くディレクトリを /home/irlp 外にして勝手にパーミッションが変わらないようにすることで問題を迂回しました。

どうして /home/irlp が775なのかなぁ。

| | コメント (0) | トラックバック (0)

より以前の記事一覧