接続済み SSH セッションからファイルをダウンロードする というエントリを2012年ぐらいに書いて、その中で uutransfer という、screen ウィンドウを通じて uuencode したファイルを転送して書きだすツールを紹介しました。
便利に使っていたんですが、最近 tmux に移行した ので、このツールが動かなくなって困りました。ということで書きなおして独立したレポジトリに移動しました。
接続済み SSH セッションからファイルをダウンロードする というエントリを2012年ぐらいに書いて、その中で uutransfer という、screen ウィンドウを通じて uuencode したファイルを転送して書きだすツールを紹介しました。
便利に使っていたんですが、最近 tmux に移行した ので、このツールが動かなくなって困りました。ということで書きなおして独立したレポジトリに移動しました。
Chrome 80 (2020年2月予定) からは挙動が変更され、SameSite 属性がない (なにも対応していない場合) は SameSite=Lax の挙動がデフォルトになる。かなり厳しい制約が増えるので対応必須。
また、既存の挙動に戻すためには SameSite=None を指定する必要があるが、SameSite=None は Secure 属性が必須になる。
ということでいずれかが最低限必須
既に https 化されているなら最も手軽で追加の検証がいらない。
→ 今まで通りの挙動。CSRF 耐性は特になく、セキュリティは向上しないが不具合はでない
→ ほぼ今まで通りだが、外部からのフォーム POST など、CSRF に繋がりそうなケースで挙動がかわり安全になる。XHR や iframe でも cross-site の場合はデフォルトでクッキーが送られなくなるので、対応のうえ全体で再度QAが必要
SameSite=Strict にすると、あらゆる外部サイトからのページ遷移のときにクッキーが送信されなくなる。最初に開くと必ず非ログイン状態になり、そのあと遷移するとログイン状態が復活したりする。ユーザー体験上、Strict をそのまま既存のセッションクッキーに適用するのは困難。
副作用が発生するクッキーだけを Strict クッキーに分けるような設計をすれば活用できるが、サイトのページ遷移から見なおす必要がある。
個人の見解では Strict を使うケースはないんじゃないかと思う。SameSite=Strict は銀の弾丸ではなく、アプリケーションの問題は CSRF だけではない。結局、総合的に他の施策も必要なので、SameSite=Strict している暇があったら他のことをしたほうが良さそう。
なんかしらないけど直接ターミナルから実行してやらないとウィンドウがでない
~/Downloads/en.stm32cubemx_v5.4.0/SetupSTM32CubeMX-5.4.0.app/Contents/MacOs/SetupSTM32CubeMX-5_4_0_macos
このようにやると Java で書かれたウィンドウが出るようになる。なんでだろう?
謎
伝送路インピーダンス50Ω 送信機出力 50W では、完全に整合していれば、50Vrms 1A になる。ただ、SWR が悪化すると (すなわち反射が増えると)、定在波が発生する。これにより最大2倍の電圧・電流が伝送路上に発生する。
信号源が整合している場合の、定在波電圧・電流を数式で確認しておく。 が定在波の最大電圧、 は定在波のピーク電圧、 が定在波の最大電流、 は反射係数。
多重反射、つまり信号源も負荷も整合していない場合も考えてみる。
信号源側の反射係数を に、負荷側の反射係数を にする。
は起電力、単位は V。起電力を発生させた直後の初期状態で信号源端の伝送路にかかる電圧 は、伝送路インピーダンスと信号源インピーダンス(内部抵抗)に分圧されるので、
進行波が伝送路をすすみ、負荷端に辿りつくと反射係数 で反射されるので、合成すると
反射波が伝送路を戻ってきて、信号源に辿りつくと反射係数 で再度反射されるので、さらに合成すると
これが無限に繰替えされる。このように多重反射していくと以下のようになる。
上記は時系列だが、これを発生箇所ごと、つまり進行波と反射波ごとにまとめてみる。
1ずつインクリメントされる法則性が見えるので sum の形にする。
Maxima で以下を実行して sum を整理する。 が positive か negative か zero かを訊かれるので、negative と答える。これはつまり反射係数が0よりも大きく、収束することを Maxima に伝えている。
v_i * sum( (Γ_S * Γ_L)^n, n, 0, inf) + v_i * sum(Γ_L * (Γ_S * Γ_L)^n, n, 0, inf), simpsum;
以下のように整理される。
を展開したいので、 と、 を使って だけ残るようにする。
これでほぼ十分だが、 と SWR は互いに単独で変換できるので、SWR から求める形にしてみると、
これが多重反射の定常状態の電圧 (ただし反射係数は0より大きいこと)。ちなみに起電力 は、送信機出力 からすると、分圧されるので になる。これを代入すると
となる。
ところでここで、信号源 SWR である を 1 にしてみると、
となって、多重反射がない場合の と一致する。
計算してみるとわかるけど、信号源が整合していない場合、結局発生する初期電圧 も低くなっていくため、伝送路に発生する電圧は2倍を超えないことがわかった。
信号源が完全にマッチングされているなら、信号源の内部抵抗で消費される。実際は伝送路損失もあるので、伝送路損失をひいた電力が信号源内部抵抗で消費される。
もうすこし具体的には出力トランジスタの抵抗成分で消費されて熱に変わる。送信機の出力回路を考えてみると、電力増幅トランジスタがあり、トランジスタには素子ごとにある程度決まった出力インピーダンスがある。そしてそれを50Ωに整合するトランスがある。反射電力からすると、出力端子からトランスを逆方向にすすみ、電力増幅トランジスタまで辿りつくことになる。
手元にある UVC デバイスの構成を dot で書きだして graphviz してみたのがこれ。イメージしやすいかな?
https://www.usb.org/document-library/video-class-v15-document-set
仕様読めば概念はわかりやすい書いてあるので細かく書く必要はないけど、ざっと読んだ感じを記録しておく。
Video のストリーム以外のところ、つまりカメラなどをコントロールするプロトコルを見ていく。
コントロールするインターフェイスには Video Interface Class / Video Control Subclass がついている。
UVC は「Unit」を組合せてデバイスを表現するようになっている。これは USB の仕様にある device / configuration / interface に、さらに加えて存在している。
「Unit」は動画機能の構成する基本ブロックで、1つ以上の入力と、ただ1つの出力を持つ。
「Terminal」は入力または出力いずれか1つしかない Unit の一種。
Camera Terminal は Input Terminal の一種で、典型的な webcam は以下のような構成になる。
Camera Terminal には以下のような「コントロール」がついており、パラメータを操作することができる。
Processing Unit は入力を処理して出力するための画像処理 Unit で、以下のようなコントロールがついている。基本的に PC 側でもできるような処理。
プロトコル上、これらのコントロールは属するものが違うので、ちゃんと区別してコントロールする必要がある。
高周波リレー・同軸切替器・同軸リレーとからへんの話です。50W 通せる高周波リレーHF3シリーズを使ってみます。
TE の HF3 Relay という製品を最近知った。これは DC から 3GHz までの高周波リレーだが、高周波リレーとしては大きな耐電力を謳っている。最大で 60W, 62.5VA、2.5GHz 23℃ では 50W の連続通過と書いてある。定格電圧と電流はそれぞれ 250VAC / 2A。高周波リレーは通常、小信号用であり、2W程度が定格になっていることが多いのでこれは結構珍しい。
このリレーは DigiKey でも購入することができる。しかも $12 程度と、この手のリレーとしてかなり安い部類に入る。DigiKey の RF リレーのカテゴリでは、2A までのリレーしか扱っておらず、その 2A のリレーはこのシリーズだけになっている。
2003年ぐらいからあるようで、特に新しいコンポーネントというわけではない。検索してみると実際アマチュア無線用途に使用している海外の例がヒットしたりする。
リレー単体だと使えないので、リレーを載せるための基板を作る。再現性のため2層にして、PCB製造サービスを使うことにした。
余計なコンポーネントを乗せず、リレーとダイオードだけを乗せた基板にした。コネクタは安価な SMA のエッジコネクタ。一応伝送路はマイクロストリップライン (Coplanar Waveguide with Ground) として設計している。いまいち伝送路端の接続方法がわかっていないので適当につないでいるが正しくない気がする。
PCB 製造は PCBWay へ注文。部品は前述の通り、DigiKey で購入した。1週間せずすべてのパーツがそろった。
見るべき値は
手持ちのスペアナの上限が 1.5GHz なので、そこまでしか測れない。
参考として 第一電波工業株式会社 同軸切換器 CX210N のスペックを引用する。
NanoVNA の結果。
コモン側の反射波、NC (Normally Closed)/NO (Normally Open) にダミーロード。(S11)
リレーのスペック上は 1.5GHz 以下なら最大でも1.08 程度なので基板などの影響が大きい。
スルーコネクタでノーマライズ後、コモンに TG (トラッキングジェネレータ)、NC (Normally Closed)/NO (Normally Open) にダミーロードをつけて、コンタクトしているほうをスペアナに入力。
リレーのスペック上は 1.5GHz 以下なら、-0.15dB 未満。
スルーコネクタでノーマライズ後、コモンに TG (トラッキングジェネレータ)、NC (Normally Closed)/NO (Normally Open) にダミーロードをつけて、コンタクトしてない状態でスペアナに入力。
リレーのスペック上は 1.5GHz 以下なら、70dB 以上。500MHz 以下なら 80dB 以上ある。
メーカー製 CX210N 同軸切換器と比べると耐電力・諸特性に劣っている。ただ、耐電力以外はリレーのスペック的にはもっと良い値になるはずなので、基板設計によるところが大きそう。一方安価で電子制御可能なのが大きいメリット。
長々と遠隔で切り替えられる同軸リレーについて悩んでいて、汎用パワーリレーを使ったものを作ったり、既製品の同軸切替器をモーターで回すのを試したりしていたが、これでいいんじゃないかという感じになった。
さすがに一発でうまく基板がつくれる感じではないので、気がむいたら何度か作りなおしてみる予定。
4.5V モデルが安かったので 4.5V モデルにしたため、コイルは 145Ω (28mA) 約 140mW。5V で駆動するなら追加で 18Ω、12V で駆動するなら 268Ω が必要になる。
コントローラについてはまた別途書く。
G6K(U)-2F(P)-RF(-S, -T) の場合 VSWR 1.2 で 3W まで。接点容量は 1A
みんな大好き Desmos Graphing Calculator の話。
グラフの色に設定できるのが、デフォルトだと6色しかないけど、簡単に増やすことができる。
開発者ツールを開いて
Calc.colors.GREY = "#999999";
とかする。GREY のところは適当でよい。
こうすると色選択するパレットに単に色が増えるので、増やた色を選択すればグラフの色を設定できる。
パレット追加した色はリロードしたりすると消えてしまうが、グラフに設定した色は保存される。
Calc.colors をダンプするとわかるが、色IDをキー・色値を値にもつオブジェクトになっている。
Calc.colors = { BLACK: "#000000" BLUE: "#2d70b3" GREEN: "#388c46" ORANGE: "#fa7e19" PURPLE: "#6042a6" RED: "#c74440" };
↑この画像は静止画ではなく、録画のスナップショット (α7R II 2160p モードを CamLink 4K/30FPS NV12 でとりこみ)
結論からいうと CamLink という HDMI → UVC 変換器 (キャプチャボードの一種) を使うのがおすすめ。カメラの HDMI 出力と繋ぎ、カメラ側は動画モードにして、HDMI INFO の設定 (HDMI に OSD を出さない) をするだけでよい。
カメラ側で HDMI 出力設定を変えて 1080p か 2160p かを選べる機種の場合は、カメラ側で設定を好みのほうに変える必要がある。デフォルトだと 4K でしかとれないので、1080p で十分なら下げたほうが負荷が低いと思う。
知ってるぞ! こういうのだろ!
HDMI → UVC 変換器もピンキリで、キャプチャできる解像度や、画質に差がある。しかし商品説明からは全くわからないことが多い。具体的に何が違うか
残念ながら買ってみるまで詳細なことはわからない。HDMI キャプチャについては安物を買わないほうが良い (安物を2台ほど買って失敗した人間の言っていることです)。
CamLink は以下のような仕様で、現状手に入る中では本当にベストだと思う。脳死でこれ買いましょう。
若干ややこしい。というのも、Shotcut の字幕は「フィルタ」として実装されており、元動画がなければつけることができない。しかしタイムラインのメインの動画にフィルタとして字幕を追加してしまうとフェードすることができない。これの問題は字幕用のタイムラインを作ってあげれば解決する。この場合、フィルタをかけるための「元動画」が必要になるので、別途用意してやる。といっても単にアスペクト比があった透過 PNGで良い。
この画像において V2 V3 は字幕用にしてある。はりつけているのはただの透過 PNG
追記:ファイル → その他を開く → 色 → transparent で OK を押すと同様のことが Shotcut 内で完結するようだ。開いた状態でプレイリストの+を押すとライブラリにtransparentが追加されるため、これをタイムラインにドラッグするやりかたが簡単
そしてフィルタをかける
テキストをかけるフィルタはいくつかあるので適当に適用する。フェードは「動画のフェードアウト」などいくつかある動画用のフィルタを使うことができる。「黒でフェードする代わりに不透明率を調整」にチェックを入れておくとお手軽にフェードアウトできる。
スペアナでスプリアス測定してみる (KX3 CW) | tech - 氾濫原 というのを書いた。SSB でさらに測定してみる。途中で「帯域外領域」の測定について勘違いに気付いたため、前のエントリも修正している。
特性試験の試験方法 を参照するのが一番正しそうなので、少し細かくみていく。
「スプリアス発射又は不要発射の強度の測定方法については、別表第1に定める方法」となっている。ただし、平成16年総務省告示第88号によって、「スプリアス領域における不要発射の強度の測定を行う周波数範囲」が緩和されて定義されているので、こちらも見る必要がある。
別表第1がスプリアス測定の方法なのだけど「占有周波数帯幅の測定と同じ状態」として他の資料を参照している。
「占有周波数帯幅の測定と同じ状態」は特性無線設備の種別ごとに定義されている。アマチュアの場合は別表第35に全ての変調方式について記述がある。特に「別表 各電波型式の変調条件」が大事。
「擬似音声発生器は、白色雑音をITU-T勧告G.227の特性を有するフィルタによって帯域制限したものとする。」なのでまた別の規格を見る必要がある。G.227 : Conventional telephone signal
この装置は少し前にこれのためにつくった ブラウザで動く擬似音声発生器 (ITU-T G.227 フィルタ) | tech - 氾濫原。yak-shaving...
⑴ 変調信号は擬似音声とする。
⑵ 擬似音声の変調入力は、正弦波の1,500Hzで空中線電力が飽和レベルの80%程度となる変調入
力電圧と同じ値とする。
まず正弦波 1500Hz を入力し、飽和レベルの80%程度となるようにマイク入力ゲインを調整する。
飽和レベルはSSBの場合送信機の尖頭電力のことなので、設定した出力電力と同じになる。つまり10W出力で飽和レベル80%なら8Wになるように調整する (0.8 = 1dBひく)。
「擬似音声発生器」は電圧がひとしくなるように作ってあるので、そのまま疑似音声に切り替えれば状態が整う。
10W 出力で計測する。40dBm。1500Hz 正弦波のとき 39dBm に出力を調整する。スペアナの前に40dB アッテネータをいれている。ところで今回はスペアナに Ref Offset の設定があることに気付いたので、前もって 40dB 分のオフセットをつけて、測定値を直読できるようにしている。
無変調で測定する領域だが、SSBの場合は搬送波がないため実質的に意味がない (搬送波の綺麗さを見る試験のようだ?)。
SSB の 占有周波数帯幅の許容値 は 3kHz。スプリアス領域 は 2.5BN 離れた領域なため、± 7.5kHz の内側が帯域外領域、外がスプリアス領域。
7100kHz を帯域の中心にしたいので、LSB モードの場合は 7101.5kHz に送信周波数をセットする。これで 7098.5kHz より下、7101.5kHz より上が帯域外
なぜ 1500Hz?と最初思ったが、帯域幅が3000Hzなので、真ん中にくるようにですね。
つまり入力雑音のみの変調をかけた場合どうなるか。混乱しないでほしいが、これはスプリアス測定ではなく参考データとしてとった。
-21dBm の高調波。50μW (13dBm) 以下なので合格
「ITU-R 勧告SM.329-10における指針」に従って、基本周波数の10倍高調波まで見れば良いことにはなっている。つまり 7.1MHz なら 71MHz まで見れば十分なはず。
の続き AM(A3E)。帯域幅は6kHz。疑似音声発生器 を使う。
以下を根拠に測定する
1kHz で変調度 60% の状態で、同レベルの疑似音声を入力するということなので、まず1kHzで変調度 60% の状態を作る必要がある。
変調度 をスペアナで求める場合、搬送波振幅 (電圧) 側波帯振幅 (電圧) とすると
または、搬送波電力 、側波帯電力 とすると
1kHz で変調度 60% なら、。つまり搬送波電力に対して 側波帯電力が -10.5dB になるようにゲインを調整する。
0スパンにしてうまく設定すると変調信号を表示できる。この結果を使っても変調度を求められる。ただトリガをうまくかけられないといけない。
帯域幅は6kHzなので、±15kHz が帯域外領域
無変調で搬送波だけの状態で見る。
前回まで側波帯ごとにわけて見てたが面倒なので一括で見る
-21dBm の高調波。50μW (13dBm) 以下なので合格
ref.
https://www.hakodate-ct.ac.jp/~moriya/class/5SCE_Exp/text05-1.pdf
https://dl.cdn-anritsu.com/ja-jp/test-measurement/files/Technical-Notes/White-Paper/Guide_to_SpectrumAnalysis_J.PDF
最初に知ること
「振幅の最大値のときの最大周波数偏移」と「ある入力に対する最大周波数偏移」で若干ややこしいので注意。単に「最大周波数偏移」といったときどっちのことを言っているか気をつける。
1kHz の正弦波で変調した場合、キャリアを中心にして、1kHz ごとにピークが立つ。各ピークのレベルについては後述
入力信号周波数を変化させるとこのように変化する。ピークの幅と、ピークの振幅それぞれが変化する。
ある周波数の入力信号 を変調して、最大周波数偏移が だった場合、変調指数 は以下のようになる。
変調指数には以下のような特徴がある
出力のキャリア周波数の振幅及び、側波帯の各ピークの振幅は、変調指数をとる第1種ベッセル関数にしたがう。
縦(y)軸が振幅で、横(x)軸が変調指数。J(n,m) は変調指数 m のときの、側波帯ピークn番目(ただし0はキャリア)の振幅をあらわす。負の値が出るがスペアナで観測できるのは絶対値。
変調指数が一定の値、例えば 2.4 とかになるとキャリアの振幅は0になる。
どれも最初のキャリアゼロにあわせているので変調指数は2.4。結果、最大周波数偏位・入力ゲインが変わる。変調指数が同じなので、各ピークの大きさはどれも一致するはずだが、実際は出力バンドパスフィルタとかの影響で帯域が広くなると誤差が増える。
最大周波数偏移は入力信号振幅によるため、同じ振幅を持ち、キャリア周波数振幅が0となるように入力信号周波数を加減する。キャリア周波数振幅が最初に0となったとき m=2.4 なので、入力信号周波数 * m で最大周波数偏移を求めることができる。
ただしこの方法は、入力信号周波数を変化させても、無線機内部で振幅が変化しないことを前提としているので、イコライザやコンプレッサーなどがあり、周波数応答がフラットではない場合は成立しない。
RBWを十分に大きくして、FM波全体を見るようにする。この状態で Max Hold / Min Hold して偏位の最大周波数と最小周波数をさがす。少し測定に時間がかかるのと、スペアナのスイープタイミングと入力信号周波数が互いに素になっていないと最悪いつまでたっても結果がでないのが欠点
マーカーを2つ使い、Max Hold / Min Hold それぞれのトレースで同ゲインにくるように調整する。そのときの周波数の値を読んで、差を計算する。これが最小と最大の周波数偏位になる。(51008700 - 51004100) = 4600 なので、最大周波数偏位はこの半分の ±2300Hz になる。この画像の場合は信号周波数が 1000Hz なので、変調指数は 2.3。
例えば 1000Hz で変調指数 3.5、つまり最大周波数偏位を3500Hzにしたい場合。これは変調指数から振幅を求めて、近くなるようにゲインを調整するのが一番簡単。
ベッセル関数を使って各ピークを求めて、それにあうようにする。
これでやって調整して、上記の方法で、最大周波数偏位を測定しなおすとより良い。
(51009800 - 51003050) / 2 = 3375 (最大周波数偏位)。3375 / 1000 = 3.375 (変調指数)。なかなかぴったりにはいかない…
以下を根拠に測定する
アマチュアの F3E の占有周波数帯幅の許容値は 40kHz (ただし 430-440MHz では 30kHz)。ただし事実上の帯域幅は 16kHz 程度になっていることが多い。
周波数変調は振幅が周波数偏移になるため、最大振幅でどれぐらい周波数偏移をするかを決めなければならない。アマチュアで通常使われてる狭帯域FMで、最大振幅時の最大周波数偏移は ±5kHz。
で F3E では、「標準変調度又は基準周波数偏移(位)」は「正弦波1kHzで最大周波数偏移の70%」になる。測定時には「基準周波数偏移の入力から10dB増加(擬似音声)」
アマチュアのF3Eの場合「標準変調度とは (略) 工事設計書の設計値(工事設計書に記載される値)の最大周波数偏移を100%としたものである」が適用される。工事設計書の設計値の最大周波数偏移は通常±5kHzなので、つまり 1kHz 入力したときに、5 * 0.7 = 3.5kHz 周波数偏移するように入力ゲインを変更し、疑似音声はこのときのレベルに +10dB することになる。
前に書いた「特定の変調指数になるようにゲインを調整したい場合」にそって 1kHz で変調指数 3.5 になるようにして、疑似音声をそれの +10dB で出力できるように信号源のゲインを調整する。
今回は温度制限がかかるので、出力は 5W (37dBm) でやる。(本来は最大でやらなければならない)
1kHz で最大周波数偏位 3500Hz にあわせる。
(52013416 - 52006833) / 2 = 3291Hz
FM なので 50MHz 帯で測定することにする。別表第三十五 証明規則第2条第1項第12号に掲げる無線設備の試験方法によれば、50MHzは50〜54MHzと、2MHz以上の帯域があり、この場合の試験周波数は3波になる。
正直めんどい。同じことを3回やるだけなので、今回は省略して中央のみで行う。
占有周波数帯幅の許容値が40kHz なので 帯域外領域は 2.5倍して ±100kHz。
無変調で測定する。
「30MHzを超え54MHz以下」「1Wを超え50W以下」の条件では「1mW以下であり、かつ、基本周波数の平均電力より60dB低い値」
「50μW以下又は基本周波数の搬送波電力より70dB低い値」-13dBm または搬送波電力-70dB以下ならよい
https://www.hakodate-ct.ac.jp/~moriya/class/5SCE_Exp/text05-1.pdf
http://ja5fp.org/bessel.pdf