ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

NEC Aterm Wi-Fi モバイルルーター PA-MP02LN-SWを買って使ってみた

(2025-06-20 初稿 )

筆者の職場では、筆者と事務職員以外は、ノートPCとスマホ、iPad(第8世代)が支給されており、出張先で活用している。

職員の話を聞くと、スマホはデザリングができない契約で、出先でノートPCを使うためには、iPadでデザリングして使うしか無い。

しかし、iPadとノートPCを持参するとかなり重くなり、iPadのみを持参することが多いとのこと。

ただし、カレンダーの予定の確認、メールの送受信等ノートPCの方がよりスムーズなので、できることなら出先でノートPCが使いたいとのこと。

先日、OCNからiPad用の新しいnanoSIMが送られてきた。

余談だが、今どきはnanoSIMを利用する端末は少なくなり、eSIMが主流になるらしい。

新しいnanoSIMが届いたときに、iPadのデザリングが重くて大変ならば、Wi-Fiモバイルルーターを利用すれば、出先でノートPCやiPadを自由に使い分けることに気が付き、早速、以下のものを発注した。

上記製品は、一昔前のものらしく、未だに電源の接続はUSB Type-Aで古さを感じるが、製品の重さが70g程度と軽く、iPadを持参するよりもかなり軽く、負担が少ない。

ともかく、繋いで使い勝手を調べようとしたところ、かなりハマった。^^;

同製品のユーザーマニュアルには以下の記載があり、自動で接続するとのこと。

しかし、全然繋がらない。

よく考えたら、OCNが今回新しいnanoSIMを送って来たのは、新アドレスに接続しろとのことかもしれないと、以下のサポート情報を確認。

もちろん、接続テスト前に上記のアドレスが変更する情報は見ていたが、新しいnanoSIMを入れて起動すれば、自動的に新しいアドレスに接続してくれるものと勘違いしていた。

勘違いに気が付き、上記リンク先の本製品のユーザーマニュアルに基づき、以下の変更を行ったところ、無事に接続できた。

(変更前)新コース以外      lte-d.ocn.ne.jp
(変更後)新コース         ocn.ne.jp

たったこれだけのことだったが、Nortonがブロックしているかもとか、様々なノートPCでテストし、はてまたLinuxのノートPCまで取り出して接続テストを行いかなりの時間を溶かしてしまったのはここだけの話。

他の皆さんが同じように時間を溶かさないように願っている。

 

関連ページ

DebianのファイルサーバにUSB-HDDを追加する

(2026-06-18 初稿)

先日、DebianのファイルサーバにしようとしてGMKtec NucBox G10を購入した。

今回は、すっかり忘れていたので、このGMKtec NucBox G10にUSB-HDDを追加し、起動時からマウントする方法を記述する。

なお、以下のとおりハードディスクを増設する記事を書き、その中でフォーマットの方法については記述したので、ここではフォーマットの方法などについては省略する。

フォーマット済みのUSB-HDDをDebianに接続する

起動したDebian PCにUSB-HDDを差し込み、直後にdmesgでハードディスクの認識を確認する。

$ sudo dmesg

ここでは、/deb/sdaと認識されていたと仮定する。

UUIDを確認する

USB-HDDのUUIDを以下のとおり確認する。

$ sudo blkid
(前略)
/dev/sda: UUID="b365bf61-6f51-42d3-a293-7ac25486xxxx" BLOCK_SIZE="4096" TYPE="ext4"

※UUIDは変更してある

起動時からマウントするように/etc/fstabに書き込む

マウントポイントを作成する。ポイント名は適当に。

$ mkdir /mnt/usbhdd

起動時からマウントするために、/etc/fstabに以下のように書き込む。

cat /etc/fstab
(前略)
UUID=b365bf61-6f51-42d3-a293-7ac25486xxxx /mnt/usbhdd    ext4    defaults,nofail,noatime    0    2

ちなみに、nofailはエラーが起きても起動し、noatimeでアクセス記録を無くしてアクセスを高速化するオプション。

筆者は、すっかり忘れていたので、どなたかの参考になれば幸い。

関連ページ

GMKtec NucBox G10にDebianをインストールしてEthernetで接続する

(2026-06-13 初稿 - 2026-06-22 追記)

GMKtec NucBox G10の購入とハード確認

わが家では、娘のお古のDELL Inspiron 3268にDebianをインストールして、主にファイルサーバとして使っていたが、ついにHDDがお亡くなりになった。

もちろんHDDを交換すればまだまだ使えると思うが、流石に2017年発売のPCなので、かなり遅く、そろそろ新しいサーバに更新しようと考えた。

ちゃんとDebianが動き、24時間稼働のため消費電力が少ないPCを探していたところ、GMKtec NucBox G10というミニPCが目につき購入してみた。

