matoken's blog https://matoken.org/blog Is there no plan B? Fri, 08 May 2026 21:31:32 +0000 ja hourly 1 https://wordpress.org/?v=6.9.4 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg matoken's blog https://matoken.org/blog 32 32 Motorola moto G24で充電制限(「過充電の防止」機能) https://matoken.org/blog/2026/05/09/motorola-moto-g24_overcarge/ https://matoken.org/blog/2026/05/09/motorola-moto-g24_overcarge/#respond Fri, 08 May 2026 21:31:31 +0000 https://matoken.org/blog/?p=5465

以前,Androidスマートフォンをadbコマンド経由でバッテリー充電状況を確認して80%までしか充電しないようにしていた時期がありました.

しかしあまり差がないように感じてやめてしまいました.
現在利用しているAndroid端末のmoto G24に似た機能があるのに気づいたので有効にしてみました.

「設定」→「バッテリー」→「過充電の防止」で有効にできます.

moto g24 overcharging

この状態で充電を行うと80%担ったところで充電が止まるのが確認できました.
以下のような説明があるので一旦80%になったら20%になるまで充電できないのかなと思いましたが,充電ケーブルを接続し直したらまた80%まで充電してくれました.

電話が電源に接続されている間、過充電の防止機能により電池は
正常な状態に保たれます。充電は80%で一時的に停止し、電池の列
量が20%を下回ると再開します。

80%充電が完了すると通知が来ます.この通知をタップすると設定画面は開きますが,「過充電の防止」は開かないので100%充電にするために機能をoff似するのが少し面倒です.

過充電の防止が動作すると、通知が届きます。

通知例

しかし,この通知が来ても充電が止まらず100%充電されることも.設定を確認するとちゃんと過充電の防止はonの状態です.再起動しても100%充電されます.「過充電の防止」設定をoff/onすることでまた効くようになりました.充電周りにバグがあると少し不安です.

他社でも機能名はそれぞれですが,類似機能のある機種があるようです.あまり目につく機能ではありませんが購入前に知りたいところです.

環境
$ adb shell getprop ro.build.version.release
14
$ adb shell getprop ro.build.version.sdk
34
$ adb shell getprop ro.build.id
UTAS34.82-126-2
$ adb shell getprop ro.product.model
moto g24
]]>
https://matoken.org/blog/2026/05/09/motorola-moto-g24_overcarge/feed/ 0
外付けHDDのゴミ箱を有効にする https://matoken.org/blog/2026/05/06/enable-hdd-trash-can/ https://matoken.org/blog/2026/05/06/enable-hdd-trash-can/#respond Tue, 05 May 2026 21:12:52 +0000 https://matoken.org/blog/?p=5455

猫がキーボードの上を歩くことがよくあります.いつの間にかCapsLockとかNumLockとかが掛かってしまったりします.
その程度ならいいのですが,先日ファイラーが開いた状態でDel key を押されファイルが消えてしまいました.外付HDD でゴミ箱も設定していなかったのでゴミ箱からの復活もできません.

外付けHDDのゴミ箱を有効にしました.

freedesktop.orgに文章がありそうです.

It MAY also choose to provide trashing in the “top directories” of some or all mounted resources. This trashing is done in two ways, described below as (1) and (2).
(1) An administrator can create an $topdir/.Trash directory. The permissions on this directories should permit all users who can trash files at all to write in it.; and the “sticky bit” in the permissions must be set, if the file system supports it.
:
(2) If an $topdir/.Trash directory is absent, an $topdir/.Trash-$uid directory is to be used as the user’s trash directory for this device/partition. $uid is the user’s numeric identifier.
:

自分しか使わないので,HDDのrootに,.Trash-$uid というディレクトリを作っておけば良さそうです.

$ cd /run/media/matoken/6f12b6e0-e167-4afc-b30b-ad30c2c9f446 (1)
$ sudo install -d -m 700 -o "$(id -u)" -g "$(id -g)" ./.Trash-"$(id -u)" (2)
$ ls -A | grep .Trash-
.Trash-1000
$ id --user
1000
  1. 対象のHDDのtop dirに移動

  2. 自分用ゴミ箱ディレクトリを作成

この状態でファイラー(今回はPCManFM-Qt)でHDD内のファイルを削除するとゴミ箱に移動するようになりました.
これでまた猫にファイルが消されても復旧しやすくなりました🐈🐾

環境
$ dpkg-query -W pcmanfm-qt*
pcmanfm-qt	2.3.0-1
pcmanfm-qt-l10n	2.3.0-1
$ lsb_release -dr
Description:	Debian GNU/Linux forky/sid
Release:	n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/05/06/enable-hdd-trash-can/feed/ 0
スマートフォンとPC間のファイルのやり取りをするBifrost https://matoken.org/blog/2026/05/05/bifrost/ https://matoken.org/blog/2026/05/05/bifrost/#respond Mon, 04 May 2026 20:55:07 +0000 https://matoken.org/blog/?p=5450

AndroidスマートフォンとPC間のファイル転送にBluetoothをよく使っていました.最近2.4GHzのWi-Fiを使っているせいか転送に失敗することが多いです.
有線だと確実ですが少し面倒.アドホックにファイル転送用のhttpdを起動してスマートフォン<→PC間のファイルのやり取りが出来るBifrostというものを知ったので試した見ました.

導入

導入はGithub Releasesからビルド済バイナリをダウンロードするか, go install github.com/axiom0x0/bifrost@latest で導入できます.Linux armhfもあるのが嬉しい.

利用例

$ bifrost
bifrost v1.1.0 — bridge files to your phone via QR code

Usage:
  bifrost <file> [port]              send a file (+ upload)
  bifrost -f <file> [-p port]        send a file (+ upload)
  bifrost -r [-o dir] [-p port]      receive files only
  bifrost -d <dir> [-p port]         browse a directory (+ upload)

  Add -e to any mode for encrypted transfers.

Flags:
  -1	exit after first completed transfer
  -d string
    	directory to browse and serve
  -e	enable end-to-end encryption
  -f string
    	file to serve (send mode)
  -o string
    	output directory for received files (default ".")
  -p int
    	port to serve on (default 8888)
  -r	receive-only mode
  -v	print version and exit

Examples:
  bifrost myfile.gpx              send file, allow uploads back
  bifrost -f photo.jpg -p 9090    send on custom port
  bifrost -r -o ~/Downloads       receive files only
  bifrost -d ~/Photos             browse directory
  bifrost -e myfile.gpx           send with encryption
  bifrost -e -r                   receive with encryption

ファイル転送時にはQR codeが表示されるのでそれをスマートフォン側で読み込むと便利です.勿論URLの入力でもok.

pcからスマートフォンへのファイル送信例
$ bifrost file.txt

█████████████████████████████████
█████████████████████████████████
████ ▄▄▄▄▄ █ ▄ ▀▀▀▄█▄█ ▄▄▄▄▄ ████
████ █   █ █▀ ▀▄█▄▀▀▄█ █   █ ████
████ █▄▄▄█ ███ █▄▀▄█▀█ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ █ █▄█▄█ █▄▄▄▄▄▄▄████
████ █  █ ▄▄▀▀▀▀▄ █ ▄█ ▀▀▄█ ▄████
██████▀▄ ▀▄ ▄▄█▄█▀█▄▄▄██ ▀▀██████
████▄██ █▄▄▄▀▄ ▀ ▀▄█ ▀ █▀█▄▄ ████
████▀▄ █▀▄▄▄ ▄█ █▄▄▄▄█▀▄█▀▄▄▀████
███████▄▄▄▄▄▀█ █▄█▄█ ▄▄▄ ▄▄▄ ████
████ ▄▄▄▄▄ █ █▀▀█ ██ █▄█ ▄▄▄ ████
████ █   █ █▀▄ ██▄██ ▄▄ ▄█▀▄▀████
████ █▄▄▄█ █▄▀ ▀▀▀▄██ ██ ▄ ▄█████
████▄▄▄▄▄▄▄█▄██▄▄████▄█▄▄▄▄▄▄████
█████████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

  Mode:  send
  File:  file.txt (126.6 KB)
  URL:   http://192.168.100.22:8888
  Port:  8888

Scan QR to download (uploads also accepted).
Press Ctrl+C to stop.

受診時には -r オプションと, -o で受信先(既定値はカレントディレクトリ)を指定します.

ファイル受信例
$ bifrost -r -o ~/Downloads/

E2EEを有効にしたいときは -e オプションを,そのままだと起動しっぱなしなので, -1 オプションや,timeoutコマンドを挟むと終了し忘れがなくて良さそうです.

timeoutで300秒に制限.1回だけ,E2EEを有効にして受信
$ timeout 300 bifrost -1 -e -r -o ~/Downloads/

█████████████████████████████████████████████
█████████████████████████████████████████████
████ ▄▄▄▄▄ █▄▀▄ █▀▄  ▄█ ▄▄▄█▀  █ █ ▄▄▄▄▄ ████
████ █   █ █▀▀▄▀▄▀█▄▄▄▀██▄ ▀ ▀▄▀██ █   █ ████
████ █▄▄▄█ █ ██▀ ▀▀   ▄▀▀ ▄▄ ██▄██ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ ▀▄▀▄▀▄▀ █▄▀▄▀ ▀▄█▄█▄█▄▄▄▄▄▄▄████
████▄▀██▄▀▄▄▄█  █▀█▄▄█▀ ▄ ▀ ▄ ▀▄▀▄▄▄ ▄█▀▄████
█████▀ ▄█ ▄  ▄█▄ █▄ ▀▀  ▀  ▄███ █▄▄▀▄█ ▀█████
████▀  ▀ ▀▄▀▀▄▀▄▄▄▄█▀█▀█▀ █▀▀▀▄ █▀▄▀▀▀▄▄ ████
████▀▄▀██▄▄███▀ ▀   █ ▀█    ██▄  █▄▄█▄ ██████
████▀ ▀█  ▄ ▄▄▄▀█▄ ▄▀█▄ ▀▄▄ █▀▀▄▀ ▄█    ▄████
████▀ █ █ ▄▀ ██▀█  █▄ ▀█▄▀▄ ▄██ ▄ ▀▀▀█▀▀█████
████ ▀██▀█▄▄██ ▄▀▄▄ ▀ █▄█▄ ▀▀█  ▄█▄▀▀█▄▀█████
████▄▀▀▀ ▄▄█▄▀ ▄███▄ █▄█ ▀█▄██▄▄▄▀▀    ▀█████
████ ▀ █  ▄ █▄▄ ▄▀ ▄▄█▀▀▄██▄██▄▀▀ ▄▄▀▄▄▄▄████
████████▀ ▄ ▄ █▀▀█▀ ▀▀▀ ▀▀ ▄ ▄▄▄▀▀ ▀▄█ ▀▀████
████▄▄█▄██▄█▀▄▄▀ ▄ ▀▀█▀▀▄ ▄▀▀█▄▀ ▄▄▄ █▀▄▄████
████ ▄▄▄▄▄ █▄█▄▄  ▀▄█ ▀█▀█▀▄██▀▀ █▄█  ▀▀█████
████ █   █ █▄▀▀ ▄▄ ▄▀▀▄ ▀█▄▀▀▀▄▀▄▄  ▄▀ ▄▀████
████ █▄▄▄█ ██▀▀▀▄ ▀█▄▀▄█▄ █ ▄▄█▄▄▀ ▀▀▀ ▀█████
████▄▄▄▄▄▄▄█▄▄█▄███▄▄██▄▄▄▄███▄▄██▄██▄▄▄▄████
█████████████████████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

  Mode:  receive 🔒
  Save:  /home/matoken/Downloads
  URL:   http://192.168.100.22:8888#redMu2lgAsN_jmLduAoaM6lVmvxslMGNDl917QrfZ8g
  Port:  8888

