2025年12月7日日曜日

windowsとlinuxのデュアルブートでbluetoothを共用したい

windowsでbluetoothマウスをペアリングして、デュアルブートのlinuxに切り替えるとペアリングしなおさないと使えない。なんとなく、ハードウェア的にはペアリング状態が記録されてそうだが、OS側の情報がlinuxとwindowsで別々になっていて使えないっぽい感じがある。

デュアルブートでOSを切り替えるたびにペアリングしなおす必要があり、地味にめんどくさい。OSの情報だけの問題なら何とかなりそうなので検索した。 

見つかったサイトは以下。 

https://blanktar.jp/blog/2020/10/dual-boot-bluetooth 

windowsのレジストリにある情報で、linuxの/var/lib/bluetoothにおいてある情報を更新するというやり方のようだ。

後半にはchntpwというwindowsのレジストリをいじるコマンドで情報をとってくるやり方が書いてある。

なんかここまでくると、スクリプト書いて自動化できそうな感じがする。書いてみようか?と思ったが、こんな需要がありそうなものは既に誰かが作っているんじゃないか? 

と思って調べてみたらあった。

https://github.com/x2es/bt-dualboot

上記chntpwとやらを使ってwindows側のレジストリをいじるという中々に危険なプログラムっぽい。 githubページの後半には似たようなソフトの一覧もあって、このプログラムが優れている点を挙げている。自信があるんだろう。

まあ、バックアップもとるみたいだし、ありがたく使わせていただくことにした。

インストール

pipで入れるらしいが、aptで入れたpipだとsystem-wideにプログラムを入れられないっぽい。(なぜか?sudoで入れる必要があるからか?)

一応apt search bt-dualbootとやってみたがさすがに公式には入ってなさそうだ。

仕方ないので、エラーメッセージで表示された通りvenvを入れてみる。python3-fullが必要らしい。chntpwも要るだろう。

sudo apt install chntpw
sudo apt install python3-full

ユーザでvenvを作る。なんとなく.venvに入れてみる。

python3 -m venv .venv

sudo su -でrootになってbt-dualbootを入れる。
(root権限が要るのは/var/lib/bluetoothが一般ユーザで読めないからだろう)

. .venv/bin/activate
pip install bt-dualboot 

使ってみる

とりあえず.venvのbinを直接sudoで実行すればいいようだ。

windows側のレジストリをいじるだけあって、前準備としてwindowsファイルシステムをマウントしている必要がある。ubuntuなら、クリックするだけでマウントはされる。 

windowsのファイルシステムを認識しているか?コマンドを打ってみる。 

sudo .venv/bin/bt-dualboot --list-win-mounts

Windows locations:
==================
 /media/user/Windows 

大丈夫そうだ。

次に、プログラムが認識しているbluetoothの一覧を表示してみる。
1つ目のELECOM TK-FBP102は一度コマンドを実行して同期したもの。2つ目のELECOM IR Optical Mouseはlinuxでペアリングしなおしたもの。2個目のマウスはNeeds syncとなっている。

sudo .venv/bin/bt-dualboot -l

Works both in Linux and Windows
===============================
 [DC:2C:26:19:86:45] ELECOM TK-FBP102

Needs sync
==========

Following devices available for sync with `--sync-all` or `--sync MAC` options.

 [DC:2C:26:A7:D9:F0] ELECOM IR Optical Mouse

コマンドを実行してみる。-b(backup)か-n(no-backup)をつけないと実行できないらしい。一応-bにしておく。

sudo .venv/bin/bt-dualboot --sync-all -b
> BACKUP /media/user/Windows/Windows/System32/config/SYSTEM to /var/backup/bt-dualboot/SYSTEM-2025-12-07--12-44-28

Syncing...
==========
 [DC:2C:26:A7:D9:F0] ELECOM IR Optical Mouse
...done

できたようだ。もう一度見てみる。 

sudo .venv/bin/bt-dualboot -l

Works both in Linux and Windows
===============================
 [DC:2C:26:19:86:45] ELECOM TK-FBP102
 [DC:2C:26:A7:D9:F0] ELECOM IR Optical Mouse

Needs sync
==========

No device found ready to sync.
Try pair devices first.

sync必要なしとなっている。
再起動してwindowsにしてもマウスとキーボードが使えた。
Tested with Windows 10と書いてあったので心配だったが、Windows 11でも大丈夫だったようだ。

