2000年に発売された26年前のLEGO Studiosカメラが、最新のMacBook Proでライブウェブカメラとして動作するようになりました。開発者のBenjamin Kelly氏は、ユーザー空間ドライバとOBS Virtual Cameraを活用することで、デバイス内部のLogitech QuickCam Webハードウェアに対する公式なmacOSドライバが存在しないという問題を回避しました。

この画像は、新しいユーザー空間ドライバによって復活させられた特定の26年前のハードウェアを特定するものです。
カーネル制限の回避
最新のmacOSはセキュリティ上の理由からカーネル拡張のロードを困難にしており、通常、古いUSBデバイスの認識を妨げています。これを解決するために、開発者はlibusbを使用したlegocamというドライバを執筆しました。これにより、標準的なプログラムがシステムレベルのカーネル権限を必要とせずにUSBデバイスと直接通信できるようになります。
このプロジェクトは約400行のCおよびObjective-Cで構成されています。特定のUSB ID(046d:0850)によってカメラを識別し、センサーを起動してストリーミングを開始するために必要な低レベルの通信を処理します。
プロトコルのリバースエンジニアリング
カメラ固有の通信プロトコルがmacOS向けに文書化されていなかったため、開発者はLinuxコミュニティに目を向けました。gspca_stv06xxドライバを分析することで、STV0610 USBブリッジとVV6410イメージセンサーを動作させるために必要な正確なレジスタ書き込みのシーケンスと、等時性USBパケットの構造を特定しました。
legocamツールはこれらの生のデータパケットを結合し、フレームを356x292ピクセルの生のBayerパターン(bayer_grbg8)としてstdoutに出力します。これにより、初期のデータ処理を単純に保ち、最終的な表示ロジックから切り離すことができます。
仮想カメラブリッジ
生のデータはffplayなどのツールを使用して表示できますが、macOSではデバイスをZoomやFaceTimeなどのアプリに表示させるために署名付きのカメラ拡張が必要です。これを回避するために、開発者はobscamという2番目のプログラムを作成しました。
Obscamは最初のプログラムから生のフレームを取得し、libswscaleを使用して色に変換し、OBS Virtual Cameraにプッシュします。OBSはすでに署名付きの拡張を提供しているため、LEGOカメラは標準的なビデオアプリケーションで「OBS Virtual Camera」として選択可能になります。

このビジュアルは、ヴィンテージなハードウェアと最新のmacOSソフトウェアの統合の成功を実証しています。
ハードウェアの制限と制約
このセットアップは、ハードウェアの古さにより大幅なパフォーマンスのトレードオフに直面しています。フレームレートは約5fpsに制限されていますが、これはソフトウェアの実装によるものではなく、元のUSB 1.1帯域幅とセンサーの内部クロックによって課される制限です。
さらに、このカメラには自動露出機能がないため、ユーザーはコマンドライン引数を通じて露出とゲインの値を手動で設定する必要があります。現時点では、マイクおよびLEGOブロック上の物理的なスナップショットボタンは機能していません。