エントリー

ガルバニックアイソレータを作る

コモンモードのノイズを抑えるということでガルバニックアイソレータを作製してみた

主材料は秋月で購入しておいたトロイダルコア

IMG_20220115_204558.jpg

φ0.55のポリウレタン線を5:5でキャンセル巻きにした(バイファイラ巻きでも良いらしい)

IMG_20220115_210156.jpg

ケースを3Dプリンタで印刷

IMG_20220122_195525.jpg

今回は蓋の取り付けにM3ビスとインサートナットを使う

インサートナットは半田こてで突き刺して温めながらφ5㎜で造形した穴へ嵌め込んだ(普通のナットでも可能)

IMG_20220122_211200.jpg

入出力はFコネクタだがケース用のオスが無いので同軸用のオスFコネクタで代用

ケースに固定するため補助パーツを3Dプリンタで印刷して付けた

IMG_20220122_211504.jpg

M3ビスで止めて完成

IMG_20220122_213348.jpg

NanoVNAで特性を見てみると100MHzあたりで同調ポイントがあるようだ

IMG_20220123_155758.jpg

IMG_20220123_155900.jpg

アナログラジオで使用してみたが効果は判らなかった(SDRで効果が判るかな?)

(試行中)

  • FMはノイズが減った(出力側をアースすると更に減る)
  • NOAAは受信できなくなる

ナショナルの毛玉取り(ER858)を修理

かなり昔に購入したナショナル時代の毛玉取り(型番:ER858)が動かなくなっていたので修理する

IMG_20220122_162955.jpg

充電式なのでおそらくバッテリーの壽命

ネジ3個が見えていて簡単に開けられるかと思いきや下部のプラグ部分の嵌め込みがキツクて無理やりとったという感じになった

IMG_20220122_170149.jpg

バッテリー部分はネジ1個あり簡単に開いた

IMG_20220122_171028.jpg

使用バッテリーはNi-Cd(インドネシア製)が1本で100Vからの充電はトランスと2次側にダイオードが1個付いていたので13~14Vあたりへ変圧して半波整流で充電という仕組みのようだ

充電のために100Vプラグをスライドして出すと回路が切り替わるようになっている

また,掃除のためヘッドを外して刃の部分が見えるようになると安全のためモーターとの接続が切れスイッチを入れても回転しないようになっていた

IMG_20220122_171303.jpg

単3サイズのようなので手持ちのセリア充電池「VOLCANO(ボルケーノ)」に交換

IMG_20220122_171314.jpg

ささっと終わらせたかったので本来はスポット溶接すべきのところを半田付けした

バッテリーの極板をヤスリで削り予備半田しておけば簡単に付く

IMG_20220122_174707.jpg

元に戻し,充電時に漏電や異常が起きないか確認して完了

IMG_20220123_092425.jpg

問題なく利用できている

NanoPi NEOサーバを復旧させる

優先すべきだが予定外の事態だったので後回しになってしまった

原因を探る

サーバからmicroSDカードを取り出してバックアップ機にセットしてコンソールで調査

IMG_20220116_132241.jpg

再起動しないのでネックは何かと思っていたら,microSDカードの異常というかRO(リードオンリー)ロックになっていた

コンソール出力ではrootファイルシステムのfsckで異常となり起動せずメンテナンスモードになっている

U-Boot SPL 2021.04-armbian (May 06 2021 - 17:50:40 +0000)
DRAM: 512 MiB
Trying to boot from MMC1



Starting kernel ...

Loading, please wait...
Starting version 241
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.33.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
fsck.ext4: Read-only file system while trying to open /dev/mmcblk0p1
Disk write-protected; use the -n option to do a read-only
check of the device.
fsck exited with status code 8
done.
Warning: File system check failed but did not detect errors
mount: Read-only file system
Failed to mount /dev/mmcblk0p1 as root file system.
(initramfs)

手動でrootファイルシステムをチェックしたところROのため書込みできない事態となっている

(initramfs) fsck.ext4 -n /dev/mmcblk0p1
e2fsck 1.44.5 (15-Dec-2018)
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/mmcblk0p1: clean, 46517/2789280 files, 740918/7666688 blocks
(initramfs)

この現象は前にもあって原因はメディアが強制的に(ROにして)書込みできないよう処理していることで起こると思われ「メディア自体の異常」の要因もあるが,ほぼ間違いなく「メディアの書込み壽命」だと考える

