matoken's blog https://matoken.org/blog Is there no plan B? Sun, 02 Aug 2026 23:16:01 +0000 ja hourly 1 https://wordpress.org/?v=7.0.2 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg matoken's blog https://matoken.org/blog 32 32 グラフックターミナルウェブブラウザのBrow6elをリモートVPSで実行 https://matoken.org/blog/2026/08/03/run-brow6el-remotely/ https://matoken.org/blog/2026/08/03/run-brow6el-remotely/#comments Sun, 02 Aug 2026 22:04:21 +0000 https://matoken.org/blog/?p=5556

グラフックターミナルウェブブラウザのBrow6elをリモートのVPSで動かしてみました.

普通にVPS上でbuildしてもいいのですが,Brow6elにはAppImageを作成する build_appimage.sh が提供されているのでローカルPCでこれを使い,Brow6elのAppImageを作って利用することにします.
build.sh が終わって ./build/run_brow6el.sh でBwow6elが動作する状態で実行します.

$ ./build_appimage.sh
   :
✓ AppImage created: build/brow6el-x86_64.AppImage

linuxdeployを使ってAppImageをパッケージングしてくれます.

$ ls -l build/brow6el-x86_64.AppImage
-rwxr-xr-x 1 matoken matoken 167807480 Aug  3 06:26 build/brow6el-x86_64.AppImage
$ file build/brow6el-x86_64.AppImage
build/brow6el-x86_64.AppImage: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, BuildID[sha1]=804289becc7fc6672c279ca50542e32508c1e518, stripped

出来上がった brow6el-x86_64.AppImage を実行するとBrow6elが起動します.
リモートのVPSにコピーして,

$ rsync -avcP build/brow6el-x86_64.AppImage $REMOTE:~/bin/

ssh経由で実行すると失敗?

$ ssh ${REMOTE} ~/bin/brow6el-x86_64.AppImage
Profile mode: temporary
Profile path: /tmp/brow6el_809104_3878246043
Brow6el - Terminal Web Browser with Sixel Support
Graphics detection: Sixel=NO, Kitty=NO
Error: Your terminal does not support graphics rendering
Please use a terminal emulator with graphics support:
  Sixel: mlterm, xterm, wezterm, foot, etc.
  Kitty: kitty, ghostty, wezterm, etc.

ssh ${REMOTE} convert rose: sixel: は大丈夫なのでSixel周りは問題ないと思うのですが.
とりあえず,ssh loginした後 brow6el-x86_64.AppImage を実行すれば起動します.

$ ssh ${REMOTE}
$ brow6el-x86_64.AppImage -v
Brow6el ec0bc3f
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Brow6el/ec0bc3f
$ brow6el-x86_64.AppImage

VPSでfast.comで速度を見ると恐らくVPSのリミット上限になっているのかなという感じの速度.

brow6el fast.com

ちなみに同じ時間の自宅はこんな感じです.

$ speedtest-cli --simple
Ping: 64.723 ms
Download: 13.05 Mbit/s
Upload: 2.78 Mbit/s

回線によっては地図系のサービスで一部レイヤーの読み込みに失敗してしまうことがあり,例えば台風の後などトヨタの通れた道マップでこの道路のがけ崩れ未だ治ってないのかと思っていたら実は読み込めていないだけだったたこともありました.こういうときなどVPSなどのリモートでBrow6elを動かすと良さそうです.

brow6el toyotamap

ただ,EmbeddedとはいえChromiumなので結構RAMを使います.そこそこRAMの載ったものを使ったほうが良さそうです.
無料だとXServerの無料VPSがRAM 2GB/4GBなので動かしやすそうです.でも今見ると受付停止中でした.

ちなみにGNU timeコマンドでメモリを確認するとこんな感じ.長時間だとまた増えそうです.

time -f %M

217312

URL指定なしで開いて閉じる

293456

www.google.comを開いて閉じる

371624

SperkerDeckでスライドを1つ読む

397432

AsciiDoctor Reveal.jsで作られた45pのスライドを閲覧

417480

YouTubeで検索した後90秒の動画を再生

486984

NextcloudにloginしてNoteでメモをしたり

1875016

comic-walker.comで漫画を5話分読んで閉じる

Note
最後のcomic-walkerがとてもRAM消費量が多いですが,何か間違ったかフルスクリーンで読んだせいかもしれません.
]]>
https://matoken.org/blog/2026/08/03/run-brow6el-remotely/feed/ 3
MComixでSpace keyが使えなくなった https://matoken.org/blog/2026/07/30/space-key-no-longer-works-in-mcomix/ https://matoken.org/blog/2026/07/30/space-key-no-longer-works-in-mcomix/#respond Wed, 29 Jul 2026 22:16:22 +0000 https://matoken.org/blog/?p=5546