購入したGMKtec NucBox G10

筆者は、ミニPCを購入するのは初めてで、タイムセールもあり4万円弱で購入できたので楽しみである。

到着してすぐに、ハードの確認のためにWindows 11を起動してみた。

ハードの確認のためにWindows 11を起動

とても汚い部屋で、かつ、とても古いテレビで申し訳ないが、ハード的には問題がなかった。何もインストールしていないせいかもしれないが、値段の割にはかなりサクサク動作した。

スペック等気になる方は、以下のページを参照のこと。

Debianのインストール

筆者は、Debianをnetinstのイメージを用いてインストールするが、今回は以下のイメージを用いて、動作確認のためにLXDE環境でインストールした。

  • debian-13.5.0-amd64-netinst.iso

Linuxは原則Ethernetでケーブルを接続してインストールすることが多いが、GMKtec NucBox G10にはEthernetの端子が見当たらない(滝汗)。

これは、最初にWindowsをネット環境無しで起動して欲しいようで、黄色のシールが貼ってあるだけだったが、「サーバ用途なのに、Ethernetが付いてないものを買ってしまった」と焦ったのはここだけの話。

Ethernetケーブルを接続してインストールしたが、どうしたことかWi-Fiでインストールすることになった。

後述するが、GMKtec NucBox G10にDebianをインストールするときは、Wi-Fi環境のあるところで行う方が良い。

インストール後に、調べることとしてLXDE環境までは無事にインストールできた。

Debian LXDEのインストール後

Ethernetを動作させる

インストール後、簡単にEthernetを動作させることができると思っていたが、なかなか苦労したので、以下に筆者が行った方法を記述する。

まずは、どんなEthernetカードが使われているか調べる

$ lspci | grep net
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 0c)

どうもRealtek社のRTL8125 2.5GbEが使われているようだ。

「Debian realtek r8125 network」で検索すると「Debianでは使えない」等のサイトもあったが、「AIによる概要」では「専用ドライバ「r8125-dkms」を導入する必要」があるとか。

ということで、aptラインを以下のとおり、non-freeやcontribを入れてupdateする。

$ cat /etc/apt/sources.list
(必要な部分のみ抜粋)
deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware

deb http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware

deb http://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmware

パッケージのインストール

$ sudo apt update
$ sudo apt install r8125-dkms build-essential linux-headers-$(uname -r)

ちなみに、筆者は最後のlinux-headersをインストールしなかったら動作しなかったので、上記のとおりインストールすること。

(2026-06-22 追記)

カーネルがアップデートしたら、またEthernetが使えなくなったので、以下でモジュールを再構築する必要がある。

$ sudo apt update
$ sudo apt install r8125-dkms linux-headers-$(uname -r)

なんだか、カーネルが更新される度にモジュール作り直すのめんどいな…

(追記終了)

インストール後、以下のとおり確認。

$ sudo modprobe r8125
$ lsmod | grep r81
r8125                  311296  0
r8169                  126976  0
mdio_devres            12288  1 r8169
libphy                 233472  3 r8169,mdio_devres,realtek

modprobeでエラーが無く、lsmodでr8125が読み込まれていることが確認できれば良し。

念の為に再起動して、ip a コマンドによる確認と実際にEthernetの動作を確認。

$ ip a
(一部抜粋)
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000

筆者の場合、めでたく動作させることができた。

サウンドを鳴らす

(2026-06-15 追記)

ファイルサーバとして利用していたので、気が付くのが遅くなったが、サウンドが鳴らないことに気が付いた。
これは、筆者がDebianでLXDEを使っているからかもしれないが、対策を以下に示す。

$ sudo apt install pavucontrol 

出力ポートがHDMI/DisplayPort2になっていれば、サウンドが鳴るようになるはず。

pavucontrolの出力ポート

(追記終了)

 

どなたかの参考になれば幸い。

関連ページ

スマホで撮った写真をブログ等にアップするためにサイズ圧縮等準備する

(2026-06-06 初稿 - )

先日、スマホで撮った写真の日時、緯度、経度を表示するBashスクリプトを以下のとおりアップした。

上記サイトにも書いたが、最近Obsidianを利用しはじめ、その保存先(Vault)をMEGAのMEGAsyncフォルダで、各PC間で共有している。

Obsidianだけに限らず、写真や動画を各PCで共有する場合は、必要最低限のサイズに圧縮しないと空き容量や処理速度に悪影響が出てしまう。

このため、本記事では以下のことを実施するためのBashスクリプトを紹介する。

  1. Imagemagickを利用して、アップする写真サイズの圧縮
  2. jheadを用いて、変更した写真の日付と時刻を、写真撮影日、時刻に変更
  3. 上記リンクで示したスクリプトget_dt_posを用いて、写真のEXIFから日時と経度、緯度を取得し、表示する