実際は本当の壽命ということでフラッシュメモリ自体の書込みエラーで発生させているのではなく,書込み回数の上限を決めておいて超えたら記録内容を保護するためROにしているのだろうと考える

つまり,まだ読むことは可能ということである(実際に全部読める)

利用していたmicroSDは以下の「KLEVV NEO」という安価なメモリで,9月から4~5箇月とうことなので約150日間となる

IMG_20220116_133551.jpg

microSDには書込み回数があるのでいつかはエラーになると考えていたが32GBもあり僅かなログの書込みだけなのであまりにも短すぎる

MLCフラッシュは約1万回の書込みが可能であることが(かなり以前に)公表されている(今だともっと回数が増えてるかも)

論理的には書込み回数が1万回として32GBなら,32GB×10000=320000GB(320TB)の(ワンタイム)記録ができるということになる(実際は書込み単位があるので少なくなる)

これを150(日)で割ると,320000GB÷150=2133GBとなり毎日約2TBもの書込みがあったことになるが・・・

→ 連続でも書込みは最低10MB/s,最大は良くても100MB/s位として,100(MB)×3600(s)×24(H)=8640000(MB)=8640(GB)

かなり譲って1/100の,20GB/日としても(ほとんどがログになるので)考えられない書込み量である

このあたりの書込み量も予想試算して1年以上余裕で持つだろうと考えていたので想定外であった

前回も「KLEVV NEO」のmicroSDで発生しており,この時は書き込むことは起きていないのにROになってしまった(マイクロSDカードが壊れた

今回の件も含め,このメーカーのmicroSDはもう使用しないほうが賢明だろう(メディアは永久保証となっているけど交換しても使えない物はいらない)

最初の復旧手順

microSDへの書込みはできないが読むことはできるので別のmicroSDへデットコピーして復旧させる

新しいmicroSDは「Gigastone」にした

IMG_20220116_142334.jpg

ところが,コピーの段階で2つのmicroSDの(セクター)サイズが異なることが判明(これには驚いたが)

「KLEVV NEO」の方が「Gigastone」よりセクター数が多いのである

逆なら問題ないのだが,しかたないので無視してデットコピーした・・・けど・・・やはり途中で起動停止

(initramfs) fsck.ext4 /dev/mmcblk0p1
e2fsck 1.44.5 (15-Dec-2018)
The filesystem size (according to the superblock) is 7666688 blocks
The physical size of the device is 7632640 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes
(initramfs)

34048 blocksも食い違っていてfsckは(ファイルシステムが破壊されていると判断して)動作しなかった

残念ながらデットコピーでの復旧は失敗に終わる

さて,どうやってNanoPi NEOサーバを復旧させるかだが,時間待ちもあったこともあり再構築とコピー復活の2つの手段を実施

システムの再構築(手段1)

前回のOSバージョンも置いていたが,新しいのがリリースされていたので新しい方で再構築する(要するに全部作り直し)

最新OSイメージ: Armbian_21.08.1_Nanopineo_bullseye_current_5.10.60.img

ネックは設定のバックアップで本当の最新の設定へ戻せるかである(なのでメディアから設定データを取り出し検証する必要がある → これが復活手順にもなる)

IMG_20220116_142320.jpg

設定は(NanoPi NEOのサーバ化(ソフトウェア))で記録されている通りで不足や注意事項を追加

・armbianの最初の起動(root/1234)時にsudo権限の管理者用のユーザ追加を行うが,このユーザのuidが1000になる

・既にセットアップされているパッケージがあった(問題になる事はない)

・NTPは前回の設定方法では動作しない(現在,未解決)

・bindについては記録の記事から変更がある(バックアップの利用で問題なし)

・dhcpが起動しない問題で以下のように(ターミナルではカラム落ちして)表示される(前回もあったが記録されていないので注意)

● isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
Active: failed (Result: exit-code) since Sun 2022-01-16 19:53:43 JST; 48s ago
Docs: man:systemd-sysv-generator(8)
Process: 8928 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=1/FAILURE)
Tasks: 12 (limit: 905)
Memory: 8.5M
CPU: 406ms
CGroup: /system.slice/isc-dhcp-server.service
tq7964 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf
tq8339 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf
mq8943 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf

