Perl CPAN更新溜まってた
Perl の CPAN モジュールが溜まってた。
過去メモに沿って、更新
(( アップデート可能なモジュールを一覧 )) # perl -MCPAN -e 'CPAN::Shell->r' (( 全部をアップデート )) # perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
EdgeRouter-X EdgeOS v2.0.6
Edgerouter-X の最新 OS EdgeOS v2.06 が 7/17 より公開となっていたので、更新。
WiFi中継器の先につながる有線デバイス
WiFiルータの更新で、WEX-733Dを再利用した。
WiFi-router – – – WEX733D=(ether)-REGZA+Raspberry-Pi
当初、中継器WEX 733D の先につながる TV,ラズパイが最初は繋がっていたけど、接続が切れる。確認をしてみると、ルータ配下から中継器の先のデバイスは、どれも中継器のMACアドレスに見える。このため、我が家でのDHCPでMACアドレスに紐づけた固定アドレスを割り振る方式では、中継器でアドレスがすり替えられているために、MACアドレスが DHCP サーバ側で正しく把握できない。このため、正しくIPアドレスが取れない。
しかたがないので、中継器の先の有線デバイスは固定IPアドレスを割り振る。中継器をWiFiアダプターとして使う場合、DHCPで動的アドレスを振ったとしても、IPアドレスは変な状態になるだろうなぁ。固定IPアドレスにしないかぎりは、使い物にならないだろうなぁ。
WEX733DのMACアドレスが変化
メッシュネットワークも一通り設定が終わり、安定して使えるように…と思ったら、1F居間と2FをつなぐWEX733Dから返答がない。(icingaを使って主要なデバイスの生死監視をしている)
確かめてみると、親機に設定した際のMACアドレスと、違ったMACアドレスになっている。このため、こちらが想定しているWEX733DのIPアドレスと異なるため、ping などが取れなかった。
WEX733D-前 60:xx:xx:29:xx:xx WEX733D-後 62:xx:xx:28:xx:xx
この症状は、他の Buffalo のルータでも確認していて、WZR-1166DHP2では、
WZR1166DHP2 B0:xx:xx:xx:xx:xx WZR1166DHP2 B2:xx:xx:xx:xx:xx
のような値が取れていた。今回 WEX733D には、DHCP の fixed-address の設定を使っているため、これを正しく登録しておかないと、IPアドレスが変化してしまう。
今回のMACアドレスを確認すると、第1オクテットのBit1は、グローバルアドレスとローカルアドレスを区別するビットみたい。
そこで、60…と62…では、それぞれ違うIPアドレスを対応づけて、死活管理で以下のように設定した。
確認用の script では、2つの check_ping を || で連結し、本来のIPアドレスで返答がなければ、予備のIPアドレスの返答を確認することとした。
define command{ command_name check_host_alive_multi command_line /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 5000,100% -c 5000,100% -p 1 || /usr/lib/nagios/plugins/check_ping -H '$ARG1$' -w 5000,100% -c 5000,100% -p 1 } define host{ use generic-host host_name wex733d alias wex733d address 192.168.xx.xx check_command check_host_alive_multi!192.168.xx.yy }
Windows Terminal preview 版
Microsoft による Windows Terminal が Microsoft Store で公開された。
さっそく立ち上げてみたけど、PowerShell にて端末が起動した。早速 ssh にて Linux に login して emacs を立ち上げてみる。以前のターミナルだと、漢字幅などで表示が崩れたけど、このバージョンはさすがに問題なし….
と思ったけど、M-x のつもりで、ESC→x と入力すると、ESC-M-x と表示される。普通に、alt-x と入力すれば M-x になるんだけど、レガシーなヤツは ESC-x が染みついている。
TH-D74でaprxを動かす
以前、TH-D72 で aprx を動かしてみたけど、APRSとD-STARを兼ねた TH-D74 で運用をためしてみた。
initstring に何を設定すべきか悩んだけど、TH-D74はコマンドモードとKISSモードを切り替えながらという使い方はできない?みたいなので、設定は不要みたい。
# /etc/aprx.conf mycall JR9PVZ-10 myloc lat 3553.48N lon 13613.33E <aprsis> passcode 22202 server rotate.aprs2.net </aprsis> <logging> pidfile /var/run/aprx.pid rflog /var/log/aprx/aprx-rf.log aprxlog /var/log/aprx/aprx.log dprslog /var/log/aprx/dprs.log </logging> <interface> serial-device /dev/ttyACM0 9600 8n1 KISS # initstring "" THD74は基本KISSモードなので初期化無し alias RELAY,WIDE,TRACE callsign $mycall # callsign defaults to $mycall tx-ok true # transmitter enable defaults to false telem-to-is false # set to 'false' to disable </interface> <beacon> beaconmode both cycle-size 60m beacon symbol "I#" $myloc comment "Tx-iGate + Digipeater" </beacon> <digipeater> transmitter $mycall <source> source $mycall </source> </digipeater>
TH-D74の設定
[F]-[LIST],[F]-[LIST] | KISSモード | |
— | パケットスピード | 9600 bps |
— | 無線周波数 | 144.640 MHz |
後で、TH-D72 で動作検証するかもしれないので、設定ファイルを2つ別に分けて切り替える設定を追加。
iphoneの検知難しい
大学でアパート住まいの子供が、帰っているのか確認するために、LINE beacon を置いて検知を試したけど、bluetooth を切って既読スルーなヤツなので、ほとんど検知することができない。
そこで、アパートでは無線LANルータを使ってるし Raspberry-Pi で、arpalert を使えば簡単に検知できるだろうと、実験中。でも iPhone はセキュリティ対策なのか、 arp の返答は必要最小限なので同じサブネットとはいえ、そのままでは通信の必要の無い raspberry-pi には、ARP 情報が送られてこない。また ping には返答しないようで、単純に ping で確認も困難。ということで単純な arpalert では検知が難しいなぁ。
定時処理で、”arping -c 1 -I wlan0 IPHONEのIPアドレス” を実行させて、強制的に ARP を送ってもらうか…
cec-clientのデバイス番号とアドレス番号
自宅では、テレビやケーブルテレビチューナーやレコーダを赤外線リモコンで制御できるようにしているが、電源はトグル動作でON→OFFかOFF→ONという制御ができない。そこで、HDMI端子経由のチャンネル制御を行っている。
この際に、デバイス番号とcecのアドレス番号を使うが、デバイス番号が時々変化している。
しかたがないので、cecのscan処理でデバイス番号とアドレス番号の対応情報を保存するようにしてみた。
#!/usr/bin/perl my $cec = "/usr/bin/cec-client -d 1 -s" ; open( my $fd , "/bin/echo 'scan' | $cec |" ) || die( "Can't open $cec\n" ) ; open( my $ft , "> /home/xxxxxxxx/lib/cec-table.sh" ) || die( "Can't open cec-table.sh\n" ) ; my $device = "" ; my $dev_str = "" ; my $address = "" ; my $osd_str = "" ; print $ft "#!/bin/bash\n" ; while( my $line = <$fd> ) { if ( $line =~ /^device\s+#(\d+):\s+(.*?)$/ ) { $device = $1 ; $dev_str = $2 ; } elsif ( $line =~ /^address:\s+(\d+)\.0\.0\.0$/ ) { $address = $1 ; } elsif ( $line =~ /^osd\s+string:\s+(.*?)$/ ) { $osd_str = $1 ; print $ft "DEV[$address]=$device\n" ; print $ft "OSD[$address]=\"$osd_str\"\n" ; } } close( $fd ) ; close( $ft ) ;
stretchで起動しづらい
自宅で色々と動いている Raspberry-Pi 。OS更新はまめにやっているけど、外気温測定に使っているのが Jessie のままだったのに気づく。stretch に上げたけど、どうも起動に失敗する。更新に失敗したかと思ったけど、キーボードをつなぐために USB WiFi を抜いて起動すると、普通に動いている。
今までも、多少 boot が不安定なのはあったけど、stretch になって起動シーケンスが最適化されたのか、WiFi 有効化のタイミングが早まり、ブート時の電力不足が発生していると思われる。
ひとまず、改造面倒だし USB WiFi を抜いて、boot がそれなりに進んでから USB を指して対応。