2020年12月3日木曜日

久し振りの雨、、、、

昨日は、午後2時頃からテニスの最中に強い雨が降ってきて、そのまま終日続きましたね。 久し振りの雨でしたが、3バンドインバーテッドUの7Mhz用のトラップが雨滴でおかしくなった様で、アンテナチューナーでマッチングが取り切れなくなり、アウト。 今朝も、まだ雨滴が残っているのか不安定。 昼過ぎにようやく、通常通りに戻りました。 

やっぱり、撥水スプレー振ったくらいではダメですね。 

昨年、紫外線吸収顔料を含んだ1フッ化エチレンフィルムを巻き付けてやろうか、と考えたのですが、「もう作っていない」 とのことで、そのままになっていました。 紫外線劣化の問題があるので、フッ素系のフィルム位しかないと思うのですが、伸び縮みが少ないので、防水と共に小端の処理を考えなくては、、、。

取り敢えず、大雨が降らないように祈って、、、。

>午後に確認しても外傷無しなのに、なんかSWRが不安定。 今日は寒いので明日以降に詳細にチェックする羽目に、、、。 トホホ、、、。

 


2020年11月30日月曜日

高耐圧可変コンデンサの制作 ..... Fritzingのcustom partsの作成(とん挫、、、)

 10KV耐圧の可変コンデンサ(のつもり、要確認)で左の物を過去1年余りの実験の成果として作成しましたが、駆動部は手元のSPG27-1101、秋月のDRV8835使ったステッピングモータドライバーにHiLetgoのWemos D1 mini(Arduinoの部分だけ使用)を使用しました。 基板は、フレキシブル基板の裏側にたこ足配線で済ませましたが、記録として一応回路図を書こうとFritzingを持ち出してきましたが、秋月のDRV8835なんてパーツリストにあるわけが無く、自分で作らなければ、とは思ってみても、これが難儀! というわけで今のところとん挫中、、、、。

何方か、作っておられる方はいらっしゃらないでしょうかね?

尚、肝心の可変コンデンサは、高周波の耐圧確認を JR1OAO 中島氏の御協力をお願いして実施し、問題が無ければ、何方かに実際に使用してみて頂こうかな?と考え中。 容量は14~140pF。 試行錯誤の結果、結局は誘電体にPTFE(0.3mm厚を複数回巻いて1.8~2.0mm)を使用。

一年以上かかりましたが、何とか年内には終止符を打ちたい。 

重量、コスト考えても、見つかるなら真空バリコンの方が良いかも、、、。




2020年11月23日月曜日

やっと5Z4VJが80m FT8で出来た。

前に5Z4/G3ABとQSO出来ていたようにログにあったので、M0URXにQSL請求したらSorryと返って来ていたので、連日5Z4VJを追いかけていましたが、皆さんQSOしているのに、ご本尊が聞こえない毎日でした。 

で、今朝はやっと引っかかってくれたので、早速Call! 何分(何十分?)か呼んでいるうちに返って来ました。 お互い弱ーい!! で、そのまま聞いていましたが、QSBが酷いのと、やはり私の所では他の人達よりも弱くしか聞こえていませんでした。 QRZ.com見たら垂直系のアンテナみたいなので、しょうがないですね。 結構偏波で違いますね~。  ご近所の池上さんも、強力な電波でQSOされていました。

ついでに、QRZ.comによれば、5Z4VJ=5Z4/G3ABでした。

 



2020年11月21日土曜日

SU1SK 40m FT8

 今朝、40m FT8でSU1SKが強力に入っていましたが、なんか変、、、。7074Khzですが、複数の信号が出ていて、夫々にQSOしている=>F/Hモード。 でも、何故かSU1SKは奇数時間(15,45)に出ています。 「まー、呼んでみるか」と普通のモードで呼んでみて、暫くすると返っては来ましたが、RR73は返ってこずー失敗。 

WSJT-xの場合;Houndの方は返ってきたら即座に返ってきたことを示すところをダブルクリックしてやれば、送信周波数がそこへ移動するので、交信可能だと思うのですが、これでは、ずっと画面凝視してなければならないし、ちょっとタイミングズレるとアウトになっちゃう。 そもそも何故Foxが奇数時間に出てくるの?  こういう設定は出来ないはず。 

JTDXではどうなっているんだろう?

SUは何か持っていたので、出来なくても、、、、なんて強がりか、、、。


2020年10月31日土曜日

30-40-80 Inverted U adjusted

久し振りに波出してみたら、ちょっと中心周波数が違う。  天気も良いので、早速微調整して、3.5Mhzの内外法のエレメントを21cm足して、7Mhzのトラップの片方のCの容量を1pF減らして、終了。 季節が変わると、エレメントの伸び縮みやコイルの伸び縮みで調整が必要なのかな? また、エレメント長が分からなくなってしまった。

例によって、シャックからのNanoVNAの表示。




 

2020年10月17日土曜日

今朝の21Mhz FT8

 LowBandのDXにはちょっと出遅れた時間だったので、LowBandは諦めて久しぶりに21/24/28を聞いてみました。

流石に24/28はあまり聞こえていませんでしたが、21MhzはJ68DSが出ていたので、当バンドでQSOしていないことを確認して呼んでみましたが、ほぼ1発でQSO。 その後、WやPUから呼ばれて暫くは答えていましたが、朝食でQRT。  

朝食の後、PC覗いて見たらHH2JRが出ているようなので、呼んでみましたが、此方は小一時間掛かってQSO。 一旦弱くなり掛かりましたが、23Z頃から強くなり一時は+2dB程までになっていました。  

やっとこさ、サンスポットも上がってきて、高いバンドが聞こえ始めてきたようです。


 

2020年8月8日土曜日

早朝のLowBand

 修復したアンテナの様子を見るために、今日は早朝から30-40-80のFT8をワッチ。 19Zから聞いていましたが、

30mではZA/IK2RIMがしきりにCQ出していて、結構EUが聞こえています。 

80mは3DA0VVを狙っていましたが、19Z台にJH1ECGがQSOしていた時には聞こえず、20Zになってから4X5LLのCQに邪魔されながら、何とか聞こえてQSO。2030Zには聞こえなくなっていました。 私の打ち上げ角の高いInV(シミュレーションではお団子ですが)では、聞こえている時間が短いな~。

40mでもEUが良く聞こえていましたが、EP2LMAが出ていたので、 QSO。

3DA0VVが出来たので久しぶりに幸せな気分!! 

夏場のLowBandも早朝には結構聞こえていますね(Sun Spotが上がっている所為かな?)

LoTwに1972年と1794年の10m/20m PHのW2EHBのQSOがcfmdの所に出てきました。40年以上昔のQSOがひょっこりcmfdになって現れるのは、ちょっと不思議な気持ちになります。

 


2020年8月5日水曜日

30-40-80 Inverted U トラブル(続) 解決

連日暑く気が進まなかったが、必要と思われるパーツを準備して、本日は朝からクランクダウンして、Inverted Uを分解、降ろして原因を詳細に調べてみました。
結論として、誘雷電ではなく、
 アルミパイプの水平部とヨリ線の接合部で片側のエレメントで断線していました。これでは、同調もしないし、給電部の電圧が上がってしまいます。 当初から、風などで繰り返し曲げの力が掛かるので、強度を増し、曲げの力が掛からないように色々工夫したつもりでしたが、ダメでした。

 
> 給電点のインピーダンスが上がっただけでは、何KVにもならない{E=sqrt(P x R): SWRが高いとTXが送信を中止するので、長時間高圧となることはない} ので、誘雷電等、他の要因もあったのではないか? ちょっと説明がつかない、、、。 
(参考:塩化ビニールの耐電圧... 20~35Kv/mm。25φ内径、32φ外径 3mm厚 60KV!!)


取り敢えず、接合部を2重にしたり、直接力が掛からないようにたわみを持たせたりして、再構築。 ついでに、トラップコイルの支持部分に屋外用のシリコン系コーキング剤を塗り、使用している結束バンド(ナイロン)の紫外線劣化を少し遅らせられないか、実験を開始。

共振周波数などは、元に戻りましたが、80mはトラップコイルのシリコーン塗りたくった影響か130Khz程上にずれてしまったので、長い方(OCFになっているので)に100cm程エレメントを足して補正。
>> 8/10: 暑さが続いたからか、80mの共振周波数が3.4xxxMhzとなってしまったので、35cm程切って補正。 3.552Mhz 推定給電点インピーダンス54.8+j0.4Ω

元に戻りました。




2020年8月2日日曜日

30-40-80 Inverted U トラブル