1月 16 19:53:41 nanopineo dhcpd[8955]: exiting.
1月 16 19:53:43 nanopineo isc-dhcp-server[8928]: Starting ISC DHCPv6 server: dhcpd6check syslog for diagnostics. ...
1月 16 19:53:43 nanopineo isc-dhcp-server[8960]: failed!
1月 16 19:53:43 nanopineo isc-dhcp-server[8961]: failed!
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Control process exited, code=exited, status=1/FAILURE
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Failed with result 'exit-code'.
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Unit process 7964 (dhcpd) remains running after unit stopped.
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Unit process 8339 (dhcpd) remains running after unit stopped.
1月 16 19:53:43 nanopineo systemd[1]: isc-dhcp-server.service: Unit process 8943 (dhcpd) remains running after unit stopped.
1月 16 19:53:43 nanopineo systemd[1]: Failed to start LSB: DHCP server.

 これは「/etc/default/isc-dhcp-server」を修正する前にdhcp serverを起動すると「/var/run/dhcpd.pid」が残存してserverが再起動しないためで,正常にserverが起動しない場合にロックファイルを削除しないバグがあると思われる

パーティーションコピーで復旧(手段2)

resize2fsを使えばファイスシステムのサイズを変えられるので旧microSDからシステム部分だけ取り出してサイズを変更して新microSDへ書き込めば復旧できる

この場合,元のOSイメージでの復旧なので設定した情報は最新,さらに設定内容を参照したりバックアップすることができる

ただし別途microSDを操作するためのlinuxシステムが必要となる(エミュで遊ぶため構築していたUbuntuDesktopを利用した)

今回は1つのパーティションなので手間が掛からなかった

①Ubuntuで旧microSDを接続してデバイス名を確認(/dev/sdc)

※デバイス名の確認方法として,接続前に「fdisk -l」でデバイスリストを表示させて,接続後に再度リストに増えたデバイスが対象

パーティションを確認すると1つだけある

# fdisk -l /dev/sdc
ディスク /dev/sdc: 29.6 GiB, 31724666880 バイト, 61962240 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xc236f75e

デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sdc1 8192 61341695 61333504 29.3G 83 Linux
#

②/dev/sdc1をコピーする

# dd if=/dev/sdc1 of=disk.img bs=1G

# ls -l
-rw-r--r-- 1 root root 31402754048 1月 16 17:45 disk.img
#

③fsckで修正

# e2fsck -f disk.img

④ファイルシステムをリサイズ(8GBとした)

# resize2fs disk.img 8G
resize2fs 1.44.1 (24-Mar-2018)
Resizing the filesystem on disk.img to 2097152 (4k) blocks.
The filesystem on disk.img is now 2097152 (4k) blocks long.
# ls -l
-rw-r--r-- 1 root root 8589934592 1月 16 20:00 disk.img
#

disk.imgはファイルシステムなのでmountして中身を参照することができる(必要ならファイルをバックアップする)

# mount disk.img /mnt
# ls -l /mnt
合計 80
lrwxrwxrwx 1 root root 7 5月 6 2021 bin -> usr/bin
drwxr-xr-x 4 root root 4096 9月 5 20:28 boot
drwxr-xr-x 2 root root 4096 5月 8 2021 dev
drwxr-xr-x 96 root root 4096 9月 27 17:53 etc
drwxr-xr-x 13 root root 4096 6月 26 2021 home
lrwxrwxrwx 1 root root 7 5月 6 2021 lib -> usr/lib
drwx------ 2 root root 16384 5月 8 2021 lost+found
drwxr-xr-x 2 root root 4096 5月 6 2021 media
drwxr-xr-x 2 root root 4096 5月 6 2021 mnt
drwxr-xr-x 2 root root 4096 5月 6 2021 opt
drwxr-xr-x 2 root root 4096 3月 20 2021 proc
drwx------ 5 root root 4096 9月 7 20:43 root
drwxr-xr-x 3 root root 4096 5月 8 2021 run
lrwxrwxrwx 1 root root 8 5月 6 2021 sbin -> usr/sbin
drwxrwxr-x 2 root root 4096 5月 8 2021 selinux
drwxr-xr-x 3 root root 4096 8月 29 15:27 srv
drwxr-xr-x 2 root root 4096 3月 20 2021 sys
drwxrwxrwt 2 root root 4096 5月 8 2021 tmp
drwxr-xr-x 10 root root 4096 5月 6 2021 usr
drwxr-xr-x 12 root root 4096 8月 28 19:53 var
#