これで一つ快適になった。 

おまけ(時刻同期) 

以下ついでに、windowsとlinuxで時間が数時間ずれるやつ。linuxはUTC、windowsはローカルタイムでrtcを使うのでずれる。linuxをローカルタイムにすればいい。 

https://qiita.com/Juice/items/63279e93f818ba74312d

sudo timedatectl set-local-rtc 1

しかし、PCを海外に持っていくとき、windowsはいちいちrtcいじるのか。サマータイムでも余計なことをして1時間ずらしたりするんだよな。マイクロソフト馬鹿なんじゃねーの?

2025年11月29日土曜日

immichで画像の読み込みエラーになるとき

アップロードしてエラーになる。なぜか?

 

ログを見るとエラーが出ている。

Error loading image: Exception: Invalid image data
#0      _futurize (dart:ui/painting.dart:7991)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:7785)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2558)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:147)
#4      RemoteImageRequest._decodeBuffer (package:immich_mobile/infrastructure/loaders/remote_image_request.dart:164)
#5      RemoteImageRequest.load (package:immich_mobile/infrastructure/loaders/remote_image_request.dart:32)
<asynchronous suspension>
#6      CancellableImageProviderMixin.loadRequest (package:immich_mobile/presentation/widgets/images/image_provider.dart:61)
<asynchronous suspension>
#7      ImageStreamCompleter.setImage (package:flutter/src/painting/image_stream.dart:724)
<asynchronous suspension>

めんどくさい問題が発生したのかと思ったが、サムネイル作成中のようだ。データがまだないのに読もうとしてエラーになっているだけだと思われる。

 

特定のカメラで撮ったやつがダメなのかと思って焦った。 気長に待てばよさそう。

raspberry-pi 4bで写真サーバーを立てる

ずいぶん前にgoogle photoが容量無制限でなくなり、Amazon photoに移行していた。

Amazon photoはprime会員なので容量無制限で使えるのだが、家族との共有が死ぬほどめんどくさい。とくにアルバムが共有できないというのが致命的に使いにくい。 

いい加減我慢の限界に来たので自宅サーバーを立てることにした。

とりあえず市販のNASを検討

synologyとかqnapとかが有名どころのようだ。最低限でも25000円くらい+ハードディスク代がかかる。

それだけならまあ何とか許容するとしても、数年周期で壊れたとして、また同じ費用が掛かるし、代替製品が出てちゃんとデータが移行できるのか不安が残る。また、やはり25000円+ハードディスク代で4~5万はかかるのももったいない。

おそらく製品なので簡単に使えるようになっているのだろうが、ついでに何か別のサーバも入れようとすると逆に面倒くさそうな感じもある。 

そして4~5万かかるのが気になる。やめた。 

自前で立てることにする

とりあえずalternativestoで調べてみて、見た目的にimmichというのがよさそうに見えた。raspberry-piでも動きそうなので、とりあえずraspberry-piにする。 ほかにもいろんなSBCが出てるが、有名どころのraspberry-piを使っておくのが面倒がないだろう。

現在最新はraspberry-pi 5のようだが、消費電力がちょっと高いようだった。電気代は安いに越したことはないので、4Bにしておく。immichをざっと検索した感じメモリは4G程度は必要そう。念のため8GB版を買っておく。 

インストール 

raspberry-piのOSを選ぶ。余計な機能はいらないので多分Liteでいいだろう。sshの設定までしてくれる。さすがだなあ。

書き込みして起動、wifiルータの機能でIPを固定化し、sshでログインしてみる。
何のトラブルもなく動いた。

次にquick-startに従いimmichを入れる。 

https://docs.immich.app/overview/quick-start/

dockerが必要そうなのでとりあえずdockerを入れる。一般ユーザでも使えるように自分をdockerグループに入れておく。

sudo apt install docker-compose
sudo apt install docker.io
sudo usermod -aG docker $USER 

quick-startに従いdocker-compose.ymlと.envをとってきて編集。とりあえず動かしてみるだけなので.envのタイムゾーンだけ変更して動かす。

# TZ=Etc/UTC
TZ=Asia/Tokyo

カレントのlibraryとpostgresにデータが格納されるようだ。

docker-compose up -dで普通に動いた。簡単すぎる。raspberry-piのケースを組み立てるのが一番大変だったかもしれない。

ハードディスク追加