今朝久し振りにLow Bandを聞いていましたが、80mFT8で3DA0VVがJAとやっているではないですか! 早速、呼んでみると?? SWRが異常に高くて送信できなくなってしまう! 「あれ、どっか変」という事で、30,40,80とチューンをとってもどこもSWRが高くて送信できません。 アンテナは繋がっているし、、、、。
梅雨明け早々、「暑いのは嫌だなー」と思いながら、やむなくアンテナを降ろして、トラップをチェック。異常なし! 給電部をチェック。 あれ、焦げた跡があって、小動物の破片がこびり付いている。 この変な奴を払い落して、エレメント長をチェック。 タワーを上げて再度SWRチェック。 あれ?少しマシになったけど、高い方にずって、あまり変わらない。

給電部で、放電するような高圧のかかる場所では無いことから、放電痕は誘雷電によるスパーク痕だと思われます。偶々、そこに居たセミ君か何かが身代わりになってくれて、私の送受信機は無事だったのでは? 取り敢えず感謝!
しかし、チューニングの取れていない状況は困った! 考えられる事としては、DX Engineering のカレントバランが内部でショートしたか(あんまり考えられないけど)、塩ビパイプのどっかでショートしている? 
ただ、バラン周辺を弄るとなると、防水に使っているブチルテープが要るので、手元在庫を見たけど、無い! アマゾンに注文して、到着してからの修理とすることにしました(要するに暑いさなかに、外で作業はしたくない)。

中々、24時間365日、即座に運用できるようにするのは大変ですね。 LowBandはしばらくお休み、、、、。

アルミ筐体やアルミ板の表面を見ると、山の中なのに結構潮風が当たっているように見受けられる。



 

2020年7月28日火曜日

更にRaspberry Pi 4追加

Raspberry Pi 3がを起こして仕事させようと思っていましたが、今時4GBMemoryのRaspberry Pi 4があるとの事で、Amazonしてみたら、価格もPi 3の何倍も!という事でもないので、つい購入してしまいました。 消費電力は少し多いのでファイン付きのケースも買って、プログラミング用に。 
既存のPi 3は4リレーのシールド(Kuman製)を乗っけて、リモート制御に使用(将来)することに、、、。 
Kumanのボードに乗っているSRA 05VDC-CLって、125V maxとなっていますので、amazonの表示は間違ってますね。 リニアの電源制御用には別のリレーが必要です。 Windows10から、FreeBSD, Raspberry Pi3, Raspberry Pi4を動かしてみましたが、問題なく動きますね(当たり前か)。

どういうフローにするのか、目下考え中ですが;
メイン電源を入れる。
環境条件をチェック(風、雨)する。
発電機を動かす。
周辺に障害物・人等が居ないかチェック。
クランクアップタワーの昇降(上昇)
リグの電源の投入。
リニア・周辺装置の電源の投入。
アンテナの切り替え。
ローテーターの制御。
リニア・周辺装置の電源off
リグの電源のoff
クランクアップタワーの昇降(降下)
発電機の停止
メイン電源のoff

 この間、常時環境(映像?)と電源電圧のモニターがreal timeで行う。
通信ラインが切れたり、制御不能になった時に、全てがoffになる必要があり(タワーの降下をどうするか?)。

といった、所でしょうか。 環境は一応整いましたが、ビジュアルで、これだけの仕事を見やすい形で行わせるというのは、かなりの労力が必要ですね。 node-redの理解から始めるとなると、結構時間が掛かりそうだなー。

取り敢えずは、node-redのボタンで、リレーのon/offの確認。(Pythonの簡単なプログラムでの確認ではちゃんと動いていました)。


2020年7月27日月曜日

Windows10でCapLockをCtrlに

Windows10から、Xmingや、「リモートデスクトップ(xrdp)」等でUnixマシンに繋いで作業していると、ついemacs使いたくなる、と、ctrlキーの使用頻度が増え、如何にも使い難い。
今までは、Unixマシンの方のキー配列を変更して対応していましたが、これも、unixマシン個々に対応してゆかなければならないので、煩雑。 
「Windows10上でキーボート配列弄ればいいじゃん!」と、ググってみると、同じ問題を抱える人たちは多いようで、色々ありますね。 
最初regeditでレジストリを弄ってみた(これが一番多い)のですが、見事失敗! 何故かCapsLockが半角/全角のキーと同じになって(両方とも全角半角切り替えになっちゃった)、如何にも使い難い。 挙句にregistryのバックアップで戻そうとすると、エラーで出来ない、八方ふさがりの状態に、、、。 
「今日はついてないなー」と犬も散歩をして気分転換。 再度、ググったら有りました。 Ctrl2cap!!
これ使ってCapsLockキーにctrlをアサインして、取り敢えず解決。 このユーティリティの名前ちょっと違和感がありますが、、、。 ま、いいか。

2020年7月25日土曜日

node-red早速トラブル!

node-red-(start/stop/restart)など動いて、快適でエディターを弄ろうか、、、と思いましたが、まずはgpioの操作が出来なければ、始まらない!ということで、npm install node-red-contrib-gpioとやると、下のようなエラーが、、、。 ソースのコンパイルにcppの所で失敗しているようなので、これは拙い。  長期戦になりそうです。
何方か、解決方法教えて!
rpi gpioってのがあるので、それを使えばよさそうな、気もします。
pi@raspberrypi:~/.node-red $ npm install node-red-contrib-gpio

> serialport@6.0.5 install /home/pi/.node-red/node_modules/firmata/node_modules/serialport
> prebuild-install || node-gyp rebuild

prebuild-install WARN install No prebuilt binaries found (target=12.18.3 runtime=node arch=arm platform=linux)
make: ディレクトリ '/home/pi/.node-red/node_modules/firmata/node_modules/serialport/build' に入ります
  CXX(target) Release/obj.target/serialport/src/serialport.o
In file included from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../../../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast(AsyncExecuteComplete)
                                                              ^
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:41:48: error: no matching function for call to ‘v8::Value::ToString()’
   v8::String::Utf8Value path(info[0]->ToString());
                                                ^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2668:44: note: candidate: ‘v8::MaybeLocal v8::Value::ToString(v8::Local) const’
   V8_WARN_UNUSED_RESULT MaybeLocal ToString(
                                            ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2668:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2684:31: note: candidate: ‘v8::Local v8::Value::ToString(v8::Isolate*) const’
                 Local ToString(Isolate* isolate) const);
                               ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2684:31: note:   candidate expects 1 argument, 0 provided
                 Local ToString(Isolate* isolate) const);
                               ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/serialport.cpp:48:53: error: no matching function for call to ‘v8::Value::ToObject()’
   v8::Local options = info[1]->ToObject();
                                                     ^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal v8::Value::ToObject(v8::Local) const’
   V8_WARN_UNUSED_RESULT MaybeLocal ToObject(
                                            ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate: ‘v8::Local v8::Value::ToObject(v8::Isolate*) const’
                 Local ToObject(Isolate* isolate) const);
                               ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note:   candidate expects 1 argument, 0 provided
                 Local ToObject(Isolate* isolate) const);
                               ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/serialport.cpp:78:69: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_AfterOpen);
                                                                     ^~~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterOpen(uv_work_t*)’:
../src/serialport.cpp:95:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
   data->callback.Call(2, argv);
                              ^
In file included from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local argv[]) const {
   ^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:113:53: error: no matching function for call to ‘v8::Value::ToObject()’
   v8::Local options = info[1]->ToObject();
                                                     ^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal v8::Value::ToObject(v8::Local) const’
   V8_WARN_UNUSED_RESULT MaybeLocal ToObject(
                                            ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate: ‘v8::Local v8::Value::ToObject(v8::Isolate*) const’
                 Local ToObject(Isolate* isolate) const);
                               ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note:   candidate expects 1 argument, 0 provided
                 Local ToObject(Isolate* isolate) const);
                               ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/serialport.cpp:135:71: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
 uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EIO_AfterUpdate);
                                                                     ^~~~~~~~~~~~~~~

../src/serialport.cpp: In function ‘void EIO_AfterUpdate(uv_work_t*)’:
../src/serialport.cpp:150:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
   data->callback.Call(1, argv);
                              ^
In file included from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local argv[]) const {
   ^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:175:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
  uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO_AfterClose);
                                                                     ^~~~~~~~~~~~~~

../src/serialport.cpp: In function ‘void EIO_AfterClose(uv_work_t*)’:
../src/serialport.cpp:188:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
   data->callback.Call(1, argv);
                              ^
In file included from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local argv[]) const {
   ^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:215:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
  uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO_AfterFlush);
                                                                     ^~~~~~~~~~~~~~

../src/serialport.cpp: In function ‘void EIO_AfterFlush(uv_work_t*)’:
../src/serialport.cpp:231:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
   data->callback.Call(1, argv);
                              ^