Scan QR to upload files.
Press Ctrl+C to stop.

環境

$ bifrost -v
bifrost v1.1.0
$ lsb_release -dr
Description:	Debian GNU/Linux forky/sid
Release:	n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/05/05/bifrost/feed/ 0
vnStatでトラフィックが計測できなくなっていた https://matoken.org/blog/2026/04/22/traffic-could-no-longer-be-measured-with-vnstat/ https://matoken.org/blog/2026/04/22/traffic-could-no-longer-be-measured-with-vnstat/#respond Tue, 21 Apr 2026 22:11:23 +0000 https://matoken.org/blog/?p=5442

しばらく前からvnStat というツールでネットワークトラフィックを計測してもらっていました.

ビデオミーティングの通信料を確認したりといったことに使っています.
しかし先日ビデオミーティング後に通信料を確認しようとしたらうまく行きません.

レンジを間違えたかなと思いましたがインターフェイス以外同じオプションで他の端末で実行すると出て来るのでレンジは正しそう.

$ vnstat -i enx349971e11a0f -b '2026-04-19 14:00' -e '2026-04-20 00:40' -h
No hourly data available for given date range.

-l でライブモードだとうまく動いていそうですが, -h-5 を叩くと動くけど古いデータしか出てきません.

$ vnstat -i enx349971e11a0f -h

 enx349971e11a0f  /  hourly

         hour        rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     2026-04-04
         17:00    218.69 MiB |   18.13 MiB |  236.82 MiB |  551.83 kbit/s
         18:00      1.65 GiB |   72.64 MiB |    1.72 GiB |    4.11 Mbit/s
         19:00    756.85 MiB |   42.89 MiB |  799.74 MiB |    1.86 Mbit/s
         20:00    140.48 MiB |   12.13 MiB |  152.61 MiB |  355.61 kbit/s
         21:00      8.02 MiB |    3.54 MiB |   11.56 MiB |   26.93 kbit/s
         22:00      7.24 MiB |    3.89 MiB |   11.13 MiB |   25.93 kbit/s
         23:00      6.15 MiB |    3.66 MiB |    9.81 MiB |   22.85 kbit/s
     2026-04-05
         00:00      4.99 MiB |    3.47 MiB |    8.46 MiB |   19.71 kbit/s
         01:00      5.71 MiB |    3.51 MiB |    9.22 MiB |   21.49 kbit/s
         02:00      2.87 MiB |    3.32 MiB |    6.19 MiB |   14.42 kbit/s
         03:00     11.47 MiB |   22.75 MiB |   34.22 MiB |   79.74 kbit/s
         04:00    784.37 MiB |   39.35 MiB |  823.72 MiB |    1.92 Mbit/s
         05:00    626.25 MiB |   32.25 MiB |  658.50 MiB |    1.53 Mbit/s
         06:00     38.78 MiB |   11.54 MiB |   50.32 MiB |  117.26 kbit/s
         07:00     16.57 MiB |    4.71 MiB |   21.29 MiB |   49.60 kbit/s
         08:00     12.33 MiB |    4.39 MiB |   16.71 MiB |   38.95 kbit/s
         09:00     12.20 MiB |    4.78 MiB |   16.98 MiB |   39.56 kbit/s
         10:00    104.22 MiB |    6.25 MiB |  110.47 MiB |  257.41 kbit/s
         16:00     14.04 MiB |   10.51 MiB |   24.55 MiB |   57.20 kbit/s
         17:00     47.55 MiB |   10.81 MiB |   58.36 MiB |  135.99 kbit/s
         18:00     93.25 MiB |   13.96 MiB |  107.21 MiB |  249.82 kbit/s
         19:00    133.44 MiB |   19.54 MiB |  152.98 MiB |  356.47 kbit/s
         20:00     53.40 MiB |    6.77 MiB |   60.17 MiB |  140.21 kbit/s
         21:00      3.52 MiB |    1.28 MiB |    4.80 MiB |   11.19 kbit/s
     ------------------------+-------------+-------------+---------------

vnStat への登録インターフェイスを一旦削除して登録し直してみます.

$ sudo vnstat --remove -i enx349971e11a0f --force (1)
$ sudo vnstat --add -i enx349971e11a0f (2)
$ vnstat -5
No 5 minute data available.
  1. vnStat から enx349971e11a0f を削除

  2. enx349971e11a0f を追加し直し

数時間後確認してもデータが見えません…….

$ vnstat -5
No 5 minute data available.

よく見るとvnStat の結果の1行目に変な日付があります.

$ vnstat -i enx349971e11a0f
Database updated: 2026-05-05 08:08:00

   enx349971e11a0f since 2026-04-21

          rx:  0 B      tx:  0 B      total:  0 B

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
                                no data available
     ------------------------+-------------+-------------+---------------
     estimated       --      |     --      |     --      |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
                                no data available
     ------------------------+-------------+-------------+---------------
     estimated       --      |     --      |     --      |

db が未来の日付になっています.

Database updated: 2026-05-05 08:08:00

この端末はRTC のバックアップバッテリが死んでいるようでバッテリ切れで落ちると時計が飛んでしまいます.その次の起動時にUEFI で時計を合わせて起動して,システム起動後にntp で時計合わせしてもらっているのですが,恐らくそのときに5/5にしてしまいvnStat のdb がおかしくなったのかもしれません.

データベースがおかしそうなのでデータベースを作り直してみます.

$ sudo service vnstat stop (1)
$ sudo -u vnstat mv /var/lib/vnstat/vnstat.db /var/lib/vnstat/vnstat.db.bak (2)
$ sudo service vnstat start (3)
$ vnstat -i enx349971e11a0f (4)
 enx349971e11a0f: No data. Timestamp of last update is same 2026-04-22 05:37:54 as of database creation.
  1. vnStat を一旦停止

  2. データベースを退避

  3. vnStat を起動

しばらく後に確認するとこんな感じでちゃんと動き始めたようです.

$ vnstat -i enx349971e11a0f -h

 enx349971e11a0f  /  hourly

         hour        rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     2026-04-22
         05:00     66.23 MiB |    9.14 MiB |   75.37 MiB |  175.62 kbit/s
         06:00     13.89 MiB |    4.69 MiB |   18.58 MiB |   86.61 kbit/s
     ------------------------+-------------+-------------+---------------
$ vnstat -i enx349971e11a0f -5

 enx349971e11a0f  /  5 minute

         time        rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     2026-04-22
         05:35    201.93 KiB |  113.63 KiB |  315.56 KiB |    8.62 kbit/s
         05:40     10.26 MiB |    1.57 MiB |   11.84 MiB |  330.99 kbit/s
         05:45      7.15 MiB |    2.31 MiB |    9.46 MiB |  264.57 kbit/s
         05:50     38.63 MiB |    4.22 MiB |   42.85 MiB |    1.20 Mbit/s
         05:55      9.99 MiB |  949.36 KiB |   10.91 MiB |  305.14 kbit/s
         06:00      8.72 MiB |    1.32 MiB |   10.04 MiB |  280.77 kbit/s
         06:05      1.35 MiB |  858.75 KiB |    2.19 MiB |   61.13 kbit/s
         06:10    725.47 KiB |  429.95 KiB |    1.13 MiB |   31.55 kbit/s
         06:15    637.71 KiB |  431.47 KiB |    1.04 MiB |   29.20 kbit/s
         06:20      0.98 MiB |  989.68 KiB |    1.95 MiB |   54.39 kbit/s
         06:25      1.52 MiB |  736.79 KiB |    2.24 MiB |   62.61 kbit/s
     ------------------------+-------------+-------------+---------------

過去のデータは失われましたが,とりあえずまた計測できるようになりました.

またおかしくなる前に電池を交換したほうがいいかもしれません.

このようなcron を設定してみました.1日1回vnStat のdb をバックアップして古いバックアップを消そうとしています.

$ sudo -u vnstat crontab -l | grep vnstat
@daily  cp --backup=numbered /var/lib/vnstat/vnstat.db /var/lib/vnstat/vnstat.db.bak && find /var/lib/vnstat/ -name "vnstat.db.bak*" -ctime 14 -exec rm {} \;
環境
$ dpkg-query -W vnstat* cron
cron    3.0pl1-208
vnstat  2.13-1
vnstati 2.13-1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/04/22/traffic-could-no-longer-be-measured-with-vnstat/feed/ 0
1bit LLMのBonsaiをLinux amd64環境で試す https://matoken.org/blog/2026/04/09/bonsai/ https://matoken.org/blog/2026/04/09/bonsai/#respond Wed, 08 Apr 2026 22:33:24 +0000 https://matoken.org/blog/?p=5427

以下の記事を見てBonsai という1bit LLM に興味を持ちました.持ち運びマシンはあまり使っていないけどRAM 8GB あります.世代はIntel Core iの7世代目と少し古いけど遅くてもそこそこの速度で動くならいいかもと思い試してみました.

端末の主なスペックはざっくりこんな感じ.こうやって見ると古すぎるかもしれない…….

Panasonic CF-RZ6RFRVS
Intel(R) Core(TM) i5-7Y57 CPU @ 1.20GHz
Memory LPDDR3 4GiB x2
VGA Intel Corporation HD Graphics 615
Disk M.2 SATA 256 GB(used)
OS Debian Trixie amd64

Bonsai の導入