動いたのはいいがこのままだと16GBしかないmicroSDにデータが入ってしまう。(ある程度容量のあるmicroSDを買ったつもりだったが、間違えてSDカード(でかい)を買ってしまったため、何に使ってたか分からない使い古しの16GBのmicroSDを使った。 )

ふるさと納税で1TBのUSBハードディスク(IO DATA 【HDPH-UT1KR】)を購入し使うことにする。

とりあえずつなげると大抵は/dev/sdaとして認識する。大抵はNTFSでフォーマットされているのでext4にフォーマットしなおして使う。最近のトレンドでは以下のようにやるらしい。

sudo parted /dev/sda mklabel gpt
sudo parted /dev/sda mkpart primary ext4 1MiB 100%
sudo mkfs.ext4 /dev/sda1 

できたらblkidでPARTUUIDなるものを調べる。伏せる必要があるかどうかよくわからないがXXXXの部分。

$ blkid
/dev/sda1: UUID="略" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"

fstabに追加する。

PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /mnt/disk ext4 defaults 0 1

ディレクトリを作ってmount -aしてみる。

mkdir /mnt/disk
mount -a

これでおそらく再起動してもマウントされるはず。

データ移動

一度immichを動かして設定してしまったので、もう一度やり直すのはめんどくさい。/mnt/disk/immichにデータを移動することにする。

sudo mkdir -p /mnt/disk/immich
sudo chmod 777 /mnt/disk/immich (なんとなく)

dockerを止めてデータをコピー

docker-compose down
sudo cp -a library /mnt/disk/immich/
sudo cp -a postgres /mnt/disk/immich/

.envのパスを変更して再起動。

UPLOAD_LOCATION=/mnt/disk/immich/library
DB_DATA_LOCATION=/mnt/disk/immich/postgres
docker-compose up -d

特に何事もなく動いた。再起動しても大丈夫そう。 

インストール後

一応メモリ使用率を見てみる。150GBくらい写真を入れた後。

               total        used        free      shared  buff/cache   available
Mem: 7.6Gi 2.5Gi 99Mi 148Mi 5.3Gi 5.1Gi
Swap: 2.0Gi 461Mi 1.5Gi

freeが少ないように見えるけど、availableは十分あるから大丈夫そうかな。
freeコマンドの見方は以下。詳しい人のyoutube(https://www.youtube.com/watch?v=jiHipQ2XUHc)から抜粋したので怒られたら消す。

 

microsd使用量は9GBくらい使っている。ちょっと16GBだと心もとない。 

/dev/mmcblk0p2   14G  9.1G  4.0G  70% / 

USB-Cの電力計で電力も計ってみる。写真をある程度の数アップロードした後は顔認識やら何やらでわりとCPU動きっぱなしになるので、そのあたりの電力を計った。 

見づらいがmax 9.16W、1.68Aとなっている。USBハードディスクはバスパワーなのでハードディスク込みの消費電力だ。バスパワーのタイプだったが、今のところraspberry-piからの電力で問題なく動いてそう。

とりあえず約10W x 24時間 x 30日くらい動かすとして7200Wh、電気代はだいたい1kWh30~40円として288円。毎日常にCPUフルで動くわけでもないはずだが、多く見積もって月額300円くらいのサービスということになる。

使用感

使ってみた感じはgoogle photoにかなり近い感じ。少なくともamazon photoより格段に使いやすい。amazon photoは即アンインストールしようかと思ったくらいだ。(一応念のためのバックアップ用に残してあるが) 

アップロード後サムネイルづくりや顔認識でCPUが使われ、 しばらく待たないと反映されないのが多少気になる。CPUはgoogleには及ばないので、大量にアップロードした後だと、ジョブが永遠に終わらない気がしてくる。まあ気長に待つしかないだろう。

あと、だれがアップロードした写真なのか見えるといいんだけど、まあ無くてもそこまで困らない。

ほかはおおむね満足、15000円+ふるさと納税+ケース、電源代+電気代を払う価値はあったと思う。

2025年11月25日火曜日

windows 11にした

保険料控除の証明書を電子にしているので、年末調整で提出するときにQRコード付地震保険料控除証明書とやらが必要なようだった。 

で、やろうとしたら推奨環境じゃないと表示される。

仕方ないのでwindows 11にしなければならないが、今使っているPCは10年前の代物でTPM2.0は当然ついてないし、CPUも非対応(Core i7-6700HQ)らしく、アップグレードNGとなる。 

仕方ないので無理やりアップグレードすることにした。 

https://easy-pc.hatenablog.com/entry/2025/03/02/165145

を参考に以下のコマンドでインストール。

setup.exe /product server

思いのほか問題なく動いている。windows updateも問題なさそう。

 

さてQRコード付地震保険料控除証明書とやらを作るか、と思ったらNG変わらず。

firefoxだからダメなのか。。。と思ってedgeにしても同じ。

詰んだ。税金を多めに払うしかないのか。。

と思ったら閉じるを押してそのまま進められるようだった。 
紛らわしい表示はやめてほしい。無駄にアップグレードしてしまったぞ。 

2025年11月23日日曜日

SteamでSpace Channel 5: Part 2が買えなくなるらしい

12/6で買えなくなるようだ。

https://support.sega.com/hc/ja/articles/29776767664145-SEGA-CLASSICS#h_01JBWBC4E7NJ9WH4TKAZXJK27N

元々おま国で買えないんだけど、おま国を何とかして買うのもラストチャンスか。。。
とりあえず調べた限りでは、g2aとかいうキーを売ってるサイトで買えば何とかなるかもしれないようだ。
検索してみる。

https://www.g2a.com/space-channel-5-part-2-steam-key-global-i10000049438002

161USDって何円だっけ?
高けぇ。足元見てんのか?
さすがに厳しい。だいたい本当にやりたいの1(無印)だし。(2もやりたいけども)


1(無印)は持っていてドリームキャスト本体も押し入れに眠っているが引っ張り出すのがめんどい。
吸いだしたデータをエミュレータでやろうにも、どうにも進めなくて詰んでいる。
どう考えてもエミュの遅延のせいに決まっている。決して反射神経が鈍ったせいではない。

何とかして普通に売ってくれないかなー。
マイケル出てるから難しいのかもしれないけど。
続編もVRじゃなくて普通のやつをお願いしたい。 

2025年11月10日月曜日

google検索の傾向

以前にも書いたが、このブログはgoogle検索でほとんど引っかからない。

一時期休眠していて、最近ちょこちょこブログを書き足しているが、休眠期間中にクロールの価値無しと判断されたのだと思われる。 

半年くらいは経ったので、そろそろ状況変わってるかなと思って確認してみた。

とりあえず最近アクセス数がある記事で見ると以下。

  • skyseaとfirefoxの記事(検索ワード: skysea firefox)
    • bing: 検索5位
    • duckduckgo: 検索5位
    • google: 圏外
  • 株主優待の記事 (検索ワード: トリドール 株主優待 残高確認)
    • bing: 検索60位くらい
    • duckduckgo: 検索50位くらい
    • google: 圏外

だめだな。変わってねえ。

依然として表示する価値無しと判断しているようだ。こういうしょうもないブログを枝刈りすることで検索の品質を上げているのであろう。

株主優待のgoogle検索だとublockにブロックされるような詐欺る気マンマンのサイトが大量に出てくるけど大丈夫なんだろうか?詐欺られてる人もいそうな気がするけど。bingやduckduckgoはちゃんと残高確認について書いたページを検索してくれるんだけど。

まあ俺には関係のないことだからどうでもいいか。 

2025年10月22日水曜日

bloggerでコードハイライト

ブログを見ると我ながらコード見づらいと思った。これはどう考えてもコードハイライトされないBloggerひいてはgoogleのせいでありコードには一切の問題はない(責任転嫁)。 

とりあえず以下を参考にコードハイライトを入れてみる。

https://rfs.jp/sb/javascript/js-lab/code-prettify.html

準備

管理画面の「テーマ」でテーマをカスタマイズ(HTMLを編集)する。

</head>の直前ぐらいに以下を入れた。よさそうな奴を探して入れたらいいようだ。

<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=sunburst'/>

やりかた

編集画面でHTMLビューに変えて 

<pre class="prettyprint"> </pre>

で囲むだけ。。。

めちゃくちゃめんどくさい。Bloggerでコード書いてる人みんなこれやってんのか?うそだろ?

追記

スマホから見るとハイライトされないようだった。モバイル用のテーマも変更しないといけない。(管理画面の「テーマ」でテーマのカスタムの▽→モバイルの設定→モバイルテーマの選択→カスタムを選ぶ)

参考: https://1studying.blogspot.com/2017/04/blogger_93.html