スクリプトの作成の前に、imagemagick、jhead、それからリンク先のget_dt_posのスクリプトを取得、インストールしておくこと。

作成したスクリプト

以下に作成したスクリプト(pre_photo)を示す。

特に難しいことは一切していないが、コメントも参照願う。

#!/usr/bin/bash
# スマホの写真をブログやobsidianにアップする前の準備 # (日付変更、サイズ20%、s.jpg) # prepare photo files # ver0.01 2026-06-04 start 一応完成 # ver0.02 2026-06-05 add EXIF datetime Latitude Longitute # need # jhead imagemagick (rename.ul)  exif get_dt_pos if [ -z "$1" ]; then   echo "Usage: $0 *.[JPG|jpg|jpeg]"   exit 1 fi for f in "$@"           # *.JPG 個々のファイルをひとつずつ do     # 縮小済みのファイル(末尾がs.jpg)なら処理をスキップ     if [[ "$f" == *s.jpg ]]; then         continue     fi     cvfname=${f%.*}s.jpg     convert "$f" -resize 20% "$cvfname" # ★お好みの割合に変更<     jhead -ft -q "$cvfname"     ~/bin/get_dt_pos "$cvfname" # get_dt_pos の保存場所を指定 done

念の為に注意点として、元のファイル名にs.jpgを付加している。また、元の20%の大きさに圧縮しているが、お好みのサイズに変更し、get_dt_posの保存場所を指定して実行すること。

実行結果

作成したスクリプトに実行権を与え(chmod +x)実行する。

以下に実行結果を示す。

$ pre_photo *.JPG
260505085219522s.jpg : 2026-05-05 08:52:19  34°51'52.0"N  137°48'55.0"E
260505095558927s.jpg : 2026-05-05 09:55:58  35°5'58.0"N  137°47'44.0"E
260505105547270s.jpg : 2026-05-05 10:55:47  35°5'50.0"N  137°49'16.0"E

ツーリング時に龍王権現の滝で撮影した写真260505105547270s.jpg (サンプル)

一部を抜粋したが、時刻とともに撮影場所が変化し、ターミナル上に、ファイル名、日時、緯度、経度が表示される。

また、スクリプトを実行したフォルダに圧縮した写真にs.jpgが付与されて保存され、ファイルの日時は写真撮影時のものとなっている。

なお、表示された緯度、経度をコピーしてGoogle Mapに貼り付けると撮影場所の位置を確認することができる。

簡単なスクリプトであるが、筆者は重宝している。

どなたかの参考になれば幸いである。

関連ページ

Bashでスマホ写真のEXIFから日時と経度、緯度を取得する

(2026-06-05 初稿 - 2026-06-06 追記)

最近、メモや資料の整理にObsidianを利用し始めた。が、まだ始めたばかりでとてもブログに書けるようなことはない。

で、せっかくObsidianを利用し始めたので、サボっていた過去のツーリングや旅行の記録を残しておこうと考えた。

ただ、ツーリングや旅行中の写真がどこで撮ったものか、過去のものだとわからないことが多い(ボケが始まっているのか…^^;)。

そこで、写真の中のEXIFから日時と緯度、経度を取得するスクリプトを作ってみた。

なお、緯度と経度の出力は、Google Mapに貼り付けると、どこで撮ったものかMap上で確認が可能である。

作成したスクリプト

作成したスクリプトには、exifパッケージが必要であるので、Debian等の方は、以下のとおり、事前にインストールが必要である。

$ sudo apt install exif

それでは、作成したスクリプト(get_dt_pos)を以下に示す。

#!/usr/bin/bash
# スマホの写真のEXIFから日時と経度、緯度を取得する
# get_dt_pos  get date time position

# ver0.01 2026-06-05 start 一応完成
# ver0.02 2026-06-05 change LANG=C exif

# need
# exif  sudo apt install exif for Debian 

if [ -z "$1" ]; then
  echo "Usage: $0 *.[JPG|jpg|jpeg]"
  exit 1
fi

filepath="$1"  # 念の為に、引数1をバックアップ

# LANG=C exif -m で言語、機種依存を回避
exifdata=$(LANG=C /usr/bin/exif -m "$1" | sed 's/|//' | sed 's/,//g' | tr -s " ")

# get parameter
daytime=$(echo "$exifdata" | grep -e "Date and Time (Original)" )
latitude=$(echo "$exifdata" | grep -e "^Latitude")
longitude=$(echo "$exifdata" | grep -e "^Longitude")