In file included from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local argv[]) const {
   ^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:250:53: error: no matching function for call to ‘v8::Value::ToObject()’
   v8::Local options = info[1]->ToObject();
                                                     ^
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note: candidate: ‘v8::MaybeLocal v8::Value::ToObject(v8::Local) const’
   V8_WARN_UNUSED_RESULT MaybeLocal ToObject(
                                            ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2672:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note: candidate: ‘v8::Local v8::Value::ToObject(v8::Isolate*) const’
                 Local ToObject(Isolate* isolate) const);
                               ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:2686:31: note:   candidate expects 1 argument, 0 provided
                 Local ToObject(Isolate* isolate) const);
                               ^~~~~~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/serialport.cpp:270:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_AfterSet);
                                                                    ^~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterSet(uv_work_t*)’:
../src/serialport.cpp:285:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
   data->callback.Call(1, argv);
                              ^
In file included from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local argv[]) const {
   ^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Get(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:314:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_AfterGet);
                                                                    ^~~~~~~~~~~~
../src/serialport.cpp: In function ‘void EIO_AfterGet(uv_work_t*)’:
../src/serialport.cpp:329:96: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
 an::New("cts").ToLocalChecked(), Nan::New(data->cts));
                                                                              ^

In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:3499:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/serialport.cpp:330:96: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
 an::New("dsr").ToLocalChecked(), Nan::New(data->dsr));
                                                                              ^

In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:3499:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/serialport.cpp:331:96: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
 an::New("dcd").ToLocalChecked(), Nan::New(data->dcd));
                                                                              ^

In file included from /home/pi/.cache/node-gyp/12.18.3/include/node/v8-internal.h:14,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:27,
                 from /home/pi/.cache/node-gyp/12.18.3/include/node/node.h:67,
                 from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
/home/pi/.cache/node-gyp/12.18.3/include/node/v8.h:3499:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.cache/node-gyp/12.18.3/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/serialport.cpp:336:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
   data->callback.Call(2, argv);
                              ^
In file included from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local argv[]) const {
   ^~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:362:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
  uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO_AfterDrain);
                                                                     ^~~~~~~~~~~~~~

../src/serialport.cpp: In function ‘void EIO_AfterDrain(uv_work_t*)’:
../src/serialport.cpp:377:30: warning: ‘v8::Local Nan::Callback::Call(int, v8::Local*) const’ is deprecated [-Wdeprecated-declarations]
   data->callback.Call(1, argv);
                              ^