導入は以下のREADME.md の通りに, setup.sh でvenv 環境を作って導入されました.

$ git clone https://github.com/PrismML-Eng/Bonsai-demo (1)
$ cd Bonsai-demo
$ BONSAI_MODEL=8B ./setup.sh (2)
  1. リポジトリをclone

  2. 8B モデルで setup.sh を実行. .venv 以下に導入

Bonsai の実行

先ずはexample をそのまま叩いてみます.動きません.

$ BONSAI_MODEL=8B ./scripts/run_llama.sh -p "What is the capital of France?"
[OK]   Model:  models/gguf/8B/Bonsai-8B.gguf
[OK]   Binary: /home/matoken/src/Bonsai-demo/bin/cuda/llama-cli
[OK]   Using -c 0 (auto-fit to available memory)
[WARN] Auto-fit not supported, falling back to -c 8192

-c 8192 をつけても -c 4096 とかしても駄目です.

script 野中を見ると, 2>/dev/null となっていてSTDERR が出なくなっていそうです.
ということで呼ばれていそうな llama-cli を直に叩いてみるとエラーが出ました.

$ BONSAI_MODEL=8B bin/cuda/llama-cli
bin/cuda/llama-cli: error while loading shared libraries: libcudart.so.12: cannot open shared object file: No such file or directory

libcudart.so.12 が見つからないと言われるので関連パッケージを導入してこれで動くようになりました.

$ apt-file search -x /libcudart.so.12$
libcudart12: /usr/lib/x86_64-linux-gnu/libcudart.so.12
$ sudo apt install libcudart12 nvidia-cuda-dev

2回目以降はこんな感じで実行

$ cd Bonsai-demo
$ source .venv/bin/activate
$ BONSAI_MODEL=8B ./scripts/run_llama.sh -p "What is the capital of France?"

しかし遅すぎます.8B モデルでこんな感じでちょっと辛い.

[ Prompt: 0.0 t/s | Generation: 0.0 t/s ]
Bonsai

Bonsai モデルダウンロード

他のモデルも試してみます.

$ BONSAI_MODEL=4B ./scripts/download_models.sh
$ BONSAI_MODEL=1.7B ./scripts/download_models.sh

1.7B でもこんな感じでまだ遅いです.

[ Prompt: 0.1 t/s | Generation: 0.1 t/s ]

もう少し新しいマシンだとどうだろうと以下の端末でも少し試してみましたがやはり遅い.

CPU Intel Core i7-10510U
RAM DDR4 8GiB *2
8B
[ Prompt: 0.1 t/s | Generation: 0.1 t/s ]
1.7B
[ Prompt: 0.4 t/s | Generation: 0.2 t/s ]

t/s では速度がわからないと思うので以下にcast をupload してみました.

大まかに
〜0:45 でモデル読み込み.
〜3:28 位から回答が帰って来はじめ,
〜8:40 くらいで回答完了.

生成AI での画像生成ならまだしもchat で壁打ちみたいな使い方には辛そうです.

と思ったらこんなニュースが.Llama.cpp 用の OpenVINO バックエンドが追加されたそうで,これを使うとiGPU でも速くなりそうです.

Note

OpenVINO は以前Stable Diffusion で試したことが.

]]>
https://matoken.org/blog/2026/04/09/bonsai/feed/ 0
ファイルマネージャーアプリのPCManFM-Qtのコンテキストメニューに画像変換Scriptを登録 https://matoken.org/blog/2026/04/03/pcmanfm-qt-action/ https://matoken.org/blog/2026/04/03/pcmanfm-qt-action/#respond Thu, 02 Apr 2026 21:22:49 +0000 https://matoken.org/blog/?p=5415
pcmanfm qt

最近デスクトップ環境でのファイルマネージャーアプリにPCManFM-Qt を使っています.以前はNautilus を使っていて,画像のフォーマット変換などにコンテキストメニューに変換script を登録して利用していました.PCManFM-Qt でも同様のことができないか試してみました.

Nautilus ではこんな感じで変換したい画像の上で右クリックしてコンテキストメニューの Scripts の中に画像変換Script を設定していました.

nautilus script01
nautilus script02

PCManFM-Qt ではこの設定は効かないので,LX-Image-Qt やImagemagick の convert コマンドなどで変換していましたが面倒.

PCManFM-Qt では ~/.local/share/file-manager/actions/ 以下にアクション定義の .desktop ファイルを置くことでコンテキストメニューに登録できるようです.

直に .desktop ファイルでもいいのですが,複数ファイル対応などもしたいのでShell Script を用意して,それを .desktop ファイルから呼ぶことにします.

先ずは適当な場所に変換Script を用意します.指定したファイルをImageMagick のconvert コマンドでwebp 形式に変換するものです.

~/bin/pcmanfm-convert2webp.sh
#!/bin/sh

for file in "$@"; do
  [ -f "$file" ] || continue
  out="${file%.*}.webp"
  convert "$file" "$out"
done

実行権を付与しておきます.

$ chmod u+x ~/bin/pcmanfm-convert2webp.sh

動作を確認します.大丈夫そうです.

$ ~/bin/pcmanfm-convert2webp.sh /home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.png
$ ls -1 /home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.*
/home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.png
/home/matoken/Pictures/screenshots/2026-03-31_18:02:35-1365093-selected.webp

次に .desktop ファイルを用意します.このファイルは ~/.local/share/file-manager/actions/ に置く必要があります.
MimeTypes で画像の場合にこの .decktop が有効になるようにします.Exec に上のScript を書いて実行できるように.このとき複数ファイルの %F を渡します.

~/.local/share/file-manager/actions/convert2webp.desktop
[Desktop Entry]
Type=Action
Name=image2webp
Name[ja]=画像をwebpに変換
Profiles=convert;
Icon=application-default-icon

