تصور کنید در یک کافه نشستهاید و بهجای خیره شدن به صفحه کوچک لپتاپ، یک نمایشگر عظیم و مجازی را پیش روی خود دارید. اگر به دنبال راهی برای گسترش فضای کاری خود بدون خرید نمایشگرهای گرانقیمت هستید، NerdLens دقیقاً همان چیزی است که باید بررسی کنید. در حالی که مانیتورهای حرفهای VR اغلب به سختافزارهای گرانقیمت و استریمینگ مبتنی بر ابر نیاز دارند، NerdLens یک جایگزین اقتصادی را ارائه میدهد.
این پروژه که در ۲۳ جولای ۲۰۲۶ رونمایی شد، یک آزمایش متنباز است که آیفون و یک گوگل کارتبورد (Google Cardboard) را به یک نمایشگر فعال تبدیل میکند و اجازه میدهد صفحه مکبوک بهصورت آینهای در یک هدست VR ارزانقیمت دیده شود. برای علاقهمندان به سختافزار، این کار شبیه ساخت یک سینمای خانگی کوچک برای کدنویسی است؛ بهجای پرداخت هزاران دلار برای کیتهای VR سطح بالا، از یک گوشی و یک قاب مقوایی استفاده میکنید تا محیط کار خود را در یک فضای سهبعدی استریوسکوپیک ببینید. این ابزار مشکل رایج کمبود فضای صفحه نمایش را برای توسعهدهندگانی که میخواهند در حال حرکت یک نمایشگر مجازی عظیم داشته باشند، حل میکند.
زمینه فنی
همانطور که در تحلیلهای قبلی ما دربارهی ابزارهای بهرهوری متنباز اشاره کردیم، رویکردهای «DIY» یا ساخت-خودت، اغلب خلأهای محصولاتی که شرکتهای بزرگ نادیده میگیرند را پر میکنند. این رویکرد یادآور تلاشهای مشابهی است که در آن شرکتهای بزرگ برای جامعه سازندگان باز میشوند، مانند زمانی که والو کدهای نمایشگر استیم ماشین را برای پروژههای DIY منتشر کرد. NerdLens به عنوان یک اثبات مفهوم (Proof of Concept) طراحی شده و بیشتر به عنوان تمرینی در «کنجکاوی غیرمنطقی» شناخته میشود. این سیستم یک اپلیکیشن تجاری صیقلخورده نیست، بلکه ابزاری برای هک و آزمایشگری است.
به نقل از مستندات پروژه، این سیستم برای جلوگیری از تأخیر و ناپایداریهای رایج در استریمینگ ابری، از یک تونل USB سیمدار استفاده میکند. این پروژه تحت مجوز GNU GPL v3.0 منتشر شده است. مسیر توسعه برنامهنویس این پروژه، از جمله اولین تلاش ناموفق او در یک پروژه Unity، بهطور کامل در فایل JOURNAL.md (لاگ ساخت) مستند شده است.
ساختار فنی این سیستم بر پایه یک خط لوله (Pipeline) مشخص است: یک رابط کاربری با Svelte فریمهای JPEG را کپچر کرده و از طریق میزبان Tauri/Rust ارسال میکند. سپس دادهها با استفاده از iproxy از طریق تونل USB منتقل میشوند. در نهایت، یک کلاینت Unity 6 روی iOS این فریمها را رمزگشایی کرده و بهعنوان یک تکسچر (Texture) در صحنه VR نمایش میدهد.
جزئیات فنی
طبق گزارش منتشرشده در گیتهاب، مشخصات فنی کلیدی و مکانیزمهای این ابزار عبارتند از:
- نرخ فریم: نرخ فریمهای هدف قابل تنظیم هستند و میتوان آنها را بین ۱۰ تا ۶۰ فریم بر ثانیه (FPS) قرار داد.
- اتصالات: استفاده از libimobiledevice برای نگه داشتن ترافیک در یک تونل USB از طریق iproxy، تا از ازدحام و تداخلات Wi-Fi جلوگیری شود.
- کنترل کاربر: وجود یک لغزنده فاصله (Distance Slider) که به کاربران اجازه میدهد نمایشگر مجازی را بدون نیاز به خارج شدن از هدست، نزدیکتر یا دورتر کنند.
- پایداری: سیستم دارای قابلیت تلاش مجدد خودکار برای اتصال است تا در صورت قطع شدن یا اختلال در نوشتن فریمها، ارتباط را بازیابی کند.
- تجربه کاربری (UX): کلاینت موبایل تضمین میکند که آیفون در طول جلسه کاری بیدار بماند تا از خاموش شدن صفحه نمایش (Timeout) جلوگیری شود.
پروتکل دادهها
ارتباطات از طریق یک سرور TCP که روی گوشی اجرا میشود، صورت میگیرد. میزبان دسکتاپ به آدرس localhost:12345 متصل میشود و iproxy این اتصال را به آیفون هدایت میکند. این پروتکل از یک بایت شناسهساز نوع (Type) و به دنبال آن طول محتوا با فرمت Big-endian استفاده میکند:
- نوع ۰: برای حفظ اتصال یا Keep-alive (توسط کلاینت رزرو شده است).
- نوع ۱: بایتهای JPEG که برای جایگزینی تکسچر نمایش داده شده در محیط VR به کار میروند.
- نوع ۲: دادههای JSON با کدگذاری UTF-8 که برای بهروزرسانی تنظیمات ویور (مانند فاصله نمایشگر) استفاده میشوند.
برای راهاندازی این سیستم، کاربر به سیستمعامل macOS، نرمافزار Xcode و دستگاهی با iOS ۱۳ یا جدیدتر نیاز دارد. در سمت دسکتاپ، نصب Bun و زبان Rust الزامی است و کلاینت موبایل باید حتماً از طریق Unity 6000.1.5f1 ساخته شود. طبق مستندات گیتهاب، نسخه فعلی صرفاً برای هک و تجربه است و نه برای استفاده مصرفکننده نهایی در قالب یک محصول صیقلخورده.
نصب و اجرا
فرآیند نصب شامل کلون کردن مخزن (Repository) و استفاده از Homebrew برای نصب libimobiledevice است. گردش کار این سیستم مستلزم سه گام مجزا است:
۱. ساخت کلاینت: استفاده از Unity 6000.1.5f1 و پکیج Google Cardboard XR برای ساخت یک پروژه Xcode و استقرار (Deploy) آن روی آیفون.
۲. باز کردن تونل: اجرای دستور iproxy 12345 12345 در یک ترمینال مجزا برای ایجاد پل ارتباطی بین دسکتاپ و دستگاه موبایل.
۳. راه اندازی میزبان: اجرای دستور bun run tauri dev از دسکتاپ، انتخاب پنجره هدف و شروع ضبط صفحه.
این پروژه نشاندهنده چرخش به سمت «کنجکاویهای غیرمنطقی» در جامعه هکرهای مستقل است. اولویت دادن به تونل سیمدار USB بهجای استریم بیسیم، تأخیر را به حداقل رسانده و وابستگی به زیرساکارهای ابری را بهطور کامل حذف میکند. این امر ثابت میکند که رندرینگ استریوسکوپیک ساده همچنان میتواند محیطی بهرهور ایجاد کند، بدون اینکه نیازی به جدیدترین سختافزارهای سطح سازمانی (Enterprise-grade) باشد.
برای کاربر، این به معنای آن است که شما عملاً «یک مانیتور را میپوشید». اگرچه این سیستم فاقد یک جریان کامل کالیبراسیون راحتی است، اما یک آیفون استاندارد را به یک سختافزار تخصصی برای افزایش بهرهوری تبدیل میکند. این رویکرد مشابه تلاش برای انتقال محیطهای پیچیده دسکتاپ به موبایل است، مانند پروژه Remux که محیط ترمینال tmux را به یک فضای بصری در iOS تبدیل کرد. این یک یادآوری است که tinkering یا دستکاریهای متنباز اغلب میتوانند کاربردهای عملی را کشف کنند که نقشه راه محصولات شرکتی نادیده میگیرند.
اگر میخواهید این سیستم را امتحان کنید، باید مخزن را کلون کرده و تونل iproxy را روی پورت ۱۲۳۴۵ تنظیم کنید. نقشه راه پروژه شامل اهداف آیندهای مانند انتقال ویدئویی روانتر، کشف خودکار دستگاه، قفل محورها (Axis Locking) برای نمایشگر و ارائه نسخههای بستهبندی شده (Packaged) برای دسکتاپ و موبایل است.
گام بعدی شما
- اگر توسعهدهنده هستید، مخزن پروژه را کلون کرده و تونل iproxy را روی پورت ۱۲۳۴۵ تنظیم کنید.
- برای کاهش تأخیر، نرخ فریم را متناسب با سختافزار خود بین ۱۰ تا ۶۰ تنظیم نمایید.
- نقشه راه پروژه را برای قابلیتهایی مثل کشف خودکار دستگاه و قفل محورهای نمایشگر دنبال کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به بررسی ما درباره تراشههای تخصصی پردازش تصویر در محیطهای VR مراجعه کنید.




گفتگو