In file included from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../../../../nan/nan.h:1742:3: note: declared here
   Call(int argc, v8::Local argv[]) const {
   ^~~~
../src/serialport.cpp: At global scope:
../src/serialport.cpp:383:28: warning: unnecessary parentheses in declaration of ‘ToParityEnum’ [-Wparentheses]
 SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local& v8str)) {
                            ^
../src/serialport.cpp:402:30: warning: unnecessary parentheses in declaration of ‘ToStopBitEnum’ [-Wparentheses]
 SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) {
                              ^
../src/serialport.cpp:413:17: error: variable or field ‘init’ declared void
   void init(v8::Handle target) {
                 ^~~~~~
../src/serialport.cpp:413:17: error: ‘Handle’ is not a member of ‘v8’
../src/serialport.cpp:413:34: error: expected primary-expression before ‘>’ token
   void init(v8::Handle target) {
                                  ^
../src/serialport.cpp:413:36: error: ‘target’ was not declared in this scope
   void init(v8::Handle target) {
                                    ^~~~~~
../src/serialport.cpp:413:36: note: suggested alternative: ‘tzset’
   void init(v8::Handle target) {
                                    ^~~~~~
                                    tzset
In file included from ../../../../nan/nan.h:56,
                 from ../src/./serialport.h:6,
                 from ../src/serialport.cpp:1:
../src/serialport.cpp:437:25: error: ‘init’ was not declared in this scope
 NODE_MODULE(serialport, init);
                         ^~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/node.h:608:36: note: in definition of macro ‘NODE_MODULE_X’
       (node::addon_register_func) (regfunc),                          \
                                    ^~~~~~~
../src/serialport.cpp:437:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(serialport, init);
 ^~~~~~~~~~~
../src/serialport.cpp:437:25: note: suggested alternative: ‘int’
 NODE_MODULE(serialport, init);
                         ^~~~
/home/pi/.cache/node-gyp/12.18.3/include/node/node.h:608:36: note: in definition of macro ‘NODE_MODULE_X’
       (node::addon_register_func) (regfunc),                          \
                                    ^~~~~~~
../src/serialport.cpp:437:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(serialport, init);
 ^~~~~~~~~~~
make: *** [serialport.target.mk:111: Release/obj.target/serialport/src/serialport.o] エラー 1
make: ディレクトリ '/home/pi/.node-red/node_modules/firmata/node_modules/serialport/build' から出ます
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 5.4.51-v7+
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/.node-red/node_modules/firmata/node_modules/serialport
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok 
npm WARN node-red-project@0.0.1 No repository field.
npm WARN node-red-project@0.0.1 No license field.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! serialport@6.0.5 install: `prebuild-install || node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the serialport@6.0.5 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2020-07-25T05_37_13_431Z-debug.log
pi@raspberrypi:~/.node-red $ 

2020年7月24日金曜日

Raspberry Piでnode-redを起動させてみた

Facebookにnode-redでFlex6600やPX/GLをコントロールしている記事が出ていたので、早速「node-redって、なんじゃい」という事でnode-redのHPにアクセスしてみると、なんとWEBベースのエディターでグラフィカルにプログラムを作成し、コードはjsonでexport/importでき、libraryもリッチ。 
「あ、これだとRaspberryでリモートシャックの制御をするなんてことが、簡単に出来そう!」という事で、早速groupに参加。

遊んでいたRaspberryPi 3に最新のDebianベースのOS他を、Raspberry Pi imagerを使って、microSD(32GB)に書き込んで立ち上げてみると、すんなり立ち上がった(当たり前か、、)
でもRaspberryにディスプレイ使うのは嫌なので、ここを参考にリモートでWin10からアクセスできるようにする。

その上で、node-redをインストール。 Raspberry Piが立ち上がると同時にnode-redが立ち上がるように設定してしまえば、後はfirefoxからhost address:1880でエディターが立ち上がり、node-redが使えるようになりました。
さて、少しづつ、node-redを勉強して、何か使える物を作ることにします。


左下で立ち上がっている窓がRaspberry Piの画面。その上に、Windows10のFirefoxからhost addrr:1880/でアクセスしている、node-redのグラフィカルエディター。 特に、Raspberryのデスクトップにアクセスする必要はないので、左下の窓は今後は要らない。

2020年7月14日火曜日

ここ数日10mでEUが朝聞こえる

昔の記憶では、10mで朝EUとやった思い出は無いのですが、ここ数日は22Z前後にEUが出来ますね。20z台には、影も雰囲気もありません。 FT8のお陰でしょうか? しかし、結構強く入ってきています。
本当はUSとやりたくて、この時間帯聞いているのですが、gray lineに当たるとこら辺が良く入ってきています。
先月は午後の時間帯にEUが聞こえていましたが、最近はこちらはさっぱり

秋になったら、もう少しよく聞こえるようになるかな? 期待しています。

2020年7月7日火曜日

zfsの不調HDDを交換

zpool status でhddが一台不調なのを見つけ、交換しました。
手順は;
  1.   問題のHDDをoffline
  2.   問題のHDDの電源を切り、取り出す。
  3.   新しいHDDを挿入(この時tail -f /var/log/messages等して、挿入したHDDの名前を確認)
  4.   zpool replace <pool> <取り出したdevice> <新しいdevice>

で、そのうちデータの複製が完了します。
着脱可能な3台収納のHDDケースを使っていますが、埃の溜まり方が半端ない! 時々offlineして、埃を取ってやる必要がありそうです。 (商用のサーバーはどうしているのかな? サーバールームだから、埃は無いか?)

HDDのトラブルは結構多い!

tail -f /var/log/messages
Jul  6 15:24:31 <xxx> kernel: ada3 at ahcich4 bus 0 scbus4 target 0 lun 0
Jul  6 15:24:31 <xxx> kernel: ada3: <ST3000DM007-1WY10G 0001> ACS-3 ATA SATA 3.x device
Jul  6 15:24:31 <xxx> kernel: ada3: Serial Number ZFN3CG9W
Jul  6 15:24:31 <xxx> kernel: ada3: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
Jul  6 15:24:31 <xxx> kernel: ada3: Command Queueing enabled
Jul  6 15:24:31 <xxx> kernel: ada3: 2861588MB (5860533168 512 byte sectors)
Jul  6 15:24:31 <xxx> kernel: ada3: quirks=0x1<4K>
Jul  6 15:24:31 <xxx> kernel: ada3: Serial Number ZFN3CG9W
Jul  6 15:24:31 <xxx> kernel: ada3: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
Jul  6 15:24:31 <xxx> kernel: ada3: Command Queueing enabled
Jul  6 15:24:31 <xxx> kernel: ada3: 2861588MB (5860533168 512 byte sectors)
Jul  6 15:24:31 <xxx> kernel: ada3: quirks=0x1<4K>
Jul  6 15:27:06 <xxx> ZFS[57380]: vdev state changed, pool_guid=$10144449840837033772 vdev_guid=$10616007156599679386



# zpool replace zroot 4351727843915028191 ada3
Make sure to wait until resilver is done before rebooting.

If you boot from pool 'zroot', you may need to update
boot code on newly attached disk 'ada3'.

Assuming you use GPT partitioning and 'da0' is your new boot disk
you may use the following command:

 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
#

2020年7月6日月曜日

JPgraph 問題解決!

ソフトの更新を行って誤って、phpが7.3にupgradeされたためのトラブルでした。(JPgraph4.2/4.3ではphp7.2までしかサポートされていない!) で、同じことで悩んでいた方のページを見つけgd_image.inc.phpにパッチを当てることにより、無事問題解決!
JPgraphとerror no.で検索すると、対策が出てきませんが、php73, JPgraphで検索すると上のページが出てきます。 偶々、JPgraphのHP見ていて、対応がphp72までだったので、皆さんどうしているのかな?と思って検索したらたどり着きました。 良かった!

ついでにphp73 -> php74にしてみましたが、問題なく表示されました。




2020年7月5日日曜日

突然 JPgraphがストを起こしちゃった!

何故か、突然localのapache24が動かなくなってしまい、サーバーを再起動すると、何故か、JPgraphがうまく動いていない! メッセージにはttfフォントへのアクセスを確認!とあるけど、なにも弄ってないので、??? 
確認するも、どこもおかしなところはない??
原因が分からず、現時点で対処法も不明、、、、。 ググってもそれらしい答えも無し!


2020年6月15日月曜日

少し、高い周波数帯のコンディションが上がってきたようですね、、、。

ここ2,3日 28Mhz~18Mhzで少しDXが聞こえていますね。
昨日は28MhzでEUの東の方が15時位から聞こえていました(何故かHBがcfm出来ていないので、時々聞いています)。
昨日の朝 5T5PAと21Mhz FT8でQSO。18Mhzでは9L1が同じ頃出ていましたが、間に合いませんでした(5T5に時間取られ)。 また、5T5PAは今朝も出ていましたが、今朝の方が長時間強く入感していました。
やっと、Sun Spotの底を脱した感じがします。 この調子で行けば、秋のコンディションは期待できるかな? まだ、6月ですけど、、、。


2020年6月2日火曜日

Windows 10 マシンのアップデート

メインに使っているWindows10マシンが、時々おかしくなるので、下の様にMBをBiostar替えてRyzan3700にしてみました。
  • SMZ-01R /OC Master 
  • X570GT 
  • Ryzen 7 3700X BOX 
  • FireCuda 520 SSD ZP1000GM3A002 
  • TDZAD432G3600HC18JDC01 DARK Zα DDR4 (FOR AMD)
これで、快適に動くようになりましたが、何故かASUSのディスプレイカードの所為か、時々画面がフリーズして、マウスも動かなくなってしまいます。 ASUSのカードを購入元にチェックして貰いましたが特に異常は無いようでした(ただ、2-3時間時間がたった後に、時々起こる、という厄介な症状なので、見つからなくてもやむを得ないかもしれません)。
SeagateのSSDのオーバーヒートでスピードが遅くなるのか?とも思ってみて数時間電源入れっぱなしの状態でCrystalDiskMarkを実行してみましたが、これは前のIntelのMBの時より更に早く、これも問題はなさそうです。
Intelの時と比べる(右下の数字)と、10~20%位はおしなべて向上しているように見えます(RND4K Writeが80%に落ちていますが、これはよく分からず)。
十分満足のゆくI/O性能ではあります。
ついでに、MicrosoftのWEBmarksの結果は、左の様になっており、これでも9.9に対して9.3なので、まー、文句はありませんねー。 

こうなると、SmartSDRのソフトで利用しているライブラリの問題かな?という気がしてきます(SmartSDRが動いているときにおこるので)が、これは調べようが無いので、ここでピリオド。  (ASUS GPU Tookitの表示が、SmartSDRの表示の所に出てくるので、同じレイヤーに描画している事は確か!!) ついでに、Cinebenckでもベンチマークしてみました。 一番でないのはちょっと残念な気もするけど、PCに全力投球では無いので、これで良し。

流石に、CPUが違うのでMSに新規契約を要求されてしまい、想定外?の出費でした。








2020年5月20日水曜日

WSJT-x v2.2.0 rc1

チョンボ!
Prinston のHP見ていたら、wsjt-x v2.2.0-rc1が出ていて、FT8のdecodingの改善等がなされているようなので、インストールしてみました。
不注意で、v2.1.2と同じ場所にwsjt-x.exeとしてインストールされるために、今までのv2.1.2が置き換えられてしまい、立ち上がると「rc1ですよ」ってワーニング窓がOKを押すまで出ている、という面倒な事になってしまいました。
ま、このまま使うことにして、decodingの改善が如何ほどの物か実感してみたいと思います。

> JTAlertがうまく動かない! 残念ながら2.1.2に戻す事にします。
>> (June 1st) rc3が出ていたので、早速インストール。JTAlertもv2.16.6にアップデートして、無事使える状態になりました。 v2.2は 10sec位からデコード出来たcallsignはさっさと表示してくれるので、せっかちの私にはVY FB。 decodeのパフォーマンスが向上しているようですが、これはもう少し使ってみないと?? 近接の25dB以上の信号に対する耐性も向上とありますが、ここではそんな強力な局は今のところ居ないので、効果のほどは??


WSJT-X 2.2 User Guide の一部より

Improvements to decoders
FT4: Corrected bugs that prevented AP (a priori) decoding and/or multi-pass decoding in some circumstances. Improved and extended the algorithm for AP decoding.
FT8: Decoding is now spread over three intervals. The first starts 11.8 s into an Rx sequence and typically yields around 85% of the possible decodes, so you see most decodes much earlier than before. A second processing step starts at 13.5 s, and the final one at 14.7 s. Overall decoding yield on crowded bands is improved by 10% or more. Systems with receive latency greater than 0.2 s will see smaller improvements, but will still see many decodes earlier than before.
SNR estimates no longer saturate at +20 dB, and large signals in the passband no longer cause the SNR of weaker signals to be biased low. Times written to cumulative journal file ALL.TXT are now correct even when the decode occurs after the T/R sequence boundary. In FT8 DXpedition Mode, AP decoding is now implemented for Hounds when the Fox has a compound callsign.
JT4: Formatting and display of averaged and Deep Search decodes has been cleaned up and made consistent with other modes used for EME and extreme weak-signal work on microwave bands.
JT65: Many improvements have been made for averaged and Deep Search decodes, and their display to the user. For details see JT65 in the VHF+ Features section of this guide.
WSPR: Significant improvements have been made to the WSPR decoder’s sensitivity, its ability to cope with many signals in a crowded sub-band, and its rate of undetected false decodes. We now use up to three decoding passes. Passes 1 and 2 use noncoherent demodulation of single symbols and allow for frequency drifts up to ±4 Hz in a transmission. Pass 3 assumes no drift and does coherent block detection of up to three symbols. It also applies bit-by-bit normalization of the single-symbol bit metrics, a technique that has proven helpful for signals corrupted by artifacts of the subtraction of stronger signals and also for LF/MF signals heavily contaminated by lightning transients. With these improvements the number of decodes in a crowded WSPR sub-band typically increases by 10 to 15%.
New message format: When EU VHF Contest is selected, the Tx2 and Tx3 messages — those conveying signal report, serial number, and 6-character locator — now use hashcodes for both callsigns. This change is not backward compatible with earlier versions of WSJT-X, so all users of EU VHF Contest messages should be sure to upgrade to versiion 2.2.0. See Contest Messages for details.
Minor enhancements and bug fixes
  • Save None now writes no .wav files to disk, even temporarily.
  • An explicit entry for WW Digi Contest has been added to Special operating activities on the Settings | Advanced tab.
  • The contest mode FT4 now always uses RR73 for the Tx4 message.
  • Keyboard shortcuts have been added as an aid to accessibility: Alt+R sets Tx4 message to RR73, Ctrl+R sets it to RRR.
  • The Status bar now displays the number of decodes found in the most recent Rx sequence.
  • As an aid for partial color-blindness, the “inverted goal posts” marking Rx frequency on the Wide Graph’s frequency scale are now in a darker shade of green.

2020年4月24日金曜日

温湿度モニター(センサーをSHTに変更)

センサーをDHTからSHTに変更して、センサー部分の構造をむき出しから、アクリルパイプ(16φ 10cm)の中に入れる方法にしてみました。 
また、SHTだけですが供給電圧を計測時にonして終了すればoffするようにして、省電力化をさらに進めてみました。 
また、計測時間間隔を凡そ10分にしています。 (何故か、一つの計測点のDHTがうまく動作しなくなってしまったので、この際2つ共にSHTに変更しました。)
 また、実験中にhttpd-access.logに408が記録され、データがちゃんと受信できていなかった時があったので、Li電池を新しいものに交換してみました。
回路図を添付するほどの物ではないので、以下結線の記述;
SHT VIN -> D6(GPIO12)
      G     -> Ground
      SCL -> D1(GPIO5)
      SDA -> D2(GPIO4)
ESP-WROOM-32
     RST -> D0(GPIO16)  deepsleep wakeup の為、

>> 408のエラーを調べてみると、Headerが送られて来てから中身が送られて来るまでの間隔が長いと、攻撃とみなして、Timeoutさせる、仕様になっているようなので、外部にexposeするサーバーでは無いので、取り敢えず、/usr/local/etc/apache24/httpd.confのmod_reqtimeout.soをコメントアウトして様子を見ることにしました。
また、SHTの電源のoffは、サーバーとのコネクションを切ってからにしました。
>> これも解決には至っていない! 何が原因だろう?
何故か、手こずるなー、、、。
>> deepsleep で4時間半(10分毎なので、25,6回)位で止まってしまうので、別の8266に替えてみると、問題なく動いています。 結局は原因が良くわからず、8266自身が不良品だったのかもしれません。 
色々弄っているときにESP8285でもやってみましたが、此方はdeepsleepから立ち上がりませんでした。 ググるとdeepsleepが動かない、と言う書き込みがあったので、8266と同じものとして扱うことは出来なさそうです。
>>使用していた1000mAhのLi電池の出力が3.7V位に下がってしまう(劣化?)とNJU7223が3.3V作ってくれなくて起動できなくなっている物があることに気が付きました。NJUは入力電圧が0.6V以上高い必要がある為に、Liが3V台に落ちてしまうとアウト!




/*
    This sketch establishes a TCP connection to a "quote of the day" service.
    It sends a "hello" message, and then prints received data.
*/
#include "ESP8266WiFi.h"


#ifndef STASSID
#define STASSID "Buffalo-G-4CC0"
#define STAPSK  "65rhwrit3nnee"
//#define IDENTIFIER "GardenCenter"
#define IDENTIFIER "GardenEast"
//#define IDENTIFIER "GardenWest"
#endif
#define SHT 12  //  D6=GPIO12 set to SHT power. DTH11 was broken and replaced to SHT10 2020/04/21
#define DHTpin 14

#ifdef DHT  
  #include "DHTesp.h"
  DHTesp dht;
#else
  #include "SHTSensor.h"
  #include "Wire.h" 
  SHTSensor sht;

#endif
const char* ssid     = STASSID;
const char* password = STAPSK;
const char* Identifier = IDENTIFIER;
const char* host = "192.168.1.3";
const uint16_t port = 80;

void setup() {
  Serial.begin(115200);
  delay(1000);  //let sercial console settle.
  pinMode(SHT,OUTPUT); // Control SHT power to minimize the consumption.  
  // We start by connecting to a WiFi network
  /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default,
     would try to act as both a client and an access-point and could cause
     network-issues with your other WiFi-devices on your WiFi-network. */
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
#ifdef SHT  
  digitalWrite(SHT, HIGH);
  delay(100);  // need to wait a while ...
  Wire.begin();
  if (sht.init()) {
    Serial.print("init(): success\n");
  } else {
    Serial.print("init(): failed\n");
  }
#endif
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
#ifdef DHT
  dht.setup(DHTpin, DHTesp::DHT11);  //Connect DHT sensor to GPIO 14
#else
  sht.setAccuracy(SHTSensor::SHT_ACCURACY_MEDIUM); // only supported by SHT3x
#endif
}
void loop() {

  WiFiClient client;
  if (!client.connect(host, port)) {
    Serial.println("connection failed");
    delay(5000);
    return;
  }
#ifdef DHT
  delay(dht.getMinimumSamplingPeriod());
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.getHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.getTemperature();
  // Check if any reads failed and exit early (to try again).
#else
  float h = sht.getHumidity();
  float t = sht.getTemperature();

#endif

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT/SHT sensor!");
    delay(100);
    return;
  } 

  // WEB serverにデータをアップロードする。
  String url = "/weather/weather_log.php";
        url += "?location=" + String(Identifier); // ID to identify location
        url += "&temperature="+String(t);
        url += "&humidity=" +String(h);
        url += "&pressure=" +String("-----");     
  Serial.print("Requesting URL: ");
  Serial.println("GET "+ url);
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                "Host: " + host + "\r\n" +
                "Connection: close\r\n\r\n");
  delay(50); 
  // Read all the lines of the reply from server and print them to Serial
  Serial.println("Returned message from server: ");
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  client.stop();  
  
  digitalWrite(SHT, LOW);  // turn off SHT power.

  // 15分deepsleepする。
  ESP.deepSleep(10*60*1000*1000, WAKE_RF_DEFAULT); // 60*1000*1000 = 1min, 10 min
  delay(1000); // execute once every 5 minutes, don't flood remote service
}

2020年4月16日木曜日

WSJT-xのレベル合わせ

FT8での運用が多くなって、出てくる局も多くなりましたが、DXをシャカリキ?に呼び出すと、孫子連れの電波になって、5~6匹同じ局が呼んでいる状態になったりします。 明らかに、オーディオレベルを上げ過ぎていて、オーディオで高調波作って送信している状態のように思えます。 ただ、本人と孫子には30dB程の差がありますので、実際に問題になる局は、距離が近いとか限られた範囲なのかもしれません。
いつもは、SmartSDRのスペクトラム表示でオーディオレベルを調整していたのですが、手元で遊んでいるRSP1AとRSP-Spectrum Analyzerで ちょっとこの辺りを確認してみました。 Flex6600なのでDAX(Digital Audio Exchange)のレベルと、WSJT-xのレベルの両方で調整してみました。
左はDAXのレベルをMaxにして、WSJT-xのレベルをMaxにした場合ですが、そこら中に孫子が出来ているみたいです(peak 値を見てしまったので、ちょっとみにくいですが)。
 WSJT-xのレベルをMaxにして、DAXのレベルを下げて行き問題のなさそうなところ(50/100)にすると、概ね良さそうなのですが、若干スプリアスが残ります。
更にDAXのレベルを48/100にまで下げると、すっきり高調波の類は無くなります。
 上はpeak値で見ていたので、realにしたものが左。



オーディオレベルの調整は意外とクリティカルで、近接したところで、スペアナなどでスペクトラムを見ながら調整したほうが良いと思われます。 スプリアスとのレベル差が30dB以上あるので、気が付きにくいかもしれませんが、ローカルから白い目で見られないように注意する必要がありますね。

* RSP Spectrum Analyzerはインストールしただけで使っていなかったので、もう少し慣れないと使いこなしてない。



2020年4月7日火曜日

近所の桜ーまだ観れる!

世の中コロナウイルスの影響で外出自粛が続いていますが、今日は天気は良く桜ももう終わりそうなので、近所から、自宅アンテナの写真を一枚。
最近はカメラを弄ることも少なくなって、「絞り優先」 とか、やり方を忘れてしまい、Autoで撮影したために、桜の方にピントが合って、後ろの主役にピントが合っていない!

プログラム言語も、CもPythonもArduinoも、使えるまでにちょっと時間が掛かるようになってしまい、弄るのが億劫。
これで、英語も読み書き面倒になると、何も残らないな~。



2020年3月28日土曜日

FreeBSD 12.1Rでvm-bhyve上にWin10をインストールしてみた

サーバーのOSをFreeBSD 12.1Rにアップグレードした時にvm-bhyveもインストールしておいたので、「もし実用的な速さで使えるなら、、、」と思って、そのうち実験と思っていたが、最近のコンディションの悪さと、外出自粛で暇なので、実験してみました。
「FreeBSD 12のbhyveにWindows10をインストールする(その1その2)」を参考にさせて頂きました。
  1. まづ、Windows10のDVDのイメージファイルの作成 dd if=/dev/cd0 of=Windows10.iso bs=1m でコピーをファイル上に作り、出来たファイルをvm_dir/.isoディレクトリに移動。
  2. 以前、セットアップしていたvm-bhyveのネットワーク設定をして、remoteから見えるように。
  3. remoteからグラフィックス表示させるためにtigerVNCをpackageでインストール(pkg install tiver-vnc で1.10.0がインストールされますが、portには古いのが入っていました)。
  4. vm install windows Windows10.iso で取り敢えずインストールしてみる。
  5. あれ、途中で止まってる! tail -f vm-bhyve.log で様子を見ると、fatal; unable to locate firmware /usr/local/share/uefi-firmware/BHYVE_UEFI.fd と言うのが出ていて、インストールされていません。 このエラーメッセージでググってこのページにたどり着き、早速uefi-firmwareをインストール(portからのインストール)して、再度挑戦すると、今度はインストールが始まりました。
  6. 何度かtigerVNCが消えて、その都度tigerVNCを再接続させると、ちゃんとインストールは進んでいるようで、インストールが終了し使えるようになりました。
結構時間が掛かりましたが、一応動くWindows10がzfsのファイル上に作成できました(参考にしたWEBではWindows10のイメージはzfs上に作成できない、とありましたが、ちょっと意味が良くわかりませんが、zfs上で動いています)。
ただ、動作は遅いので、積極的に使ってみようという気にはなりませんでした。
動作することの確認のみ。

尚、今回の実験はFeeBSD12にWindows10からXming使ってアクセスしておき、FreeBSD上にvm-bhyveでWindows10を起動し、FreeBSD上でvncviewerをlocalhost:5600で起動して、これをまたWindows10上で見る(Xmingのお陰で、こんなことが出来ています)、というややこしい事をしています。(上の、画面写真の左3つの窓がFreeBSDのxterm/gnome-terminalで、真ん中がFreeBSD上のWindows10。でも、周りは全部Windows10のアプリ、、、)



2020年3月27日金曜日

JpGraphを久しぶりに弄って 一部問題解決。

室内と庭の温度、湿度のpostgreSQL DBが動くようになったので、今まで使っていた、HPをちょっと弄って化粧をしてみました。

JpGraphを使ってグラフを描かせていましたが、何故かグラフの各点の値表示が出来な
かったり、TrueTypeのフォントが使えていなかったりしたのを、一日がかりで修正。
  • 値の表示が出来なかった原因 ;  $graph->clearTheme()を設定していないと、表示をしてくれなかった。下のphpのソースコード参照
  • TrueTypeフォントのインストール ;  FreeBSDで動いているので、packageからwebfont(MSのTTF同等?)をインストール。 /usr/local/lib/php/jpgraph/jpg-config.inc.phpのTTF, MBTTFを実際にインストールされているディレクトリに指定する。
//
// UNIX:
//   CACHE_DIR /tmp/jpgraph_cache/
//   TTF_DIR   /usr/share/fonts/truetype/
//   MBTTF_DIR /usr/share/fonts/truetype/
//
// WINDOWS:
//   CACHE_DIR $SERVER_TEMP/jpgraph_cache/
//   TTF_DIR   $SERVER_SYSTEMROOT/fonts/
//   MBTTF_DIR $SERVER_SYSTEMROOT/fonts/
//
//------------------------------------------------------------------------
// define('CACHE_DIR','/tmp/jpgraph_cache/');
define('TTF_DIR','/usr/local/share/fonts/webfonts/');
define('MBTTF_DIR','/usr/local/share/fonts/webfonts/');
ついでにDBの欠落データを正しくグラフに反映させる為に、pg_fetch_rows()から、pg_fetch_result()に変更して、array()の該当する日時にデータが挿入されるように変更

require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');
require_once ('jpgraph/jpgraph_stock.php');
require_once ('jpgraph/jpgraph_line.php');

  $ydata = array();
  $y1data = array();
  $ymax = array();
  $ymin = array();
  $yhumid = array();
  $ymaxhumid = array();
  $yminhumid = array();
  $ypressure = array();
  $ymaxpressure = array();
  $yminpressure = array();
  $sdata = array();

$conn = "hostaddr=192.168.?.?? dbname=XXXXX user=Who password=Are_you?";  //fake user/password
$link = pg_connect($conn);
if (!$link) {
   die ('Connection failed '.pg_last_error());
   }

  $result = pg_query("SELECT day, avg_temperature, max_temperature, min_temperature,avg_humidity, max_humidity, min_humidity, avg_pressure,max_pressure,min_pressure from dailydatacurrentmonth where location='MyRoom'" );
if (!$result){
   die('Query failed'.pg_last_error());
  }
$tempE=pg_fetch_result($result, pg_num_rows($result)-1, 0);  // chech when day ends
for ($i = 0, $j = 0, $k = 0; $i < $tempE; $i++){
   $temp =pg_fetch_result($result, $k, 0);  //  day
   if ($i == $temp-1) {
     $x_axis[$i] = $temp;
     $ydata[$i] = pg_fetch_result($result, $k, 'avg_temperature');
     $yhumid[$i] = pg_fetch_result($result, $k, 'avg_humidity');
     $ymaxhumid[$i] = pg_fetch_result($result, $k, 'max_humidity');
     $yminhumid[$i] = pg_fetch_result($result, $k, 'min_humidity');
     $ypressure[$i] = pg_fetch_result($result, $k, 'avg_pressure');
     $ymaxpressure[$i] = pg_fetch_result($result, $k, 'max_pressure');
     $yminpressure[$i] = pg_fetch_result($result, $k, 'min_pressure');
     $sdata[$j++] = pg_fetch_result($result, $k, 'min_temperature');
     $sdata[$j++] = pg_fetch_result($result, $k, 'min_temperature');
     $sdata[$j++] = pg_fetch_result($result, $k, 'max_temperature');
     $sdata[$j++] = pg_fetch_result($result, $k, 'max_temperature');
     $k++;
   } else {
     $x_axis[$i] = $i+1;
     $ydata[$i] = '';
     $yhumid[$i] = '';
     $ymaxhumid[$i] = '';
     $yminhumid[$i] = '';
     $ypressure[$i] = '';
     $ymaxpressure[$i] = '';
     $yminpressure[$i] = '';
     $sdata[$j++] = '';
     $sdata[$j++] = '';
     $sdata[$j++] = '';
     $sdata[$j++] = '';
   } 
}

  $result = '';
  $result = pg_query("SELECT day, avg_temperature from dailydatacurrentmonth_prevyear where location='MyRoom'" );
  if (!$result){
     die('Query failed'.pg_last_error());
  }
for ($i = 0; $i < pg_num_rows($result); $i++){
    $rows = pg_fetch_array($result, NULL, PGSQL_ASSOC);
    $y1data[$i] = $rows['avg_temperature'];
}

$close_flag = pg_close($link);

$graph = new Graph(750, 450);
$graph->clearTheme();
$graph->SetFrame(true);
$graph->SetScale("textlin",10, 40);
$graph->SetY2Scale("lin",10, 90);
$graph->img->SetMargin(50,30,20,90);
$graph->SetShadow();

$graph->title->SetFont(FF_ARIAL,FS_BOLD,14);
$graph->title->Set("Daily Max/Min/Avg Temperature & Avg Humidity of the Month");

//$graph->yaxis->title->SetFont(FF_ARIAL.FS_ITALIC, 10);
$graph->yaxis->title->Set("Temperature");
$graph->ygrid->Show(true,false);
$graph->y2axis->title->Set("Humidity");

$graph->xaxis->title->Set("Month-Day");
//$graph->xaxis->title->SetFont(FF_ARIAL.FSBOLD, 10);
$graph->xgrid->Show(true,true);

// Specify the tick lables
$graph->xaxis->SetTickLabels($x_axis);
$graph->xaxis->SetTextLabelInterval(1);

// Create the linear plot
$lineplot = new LinePlot($ydata);
$lineplot->SetColor("blue");
$lineplot->mark->SetType(MARK_UTRIANGLE);
$lineplot->value->show();
$lineplot->value->SetFont( FF_ARIAL, FS_ITALIC, 7 );
$lineplot->value->SetColor('darkred');
$lineplot->value->SetFormat('%0.1f');

$p1 = new StockPlot($sdata);
$p1->SetWidth(9);

$line2plot = new LinePlot($y1data);
$line2plot->SetColor("red");
$line2plot->mark->SetType(MARK_UTRIANGLE);
//$line2plot->value->show();
$line2plot->value->SetColor('darkred');
$line2plot->value->SetFont( FF_ARIAL, FS_BOLD, 10 );
$line2plot->value->SetFormat('%0.1f');


$barplot = new BarPlot($yhumid);
$barplot->SetColor("black");
$barplot->value->Show();
$barplot->value->SetFont( FF_ARIAL, FS_BOLD, 10 );
$barplot->value->SetFormat('%0.1f');

// Add the plot to the graph
$graph->Add($lineplot);
$graph->Add($line2plot);
$graph->AddY2($barplot);
$graph->Add($p1);

$graph->Stroke();

?>



2020年3月16日月曜日

30-40-80m Inverted U アップデート


 先日、40mのトラップを小さいインダクタンスの物に交換し、末端のエレメント長が3m程長くなり、屋根のより下に位置するようになりました。 
どうもこの所為か、今までなかったようなIが80mで出るようになり、元に戻すのも能が無いので、片方だけ今まで使っていたインダクタンスの大きいトラップに変更してみました。
で、Iは治まったので、寸法とnanoVNAでシャックで計測したSWRを記録しておきます。
 

> 80mの中心周波数が上がり過ぎたため、若干調整して、最終的に左図左端のエレメント長が565cmから588.5cmとなり、中心周波数は3547.1Khzとなりました(5mm単位の調整が必要なところを、目分量で現場で処理していたので、目標値より2Khz程高くなってしまいました)。

80mのエレメントは凡そ26Khz/20cm(1.3Khz/cm)で、切り貼り。








FreeBSD 12.1R とZFS

結局、FreeBSD11.1Stableで使用していたZFSの写真など重要部分が読めないままに、FreeBSD12.1Rを新規インストールする羽目に、、、、。 (消失したデータはCD等にあるので、コツコツと構築して、見つからなくなったものは諦めるーという泣く泣くの判断。 みんな自分が悪いので、已むをえません。)
今回はUSBスティックにインストーラーを用意して、ZFSファイルに(凝りもせず)インストール。 
インストールする前に、古いZFSファイルから設定ファイルなど、救出できるファイルは全て1TBのHDDにコピーしておいて、今まで使っていたZFSファイルに新規にFreeBSD12.1Rを入れ、後にHDDをマウントして必要な設定ファイルをコピーしていった。 
当然、初期のインストールなどは全く問題なく終了。 pkgを使ってgnome, apache24, postgreSQL, php, wildfly14等をインストールしてゆき、都度必要なセットアップファイルをコピーしてきて、動作確認。 samba24, gnome, apache24, wildfly14, postgreSQLとinstallそのものは無事終了しましたが;
全体としてココを参考にしながら
  1. gnome-terminalは LANGの設定が拙くて立ち上がらず、ココを参考に。
  2. postgreSQLも暫く使っていなかったので、コマンドを忘れてしまい苦労しましたが、ココを見ながら、csvファイルで残っていた気温、湿度のデータなどを復元させ。
  3. 気象データの取り込みのphpプログラムもバックアップデータから引っ張り出してきてインストール。(センサーデータを送ってくるESP32側を再起動しないと、定期的に送信するようにはなりませんでした。何故?)
  4. 気象データをグラフ化してWEBに表示している JpGraphに食わせるデータを作っているView(PostgreSQLの)をphpのコードを見ながら再構築中ー>道半ば。
  5. Sambaは、前の設定ファイルを取り込んで、すんなり動作。Win10のファイルサーバ状態。(以前は苦労した記憶があるので、助かった!)
ファイルサーバが構築できたので、過去の写真データ用のスペースを作り、ふと、google photoを覗いて見ると、かなりの物が残っていそうなので、全部をダウンロードして、新たなディレクトリに再構築。 あれ!全部入ってる! いつの間にか自分のPCにある写真や動画がすべてgoogle photoに入っているのには驚いた!というより少し恐ろしい! (今回はこれで救われていますが、、、)
ー>しかし、ごみのような写真(気安く携帯で撮ったような)も全て保存されているので、これの整理は将来的に何か方法を考えないと、ただ大容量のスペースに保存するだけでは拙い。

ついでにこの記事に刺激されvm-bhyveもここを参考に入れてみたが、問題なく動きそう。

あれ?再起動するとzfsのルート以外がマウントされていない? でググったらココにありました。 rc.confを書き換えた時にzfs_enable="YES"を消してしまっていたみたい。

ZFS絡みのバージョンアップの失敗は2-3度やって、その都度ファイルを失っていますので、二度と同じ間違いをしないように、もう少しzfsのsnapshotやbackup機能の利用を自動化してゆくことを検討中。

>zfstoolsを使う方法があったので、実験中。 cronで起動しても何故かうまくsnapshotが取れていませんでしたが、ココを参考にして設定してみたらうまく行きました。 必要のない所を個別に以下の様にauto-snapshot=falseを設定した後に
# zfs set com.sun:auto-snapshot=false zroot/tmp
# zfs set com.sun:auto-snapshot=false zroot/usr/ports
# zfs set com.sun:auto-snapshot=false zroot/usr/src
# zfs set com.sun:auto-snapshot=false zroot/var/crash
# zfs set com.sun:auto-snapshot=false zroot/var/tmp

zrootに対して com.sun:auto-snapshot=trueしてあげないとダメみたい。
# zfs set com.sun:auto-snapshot=true zroot

確かにsnapshotが出来ていました。
# zfs list -t snapshot
NAME                                                       USED  AVAIL  REFER  MOUNTPOINT
zroot@zfs-auto-snap_hourly-2020-03-16-18h00                   0      -   117K  -
zroot/R@zfs-auto-snap_hourly-2020-03-16-18h00                 0      -   117K  -
zroot/R/vm@zfs-auto-snap_hourly-2020-03-16-18h00              0      -   240K  -
zroot/R/vm/windows@zfs-auto-snap_hourly-2020-03-16-18h00      0      -   123K  -
zroot/ROOT/default@zfs-auto-snap_hourly-2020-03-16-18h00   938K      -  6.77G  -
zroot/usr/home@zfs-auto-snap_hourly-2020-03-16-18h00       432K      -   444G  -
zroot/var/audit@zfs-auto-snap_hourly-2020-03-16-18h00         0      -   117K  -
zroot/var/log@zfs-auto-snap_hourly-2020-03-16-18h00       95.9K      -   501K  -
zroot/var/mail@zfs-auto-snap_hourly-2020-03-16-18h00          0      -   165K  -
#


> wildfly16(wildfly14から新しい物に更新)を立ち上げてみたら、立ち上がらない! 「おいおい、何だろう?」ってなわけで、/var/log/wildfly16/logを眺めてみると、「動かしているマシンのアドレスが分からない?」って出て来ている。 「ありゃま、named立ち上げないとダメなんか」ということで、local domain用にnamed立ち上げて、解決。
長ったらしいログだなー、しかし。
namedの設定も久しぶりで、ちょっと手間取りました。 何故かCNAMEの所をちゃんと読んでくれないので、暫定的にCNAME使うのはヤメ。
Wildfly16とpostgreSQLを繋ぐのにもちょっと躓いたのでココを参考にした。 (ここで使っているwildflyは9.0.2とか11.0.0なのでその所為か、mouduleの置き場所が、/modules/直下に/org/postgresql/main/を作って、、、となっています。 cliを使ってインストールすると、/module/org/postgresql/main/{module.xml, posgtresql-42.2.11.jar}が出来ていました。 (どこかで、/module/system/layers/baseの下に置くような記事を見たような気がしましたがこれは違いますね、多分。jboss/wildflyは結構階層が深くてわかり難い)





2020年3月9日月曜日

VP8PJ 40m FT8 cfmd!

「3月に入ってのQSOは島を離れてからアップロード」とされていたので、気になっていましたが、今朝確認すると6日までの分がアップロードされていて、cfm出来ましたので、早速OQRSリクエスト!
これで残り12になりましたが、ここ1-2年に予定のある所を除くと 北朝鮮とかスカボロー礁、プラタス島みたいなヤバい所とカリブのマルペロ、アベス、それに南サンドイッチ、ブーベ、、、、、 
オーナーロールに届くんかな~。

2020年3月3日火曜日

VP8PJ 30m FT8

30/40/80mのFT8でVP8PJをワッチしていたら、40mのVP8PJが強く聞こえていたので、ダメもとで呼んでみたら、何とか返って来ました。 先方は-18、此方は+02!! 相手の波が弱いだけなのかな? 
ATNO get! なので、ちょっとホッとして、「でも、20mのCWが欲しいなー」と思い、アンテナを切り替えて聞いていたのですが、30mはそのままワッチの状態。 「あれ、強く聞こえてるじゃーん」で、早速呼ぶとSWRが異常に高い! 「あ、アンテナが、、、」と思い、30mのアンテナに切り替えると、弱くなる。 
30/40/80mのダイポールは30mは水平部が結構長いので、どうもダイポールの8の字の指向性が出ているみたい(南北がNull?になる)で、受信は20-17-15-12-10のHexBeam、送信はダイポールで試みましたが、ダメ。 10-20分程度聞こえていたのみ、でした。

どうも、強い信号で入る時間もありますが、かなり短い間だけみたいです。 今朝の、17mも北北東からのLPで結構強く入感していましたが、ここでは10分も続きませんでした。

ntpq の見方

wsjt-xの表示がみんな1sec以上ずっていると出てくるので、自分のPCの時間が狂っていると思い、FreeBSD serverのntpdをチェックしたり、相手サーバーを変えたりして、同期取り直しても改善しない。 
なんでだろ? (サーバーの時間同期に時間が掛かる?ので、直ぐには修正されていないみたい。 これ書いているうちに、0.5sec以内に改善されました)
うー、18MhzのVP8PJ FT8を逃してしまった!

理由はよくわからないですが、取り敢えずはntpq -pの読み方の確認



root# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.freebsd.pool. .POOL.          16 p    -   64    0    0.000    0.000   0.000
*ntp-b2.nict.go. .NICT.           1 u   49   64  377    5.631    1.597   0.794
-ntp1.jst.mfeed. 133.243.236.17   2 u   51   64  377    5.607    2.011   0.788
#time.cloudflare 10.22.8.215      3 u   52   64  377   14.845   -3.737   0.711
-133.40.41.135   133.40.41.133    2 u   55   64  377   12.338    1.076   0.577
+time3.google.co .GOOG.           1 u   45   64  377   43.622   -1.132   0.750
+103.226.213.30  .PPS.            1 u   16   64  377   44.221   -0.684   0.730


で、読み方;
 【ntpq の見方】
一番左:
 '*' : 参照同期中であると宣言されたサーバ(sys.peer)
 '#' : 参照可能だが, 同期距離が遠いサーバ(selected)
 '+' : 接続テストに合格し, いつでも参照可能なサーバ. 参照リストにある(好ましい)サーバ(candidat)
 ' ' : 同期を試み中, もしくはレスポンスがないため, 参照していないサーバ(excess)
 'x' : falseticker検査で, 参照リストから外れたサーバ(falsetick)
 '-' : クラスタリング検査で, 参照リストから外れたサーバ(outlyer)
 '.' : 参照リストから外れたサーバ(excess)
 'o' : 参照同期中であると宣言されたサーバ(同期はPPS信号から間接的に行なう。)(pps.peer)
remote 時刻サーバ
refid 参照ID(サーバが参照しているマシンID. 不明の場合は0.0.0.0)
remote が参照している他の時刻サーバやGPSなど
st サーバのstratum値. サーバの階層.
 (1は一次サーバ, 2は二次サーバ, 16が最低でサーバに接続できないことを表す)
t 時刻サーバの型(l:local, u:unicast, m:multicast, b:broadcast)
when 何秒前に最後のバケットを受信したか(秒)
poll ポーリングの時間間隔(秒)
 最初は高速に同期ができるようにポーリング間隔(この値)は小さい.
 トラフィックや時刻サーバの負荷を減らすように, 時計が同期されたらポーリング間隔はだんだん長くなる.
reach 到達可能性に関するレジスタ・データ
 時刻サーバへの直近8回分の接続結果を8ビットの8進数で表す. 全て成功していれば377(2進数で11111111)
delay 通信による遅延の推定値. パケット往復時間(ミリ秒)
offset 時刻サーバとのずれ(ミリ秒)
 同期中は小さくなっていく. つまりローカルの時刻がだんだん正確になっていく. 10[ms]以下なら問題なし
jitter オフセット値の分散
 小さい方が好ましく, 正確な時刻同期が可能になる.(単位:ミリ秒) 10[ms]以下なら問題なし



ntp server の在処はここを参照
ntpの設定についてはココを参照

2020年3月2日月曜日

Win10マシンもヤバい!?

何故か、突然落ちて”Boot deviceを入れろ”と言っている! ヤバッ!HDD壊れたかな? とHDDをHDDケース(サーバー用の5”3台入るやつ)から取り出して、埃を吹き飛ばして、再度電源を入れると、復活!

「これって、ヤバいなー。HDDのデッドコピー作るソフトってないかな?」と思ってFBで呟いてみたら、大学時代の友達から「HD革命 Copy Driveじゃダメ?」って書き込みを頂いたので、早速ダウンロード。 新規のHDDにコピーして、コピーから立ち上げてみるとピンポーン! これでHDDの障害についてはちょっと安心。

「これだったら、SSDにコピーしても良いのでは?」ということで、512GBのSSD(M.2 BioStar)を調達して、AmazonからASUS用の留めネジヒートシンクを購入し、取り付けて、同様にコピーしてBIOS画面でM.2を選択して立ち上げてみると、これもOK。 スピードも10倍近く早くなっている! なんで、こんな事に気が付かなかったのだろう? SSDも随分安価になったものだ。

で、rebootすると、今度は中々立ち上がらない! 何か探してる、けど何だろう? 

BIOS設定画面から、Boot optionで立ち上げの順番をM.2->DVD->HDDに変更して、立ち上げると、今度はちゃんとさっさと立ち上がってくれました。BIOS画面でBootデバイスの選択をして立ち上げても、記憶されない(Ad hockなんですね)ので、ちゃんとboot optionで起動デバイスの順番を指定しておかないとダメなのでした。(気が付かなかった)。
>> 電源入れっぱなし、画面表示だけ 「ディスプレイの電源を切る」にしているのですが、この設定だと、復帰時にDUAL-RTX2060S-A8G-EVOがうまく起動してくれなくなってしまい、本体の再起動からになる(原因未調査)ので、ちょっと別の方法を考えなくては、、、。

M.2 のDiskMark
下のHDDと比べて10倍以上の違いがあるのは嬉しい!






 

手持ちのHDD3台(Barracudaの新しいもの、古いもの)のDiskMark。 ちょっとバラツキがありますので、何回か測定して平均値で比較しないと、一回の測定の数倍程度の差は、測定誤差として無視できる程度なのかもしれません。  勿論、古いもの、新しいものでも、同じBarracudaであっても、差はあるかもしれませんが、、。















2020年2月25日火曜日

FreeBSD 11.1-Stable -> FreeBSD 12.1-Stable へ移行:失敗(その2)

取り敢えずは、空いている1TBのHDDにFreeBSD12.1-Stableをインストールし、今まで使っていたzfs のzrootを/mnt1にマウントしてファイルの内容をチェックしてみた。 
 あれ? 無い! 過去の写真を整理した物や、レコードのmp3コピーや、ファイルサーバーとして使っていた部分が、見つからない! 何か数年前の物のような気がする! ひょっとして、/home以下を別のHDDに入れていたのか(これ、ナンセンスですが)と、zrootをたどって、昔のfstab見ても、そのような気配が無いので、ちょっと頭を抱えています。 どうなってんだろう? rootにちゃんとマウントして起動してみないと何とも言えませんが、無くなっていたらショック。

というわけで、殆どの設定が失われ、イチイチ、モニタとキーボードを2セット用意するのも嫌なので、PC側からのリモートアクセスの設定(Xming, Xlaunch)をまずすることにしました。 何と、これがうまく行かない!  
port 22を開けてsshdを動かして(古いsshd_configをコピペして)、TeraTermでFreeBSD側からX appliを起動してPCに表示されるかPCにXmingを立ち上げておいて、確認。 すると、client 4 rejected from IP 192.168.1.xxと出て来ているー>で、この解決方法は?ココ あれ?こんな設定昔したっけ? 覚えてないなー。
これで、FreeBSD上で xterm -disp 192.168.1.xx:0.0とするとPC上でxtermが使えるようになりましたが、root権限なのと、xtermのフォントがナンチャラと文句を言ってく来ます。フォントの問題はこれをXmingのフォルダにインストールして解決。 root以外で起動が出来なかったのは当該ユーザの.login/.profile/.cshrcにDISPLAY :0.0が設定してあった所為のようで、コメントアウトしたら、root以外のユーザでも使えるようになり、取り敢えずはOK。

Xlaunch が何故か、まだ、うまく起動できないのが良くわかりません。 FreeBSDの方はlogがリアルタイムで見れるので、色々試行錯誤できるのですが、PC側のXming/XLaunchは何処で何故トラブルかが、分からないんで結構四苦八苦。

設定を0からやり直す事はほとんどなく、古い設定ファイルからのコピペで済ましているので、こういう時は、ほんとに困ります。 

困った時のGoogle様です。

FreeBSDのboot processのluaへの変更が完全でないのか、ググっても対応は昔のloaderを残しておいて、それで読ませるみたいなことが書いてあります。 もうしばらく様子を見てから、再挑戦かな?
 
11.2->12.0へのアップグレードについては色々記事があるみたいなので、事前にこれらを読んでおけばよかったと反省しきり。 どうも、「やってみようかな、、」とダラダラと準備もなくやってしまうので、被害甚大なことが多く、こういう仕事には向いていないことが毎度、如実に証明されてしまいます。 



php のインストールの確認

phpって最初のfacebook書くときに使われたみたいで、それなりに歴史のある言語で、私も2006年位から使っていますが、CLIで使う事はあまり無いので、apacheとの連携のトラブル(mod_phpのバージョンの齟齬)などは気になりますが、拡張モジュールのインストールの問題に...