[X-Action-Profile convert]
MimeTypes=image/*;
Exec=/home/matoken/bin/pcmanfm-convert2webp.sh %F
Categories=Graphics;

この状態でPCmanFm-Qt を終了して新たに起動して画像の上で右クリックで convert2webp が実行できるようになりました.変換もok.画像以外のファイルの上で右クリックすると出てきません.

pcmanfm qt script

かなり便利になりました :)

環境
$ dpkg-query -W pcmanfm-qt imagemagick
imagemagick     8:7.1.2.18+dfsg1-1
pcmanfm-qt      2.3.0-1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/04/03/pcmanfm-qt-action/feed/ 0
Twitterで配信された動画アーカイブをダウンロード https://matoken.org/blog/2026/04/01/twitter-broadcast-download/ https://matoken.org/blog/2026/04/01/twitter-broadcast-download/#respond Tue, 31 Mar 2026 22:10:47 +0000 https://matoken.org/blog/?p=5405

Twitterで配信されたライブ動画のアーカイブをダウンロードしてみました.

とあるイベントがTwitter で配信されていたらしくYouTube にもあるのではと思ったけど見当たりません.Twitter にアーカイブが残っているのですが,なんか再生がすぐ止まるので辛い.
ということでダウンロードできないかなと検索するとX/Twitter Broadcast Downloader というものを見つけました.これでダウンロードしてみました.

venv 環境に導入して試す.
$ git clone https://github.com/offish/twitter-x-broadcast-downloader (1)
$ cd twitter-x-broadcast-downloader
$ python3 -m venv venv (2)
$ source venv/bin/activate (3)
$ pip install -r "requirements.txt" (4)
$ python main.py (5)
What is the broadcast URL? https://x.com/i/broadcasts/1qGvvkWeqdBGB (6)
Got media key 28_2038539604165640192
Got playback URL https://prod-fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/PTdVIXd-pzzuOcGNlng6TG9haAxe5-rcN7QaIridcZbNbingfwGFrSiqe9DsliGqOpoLNO8lZ2Pk9a_owkY3aw/non_transcode/ap-northeast-1/periscope-replay-direct-prod-ap-northeast-1-public/master_dynamic_16671870457049479117.m3u8?type=replay
Downloading the broadcast as 28_2038539604165640192.mp4...
[generic] Extracting URL: https://prod-fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/PTdVIXd-pzzuOcGNlng6TG9haAxe5...117.m3u8?type=replay
[generic] master_dynamic_16671870457049479117: Downloading webpage
[generic] master_dynamic_16671870457049479117: Downloading m3u8 information
[generic] master_dynamic_16671870457049479117: Checking m3u8 live status
[info] master_dynamic_16671870457049479117: Downloading 1 format(s): 5500
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 6385
[download] Destination: /home/matoken/src/twitter-x-broadcast-downloader/downloads/28_2038539604165640192.mp4
[download] 100% of    3.64GiB in 00:03:49 at 16.24MiB/s
[FixupM3u8] Fixing MPEG-TS in MP4 container of "/home/matoken/src/twitter-x-broadcast-downloader/downloads/28_2038539604165640192.mp4"


What is the broadcast URL? (7)
  1. source clone

  2. venv 環境を作る

  3. venv を有効に

  4. venv 環境にインストール

  5. X/Twitter Broadcast Downloader を実行

  6. ダウンロードしたいURL を渡す

  7. 次のダウンロードしたいURL 待ち

ダウンロードできました.

$ ls -lA downloads/
total 3722204
-rw-rw-r-- 1 matoken matoken 3811532277 Mar 31 18:03 28_2038539604165640192.mp4
-rw-rw-r-- 1 matoken matoken          0 Mar 31 17:57 .gitkeep
$ ffprobe downloads/28_2038539604165640192.mp4 2>&1 | grep -A 99 ^Input
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'downloads/28_2038539604165640192.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf61.7.100
  Duration: 03:35:23.76, start: 0.000000, bitrate: 2359 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, 2187 kb/s, 30 fps, 30 tbr, 90k tbn (default)
      Metadata:
        handler_name    : VideoHandler
        vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)
      Metadata:
        handler_name    : SoundHandler
        vendor_id       : [0][0][0][0]

以下余録.

リモートのVPS でダウンロードしたのですが結構大きいので小さくしてダウンロードします.

ffmpeg コマンドで動画を小さく
$ ffmpeg -i downloads/28_2038539604165640192.mp4 -vcodec libx264 -crf 33 -vf "scale=720:-2" -c:a copy downloads/28_2038539604165640192-720.mp4
$ ls -1s downloads/
total 4172176
 449972 28_2038539604165640192-720.mp4
3722204 28_2038539604165640192.mp4
動画の音声を取り出してWhisper.cpp で字幕作成
$ ffmpeg -i ~/Downloads/28_2038539604165640192-720.mp4 -ar 44100 -ac 1 -sample_fmt s16 -af silenceremove=1:0:-50dB  clawcon.wav
$ ./build/bin/whisper-cli -m ./models/ggml-large-v3-turbo.bin --output-srt --language auto -f ./clawcon.wav
$ ls -1s clawcon.wav*
1067548 clawcon.wav
    152 clawcon.wav.srt
$ head  clawcon.wav.srt
1
00:00:00,000 --> 00:00:06,660
Alright everyone, we'll be starting in 10 minutes. Please make your way to the stage area. We'll be starting in 10 minutes.

2
00:00:30,000 --> 00:00:59,980
 Thank you.

3
00:01:00,000 --> 00:01:29,980
ダウンロード環境
$ dpkg-query -W python3 python3-venv ffmpeg
ffmpeg  7:7.1.3-0+deb13u1
python3 3.13.5-1
python3-venv    3.13.5-1
$ lsb_release -dr
Description:    Debian GNU/Linux 13 (trixie)
Release:        13
$ arch
x86_64
動画編集,文字起こし環境
$ dpkg-query -W ffmpeg
ffmpeg  7:8.1-3+b1
a$ git remote -v
origin  https://github.com/ggerganov/whisper.cpp.git (fetch)
origin  https://github.com/ggerganov/whisper.cpp.git (push)
$ git log --pretty=oneline -1
95ea8f9bfb03a15db08a8989966fd1ae3361e20d (HEAD -> master, origin/master, origin/HEAD) sync : ggml
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/04/01/twitter-broadcast-download/feed/ 0
FirefoxのAIチャットボットプロバイダーをDuck.aiに変更してみる https://matoken.org/blog/2026/03/31/firefox-duck-ai/ https://matoken.org/blog/2026/03/31/firefox-duck-ai/#respond Mon, 30 Mar 2026 21:15:21 +0000 https://matoken.org/blog/?p=5399

ウェブブラウザのFirefox 133 からサイドバーにAIチャットボットを利用できるようになっています.

チャットボットは複数から選択できますが,プリセットのもの以外の別のチャットボットを追加できないか確認してduck.ai を追加してみました.
Duck.ai はDuckDuckGo 経由でプライバシーをある程度保ったまま利用できるのが個人的に好きです.DuckDuckGo やDuck.ai はTor 経由でも利用できるのでいつもはそちらから使っています.

以下にduck.ai の追加の要望が出ていて,コメントにワークアラウンドの書かれたコメントがあるので真似してみます.

まず,設定から「AI 制御」→「サイドバーの AI チャットボットプロバイダー」から「サイドバーのチャットボット」を「利用可能」にしておきます.

firefox chatbot duck01

次にアドレスバーに about:config を入力して「高度な設定」を開きます.警告が表示されますが,「危険性を承知の上で使用する」を押して強行します.

firefox chatbot duck02

検索欄に browser.ml.chat.provider を入力,鉛筆アイコンをクリックしてテキストボックスに, https://duck.ai/ を入力してEnter を押して確定します.

firefox chatbot duck03

設定のチャットボットが https://duck.ai/ に変わりました.とりあえずこれでOK です.

firefox chatbot duck04
Tip

NoScript などの拡張機能でJavaScript を無効にしている場合,duck.ai のJavaScript を許可する必要があります.

firefox chatbot duck05

サイドバーの AI チャットボットを開くとこんな感じ,これを真に受けるならDuckDuckGo 経由で各チャットボットに接続して匿名を保ってくれるし,データの保持もローカルに,そしてチャット内容はAIトレーニングに利用されないとなっています.

firefox chatbot duck06

この記事を書いている時点で選択できるチャットモデルは,「GPT-5 mini」,「GPT-40 mini」,「gpt-oss120B」,「Llama 4 Scout」,「Claude Haiku 4.5」,「Mistral Small 3」の6つ.ここは偶に変わるようです.

firefox chatbot duck07

以下は記事の要約を行ったときの例です.

firefox chatbot duck08

ちなみにこの設定はチャットボットを変更したり無効にしたら消えてしまうので再度設定し直しが必要そうです.検索エンジンのように設定から任意の複数のチャットボットプロバイダーを追加できるようになるといいですね.

環境
$ dpkg-query -W firefox firefox-l10n-ja
firefox 149.0-1
firefox-l10n-ja 149.0-1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/03/31/firefox-duck-ai/feed/ 0
Firefox 149のタブノート機能とエクスポート方法 https://matoken.org/blog/2026/03/29/firefox-149_tabnote/ https://matoken.org/blog/2026/03/29/firefox-149_tabnote/#respond Sat, 28 Mar 2026 22:01:24 +0000 https://matoken.org/blog/?p=5381

MozillaのウェブブラウザのFirefox 149がリリースされました.新機能の一つのタブノートを少し試してみました.

タブノートを有効にする

タブノートを利用するには設定で有効にする必要があるようです.
右上の「≡」アイコン→「設定」で設定画面を開き,左側の「Firefox Labs」をクリック,「タブノート」にチェックで有効にできます.

Firefox149 tabnote setting

タブノートの利用

ノートを追加したい該当タブで右クリック→「ノートを追加」か,該当タブホバー→「ノートを追加」でタブノートが書けます.
編集,削除は右クリックから「ノートを更新」→「ノートを更新」 or 「ノートを削除」で行えます.
タブを閉じた後また開くとちゃんとメモは残っていました.

Firefox149 addnote1
Firefox149 addnote2
Firefox149 printnote

タブノートのエクスポート

タブノートを書き出してみます.
タイムスタンプを見ると,プロファイルディレクトリ以下の tabnotes.sqlite がそれっぽいです.以下のようにしてcsv で書き出しができました.

Firefox が実行中だとロックされているので適当な場所にコピー
$ cp ~/.mozilla/firefox/4q5mj0jg.default-release-2/tabnotes.sqlite /tmp/
id, URL, 能登とテキスト,作成日をcsv で書き出し
$ sqlite3 -readonly -header -csv /tmp/tabnotes.sqlite "SELECT id, canonical_url, note_text, datetime(created,'unixepoch','localtime') AS created FROM tabnotes ORDER BY created DESC;"
id,canonical_url,note_text,created
4,https://snac.matoken.org/matoken/admin,"個人用snac","2026-03-29 05:58:56"
3,https://codeberg.org/grunfink/snac2,"軽量ActivityPub server `snac' のリポジトリ","2026-03-27 19:52:19"
2,https://www.sony.jp/tablet/products/P1/specification.html,"2画面コンパクトAndroid タブレット","2026-03-27 19:48:17"
1,https://ja.wikipedia.org/wiki/%E6%96%B9%E9%89%9B%E9%89%B1,"方鉛鉱","2026-03-27 19:37:41"
Tip

Firefox のプロファイルについてはこちらを参考にしてください.

環境

$ dpkg-query -W firefox firefox-l10n-ja
firefox 149.0-1
firefox-l10n-ja 149.0-1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/03/29/firefox-149_tabnote/feed/ 0
軽量ActivityPub Serverのsnac 2.91リリース https://matoken.org/blog/2026/03/26/snac-2-91/ https://matoken.org/blog/2026/03/26/snac-2-91/#respond Thu, 26 Mar 2026 11:39:29 +0000 https://matoken.org/blog/?p=5367

susie64 cool

c言語で作られている軽量ActivityPub Server のsnac 2.91 がリリースされました.

Release Notes

## 2.91

Fixed some local posts not being shown if the replied post is deleted.

Fixed web UI incorrect links to public posts for some configurations.

Fixed encoding bug in Mastodon-style share links.

Fixed an error that made imposible to leave empty the following hashtags or blocked hashtags from the web UI.

Include post attachments in the RSS feed entries.

Added some OpenBSD-specific documentation (contributed by oxzi).

Fixed some timezones (contributed by matoken).

Fixed some crashes (special thanks to Louis Merlin for helping me with this).

Updated Docker scripts to avoid generating a useless log file.

Fixed several memory leaks, key generation errors and HTML inconsistencies (contributed by dandelions).

Added ostatus.org and FEP-3b86 data to Webfinger objects.

Added a new CONTRIBUTING.md file. Among other guidelines, I explicitly say there that AI contributions are NOT accepted.

snac is now available as a [Yunohost app](https://apps.yunohost.org/app/snac). Thank you very much to Bruno Cesar Rocha for this.

今回のリリースでは CONTRIBUTING.md ファイルが追加され貢献について明確化されました.そして所謂生成AIやLLMを使ったものは受け取れないとも.
後は大体バグ修正でしょうか.自分の送った小さいパッチや報告したバグ修正も含まれていたりします.

その他,Yunohost app としても登録され,Yunohost 環境で簡単に利用できるようになったようです.

自環境のsnacアップグレード

個人用のsnac はsource からbuild してリリース後数時間後にはアップグレードしました.
#kagolug のsnac はDebian stable-backports(trixie-backports) のパッケージを利用していて,数日遅れの今日アップグレードしました.

自分の環境のamd64 だと問題なかったですが,Debian package は一部環境でコケていそう.

$ rmadison snac2
snac2      | 2.75-2~bpo12+1 | oldstable-backports       | source, amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
snac2      | 2.75-2~bpo12+1 | oldstable-backports-debug | source
snac2      | 2.75-2         | stable                    | source, amd64, arm64, armel, armhf, i386, ppc64el, riscv64, s390x
snac2      | 2.90-1~bpo13+1 | stable-backports          | source, riscv64
snac2      | 2.90-1~bpo13+1 | stable-backports-debug    | source
snac2      | 2.90-1         | testing                   | source, amd64, arm64, armhf, i386, ppc64el, riscv64, s390x
snac2      | 2.90-1         | unstable                  | source, riscv64
snac2      | 2.90-1         | unstable-debug            | source
snac2      | 2.91-1~bpo13+1 | buildd-stable-backports   | source, amd64, arm64, armel, armhf, i386, ppc64el, s390x
snac2      | 2.91-1~bpo13+1 | stable-backports          | source, amd64, arm64, armel, armhf, i386, ppc64el, s390x
snac2      | 2.91-1~bpo13+1 | stable-backports-debug    | source
snac2      | 2.91-1         | buildd-unstable           | source, amd64, arm64, armhf, i386, loong64, ppc64el, riscv64, s390x
snac2      | 2.91-1         | unstable                  | source, amd64, arm64, armhf, i386, loong64, ppc64el, riscv64, s390x
snac2      | 2.91-1         | unstable-debug            | source
Migration status for snac2 (2.90-1 to 2.91-1): BLOCKED: Maybe temporary, maybe blocked but Britney is missing information (check below)
Issues preventing migration:
∙ ∙ Missing build on riscv64
∙ ∙ Autopkgtest deferred on riscv64: missing arch:riscv64 build
∙ ∙ Autopkgtest for snac2/2.91-1: amd64: Pass, arm64: Pass, i386: Test triggered, ppc64el: Test triggered, s390x: Test triggered
∙ ∙ Lintian check waiting for test results - info
∙ ∙ Too young, only 0 of 5 days old
Additional info (not blocking):
∙ ∙ Piuparts tested OK - https://piuparts.debian.org/sid/source/s/snac2.html
∙ ∙ Reproducibility check waiting for results on amd64
∙ ∙ Reproducibility check waiting for results on arm64
∙ ∙ Reproduced on armhf
∙ ∙ Reproducibility check waiting for results on i386
∙ ∙ Reproducibility check waiting for results on ppc64el
Not considered
]]>
https://matoken.org/blog/2026/03/26/snac-2-91/feed/ 0
モバイルルーターでインターネット接続ができなくなり困る https://matoken.org/blog/2026/03/19/router-settings-lost/ https://matoken.org/blog/2026/03/19/router-settings-lost/#respond Wed, 18 Mar 2026 22:07:49 +0000 https://matoken.org/blog/?p=5357

fs0303w no carrier

電源の整理のためにモバイルルーターの電源を抜きました.そしてまた電源に繋いでPCを触ると外に出られません.

モバイルルーターはFUJISOFT +F FS030W でバッテリーは抜いてクレードルで有線接続,更にPoE インジェクター – PoE スプリッター(USB 5V 出力) でPoE 運用をしています.
ルーターの管理画面を確認すると電波が拾えていません.携帯のpovo 2.0 のSIM で確認すると同じ基地局だろうau のBAND 18 は電波を出しています.
ルーターを再起動しても駄目です.

SIM を挿し直したら直らないかなとルーター設置場所の裏山へ.
小雨が降っているので傘を差して濡れないよう気をつけながらSIM を差し直します.

fs0303w cover01
fs0303w cover02

「APN設定を確認」のメッセージのまま進みません.もしかしてAPN設定がおかしい?と蓋をしてPC で管理画面を確認すると「モバイルネットワーク設定」→「プロファイル設定」が初期状態になっています.

fs0303w apn check
fs0303w setting lost

ということで設定し直すことでまた繋がるようになりました.

Note
FUJISOFT +F FS030W での楽天モバイル設定例
  • 「モバイルネットワーク設定」→「プロファイル設定」→「新規」

    プロファイル名

    任意

    ユーザ名
    パスワード
    APN

    rakuten.jp

    認証方式

    None

    接続方法

    IPv4/IPv6

これまでも何度も電源を入れ直していましたが,設定が飛んだのは今回が初めてです.ちなみに他の設定や通信量カウントは消えずに残っていてモバイルネットワーク設定だけが消えていそうです.
ちなみにこれは2台目で,1台目はブートループするようになってしまいました.これも壊れるのが近いのかもしれません.

]]>
https://matoken.org/blog/2026/03/19/router-settings-lost/feed/ 0
Web上のActivityPub投稿をsnacで使いやすくするFirefox拡張機能のSnacWer https://matoken.org/blog/2026/03/13/firefox-extension-snapwer/ https://matoken.org/blog/2026/03/13/firefox-extension-snapwer/#respond Thu, 12 Mar 2026 21:45:02 +0000 https://matoken.org/blog/?p=5332

snac susie

軽量ActivityPub server のsnac用Firefox addon を知ったので試してみました.

このAddOn作者の方のtootをsnacの作者がboostしていたので知りました.

Hello #snac users. If you enjoy exploring the Fediverse via the web, you might find this #FirefoxExtension I created helpful. It lets you interact with almost any post more easily. It also works, of course, on Firefox derivates.

Feel free to take a look.

Webでsnacを利用しているときに便利になる拡張機能のようです.
早速導入してみます.

以下からFirefoxに拡張機能を登録します.

拡張機能の設定から自分のsnacアドレスを登録します.これで準備完了です.

snacwer00

試しに使ってみましょう.MastodonなどのActivityPubの公開投稿を開きます.すると,アドレスバーの右側にsnacのアイコンが表示されます.

snacwer01

snacのアイコンをクリックすると設定した自分のsnacでその投稿が開かれます.ここでLikeやBoostなどの操作ができます.URLをコピーしてsnacに持っていったりするより便利です :)

snacwer02

環境

SnacWer バージョン 1.0.1

$ dpkg-query -W firefox
firefox 148.0.2-1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/03/13/firefox-extension-snapwer/feed/ 0
久々にGNOME環境を起動したら操作できなくなっていたので設定をリセット https://matoken.org/blog/2026/03/07/gnome-setting-reset/ https://matoken.org/blog/2026/03/07/gnome-setting-reset/#respond Fri, 06 Mar 2026 20:46:07 +0000 https://matoken.org/blog/?p=5314

いつもXfce4 で使っているDebian statble(trixie) 環境で久々にGNOME 環境を起動したら操作を受け付けません.
設定をリセットして復旧しました.

GNOME の状況は上部の時計や拡張機能のRunCat なんかは動いているけどキーの入力を受け付けず操作できません.マウスもカーソルが偶に見えるけどクリックしても何も起きません.
という感じで使い物になりません.
元々ほとんど使っていなかったので設定を初期化してみることに.

まずはGNOME からどうにかして抜けます.今回はキー入力を受け付けずCtrl+Alt+F1 なんかでコンソールにも降りれないので困りましたが,sshd を有効にしていたのでそれで入ってディスプレイマネージャ(今回はLightDM) を再起動して抜けました.

$ sudo service lightdm restart
Tip

もしリモート操作もできない場合Magic SysRq key は反応したのでこれで再起動できると思います.

GNOME から抜けた後,GNOME 以外のデスクトップ環境か,コンソール,ssh などでdconf コマンドで設定をリセットします.

$ dconf dump / > dconf.backup (1)
$ dconf reset -f /org/gnome (2)
  1. 念の為dconf をbackup

  2. dconf のgnome 以下をリセット

この後GNOME に入り直すことで復旧できました.

GNOME48 reset

駄目だった場合 dconf reset -f / までやってみてもいいかもしれません.
それでも駄目なら$HOME 以下のGNOME 関連のファイルを消す感じでしょうか.

この環境はDebian bookworm からdist-upgrade した環境なのでdist-uograde のタイミングでお壊れたのかもしれません.
拡張機能も怪しいかなと思ったのですが今回のリセットでは拡張機能は設定されたままで動作しているので恐らく関係なかったです.(拡張機能の問題の場合今回の方法ではリセットできないですね)

環境
$ dpkg-query -W gnome lightdm dconf-cli
dconf-cli       0.40.0-5
gnome   1:48+2
lightdm 1.32.0-6+b2
$ lsb_release -dr
Description:    Debian GNU/Linux 13 (trixie)
Release:        13
$ arch
x86_64
]]>
https://matoken.org/blog/2026/03/07/gnome-setting-reset/feed/ 0
dGPUがなくても動作する国立国会図書館のNDLOCR-Liteが公開されていたので試す https://matoken.org/blog/2026/03/02/ndlocr-lite/ https://matoken.org/blog/2026/03/02/ndlocr-lite/#respond Mon, 02 Mar 2026 14:15:44 +0000 https://matoken.org/blog/?p=5297

国立国会図書館がNDLラボでNDLOCR-Lite を公開しました.
元々NDLOCR が公開されていましたがCUDA 対応のNVIDIA GPU が必須でした.今回のNDLOCR-Lite はdGPU の無いPC でも動作するようなので試してみました.

NDLOCR-Liteは、NDLOCRの軽量版を目指して開発したOCRであり、ノートパソコン等の一般的な家庭用コンピュータやOS環境で、図書や雑誌といった資料のデジタル化画像からテキストデータが作成できるOCRです。

GPU(Graphics Processing Unit。画像描画等の高度な並列計算を処理する装置。)を必要とせず、軽量なOCR処理が可能です。

また、NDLOCRが不得意としていた英文や手書き文字等についても実験的に対応しています。

実際のリポジトリはこちら.

類似のものにNDL古典籍OCR-Lite というものもあります.これもdGPU の必要ないOCR で自分では読めない古典をOCR で読めるようになったりして面白いです.
以下は以前 #kagokug で発表した関連資料です.

  • NDLOCR 要NVIDIA GPU

    • NDL古典籍OCR-LiteのようにNDLOCR-Liteが出ないかな?

このときこんなことを書いていましたが実現しました :)

GUI版を試す

Windows版は以下に使い方があります.自分はLinux版を試しましたが起動後の操作は同じだと思います.

GitHub のReleases から最新のバイナリを入手します.v1.1.0 時点ではLinux amd64 / macOS arm64, amd64 / Windows(amd64?) が用意されているようです.ここではLinux版.

$ wget -c https://github.com/ndl-lab/ndlocr-lite/releases/download/1.1.0/ndlocr_lite_v1.1.0_linux.tar.gz (1)
$ sha512sum ndlocr_lite_v1.1.0_linux.tar.gz (2)
61faed1fc843266095852697bbf29a721db4fb5a054f6d66ae8850301d22a4b1e29535eed150e439f7fd35760a17790a39cf0d45afd7c0ed72e7a3928e47ed93  ndlocr_lite_v1.1.0_linux.tar.gz
$ fuse-archive ndlocr_lite_v1.1.0_linux.tar.gz (3)
$ file ndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui (4)
ndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=55e769c1bfe893353a55cdddbe7066033dc540bf, for GNU/Linux 3.2.0, not stripped
$ ndlocr_lite_v1.1.0_linux/linux/ndlocr_lite_gui (5)
  1. バイナリアーカイブを入手

  2. hash

  3. fuse-archive でアドホックに展開

  4. ファイル形式を確認

  5. NDLOCR-Lite 実行

NDL古典籍OCR-Lite と同じように扱える感じです.画像ファイル,画像ファイルの格納されたディレクトリから一括処理などが可能です.
その他,画面の指定した範囲をキャプチャしてOCR するキャプチャモードも便利です.ただ,このモードのキャプチャはi3 wm では別のworkspace はキャプチャできなさそうで少し使い勝手が悪いです.

NDLOCR Lite gui01

Note
画像の出典:納谷友一 訳註『黒猫』,健文社,1952. 国立国会図書館デジタルコレクション https://dl.ndl.go.jp/pid/2436688

CLI版を使う

CLI版はPython 3.10+ が必要です.今回はDebian sid amd64 のパッケージで導入したPython 3.13.12 を利用しました.
README.md にはpip での導入と,uv での導入が紹介されています.頻繁に使う場合はuv の方がいいかもしれませんがお好みの方で.

pip でvenv 以下に導入した例
$ git clone https://github.com/ndl-lab/ndlocr-lite
$ cd ndlocr-lite
$ python -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
$ python3 src/ocr.py -h
usage: ocr.py [-h] [--sourcedir SOURCEDIR] [--sourceimg SOURCEIMG] --output OUTPUT [--viz VIZ] [--det-weights DET_WEIGHTS] [--det-classes DET_CLASSES] [--det-score-threshold DET_SCORE_THRESHOLD] [--det-conf-threshold DET_CONF_THRESHOLD]
              [--det-iou-threshold DET_IOU_THRESHOLD] [--simple-mode SIMPLE_MODE] [--rec-weights30 REC_WEIGHTS30] [--rec-weights50 REC_WEIGHTS50] [--rec-weights REC_WEIGHTS] [--rec-classes REC_CLASSES] [--device {cpu,cuda}]

Arguments for NDLkotenOCR-Lite

options:
  -h, --help            show this help message and exit
  --sourcedir SOURCEDIR
                        Path to image directory
  --sourceimg SOURCEIMG
                        Path to image directory
  --output OUTPUT       Path to output directory
  --viz VIZ             Save visualized image
  --det-weights DET_WEIGHTS
                        Path to deim onnx file
  --det-classes DET_CLASSES
                        Path to list of class in yaml file
  --det-score-threshold DET_SCORE_THRESHOLD
  --det-conf-threshold DET_CONF_THRESHOLD
  --det-iou-threshold DET_IOU_THRESHOLD
  --simple-mode SIMPLE_MODE
                        Read line with one model(Setting this option to True will slow down processing, but it simplifies the architecture and may slightly improve accuracy.)
  --rec-weights30 REC_WEIGHTS30
                        Path to parseq-tiny onnx file
  --rec-weights50 REC_WEIGHTS50
                        Path to parseq-tiny onnx file
  --rec-weights REC_WEIGHTS
                        Path to parseq-tiny onnx file
  --rec-classes REC_CLASSES
                        Path to list of class in yaml file
  --device {cpu,cuda}   Device use (cpu or cuda)
uv で導入した例
$ git clone https://github.com/ndl-lab/ndlocr-lite
$ cd ndlocr-lite
$ uv tool install .
$ which ndlocr-lite
/home/matoken/.local/bin/ndlocr-lite
$ ndlocr-lite --help
usage: ndlocr-lite [-h] [--sourcedir SOURCEDIR] [--sourceimg SOURCEIMG] --output OUTPUT [--viz VIZ] [--det-weights DET_WEIGHTS] [--det-classes DET_CLASSES] [--det-score-threshold DET_SCORE_THRESHOLD]
                   [--det-conf-threshold DET_CONF_THRESHOLD] [--det-iou-threshold DET_IOU_THRESHOLD] [--simple-mode SIMPLE_MODE] [--rec-weights30 REC_WEIGHTS30] [--rec-weights50 REC_WEIGHTS50] [--rec-weights REC_WEIGHTS]
                   [--rec-classes REC_CLASSES] [--device {cpu,cuda}]

Arguments for NDLkotenOCR-Lite

options:
  -h, --help            show this help message and exit
  --sourcedir SOURCEDIR
                        Path to image directory
  --sourceimg SOURCEIMG
                        Path to image directory
  --output OUTPUT       Path to output directory
  --viz VIZ             Save visualized image
  --det-weights DET_WEIGHTS
                        Path to deim onnx file
  --det-classes DET_CLASSES
                        Path to list of class in yaml file
  --det-score-threshold DET_SCORE_THRESHOLD
  --det-conf-threshold DET_CONF_THRESHOLD
  --det-iou-threshold DET_IOU_THRESHOLD
  --simple-mode SIMPLE_MODE
                        Read line with one model(Setting this option to True will slow down processing, but it simplifies the architecture and may slightly improve accuracy.)
  --rec-weights30 REC_WEIGHTS30
                        Path to parseq-tiny onnx file
  --rec-weights50 REC_WEIGHTS50
                        Path to parseq-tiny onnx file
  --rec-weights REC_WEIGHTS
                        Path to parseq-tiny onnx file
  --rec-classes REC_CLASSES
                        Path to list of class in yaml file
  --device {cpu,cuda}   Device use (cpu or cuda)

もしcuda 対応GPU のある環境であればコマンドラインオプションに --device cuda を渡すことで速くなると思います.

cli版実行例

--sourcedir (ディレクトリ内の複数画像)か --sourceimg (1つの画像ファイル)で処理対象ディレクトリか処理対象ファイルを指定, --output で結果の出力先を指定,--viz True で可視化画像を有効にして実行(オプション)

$ time ndlocr-lite --sourcedir . --output . --viz True
[INFO] Intialize Model
[INFO] Inference Image
69
[INFO] Saving result on ./viz_digidepo_2436688_0001-0.jpg
Total calculation time (Detection + Recognition): 13.220851182937622
  :
real    2m15.882s
user    10m16.273s
sys     0m5.189s
$ ls
digidepo_2436688_0001-0.jpg   digidepo_2436688_0001-4.json  digidepo_2436688_0001-8.txt
digidepo_2436688_0001-0.json  digidepo_2436688_0001-4.txt   digidepo_2436688_0001-8.xml
digidepo_2436688_0001-0.txt   digidepo_2436688_0001-4.xml   digidepo_2436688_0001-9.jpg
digidepo_2436688_0001-0.xml   digidepo_2436688_0001-5.jpg   digidepo_2436688_0001-9.json
digidepo_2436688_0001-1.jpg   digidepo_2436688_0001-5.json  digidepo_2436688_0001-9.txt
digidepo_2436688_0001-1.json  digidepo_2436688_0001-5.txt   digidepo_2436688_0001-9.xml
digidepo_2436688_0001-1.txt   digidepo_2436688_0001-5.xml   viz_digidepo_2436688_0001-0.jpg
digidepo_2436688_0001-1.xml   digidepo_2436688_0001-6.jpg   viz_digidepo_2436688_0001-1.jpg
digidepo_2436688_0001-2.jpg   digidepo_2436688_0001-6.json  viz_digidepo_2436688_0001-2.jpg
digidepo_2436688_0001-2.json  digidepo_2436688_0001-6.txt   viz_digidepo_2436688_0001-3.jpg
digidepo_2436688_0001-2.txt   digidepo_2436688_0001-6.xml   viz_digidepo_2436688_0001-4.jpg
digidepo_2436688_0001-2.xml   digidepo_2436688_0001-7.jpg   viz_digidepo_2436688_0001-5.jpg
digidepo_2436688_0001-3.jpg   digidepo_2436688_0001-7.json  viz_digidepo_2436688_0001-6.jpg
digidepo_2436688_0001-3.json  digidepo_2436688_0001-7.txt   viz_digidepo_2436688_0001-7.jpg
digidepo_2436688_0001-3.txt   digidepo_2436688_0001-7.xml   viz_digidepo_2436688_0001-8.jpg
digidepo_2436688_0001-3.xml   digidepo_2436688_0001-8.jpg   viz_digidepo_2436688_0001-9.jpg
digidepo_2436688_0001-4.jpg   digidepo_2436688_0001-8.json

ここでのファイル群は以下のようになっています.

digidepo_2436688_0001-“${N}”.jpg

OCR 対象画像

digidepo_2436688_0001-“${N}”.json, digidepo_2436688_0001-“${N}”.txt, digidepo_2436688_0001-“${N}”.xml

OCR 結果

viz_digidepo_2436688_0001-“${N}”.jpg

可視化画像(オプション)

国立国会図書館からダウンロードしたpdf の10コマ(20ページ分)をImagemagick でjpeg 画像に変換したものに対して実行したところ2分16秒ほど掛かりました.1画像あたり13.6秒,1ページあたり6.8秒ほど.英語日本語混じりでも精度良さそうです.
OCR 環境は,LENOVO ThinkPad L13 (G1), CPU: Intel® Core™ i7-10510U CPU @ 1.80GHz, RAM: DDR4 16GB, SSD: NVMe TOSHIBA KXG6AZNV512G にDebian sid amd64 を導入した環境です.

スキャンした画像データはこんな感じ(1コマ2ページ分)

$ file viz_digidepo_2436688_0001-0.jpg
viz_digidepo_2436688_0001-0.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 2481x1761, components 3

GNU time の -f %M でRAM の利用量を見たところこの画像1枚の処理で600MB 近く,10枚で860MB 程でした.

NDLOCR Lite cli01

Note
画像の出典:納谷友一 訳註『黒猫』,健文社,1952. 国立国会図書館デジタルコレクション https://dl.ndl.go.jp/pid/2436688

Linuxデスクトップでキャプチャモード

NDLOCR-Lite GUI版にはキャプチャモードがあり便利そうですが,NDLOCR-Lite を起動しておく必要があります.
同じようなことを以前から tesseract-ocr でやっていました.これはデスクトップ環境に登録したショートカットでスクリーンキャプチャとOCR を行い,クリップボードに結果を返すものでした.これをNDLOCR-Lite で動くように書き換えてみました.

$ cat ~/bin/ndlocr-lite.bash
#!/bin/bash

TMPDIR=$(mktemp -d)
IMAGEFILE="$(mktemp).png"
import png:"${IMAGEFILE}" (1)
#sixelv "${IMAGEFILE}"
convert "${IMAGEFILE}" sixel: (2)
ndlocr-lite --sourceimg "${IMAGEFILE}" --output "${TMPDIR}" (3)

if [ $? ]; then
  cat "${TMPDIR}"/*.txt | pee cat "xsel -b" (4)
  notify-send 'ocr📋(primary)' (5)
else
  notify-send 'ocr error'
  exit 1
fi

rm "${IMAGEFILE}" (6)
rm -r "${TMPDIR}"
  1. Imagemagick のimport コマンドで任意の場所をキャプチャ

  2. デバッグ用に画像出力

  3. NDLOCR-Lite で文字起こし

  4. クリップボードに格納

  5. notify-send でデスクトップに通知

実行するとこんな感じ.動画内のスライドをキャプチャしています.解像度が低いといまいちですが解像度が高いといい感じです.termial で叩くとデバッグ用にSixel でキャプチャ画像も出すようにしました.

NDLOCR Lite bash

Note
画像の出典:オープンソースカンファレンス2026 Tokyo/Spring 2日目ライトニングトークのオープニングより https://www.youtube.com/watch?v=xtb3ZFb6WvA

このbash script をWindowManager に登録しておきます.以下はi3 wm で Super+Shift+o で呼び出せるようにしています.

~/.config/i3/config

$ grep ocr ~/.config/i3/config
#OCR https://gitlab.com/matoken/kagolug-2022.05/-/blob/main/slide/ocr.adoc
bindsym $mod+Shift+o exec --no-startup-id ~/bin/ndlocr-lite.bash

ということで便利に使えそうです.
国立国会図書館の遠隔送信サービスで閲覧可能な書籍などを小さなスマートフォンなどの端末で読むのはいまいちと思っていたのですが,これで文字起こしして読んでみるのもありかもしれません,

環境

$ git log --pretty=oneline -1
4f0748be4244a2e36d4dd43af05d6eebded3d56d (HEAD -> master, origin/master, origin/HEAD) Merge pull request #13 from mattn/fallback-line
$ pipx list | grep uv
   package uv 0.10.7, installed using Python 3.13.3
    - uv
    - uvx
$ dpkg-query -W python3 python3-venv
python3 3.13.9-3
python3-venv    3.13.9-3
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/03/02/ndlocr-lite/feed/ 0
ChangeDetection.ioを更新したらプライベートIPを利用したURLがエラーになる https://matoken.org/blog/2026/02/25/changedetection-io/ https://matoken.org/blog/2026/02/25/changedetection-io/#respond Tue, 24 Feb 2026 22:19:29 +0000 https://matoken.org/blog/?p=5284

ChangeDetection.io を更新したらルーターのアドレスがエラーになってしまいました.

ChangeDetection.io ははてなアンテナのように登録サイトを定期的に巡回して更新を教えてくれるアプリケーションおよびサービスです.
自分はローカルPC に入れて動かしています.

#kagolug 2025.03 で発表したときの資料はこちら.

今回更新通知が来ていたので最新に更新しました.v0.54.1 になりました.

$ w3m -dump http://100.121.84.16:5000/ | grep ^v
v0.54.1

するとrouter の設定が以下のようなエラーになってログが取れなくなっています.

 > DISABLED
> Exception: Invalid URL 'DISABLED': No scheme supplied. Perhaps you meant https://DISABLED?
[Create a link to share watch config with others]

changedetection.io Invalid URL

Edit ボタンを押して編集画面に遷移すると問題なさそう.でも上書き保存しようとしたら怒られます.
エラーメッセージからはURL がおかしそうですが,このURL は普通に開けるしそもそもバージョンアップまでは動いていたものです.

* Watch protocol is not permitted or invalid URL format

changedetection.io edit invalid URL

なんかバグ踏んだ?前バージョンから今回までのdiff 見るか……と思ったのですが,SSRF 対策でプライベートIP が無効にされるようになったようです.

ALLOW_IANA_RESTRICTED_ADDRESSES=true で逃げられるようなので設定してみます.

docker-compose で運用しているので,docker-compose.yml を開き,changedetection 部分の environment:ALLOW_IANA_RESTRICTED_ADDRESSES=true を追加しました.そしてup することでプライベートIP アドレスのURL もまた動作するようになりました.

$ docker compose --file ~/src/changedetection.io/docker-compose.yml up -d

これこのアドレスだけ許可のような設定もできると良さそうですね.

環境

$ docker images ghcr.io/dgtlmoon/changedetection.io:latest
                                                                                                                                                                   i Info     U  In Use
IMAGE                                        ID             DISK USAGE   CONTENT SIZE   EXTRA
ghcr.io/dgtlmoon/changedetection.io:latest   cf4a98d2a980        889MB             0B    U
$ w3m http://127.0.0.1:5000/ | grep ^v
v0.54.1
$ dpkg-query -W docker.io docker-compose-plugin
docker-compose-plugin   5.1.0-1~debian.12~bookworm
docker.io       26.1.5+dfsg1-4+b1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/02/25/changedetection-io/feed/ 0
中古docomo home 5G HR01で管理画面に入れなくて焦る https://matoken.org/blog/2026/02/23/used-docomo-home-5g-hr01/ https://matoken.org/blog/2026/02/23/used-docomo-home-5g-hr01/#respond Sun, 22 Feb 2026 22:18:23 +0000 https://matoken.org/blog/?p=5273

中古品の販売買取を行っているチェーン店のハードオフに行ったところ,docomo のSHARP製ホームルーターの「home 5G HR01」が550円で売られていたので買ってしまいました.
設定画面に入れなくて嵌ったのでメモしておきます.

buy docomo home 5g HR01

製品についてはこちらを.後継のHR02 が出ていますがまだ収束品ではなさそう.

取扱説明書はこちらにPDF で置いてあります.

取説を眺めながら,初期化を行いました.

  • 電源を入れて起動してから底面の RESET ホール10秒異常長押し,10秒ほどでステータスランプが3つ点いたところで離す

  • 起動後Wi-Fi AP に接続,接続情報は底面にある

  • AP 接続後, http://web.setting/ に繋ぐらしいが繋がらない

  • dig ると 192.168.128.1 が帰ってくるがip でも接続できない

  • Linux Firefox/Chromium,Android Firefox/Chrome で全滅

  • nmap を叩くと
    tcp:53
    udp:53, 67
    しか空いてなさそう?

  • 3度ほど出荷状態試みたけど駄目

  • SIM 挿しても駄目

取扱説明書の「トラブルシューティング(FAQ)」の項目を見ても分からず.
時計が駄目?と時計を手動で合わせてみたり違うSIM を挿してみたりしても駄目です.

という感じでもしかして安かったのはFW update などで壊れてしまっているものだったから?とか不安になってきました.

ここでWeb 検索して以下のYouTube 動画のコメントでそれらしいものが.

管理画面に入れるのは2つあるSSID(Wi-Fiの名前)のうちのどちらか片方だけです。

え,そんなことが?そういえば2,4GHz と 5GHz の2つのSSID が出ていて,干渉が少ないであろう5GHz のSSID しか試していませんでした.
そこで,HR01a-xxxxxx, HR01b-xxxxxx (xxxxxx部分は機種ごとにユニーク) のうちHR01a-xxxxxx の方にに接続し直した後, http://web.setting/ に接続できました.

ここは恐らく底面のQR code を読み取っての接続や有線接続で繋げば問題なかったのだと思います.
マニュアルを見返すとスクリーンショットでは HR01a-xxxxxx に繋いでいますし,以下の説明も見つけました.

●お買い上げ時の設定では、[SSID B]にWi-Fi接続しているパソコンや携帯端末から設定ツールを表示できません。
[SSID A]にWi-Fi接続しているパソコンや携帯端末、または有線LAN接続しているパソコンから設定ツールを表示してください。

ということで管理画面に接続でき,設定も可能になりました.
しかし,LINEMO, povo 2.0 は自宅ではHR01 非対応のBAND 8 とBAND 18 で自宅では圏外となり動作確認できませんでした.
mineo D のdocomo MVNO だと接続できて正常に外に出られて一安心.
こうなると550円で2台売ってたのでもう1台も買っておけばよかったなと思うなど.きっと次行ったら売れていることでしょう.

docomo home 5g HR01 2units

HR01 対応バンド

対応バンドをメモしておきます.

地域 規格 バンド(周波数/注記) 対応

国内

5G

n78(3.7GHz)

対応

国内

5G

n79(4.5GHz)

対応

国内

4G(LTE) FD-LTE

バンド1(2.0GHz)

対応

国内

4G(LTE) FD-LTE

バンド3(1.7GHz)

対応

国内

4G(LTE) FD-LTE

バンド19(800MHz)

対応

国内

4G(LTE) FD-LTE

バンド21(1.5GHz)

対応

国内

4G(LTE) FD-LTE

バンド28(700MHz)

対応

国内

4G(LTE) TD-LTE

バンド42(3.4GHz,3.5GHz)

対応

以下は総務省の「各携帯電話事業者の通信方式・周波数帯」という資料のHR01対応LTEバンド部分に色を付けたものです.

LTE BAND

SEE ALSO

]]>
https://matoken.org/blog/2026/02/23/used-docomo-home-5g-hr01/feed/ 0
yt-dlpでYouTubeの字幕ファイルのダウンロードに失敗(HTTP Error 429: Too Many Requests) https://matoken.org/blog/2026/02/20/yt-dlp_subtitle_429error/ https://matoken.org/blog/2026/02/20/yt-dlp_subtitle_429error/#respond Thu, 19 Feb 2026 22:17:00 +0000 https://matoken.org/blog/?p=5258

Tokyo Linux Users Group のTechnical Meeting のビデオがYouTube にアップロードされていると先日の #kagolug で教えてもらったので観てみようと思いました.
でもTLUG は英語です.以前はWisper.cpp で文字起こし & 機械翻訳で字幕を作っていましたが最近のYouTube の文字起こしは大分良くなっているのでそれを使おうとローカルにビデオと字幕をdl しようとしたところ字幕のダウンロードに失敗しました.

適当な解像度のビデオとオーディオ,それと英語の文字起こし字幕と,それを日本語に翻訳したものをダウンロードしようとしました.

$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig
[youtube] Extracting URL: yYgF87nqyKI
[youtube] yYgF87nqyKI: Downloading webpage
[youtube] yYgF87nqyKI: Downloading android vr player API JSON
[youtube] yYgF87nqyKI: Downloading web safari player API JSON
[youtube] yYgF87nqyKI: Downloading player 4c5cf06a-tv
[youtube] [jsc:deno] Solving JS challenges using deno
[youtube] yYgF87nqyKI: Downloading m3u8 information
[info] yYgF87nqyKI: Downloading subtitles: ja
[info] yYgF87nqyKI: Downloading 1 format(s): 244+251
[info] Writing video subtitles to: CDImage - Cam [yYgF87nqyKI].ja.vtt
WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see  https://github.com/yt-dlp/yt-dlp#impersonation  for information on installing the required dependencies
ERROR: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests

*Too Many Requests* とか言われてしまいました.今日初めて実行したのになんで?

--verbose オプションを付けてみましたがよくわかりません

[info] Writing video subtitles to: CDImage - Cam [yYgF87nqyKI].ja.vtt
[debug] Invoking http downloader on "https://www.youtube.com/api/timedtext?v=yYgF87nqyKI&ei=M4WXaZnECfax2roP_YqAqAc&caps=asr&opi=112496729&xoaf=5&xowf=1&xospf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1771562915&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=1B0AC6AA8FB20AFE9B45B2F66DBB1000F04DE626.909918AF43ACD2AFD3E0C2C61E53A3C72E49AB6C&key=yt8&kind=asr&lang=en&fmt=vtt&tlang=ja"
WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see  https://github.com/yt-dlp/yt-dlp#impersonation  for information on installing the required dependencies
ERROR: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests
Traceback (most recent call last):
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 4449, in _write_subtitles
    self.dl(sub_filename, sub_copy, subtitle=True)
    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3285, in dl
    return fd.download(name, new_info, subtitle)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/matoken/bin/yt-dlp/yt_dlp/downloader/common.py", line 480, in download
    ret = self.real_download(filename, info_dict)
  File "/home/matoken/bin/yt-dlp/yt_dlp/downloader/http.py", line 362, in real_download
    establish_connection()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/home/matoken/bin/yt-dlp/yt_dlp/downloader/http.py", line 119, in establish_connection
    ctx.data = self.ydl.urlopen(request)
               ~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 4260, in urlopen
    return self._request_director.send(req)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/home/matoken/bin/yt-dlp/yt_dlp/networking/common.py", line 117, in send
    response = handler.send(request)
  File "/home/matoken/bin/yt-dlp/yt_dlp/networking/_helper.py", line 194, in wrapper
    return func(self, *args, **kwargs)
  File "/home/matoken/bin/yt-dlp/yt_dlp/networking/common.py", line 359, in send
    return self._send(request)
           ~~~~~~~~~~^^^^^^^^^
  File "/home/matoken/bin/yt-dlp/yt_dlp/networking/_requests.py", line 361, in _send
    raise HTTPError(res, redirect_loop=max_redirects_exceeded)
yt_dlp.networking.exceptions.HTTPError: HTTP Error 429: Too Many Requests

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 1698, in wrapper
    return func(self, *args, **kwargs)
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 1854, in __extract_info
    return self.process_ie_result(ie_result, download, extra_info)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 1913, in process_ie_result
    ie_result = self.process_video_result(ie_result, download=download)
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3096, in process_video_result
    self.process_info(new_info)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 189, in wrapper
    return func(self, *args, **kwargs)
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3353, in process_info
    sub_files = self._write_subtitles(info_dict, temp_filename)
  File "/home/matoken/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 4457, in _write_subtitles
    raise DownloadError(msg)
yt_dlp.utils.DownloadError: Unable to download video subtitles for 'ja': HTTP Error 429: Too Many Requests

ISSUES を探すと既知の問題のようでワークアラウンドがありました.

FreeTube is adding a PO token to their subtitles requests. But FreeTube doesn’t use auto-translated subs AFAICT.
# Manual subtitles and original language automatic captions are not affected by this HTTP Error 429 issue.

Only subtitles/captions that have been automatically translated into another language are affected. So you may be able to get the subs you want without a problem if you are precise with your --sub-langs and --write-subs vs --write-auto-subs arguments.

But if you want translated auto subs,
# there are 2 known ways of avoiding this HTTP Error 429:

  • Pass fresh cookies to yt-dlp from a browser session where you’ve very recently loaded auto-translated subs

  • Wait ~60 seconds after extraction and before downloading the auto subs, e.g. --sleep-subtitles 60

(Either of these 2 methods will work individually, you do not need to combine them)

ということでとりあえず --sleep-subtitles 60 を付けて実行することで字幕ダウンロード時にsleep して怒られずに字幕をダウンロードすることができました.

$ yt-dlp -f 244+251 yYgF87nqyKI --write-auto-subs --sub-langs ja,en_orig --sleep-subtitles 60

そしてmpv 等でこんな感じで字幕を2つ表示しながら視聴可能に :)

$ mpv --sub-files='CDImage - Cam [yYgF87nqyKI].en.vtt:CDImage - Cam [yYgF87nqyKI].ja.vtt' --secondary-sid=2 'CDImage - Cam [yYgF87nqyKI].webm'

mpv 2subs

環境
$ yt-dlp --version
2026.02.04
$ deno --version
deno 2.6.8 (stable, release, x86_64-unknown-linux-gnu)
v8 14.5.201.2-rusty
typescript 5.9.2
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/02/20/yt-dlp_subtitle_429error/feed/ 0
snacのユーザーごとのstaticディレクトリ https://matoken.org/blog/2026/02/19/snac-static/ https://matoken.org/blog/2026/02/19/snac-static/#respond Wed, 18 Feb 2026 20:51:26 +0000 https://matoken.org/blog/?p=5251

snac susie

snacのための静的ディレクトリをapache2 httpd で設定してカスタム絵文字の設置場所に利用しています.

実は設定せずともユーザごとに静的ディレクトリがあるのに気づきました.

きっかけはこちら.

${SNAC-URL}/${USER}/s/ の下が使えるようです.
実際に試してみます.

$ cd ${SNAC-DATA}/user/${USER}/static <.>
$ echo test > test <.>
$ w3m -dump_extra https://snac.matoken.org/matoken/s/test | grep ^HTTP/ -A99 <.>
HTTP/1.1 200 OK
Date: Wed, 18 Feb 2026 20:50:37 GMT
Server: Apache/2.4.66 (Debian)
content-type: application/octet-stream
x-creator: snac/2.90
etag: W/”snac-1771444525″
access-control-allow-origin: *
access-control-allow-headers: *
access-control-expose-headers: Link
Content-Security-Policy: script-src ;
content-length: 5
Connection: close

test

  1. ユーザーディレクトリの下の static に移動

  2. テストファイルを作成

  3. ユーザーディレクトリの下の s 以下の該当ファイルを確認

ということでsnac server の ${SNAC-DATA}/user/${USER}/static 以下に置いたファイルが ${SNAC-URL}/${USER}/s/ 以下で確認できます.
theme でこのディレクトリは利用していましたが,theme 以外のファイルもok なんですね.

環境
$ sudo -u snac ~snac/snac2/snac state ~snac/snac-data
server: snac.matoken.org (snac/2.90)
uptime: 1:11:46:03
job fifo size (cur): 0
job fifo size (peak): 11
thread #0 state: waiting
thread #1 state: waiting
thread #2 state: waiting
thread #3 state: waiting
$ lsb_release -dr
No LSB modules are available.
Description:    Debian GNU/Linux 12 (bookworm)
Release:        12
$ arch
x86_64
]]>
https://matoken.org/blog/2026/02/19/snac-static/feed/ 0
Firefoxの指定タブを保護(ビデオミーティング離脱防止) https://matoken.org/blog/2026/02/16/firefox-lock-tab/ https://matoken.org/blog/2026/02/16/firefox-lock-tab/#respond Mon, 16 Feb 2026 10:03:27 +0000 https://matoken.org/blog/?p=5235

2683779 64

この土日ウェブブラウザでビデオミーティングに参加していました.1つはzoom.us, もう1つはGalene でした.
どちらも参加中に操作ミスでビデオミーティングのタブから移動してしまいビデオミーティングから離脱してしまいました.
タブを拡張機能で保護できないか試してみました.

はじめ試したのはこちらの「Tabloc」.text chat のリンクを押すと新しいタブで開かれるしこれでいいかと思ったのですが,右上のメニューの履歴から復元したら駄目です.

次に試したのは以下の「タブのページをロックする」.こちらだと履歴を復元しようとしあたりタブを中クリックで閉じようとすると「このページから移動しますか?入力した情報は保存されません。」というポップアップですぐには閉じなくなりました.

fx tablock02
fx tablock01

保護したタブには🔒アイコンが表示されます.

環境
タブのページをロックする: バージョン 1.2025.1227.0
$ dpkg-query -W firefox
firefox 147.0.3-1+b1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/02/16/firefox-lock-tab/feed/ 0
Nextcloudの自動アップデートに失敗してバックアップでdisk full https://matoken.org/blog/2026/02/10/nextcloud-upgrade-fail/ https://matoken.org/blog/2026/02/10/nextcloud-upgrade-fail/#respond Mon, 09 Feb 2026 20:55:20 +0000 https://matoken.org/blog/?p=5226

サーバがdisk full になり調べたらNextcloud が自動アップデートと自動バックアップ,しかし失敗というのを毎日繰り返してdisk full になっていました.

はじめ1月ほど前にdisk full になり,cron で動かしているデイリーバックアップが溜まっているせいかと思いそこを掃除したのですが今月になってまたdisk full に.
du コマンドなどで確認するとNextcloud の下の data/updater-${instanceid}/backups/ に毎日Nextcloud のバックアップが作られています.これのせいでdisk full になっているようでした.

Note
${instanceid} については config/config.php'instanceid' で確認できます.

ここにNextcloud のバックアップが作られるのはNextcloud のアップデート時です.まずは手動でアップデートを実行してみます.

$ sudo -u www-data php updater/updater.phar

  :

[✘] Verify integrity failed
There are more files than the downloaded archive in the downloads/ folder.

Update failed. To resume or retry just execute the updater again.

ダウンロードしたNextcloud アーカイブがおかしそうです.詳細を知るためにログを確認します.

data/updater.log
2026-02-08T22:30:46+0000 T8hDMIut3r [info] storage location: /var/www/files.matoken.org/data/updater-ocws62au2wl3/downloads/
2026-02-08T22:30:57+0000 T8hDMIut3r [info] end of verifyIntegrity()

この storage location の下を見ると前のバージョンのアーカイブが残っていてこれが怪しそうです.

$ ls -lA  /var/www/files.matoken.org/data/updater-ocws62au2wl3/downloads/
合計 610548
-rw-r--r-- 1 www-data www-data 312581794  1月 16 04:09 nextcloud-32.0.4.zip
-rw-r--r-- 1 www-data www-data 312597357  2月  9 07:24 nextcloud-32.0.5.zip

古いアーカイブを削除します.

$ rm /var/www/files.matoken.org/data/updater-ocws62au2wl3/downloads/nextcloud-32.0.4.zip

再度アップデートを試みます.(先程バックアップは取得しているので今回はバックアップはスキップ)

$ sudo -u www-data php updater/updater.phar --no-backup

  :

"occ upgrade" finished

Keep maintenance mode active? [y/N]
Maintenance mode disabled

Maintenance mode is disabled

今度はアップデートが正常に完了しました.

nextcloud 32.0.5

次の日に確認してもバックアップは作成されていなかったのでこれであたりのようです.

環境
$ sudo -u www-data php /var/www/files.matoken.org/occ --version
Nextcloud 32.0.3
$ lsb_release -dr
No LSB modules are available.
Description:    Debian GNU/Linux 12 (bookworm)
Release:        12
$ arch
x86_64
]]>
https://matoken.org/blog/2026/02/10/nextcloud-upgrade-fail/feed/ 0