# output
echo -n "$filepath : "
set $daytime; echo -n ${3//:/-} $4 ' '
set $latitude; echo -n $2'°'$3"'"$4'.0"N' ' '
set $longitude; echo $2'°'$3"'"$4'.0"E'

全く工夫のかけらも無いスクリプトだが、Geminiさんに教えてもらいLANG=Cで-mオプションを付けてexifを実行することにより、たぶん言語や機種依存を回避できるのではないかと思っている(未確認)。

スクリプトの実行

スクリプトの実行例は以下のとおり。

$ get_dt_pos 260103163059698.JPG
260103163059698.jpg : 2026-01-03 16:30:59 34°52'58.0"N  138°19'57.0"E

出力の「34°52'58.0"N  138°19'57.0"E」の部分をGoogle Mapに貼り付けるとMap上で撮影場所を確認できる。

なお、上記スクリプトは一つの画像ファイルにしか対応していないが、その他、画像の圧縮や写真ファイルの日付変更等を同時に行うスクリプトも、近日中にアップする予定だ。

どなたかのお役に立てば幸いである。

(2026-06-06 追記)

このスクリプトを利用して、写真サイズの圧縮及び圧縮後のファイルの日時を撮影時のものに変更するBashスクリプトを以下の記事で書いたので、参考までに

(追記終了)

関連ページ

Bashのwhile readで行頭のスペースも読み込む

(2026-05-20 初稿)

Webで知ったのだが、どこであったか失念してしまってごめんなさい。

Bashのwhile readで、ファイルから1行ずつ読み込むと行頭のスペースが削除されてしまうのでその対策を示す。

Pythonのファイルでは大問題になるかも…

 

サンプルファイル(sample.txt)

$ cat sample.txt 
no_space
    space
no_space
         space

上記のサンプルファイルを以下のスクリプトで読むと以下のようになる。

$ cat test_script
#!/usr/bin/bash
# sample program
echo "### no IFS"
while read -r line
do
    echo  "$line"
done <  $1

echo ""

echo "### IFS= "
while IFS= read -r line  # 行頭spaceを保存 IFS= 必要
do
    echo  "$line"
done <  $1

 

$ test_script sample.txt
### no IFS
no_space
space
no_space
space

### IFS= 
no_space
    space
no_space
         space

上記のとおり、while と read の間に IFS= を挿入して、IFSを一時的にクリアしてやれば、行頭のスペースまで読み込める。

このとき注意点として、echo命令の”$line"のように、変数をダブルクォートする必要がある。

関連ページ

同じ行の出現回数をGeminiに教えてもらいながら、Bashスクリプトで作ってみた。

(2026-04-17 初稿)

 先日仕事で同じ行の出現回数を数える必要があり、すぐに思いついたのは連想配列を用いたBashスクリプトだが、すっかり忘れていて、うまく動作させられなかったので、Geminiに聞きながら作成した。

 この記事の最後には、ワンライナーでできる方法を紹介するので、以下のスクリプトは行に何らかの処理を加える場合に利用するのと、Bashの連想配列の使い方のサンプルとしてアップする。

テスト用のサンプルファイル

cat rtest.txt
aaaa
 aaaa    #行頭にスペース
bbbb
aaaa a   #間にスペース1つ
aaaa  a  #間にスペース2つ

作成したBashスクリプト

#!/usr/bin/bash
# 同じ行の出現回数を数える連想配列のテスト

declare -A target

while read -r line
do
  # 途中の空白の数が重要な場合はNG
  trim_line=$(echo "$line" | xargs)

  # 空行をスキップする場合
  [ -z "$trim_line" ] && continue

  if [ "${target[$trim_line]}" ]; then
    (( target["$trim_line"]++ ))
  else
    target["$trim_line"]=1
  fi
done

for item in "${!target[@]}"; do
    echo "${item} ${target[${item}]}"
done | sort

実行結果

 このスクリプトに実行権を与えて(chmod +x renso_test.sh)以下のように実行する。

$ cat rtest.txt | renso_test.sh
aaaa a 2
aaaa 2
bbbb 1

 スクリプトの途中のコメントにもあるけど、行頭、行末のスペースは削除され、単語間のスペースも1つになるので注意する。

同じ機能のワンライナー

 Bashのすごいところは、上記のようなスクリプトを作らなくても以下のワンライナーで同じことができる。

$ cat input.txt | awk '{$1=$1;print}' | sort | uniq -c
      2 aaaa
      2 aaaa a
      1 bbbb

出現回数が最初なのが気にいらなければ、以下のようにすれば単語、数字の順になる。

$ cat test.txt | awk '{$1=$1;print}' | sort | uniq -c | awk '{print $0, $1}' | cut -d' ' -f2-
aaaa 2
aaaa a 2
bbbb 1

 ということで、最初のスクリプトは行を読み込んだ後に、条件により何らかの処理をする場合に使うことにする。

関連ページ