build temper

serverを換えるため、USB温度計! USB thermometer-528018 のバイナリをビルド。
ちょっと手間取ったのでメモ。
環境はdebian12

$ sudo apt install build-essential libusb-dev

$ make
gcc -Wall temper.c pcsensor.c -o temper -lusb
pcsensor.c:50:18: warning: ‘reqBulkLen’ defined but not used [-Wunused-const-variable=]
50 | const static int reqBulkLen=8;
| ^~~~~~

以下は実行用のメモ
$ sudo cp -p temper /usr/local/bin/
$ sudo apt install gnuplot

Debian12でminiDlnaが動かない

いつものようにminiDlnaをインストールしたけど、メディアファイルのフォルダにパーミッションがないと怒られる。
minidlna.c:670: error: media directory …

次を参考にrootで起動すると動くようになった。原因を探ってないのでスマートでない解決っぽいけど…
参考:>Ubuntu 22.04でのMiniDLNAでハマった話 – 趣味のプログラム工房

まず、miniDlna のユニットファイルを探す。
$ sudo systemctl cat minidlna
[sudo] XXX のパスワード:
/etc/systemd/system/minidlna.service

ユニットファイルを編集してrootで起動するようにする。
$ sudo vi /etc/systemd/system/minidlna.service
[Service]
User=root
Group=root

ユニットファイルの変更を有効にして、miniDlna を再起動する。
$ sudo systemctl daemon-reload
$ sudo systemctl restart minidlna
$ sudo systemctl status minidlna
● minidlna.service – MiniDLNA lightweight DLNA/UPnP-AV server
Loaded: loaded (/etc/systemd/system/minidlna.service; enabled; preset: enabled)
Active: active (running) since Sat 2024-08-03 17:11:45 JST; 2s ago
Docs: man:minidlnad(1)
man:minidlna.conf(5)
Main PID: 1744 (minidlnad)
Tasks: 3 (limit: 9373)
Memory: 18.9M
CPU: 2.621s
CGroup: /system.slice/minidlna.service
├─1744 /usr/sbin/minidlnad -f /etc/minidlna.conf -P /run/minidlna/minidlna.pid -S -r
└─1747 /usr/sbin/minidlnad -f /etc/minidlna.conf -P /run/minidlna/minidlna.pid -S -r

8月 03 17:11:45 chisa systemd[1]: Started minidlna.service – MiniDLNA lightweight DLNA/UPnP-AV server.
$

OK

Install powershell on Ubuntu 24.04

$ sudo dpkg --install --ignore-depends=libicu72 powershell_7.4.2-1.deb_amd64.deb

参考:https://github.com/PowerShell/PowerShell/issues/23197

8/25 追記
snapでインストールしたらaptでも文句言われなくなった。
$ sudo snap install powershell --classic

Pixel 6a/7aのonNmeaMessage()で高度を取得する。

Pixel 4aまではonNmeaMessage()で高度を取得できていたのに、Pixel 6a以降でうまく取れなくなっていた。2022年9月から放置していました。

これまでは次の実装だった。
1.onNmeaMessage()の出力をキャッシュに保存。
2.キャッシュは$GPRMCが現れる毎にクリアして更新。
3.一定時間でキャッシュをファイルに保存。
以前はこれで$GPGGAが取れていたので、高度の情報が抜けることはなかった。

onNmeaMessage()の出力が変わって、GPS以外のGalileo、GLONASS他も出力するように色々変わったみたい。
参考:NMEA Revealed

次の方法でうまくいった。
1.onNmeaMessage()の出力をキャッシュ1($GPRMC+その他)、キャッシュ2($GPGGAのみ)に保存。
2.キャッシュ1は$GPRMCが現れる毎にクリアして更新。
3.キャッシュ2は$GPGGAが現れる毎にクリアして更新。
4.一定時間でキャッシュ1、キャッシュ2をファイルに保存。

週末に少しずつ試して、一月半ほどかかってしまった。