⑤新microSDを起動できるようにする(IPLを書き込むとかBoot strapできるようにするという)

IPLのみ書き込む方法があるのだけど思い出せなかったので(DLして初期に書き込む)OSイメージを書き込む

何で書き込んでも良いが,Windows10で利用している「Win32DiskImager」を使った

WS_20220116_01.png

⑥Ubuntuで新microSDを接続してパーティションを操作する

パーティション1を削除して新規に8Gでパーティション1を作成(つまりパーティーションサイズを変更)

# fdisk /dev/sdc

fdisk (util-linux 2.31.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。


コマンド (m でヘルプ): p
ディスク /dev/sdc: 29.1 GiB, 31267487744 バイト, 61069312 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xc236f75e

デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sdc1 8192 2744319 2736128 1.3G 83 Linux

コマンド (m でヘルプ): d
パーティション 1 を選択
パーティション 1 を削除しました。

コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 プライマリ, 0 拡張, 4 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
最初のセクタ (2048-61069311, 既定値 2048): 2048
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2048-61069311, 既定値 61069311): +8G

新しいパーティション 1 をタイプ Linux、サイズ 8 GiB で作成しました。

コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。

#

⑦リサイズしたファイルシステムを書き込む

# disk.img of=/dev/sdc1 bs=64M
128+0 レコード入力
128+0 レコード出力
8589934592 bytes (8.6 GB, 8.0 GiB) copied, 549.08 s, 15.6 MB/s
#

⑧起動確認

U-Boot SPL 2021.04-armbian (May 06 2021 - 17:50:40 +0000)
DRAM: 512 MiB
Trying to boot from MMC1



Starting kernel ...

Loading, please wait...
Starting version 241
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.33.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
/dev/mmcblk0p1: clean, 46546/762880 files, 611829/2097152 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.

Welcome to Armbian 21.08.1 Buster!



[ OK ] Started Authorization Manager.
[FAILED] Failed to start LSB: DHCP server.
See 'systemctl status isc-dhcp-server.service' for details.
[ OK ] Started LSB: RPi-Monitor daemon.
[ OK ] Reached target Multi-User System.
[ OK ] Reached target Graphical Interface.
Starting Update UTMP about System Runlevel Changes...
[ OK ] Started Update UTMP about System Runlevel Changes.

Armbian 21.08.1 Buster ttyS0

nanopi login:

(※)ネットワークに接続していないのでDHCPがエラーとなっている

復旧

結果,新しいOSバージョンで運用したかったので手段1で復旧させている

バックアップ用に手段2のmicroSDは保管

DIYのポータブルラジオキットを試す

中波の受信が難なのを調査するため同調コイルに問題がないか確認する

先ずNanoVNAで同調周波数を測定すると,少し下がったがLC値から計算した通りで上の周波数は1600kHz位

ダイヤルに1600kHzを記入

IMG_20220116_090647.jpg

下の周波数はNanoVNAの計測が1MHz~なので不明だが500kHz位のはず

ダイヤルに計測の下限の1000kHzと500kHzを記入

IMG_20220116_090735.jpg

次に動作も確認してみようと最初はダイオードラジオでも作ろうと思ったが,折角なのでパーツを流用したラジオキットの中波のみブレッドボードで組んでみた

CCI_000012_1280.png

添付の回路図から中波とAMPの部分だけで構成する(赤枠内)

VRは付けず10kΩの抵抗にしている

IMG_20220115_225713.jpg

室内でバーアンテナだけでは受信できなかったので外部アンテナを繋いでNHKと南海放送の受信を確認

受信周波数は目盛り通りだったので同調コイルは問題なかった

同調コイルは今後も何かと使えるだろう

参考までに

Amazonで購入した「DIY のポータブル AM FM ラジオキット 76-108MHZ 525-1605KHZ」の説明書は中国語で記載されている

IMG_20220109_114854.jpg

雰囲気は判るが流石に理解するレベルでは読めない(回路図は別)

前には書いたが,このような場合に便利なのがGoogleレンズで結構使える

Screenshot_20220109-124429.png

翻訳されたテキストのファイル(UTF)(SJIS

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed