non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

homebridge-camera-isightで外付けUSBカメラ(Microsoft® LifeCam HD-3000)を使うには

おはようございます。ようやく次男の発熱が長引いた次男と実家で奥さん長男と離れての生活が終わって、自宅に戻って来たkjunichiです。

背景

クッキングタイマーくらいしか便利な役目がなかったSiri。しかし、

このツイートちょっと込み入っているが、子供達にも評判のいいアマゾンのアレクサに追加機能を自作しようと調べていたら、 AppleのHomeKitをサポートするhomebridgeを知った。

github.com

開発者登録等をせずにhomebridgeであれこれできるのが非常に驚きだった。

Mac miniにつないでるMicrosoft® LifeCam HD-3000をHomeKitに対応したカメラデバイスにした

以下の、homebridge-camera-isightをhomebridgeのプラグインとして追加するとHomeKitに対応した カメラデバイスができることを知った。

github.com

外付けのWebカメラでも使えそうな説明があった

iSightと名前に入ってはいるが、READMEにはmacOSであれば、外付けのカメラでも 以下のように、カメラのデバイスインデックスを調べて、設定ファイルの指定すれば 使えそうだった。

ffmpeg -f avfoundation -list_devices true -i ""

ffmpegのエラーが出る

Homeアプリに表示されるカメラの静止画は正常に表示されたが、画像をクリックすると、 以下のように、「The activeVideoMinFrameDuration passed is not supported by the device.」と文句を言われ、 ストリーミング映像が出てこなかった。まぁ、静止画だけでも大満足だったけど。。

解決した

結果的にはFPSを下げればよかった。もともと30の指定を半分の15にしてダメでさらに下げて10にしたらエラーが解消された。

{
      "platform": "Camera-iSight",
      "name": "iSight Camera",
      "fps": 10,
      "video_device": 0,
      "audio_device": 0
}

f:id:kjw_junichi:20180217081957j:plain

参考資料

stackoverflow.com

関連記事

13年前の記事

10年前の記事

7年前の記事

5年前の記事

シリコンパワー SSD M.2 2280 120GB SATA III 6Gbpsを買ってUbuntu 16.04LTSをコピった件

こんばんは、インフルエンザは陰性でしたが、夕方になると熱が上がる次男と実家に来ているkjunichiです。

背景

2017年末に自作したものの、なんにもアップグレードできていなくて、何かできないかと考えていた。 Xeonなのでメモリが4枚単位なのを知らずに2枚で組んでおり、メモリを増設したいところだが、 値下がりどころか値上がりする一方で、これは、しばらく諦めてる。

Linuxが30Gしかなくて、領域が手狭であった。128GBのM.2 SSDが7千円を切る値段でアマゾンで 売っていたので、Linuxの探検範囲を広げるべく、奥さんにもこの値段なら怒られないだろうという事で、 試してみた。

我が家初のM.2 SSD

NVMeにしたかったが、SATAに甘んじた。。

使い道

!注意! 以下の/dev/sd*の表記は今回の環境なので、各人の環境毎に異なります。間違えると大惨事。。

Linuxが30Gしかなくて、領域が手狭であった。TensorflowをGPUで動かせる程度までUbuntu16LTSを メンテしていたので、横着して

dd if=/dev/sdc of=/dev/sda

SSD丸ごとコピーを実行。その後、fdiskでルートパーティションの/dev/sda3を一旦削除して、 新しい、M2のSSDの領域全部使うようにパーティション作り直そうとするが、wコマンドでエラーが 出て書き込めない。。

partedで同様の作業を試み、パラメータ変だから修正するかにFIXと答え、無事パーティション作成できた。

ルートパーティションの/dev/sdc3を/dev/sda1に

dd if=/dev/sdc3 of=/dev/sda3

ここで、/dev/sda3の容量不足と怒られ、何度かやって、ハタと起動してる/dev/sdc3だからダメなのでは?

という事で、UbuntuのインストールUSBを作成して、このインストールUSBでライブ起動して、再度

dd if=/dev/sdc3 of=/dev/sda3

今度は無事コピー完了。

PCを再起動して、ブートメニューでM2のSSDを選んでブート!

起動を確認して、再起動して、再びインストールUSBで起動して、sda3の領域をM.2 SSDの最大サイズまで 以下の記事のようにコマンドで広げた。

resize2fs /dev/sda3

トラブル

久しぶりにLinuxのインストールっぽい事やって、戸惑いながらも、まずまずじゃないかと思っていたら、 トラブル。

古いSSDをブートで選択しても、新しいM.2 SSDLinuxが起動してしまう。 UEFIの設定をいじっていたら、Windows10まで起動途中で再起動する状態に。

UUID

どうやら、Windows10が起動できなくなった原因はUEFIRAID設定を有効にしてしまった為だと分かって、これは解決。

古いSSDから起動できない原因はUUIDまでも同じだったから。古いSSDLinuxもブートできるように これらのUUIDを振り直した。

UUIDを変更する際はドライブをマウントした状態ではできないので、前述のインストールUSBから起動して行った。

ブートパーティションのUUIDの修正

これには、hexeditで/dev/sda1を開いて、

に従い、リトルエンディアンなのを考慮してのバイナリ編集で対応。これは結構リスキーだw

LinuxのルートパーティションのUUIDの変更

LinuxのルートパーティションのUUIDの変更は以下のようにコマンドベースで比較的簡単に変更できた。

tune2fs -U `uuidgen` /dev/sda1

uuidgenなるコマンドで生成でき、これをtune2fsコマンドで書き込むっぽい。

grub.cfgの修正

どうやら2箇所修正しないと、ダメな模様。

ブートパーティションの/dev/sda1のgrub.cfgとルートパーティションの/dev/sda3の二箇所 /dev/sda3側は、編集するなの警告が記載されているが、これは無視してどんどん修正した。

まとめ

なんとかいちからインストール作業をせずに既存の手狭だったSSDLinux環境をM.2 SSDに移行できた。 grub関連の知識も今回の作業で少し増えた。

スピードは、これまでの30GBのSSDとあまり変わらない体感速度な気がしている。

あくまでも、M.2規格のSSDをマーザーボードにくっつけたことに意義があるのだと。

関連記事

7年前の記事

Maximaで2018年のセンター試験、数学I・数学Aの第1問を解いてみた

こんばんは、奥さんと子供たちが不在で久しぶりの独身生活を満喫しているkjunichiです。

数式処理といえばMaximaでしょ

ということで、今年のセンター試験の数学I・数学Aの第1問をMaximaで解いてみた。

問題は

www.toshin.com

を参照

Maximaで解く

まずはアの答えをexpandで求める

(%i1)    expand((x+n)*(n+5-x));
(%o1)   -x^2+5*x+n^2+5*n

続いて、イ、ウ、エをratsubstを使うことで以下のように求めることができた。

(%i4)    ratsubst(X,x*(5-x),x*(x+1)*(x+2)*(5-x)*(6-x)*(7-x));
(%o4)   X^3+20*X^2+84*X

これをfactorで

(%i5)    factor(%);
(%o5)   X*(X+6)*(X+14)

と式を変形して、完了。

次に、オを求める。

(%i5)    x:(5+sqrt(17))/2;
(x) (sqrt(17)+5)/2
(%i6)    expand(x*(5-x));
(%o6)   2

最後のカは

(%i7)    expand(x*(x+1)*(x+2)*(5-x)*(6-x)*(7-x));
(%o7)   256
(%i8)    factor(256);
(%o8)   2^8

関連記事

13年前の記事