最近Debian sid amd64環境のMComixでスペースキーでページ送りができなくなりました.
PgUpで代替はできますが慣れません.Shift + Spaceでページ戻りは効くし別のアプリケーションではSpaceは効きます.
キーボード・ショートカットの設定画面でSpaceを設定することもできるのでSpace自体はアプリに渡っていそう.

キーボードショートカットをリセットしたり,設定ファイル自体を全部消してみたりもしましたが動作は変わりません.

MComixのTicketに以下のようなものが.Waylandでキーバインドが壊れていて,commit 274e95で修正されていそうです.

以下がそのcommit.

Debian packageのMComixのファイルは以下のよう.

$ dpkg -L mcomix | grep keybindings.py
/usr/lib/python3/dist-packages/mcomix/keybindings.py

ということでこんな感じに修正.

$ diff -u /usr/lib/python3/dist-packages/mcomix/keybindings.py /usr/lib/python3/dist-packages/mcomix/keybindings.py.org
--- /usr/lib/python3/dist-packages/mcomix/keybindings.py	2026-07-30 06:50:54.227287451 +0900
+++ /usr/lib/python3/dist-packages/mcomix/keybindings.py.org	2025-09-28 11:56:17.000000000 +0900
@@ -176,7 +176,7 @@
         # Load stored keybindings, or fall back to passed arguments
         keycodes = self._action_to_bindings[name]
         if keycodes == []:
-            keycodes = [tuple(Gtk.accelerator_parse(binding)) for binding in bindings]
+            keycodes = [Gtk.accelerator_parse(binding) for binding in bindings ]

         for keycode in keycodes:
             if keycode in list(self._binding_to_action.keys()):
@@ -207,7 +207,7 @@
         """
         assert name in BINDING_INFO, "'%s' isn't a valid keyboard action." % name

-        nb = tuple(Gtk.accelerator_parse(new_binding))
+        nb = Gtk.accelerator_parse(new_binding)
         old_action_with_nb = self._binding_to_action.get(nb)
         if old_action_with_nb is not None:
             # The new key is already bound to an action, erase the action
@@ -216,7 +216,7 @@

         if old_binding and name != old_action_with_nb:
             # The action already had a key that is now being replaced
-            ob = tuple(Gtk.accelerator_parse(old_binding))
+            ob = Gtk.accelerator_parse(old_binding)
             self._binding_to_action[nb] = name

             # Remove action bound to the key.
@@ -238,7 +238,7 @@
         """ Remove binding for an action """
         assert name in BINDING_INFO, "'%s' isn't a valid keyboard action." % name

-        ob = tuple(Gtk.accelerator_parse(binding))
+        ob = Gtk.accelerator_parse(binding)
         self._action_to_bindings[name].remove(ob)
         self._binding_to_action.pop(ob)

@@ -299,7 +299,7 @@
         for action in BINDING_INFO.keys():
             if action in stored_action_bindings:
                 bindings = [
-                    tuple(Gtk.accelerator_parse(keyname))
+                    Gtk.accelerator_parse(keyname)
                     for keyname in stored_action_bindings[action] ]
                 self._action_to_bindings[action] = bindings
                 for binding in bindings:

問題なく動作するようになっていそうです.
このままだとパッケージアップデートで上書きされてしまいますが,本家と同じバージョンだし恐らく次のアップデートでこの修正は入ると思います.

最近Pythonのアップデートがあったのでその辺りで壊れたのかもしれません.

$ apt history-list | grep -i python | grep 2026
284  install libhsa-runtime64-1 python...2026-01-06  05:18:29  I,U,R    5
356  install python3-tables              2026-02-25  05:31:49  I,U,R    5
533  install python3-poetry              2026-06-08  21:04:04  Install  11
628  install python3                     2026-07-23  18:03:44  I,U,R    66
環境
$ mcomix --version
MComix 3.1.1
$ dpkg-query -W mcomix python3-cairo python3-gi python3-pil python3 gir1.2-gtk-3.0 python3-gi-cairo
gir1.2-gtk-3.0:amd64    3.24.52-1
mcomix  3.1.1-2
python3 3.14.6-1
python3-cairo   1.27.0-3
python3-gi      3.56.3-2
python3-gi-cairo        3.56.3-2
python3-pil:amd64       12.3.0-1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/07/30/space-key-no-longer-works-in-mcomix/feed/ 0
ターミナルグラフックウェブブラウザのbrow6el https://matoken.org/blog/2026/07/29/brow6el-terminal-web-browser-with-graphics-support/ https://matoken.org/blog/2026/07/29/brow6el-terminal-web-browser-with-graphics-support/#comments Tue, 28 Jul 2026 23:10:32 +0000 https://matoken.org/blog/?p=5537

バックエンドとしてChromium Embedded Framework (CEF)を使い,JavaScriptなども解釈してSixel/Kittyのターミナルグラフックプロトコルを使いターミナル上にウェブページを表示するもののようです.
気になったので試してみました.

導入

Quick Startに手順があります.
恐らく現時点ではLinux arm64, aarch64のみの対応だと思います.

$ git clone https://tangled.org/janantos.tngl.sh/brow6el (1)
$ cd brow6el
$ ./download_cef.sh (2)
$ ./build.sh (3)
$ ./build/run_brow6el.sh https://example.com (4)
  1. source clone

  2. CEFをダウンロード

  3. build

  4. brow6el実行

試してみる

これだけで動作します.
実行時のターミナルはSixel/Kittyに対応している必要があります.今回の環境はSixelに以前から対応しているmltermを使いました.
Sixelはちょっと効率が悪いせいだと思うのですが,全画面表示だと重たいです.少し小さめのウィンドウにしたほうがいいと思います.

以下いくつかのサイトの表示例.ピクセル単位で表現されているので一見普通のChromiumです.キーボードの他マウスでも操作できます.キーボード操作はVimium pluginやqutebrowserなどに似ている感じです.

brow6el fabcross
図 1. FabScene.広告も含め普通に表示される.
brow6el jiji
図 2. 時事ドットコム.背景色と記事の色が近く読みにくい.(追記:user scriptの force-light-modereader-mode で読みやすく)
brow6el mastodon
図 3. mastodon.JavaScriptが必須だがちゃんと表示される.
brow6el youtube
図 4. YouTube.フルスクリーンだとフレームレートが低すぎる.このくらいだと結構普通に視聴できる.
brow6el nc
図 5. NextCloud Note
brow6el GoogleDoc
図 6. GoogleDocの閲覧.
brow6el ghostintheshell
図 7. TVアニメ『攻殻機動隊 THE GHOST IN THE SHELL』公式サイト.キービジュアルの画像がでてこない?
brow6el fuz
図 8. 漫画サイト.普通に閲覧できるが,全画面表示にしても下部のタイトルバーの分縦が狭くなる.

という感じで少し触った感じでは今季の攻殻機動隊のアニメのページでTopのキービジュアルの画像がでない以外普通に動いていそうです.
ただやはり解像度を上げるとカクついてストレスを感じます.

結構さくっと動かせますし現時点でかなり実用的に思えます.
未だ試していませんが,UserScriptも利用できるようです.

少し古くFirefoxやChromiumが辛いようなマシンでリモートのbrow6elに繋いで利用する,回線が細くてうまく表示できないページなどをリモートのVPSなどでbrow6elを使うなどという使い方も良さそうです.

追記のtips

YouTubeはOKでしたが,abema.tv, Tver, ニコニコ動画はうまく動かないようです.
時事ドットコムのような背景色とフォントの色が近い場合,UserScriptの force-light-modereader-mode を使うと読みやすくなります.( s key → script選択 )
AppImageを作っておくと便利 → グラフックターミナルウェブブラウザのBrow6elをリモートVPSで実行 – matoken’s blog

環境

$ build/run_brow6el.sh --version
Brow6el ec0bc3f
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Brow6el/ec0bc3f
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/07/29/brow6el-terminal-web-browser-with-graphics-support/feed/ 2
楽天モバイルのモバイルルーターを55円で入手 https://matoken.org/blog/2026/07/02/get-rakuten-mobiles-mobile-router-for-55-yen/ https://matoken.org/blog/2026/07/02/get-rakuten-mobiles-mobile-router-for-55-yen/#respond Wed, 01 Jul 2026 21:10:48 +0000 https://matoken.org/blog/?p=5514

ハードオフで楽天モバイルのモバイルルーターを55円で入手しました.
Linuxで普通に使えていそうなのでメモしておきます.

最寄りハードオフのジャンク箱に楽天モバイルのものらしいモバイルルーターがありました.外観からモデル名などは見当たらず.電源は要らずという感じで死んでいるかもしれないけど見た目はきれい.
ダメ元で買ってみました.
(レジに行こうとしたら財布を忘れているのに気づいたけど自販機で飲み物を買う向けにポケットに入れていた小銭で精算できる位の値段だったので助かりました.)

モバイルバッテリーに接続するとバッテリー給電のアニメーションが表示され一安心.10分ほど充電したら電源ボタンで起動しました.

rakuten router01
rakuten router02

PCにUSB A-C(data 2.0)のケーブルでUSB接続するとdmesgはこんな感じ.
CD-ROMとして見えてかつイーサーネットとして見えています.
昔だったらCD-ROMをejectするとモードが替わるとかありましたが同時に利用できます.usb-modeswitchも必要ありませんでした.

[Jul 1 06:14] usb 1-1: new high-speed USB device number 19 using xhci_hcd
[  +0.137408] usb 1-1: New USB device found, idVendor=19d2, idProduct=1225, bcdDevice=58.43
[  +0.000019] usb 1-1: New USB device strings: Mfr=2, Product=4, SerialNumber=5
[  +0.000009] usb 1-1: Product: DEMO Mobile Boardband
[  +0.000007] usb 1-1: Manufacturer: DEMO,Incorporated
[  +0.000006] usb 1-1: SerialNumber: 1234567890ABCDEF
[  +0.005016] usb-storage 1-1:1.0: USB Mass Storage device detected
[  +0.000568] usb-storage 1-1:1.0: Quirks match for vid 19d2 pid 1225: 1
[  +0.000185] scsi host3: usb-storage 1-1:1.0
[  +3.778362] usb 1-1: USB disconnect, device number 19
[  +0.418219] usb 1-1: new high-speed USB device number 20 using xhci_hcd
[  +0.141122] usb 1-1: New USB device found, idVendor=19d2, idProduct=1405, bcdDevice=58.43
[  +0.000007] usb 1-1: New USB device strings: Mfr=2, Product=4, SerialNumber=5
[  +0.000003] usb 1-1: Product: DEMO Mobile Boardband
[  +0.000003] usb 1-1: Manufacturer: DEMO,Incorporated
[  +0.000001] usb 1-1: SerialNumber: 1234567890ABCDEF
[  +0.233248] cdc_ether 1-1:1.0 eth0: register 'cdc_ether' at usb-0000:00:14.0-1, ZTE CDC Ethernet Device, 34:4b:50:00:00:00
[  +0.005024] usb-storage 1-1:1.2: USB Mass Storage device detected
[  +0.015267] scsi host3: usb-storage 1-1:1.2
[  +0.729573] cdc_ether 1-1:1.0 enx344b50000000: renamed from eth0
[  +0.288448] scsi 3:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.3  PQ: 0 ANSI: 2
[  +0.002021] scsi 3:0:0:0: Attached scsi generic sg2 type 5
[  +0.115247] sr 3:0:0:0: Power-on or device reset occurred
[  +0.001135] sr 3:0:0:0: [sr0] scsi-1 drive
[  +0.000009] cdrom: Uniform CD-ROM driver Revision: 3.20
[  +0.021248] sr 3:0:0:0: Attached scsi CD-ROM sr0

lsusbはこんな感じ.VendorはZTEとなっていますがProductやらManufactureやらDEMOだしSerialもダミーのようでもう少しどうにかならなかったのか感が.そして製品名がわからない.

$ lsusb -d 19d2:1405
Bus 001 Device 020: ID 19d2:1405 ZTE WCDMA Technologies MSM DEMO Mobile Boardband
$ sudo lsusb -d 19d2:1405 -vvv
Bus 001 Device 020: ID 19d2:1405 ZTE WCDMA Technologies MSM DEMO Mobile Boardband
Negotiated speed: High Speed (480Mbps)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            2 Communications
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x19d2 ZTE WCDMA Technologies MSM
  idProduct          0x1405 DEMO Mobile Boardband
  bcdDevice           58.43
  iManufacturer           2 DEMO,Incorporated
  iProduct                4 DEMO Mobile Boardband
  iSerial                 5 1234567890ABCDEF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x006f
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          3 DEMO Configuration
    bmAttributes         0xc0
      Self Powered
    MaxPower              500mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass          2 Communications
      bFunctionSubClass       6 Ethernet Networking
      bFunctionProtocol       0
      iFunction               8 CDC ECM
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      6 Ethernet Networking
      bInterfaceProtocol      0
      iInterface              6 CDC Ethernet Control Model (ECM)
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      CDC Ethernet:
        iMacAddress                      9 344B50000000
        bmEthernetStatistics    0x00000000
        wMaxSegmentSize               1514
        wNumberMCFilters            0x0000
        bNumberPowerFilters              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x87  EP 7 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               9
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 [unknown]
      bInterfaceProtocol      0
      iInterface              7 CDC Ethernet Data
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              1 Mass Storage
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            2 Communications
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

CD-ROMの中身はこんな感じ.Vistaなんてのも見えますが中身はないので消してないだけかな?まあLinuxには関係がありません.

$ ls -l /dev/sr0
brw-rw----+ 1 root cdrom 11, 0 Jul  1 06:14 /dev/sr0
$ ls -l /dev/sr0
$ sudo mount -o ro /dev/sr0 /mnt
$ find /mnt -ls
     2304      2 dr-xr-xr-x   1 root     root         2048 Jun  2  2021 /mnt
     2306    362 -r-xr-xr-x   1 root     root       370070 Apr 22  2021 /mnt/APPWEB.ico
     2308      2 -r-xr-xr-x   1 root     root         1502 Apr 22  2021 /mnt/AutoRun.dat
     2310    381 -r-xr-xr-x   1 root     root       389328 Mar 19  2018 /mnt/AutoRun.exe
     2312      1 -r-xr-xr-x   1 root     root           46 Mar 19  2018 /mnt/autorun.inf
     2432      2 dr-xr-xr-x   1 root     root         2048 Apr 22  2021 /mnt/Data
     2434     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/1.ico
     2435     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/2.ico
     2437     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/3.ico
     2439     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/4.ico
     2441     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/5.ico
     2443     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/6.ico
     2445     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/7.ico
     2446     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/8.ico
     2448     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/9.ico
     2450     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/10.ico
     2452     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/11.ico
     2454     10 -r-xr-xr-x   1 root     root         9662 Apr 22  2021 /mnt/Data/12.ico
     2456    362 -r-xr-xr-x   1 root     root       370070 Apr 22  2021 /mnt/Data/APPWEB.ico
     2458    438 -r-xr-xr-x   1 root     root       448208 Mar 19  2018 /mnt/Data/CancelAutoPlay_df.exe
     2461    468 -r-xr-xr-x   1 root     root       478928 Mar 19  2018 /mnt/Data/CheckNDISPort_df.exe
     2463      4 -r-xr-xr-x   1 root     root         3296 Apr 22  2021 /mnt/Data/CONFIG.INI
     2496      2 dr-xr-xr-x   1 root     root         2048 Apr 22  2021 /mnt/Data/drivers
     2560      2 dr-xr-xr-x   1 root     root         2048 Apr 22  2021 /mnt/Data/drivers/32bit
     2562     20 -r-xr-xr-x   1 root     root        20304 Mar 19  2018 /mnt/Data/drivers/32bit/installer.exe
     2624      2 dr-xr-xr-x   1 root     root         2048 Apr 16  2020 /mnt/Data/drivers/32bit/Vista
     2688      2 dr-xr-xr-x   1 root     root         2048 Apr 16  2020 /mnt/Data/drivers/32bit/WIN7
     2752      2 dr-xr-xr-x   1 root     root         2048 Apr 22  2021 /mnt/Data/drivers/32bit/WNET
     2754     21 -r-xr-xr-x   1 root     root        20517 Mar 19  2018 /mnt/Data/drivers/32bit/WNET/zterndis.cat
     2756      3 -r-xr-xr-x   1 root     root         2196 Mar 19  2018 /mnt/Data/drivers/32bit/WNET/zterndis.inf
     2816      2 dr-xr-xr-x   1 root     root         2048 Apr 22  2021 /mnt/Data/drivers/64bit
     2818     21 -r-xr-xr-x   1 root     root        20816 Mar 19  2018 /mnt/Data/drivers/64bit/installer.exe
     2880      2 dr-xr-xr-x   1 root     root         2048 Apr 16  2020 /mnt/Data/drivers/64bit/Vista
     2944      2 dr-xr-xr-x   1 root     root         2048 Apr 16  2020 /mnt/Data/drivers/64bit/WIN7
     3008      2 dr-xr-xr-x   1 root     root         2048 Apr 22  2021 /mnt/Data/drivers/64bit/WNET
     3010     21 -r-xr-xr-x   1 root     root        20529 Mar 19  2018 /mnt/Data/drivers/64bit/WNET/zterndis.cat
     3012      3 -r-xr-xr-x   1 root     root         2196 Mar 19  2018 /mnt/Data/drivers/64bit/WNET/zterndis.inf
     2501     18 -r-xr-xr-x   1 root     root        17744 Mar 19  2018 /mnt/Data/drivers/setup.exe
     2467     97 -r-xr-xr-x   1 root     root        98512 Mar 19  2018 /mnt/Data/LaunchWebUI.exe
     3072      2 dr-xr-xr-x   1 root     root         2048 Apr 16  2020 /mnt/Data/log
     2471    285 -r-xr-xr-x   1 root     root       291536 Mar 19  2018 /mnt/Data/ResetCDROM.exe
     2474    467 -r-xr-xr-x   1 root     root       477904 Nov  7  2018 /mnt/Data/Setup.exe
     2476    514 -r-xr-xr-x   1 root     root       526032 Mar 19  2018 /mnt/Data/ShowTip.exe
     2478    171 -r-xr-xr-x   1 root     root       174800 Mar 19  2018 /mnt/Data/UninstallSelf.exe
     2481      0 -r-xr-xr-x   1 root     root            0 Mar 19  2018 /mnt/Data/USBFLAGCONFIG.INI

ネットワークはこんな感じ.

$ ip link | grep 34:4b -b1
1985-22: enx344b50000000: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
2110:    link/ether 34:4b:50:00:00:00 brd ff:ff:ff:ff:ff:ff
$ ip address show dev enx344b50000000
22: enx344b50000000: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 34:4b:50:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.178/24 brd 192.168.0.255 scope global dynamic noprefixroute enx344b50000000
       valid_lft 83493sec preferred_lft 83493sec
    inet6 fe80::4bda:e6c1:12fc:da09/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

NICとして見えているので,このネットワークに繋いでみます.
w3mChawanだとダメそうだったのでFirefoxで http://192.168.0.1/ に接続.パスワード入力欄に「admin」でloginできました.

Tip
httpsでも同じ画面に接続できますが,ZTEの所謂オレオレ証明書を使っています.
Note
初期化後のパスワードも「admin」でした.

しかし型番が見当たりません.「詳細情報」の「ソフトウェアバージョン」が「ZR03M-a5.2_U」.「ハードウェアバージョン」が「ZR03M-V1.0.0」となっています.これらで検索すると「Rakuten WiFi Pocket 2C」のようです.外観や特徴も同じ感じ.

取扱説明書のPDFもありました.
p12を見ると上部のSIM蓋の中にリセットホールがあるようなのでSIMピンで5秒ほど押してリセットしました.

rakuten router03

55円と安かったし楽天モバイルのSIMでしか使えないのかと思っていましたが,特に制限されていなようで各社のSIMを挿して使っている方も居るよう.

取扱説明書をみると対応バンドはこんな感じ.家ではLTE B18とB19でau/docomoの電波がギリギリ飛んできているので使えそう?

通信方式
LTE (FD):B1、B3、B7、B18、B19、B26
TD-LTE:B38、B41
WCDMA:B1、B2、B19

ということでpovo 2.0のSIMを挿して設定してみましたが圏外のままです.手持ちのスマートフォンだと-120dBmくらいで一応圏内なので受信感度は弱いようです.

rakuten router04

街に出たときに試すとOK.有線USBでもWi-Fi経由でも利用できるのを確認しました.
後日docomo MVNOのSIMでも確認.

という感じでとりあえず使えそう.バッテリーは弱っているようであまり持ちません.バッテリーは交換不可なので長時間利用時には有線になりそうです.

楽天モバイルの電波改善・調査依頼に利用

自宅は楽天モバイルのエリアマップではローミングエリアとなっています.しかし実際は圏外.

Note
現在はauの電波の届く10m程標高の高い裏山にLANケーブルを引いて防水箱の中にモバイルルーター(富士ソフト +F FS030W)を入れてPoEインジェクターとスプリッターを使い給電して使っています.

てことで電波改善・調査依頼を出そうとしたのですが,サポート端末でないと出せないとのことでこれまで出せませんでした.
今回購入した端末はサポート端末なのでやっと電波改善・調査依頼が出せます.

早速出したら,

恐れ入りますが、ご申告いただきました情報では、お電話番号の情報に相違があり契約者情報の確認がとれませんでした。

契約時の電話番号かと思ったら契約して発行された楽天の電話番号だったようです.また出しなおさないと…….

最近は外でPCを使うことも少ないしあまりモバイルルーターは必要ない感じもするのですが55円と安かったし,楽天モバイルに電波改善・調査依頼が出せそうだってことで購入しました.
しかしここは過疎地のローミングエリアで楽天の基地局は遠いしローミングももうすぐ終わってしまうしで電波状況は良くなるどころかローミングが終了するとむしろ悪化して圏外になってしまいそうな気もしています.

以下最近見かけた関連ニュース.この辺を見ると基地局より衛星に力を入れていくのかなと感じますがローミング終了までに間に合うのか,地上からLTEで通信したときに速度や安定度はどうなるのかが気になります.

Note

Starlink?
Starlinkはある程度指向性のある専用アンテナが必要,周りの木々を避けて北側がある程度見通せる場所となると納屋の上の方かな?そうすると梯子を買うところからだなと少しハードルが高いです.
そしてアンテナのイニシャルコストもそこそこ高い.そして基本料も最近値上がり.
Amazon Leo(旧Kuiper)とかの競合が早くサービスインして欲しいところです.

]]>
https://matoken.org/blog/2026/07/02/get-rakuten-mobiles-mobile-router-for-55-yen/feed/ 0
PipwWireとWHIPのブリッジのpw-whipでLinuxの音をGaleneに転送 https://matoken.org/blog/2026/06/30/transfer-linux-sound-to-galene-with-pw-whip/ https://matoken.org/blog/2026/06/30/transfer-linux-sound-to-galene-with-pw-whip/#respond Tue, 30 Jun 2026 10:48:59 +0000 https://matoken.org/blog/?p=5500

ビデオカンファレンスソフトウェアのGaleneのMLにpw-whipというPipeWire-WHIP pridgeを作ったよというメールが流れてきました.

Pw-whip is a bridge between PipeWire and WHIP.

https://github.com/jech/pw-whip

It can be used to stream the audio of any Linux application to Galene:

pw-whip -C mpv https://galene.org:8443/group/public/pw-whip/.whip

This is currently audio-only, I’ll extend it to do video if there’s demand.

Galeneは結構前からWHIPに対応していて,OBS Studioなどから送信できていました.今回のpw-whipでLinuxのPipeWire(PulseAudioの光景によく使われている)からGaleneに音声メディアを転送できるようになります.

build

ここではDebian sid amd64環境でbuildしました.
基本的にREADME.mdのとおりですが何箇所か引っかかりました.

依存パッケージの導入

まずは依存パッケージの導入.

$ sudo apt install libopus-dev libpipewire-0.3-dev

libdtachannelのbuild

WebRTCのMedia Transportに使うlibdtachannelのbuildを行います.

~/src はpw-whipのMakefileにハードコードされているので ~/src 以下で作業したほうが手間がないです.
~/src以下にsourceを持ってきてCmakeで失敗.

$ cd ~/src
$ git clone https://github.com/paullouisageneau/libdatachannel
$ cd libdatachannel
$ cmake -Bbuild
CMake Error at CMakeLists.txt:328 (add_subdirectory):
  The source directory

    /home/matoken/src/libdatachannel/deps/plog

  does not contain a CMakeLists.txt file.

  :
  :

deps/plogの中は空です.そして同様のエラーが続きます.
libdatachannelのBUILDING.mdにはgit submoduleも引っ張ってくるように書かれています.

## Init submodules

This step is optional if PREFER_SYSTEM_LIB CMake option will be enabled.

$ cd libdatachannel
$ git submodule update --init --recursive --depth 1

ということでsubmoduleを貰ってきて再度cmakeから.
今度はCmakeもmakeも通りました.
.so を/usr/local/lib/ 以下にコピーしてpw-whipのbuildに.

$ git submodule update --init --recursive --depth 1
$ cmake -Bbuild
$ cd build
$ make -j
$ sudo mv libdatachannel.so* /usr/local/lib/
$ sudo ldconfig
$ cd ..
$ git clone https://github.com/jech/pw-whip
$ cd pw-whip
$ make -j
Note

pw-whipのCommit c945067より前だとTypeがあったようで以下のようなエラーになります.最新にしてからmakeしましょう.

In file included from whip.cpp:8:
whip.hpp: In constructor ‘WhipClient::WhipClient(std::string, bool)’:
whip.hpp:18:15: error: ‘class WhipClient’ has no member named ‘seqno’
   18 |         this->seqno = 42;
      |               ^~~~~
In file included from main.cpp:10:
whip.hpp: In constructor ‘WhipClient::WhipClient(std::string, bool)’:
whip.hpp:18:15: error: ‘class WhipClient’ has no member named ‘seqno’
   18 |         this->seqno = 42;
      |               ^~~~~

pw-whip

usage見てもよくわかんないな?

$ ./pw-whip
Usage: ./pw-whip [-k] [-t token] [-c] [-C target] [-b bitrate] [-d] endpoint

README.mdを参考にまずはこんな感じで

$ ./pw-whip -k -c https://localhost:9443/group/test/.whip

-k はオレオレ証明書なのでTLS証明書を確認しないように. -c でPipeWire既定値のsourceを転送します.

今回は内蔵マイクを規定値にしたら内蔵マイクの音が届きました.

$ ./pw-whip -k -C mpv https://localhost:9443/group/test/.whip

次はこんな感じで -C mpv を指定.これでmpvのソースを転送します.mpvで再生した動画の音声が転送されました.

pw whip galene

このときのPipeWireのソースはqpwgraphや, pw-cli ls Node コマンドなどで確認できます.

pw whip qpwgraph

ということでPipwWireが動いていてリアルタイムにopusに変換できるくらいのスペックの端末(古めのRaspberryPiなど)からもGaleneに音声を送り込めそうです.
armでのbuildも試してみようと思います.

環境

$ dpkg-query -W libopus-dev libpipewire-0.3-dev build-essential git
build-essential 12.12
git     1:2.53.0-1
libopus-dev:amd64       1.6.1-1+b1
libpipewire-0.3-dev:amd64       1.6.7-1
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/06/30/transfer-linux-sound-to-galene-with-pw-whip/feed/ 0
virsh consoleで仮想マシンに接続できない https://matoken.org/blog/2026/05/26/virsh-console-console-connection-failed/ https://matoken.org/blog/2026/05/26/virsh-console-console-connection-failed/#respond Mon, 25 May 2026 22:16:34 +0000 https://matoken.org/blog/?p=5486
virt manager

virsh consoleコマンドでvmに繋がらなくなりました.

$ virsh console openbsd7.9
error: operation failed: Active console session exists for this domain

エラーメッセージから検索してdaemonを再起動したり,hostを再起動しても駄目です.

virshのmanを見るとこんなオプションが.

Option‐ally the --force flag may be specified, requesting to disconnect any existing sessions, such as in a case of a broken connection.
— `man 1 virsh`

--force オプションをを付けると繋がり,一度繋がると --force 無しでも繋がるようになりました.

$ virsh console openbsd7.9 --force
Connected to domain 'openbsd7.9'
Escape character is ^] (Ctrl + ])
^]
$ virsh console openbsd7.9
Connected to domain 'openbsd7.9'
Escape character is ^] (Ctrl + ])

fugu$ pfetch
      _____       matoken@fugu.matoken.org
    \-     -/     os     OpenBSD 7.9
 \_/         \    host   pc-i440fx-9.1
 |        O O |   uptime 1h 56m
 |_  <   )  3 )   pkgs   117
 / \         /    memory 169M / 989M
    /-_____-\

fugu$

恐らく電池切れでホストのOSが強制終了したときに既存のセッション情報が残ってしまい今回のような状態になったのだと思います.

環境
$ dpkg-query -W libvirt-clients libvirt-daemon
libvirt-clients 12.3.0-1
libvirt-daemon  12.3.0-1
$ uname -rm
7.0.9+deb14-amd64 x86_64
$ lsb_release -dr
Description:    Debian GNU/Linux forky/sid
Release:        n/a
$ arch
x86_64
]]>
https://matoken.org/blog/2026/05/26/virsh-console-console-connection-failed/feed/ 0
motorola moto g24 + mineo D環境でテザリングがうまく行かなくなった https://matoken.org/blog/2026/05/23/motorola-moto-g24-mineo-d-tethering-doesnt-work/ https://matoken.org/blog/2026/05/23/motorola-moto-g24-mineo-d-tethering-doesnt-work/#respond Fri, 22 May 2026 21:39:22 +0000 https://matoken.org/blog/?p=5474

motorola moto g24というエントリーAndroidスマホにMVNOのmineo DのSIMを挿して使っています.先日久々にWi-FiテザリングをしようとしたらAPとして動作してIPも振り出されますが,「インターネットに接続されていません」となり外に出られません.
Bluetoothテザリングでもダメそう.

moto g24 tethering ng

以前はうまく行っていたので恐らく最近のシステムアップデートのタイミングで動作が変わったのかもしれません.

現在のAPN設定を確認すると元の設定は「default,supl」これは確かこの端末のプリセットのままです.
mineoのサポートを見ると以下のようになっています.

APNタイプ ※ default,supl,ia

※ 一部機種においてテザリングをご利用いただく場合、「default,supl,ia」に加えて「,dun」を入力する必要があります。

ia が無いので ia を付けてみると動作変わらず, dun を付けるとテザリングがうまく行くようになりました.

少し試すとこんな感じ.

APN テザリング

default,supl

NG

default,supl,dun

OK

default,supl,ia

NG

default,supl,ia,dun

OK

ia がなくても動きそうですが,サポートページでは付いているので `default,supl,ia,dun`にしておこうと思います.

環境
$ 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/23/motorola-moto-g24-mineo-d-tethering-doesnt-work/feed/ 0
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