معرفی R2D2؛ سیستم‌عامل و دستیار صوتی متن‌باز برای تلویزیون‌های هوشمند webOS

با پروژه‌ی متن‌باز R2D2 آشنا شوید؛ ابزاری برای داشتن صفحه اصلی محلی، مرورگر اختصاصی و دستیار صوتی روی تلویزیون‌های مجهز به webOS.

🎧 خلاصه صوتی مقاله (پادکست ۲ دقیقه‌ای):

فرصت مطالعه ندارید؟ چکیده این مطلب را همین‌جا گوش دهید:

مدیریت تلویزیون‌های هوشمند گاهی با به‌روزرسانی‌های اجباری و کندی رابط کاربری همراه است. پروژه‌ی متن‌باز R2D2 پاسخی خلاقانه به این مسئله است که به شما امکان می‌دهد یک صفحه اصلی (Home Screen) محلی، مرورگر اختصاصی و دستیار صوتی مبتنی بر فشار برای صحبت (Push-to-Talk) را روی تلویزیون‌های دارای سیستم‌عامل webOS راه‌اندازی کنید. در این پروژه، یک میزبان محاسباتی لینوکسی کارهای پردازشی سنگین مانند اجرای مرورگر Chromium و مدل‌های صوتی را انجام می‌دهد و تلویزیون صرفاً به عنوان نمایشگر و ابزار کنترلی عمل می‌کند.

نام ابزارR2D2 (r2d2-tv)
نوع مجوز (License)MIT (برخی اجزا GPL-3.0-or-later)
زبان برنامه‌نویسیپایتون (Python)، جاوا اسکریپت
وضعیت دسترسی ایرانبدون محدودیت (مخزن متن‌باز گیت‌هاب)
دسته‌بندیپروژه متن‌باز / ابزار توسعه‌دهندگان

معماری و نحوه‌ی کارکرد سیستم R2D2

این ابزار به گونه‌ای طراحی شده است که پردازش‌های سنگین را از سخت‌افزار محدود تلویزیون دور کند. سیستم از دو بخش اصلی تشکیل شده است: میزبان محاسباتی (Compute Host) و تلویزیون (TV).

  • میزبان محاسباتی: یک رایانه مبتنی بر لینوکس (معماری aarch64) است که یک نسخه‌ی ایزوله از مرورگر Chromium را در پس‌زمینه اجرا کرده و تصویر آن را از طریق شبکه محلی (LAN) به تلویزیون انتقال می‌دهد. همچنین مدل‌های تشخیص گفتار و فرمان‌های صوتی روی این بخش اجرا می‌شوند.
  • تلویزیون: برنامه‌ی Home و نمایانگر مرورگر روی تلویزیون اجرا می‌شوند و ورودی‌های کنترل از راه دور را به میزبان ارسال می‌کنند.

پیش‌نیازهای سخت‌افزاری و نرم‌افزاری

پیش از شروع ساخت و پیکربندی، باید مطمئن شوید که سیستم شما شرایط زیر را دارد:

  • سیستم میزبان (Compute Host): لینوکس aarch64، حساب کاربری غیرردم (معمولاً UID 1000)، مرورگر Chromium با قابلیت سندباکس فعال، Xvfb برای مدیریت نمایشگر مجازی، پایپ‌ویر (PipeWire) و ابزارهای صوتی GStreamer برای انتقال بستر WebRTC، به همراه کارت گرافیک سازگار با پردازش‌های محلی هوش مصنوعی (نیاز به حدود ۱۰ گیگابایت فضا برای وزن مدل‌ها).
  • سیستم ساخت (Build Machine): پایتون نسخه 3.10 به بالا و Node.js نسخه 20 به بالا.
  • تلویزیون: یک تلویزیون مجهز به webOS که دسترسی روت (System Access) به آن دارید.

آموزش ساخت و کامپایل محلی

برای شروع ساخت این ابزار روی سیستم خود، ابتدا فایل پیکربندی نمونه را کپی کرده و بر اساس نیازهای دستگاه خود ویرایش کنید:

cp config/example.json config.local.json
# فایل کپی شده را برای دستگاه خود ویرایش کنید
python3 tools/build.py --config config.local.json --output dist/local --include-tests

دستور بالا یک خروجی شامل بسته‌ی غیرامضایی Home، سرویس‌های رندرش شده‌ی میزبان و سورس‌های سرویس تلویزیون تولید می‌کند. اگر می‌خواهید میانبر مرورگر را فعال کنید، باید یک کلید امنیتی اختصاصی بسازید و آن را به ابزار ساخت تحویل دهید:

umask 077
python3 -c 'import secrets; print(secrets.token_hex(32), end="")' > browser.local.key
python3 tools/build.py --config config.local.json --browser-key-file browser.local.key --output dist/local-browser --include-tests

بخش بزرگتری از ابزارها و کارهای کاربردی مشابه را می‌توانید در کنار مدیریت سیستم‌عامل بررسی کنید. برای نمونه، اگر به ابزارهای متن‌باز و دقیق علاقه‌مند هستید، مطالعه‌ی مقاله‌ی معرفی SpeedCrunch؛ ماشین حساب مهندسی دقیق و متن‌باز خالی از لطف نخواهد بود.

اجرای آزمون‌ها و ارزیابی کیفیت

پس از ساخت پروژه، می‌توانید تست‌های آفلاین را برای اطمینان از سلامت کدهای پایتون و جاوا اسکریپت اجرا کنید:

python3 -B -m unittest discover -s tests
node tests/test_protection_proof.js
node tests/test_home_core.js
python3 tools/privacy_check.py

همچنین برای اجرای تست‌های رابط کاربری با استفاده از ابزار Playwright، دستورات زیر را اجرا کنید:

npm ci --ignore-scripts
npx --no-install playwright install chromium
npm run test:home
npm run test:browser

استقرار و آماده‌سازی میزبان

برای آماده‌سازی نهایی میزبان محاسباتی، مسیر رندرش شده‌ی spark را به عنوان یک دایرکتوری نسخه‌بندی شده توسط حساب کاربری سرویس آماده کرده و پیش از راه‌اندازی مدیر نشست، ابزار ارزیابی اولیه (Preflight) را اجرا کنید:

python3 -B "$RENDERED_SPARK/runtime/trial.py" --run --preflight-only

این اسکریپت مواردی نظیر سندباکس، وضعیت صدا و تصویر، قوانین محافظت از محتوا و پاکسازی را بررسی می‌کند.

پرسش‌های متداول

آیا این پروژه روی تمام مدل‌های تلویزیون ال‌جی قابل نصب است؟

خير؛ این ابزار بر اساس یک نسخه سفت‌افزاری (Firmware) خاص توسعه داده شده و برای سایر مدل‌ها یا نسخه‌های فریم‌ور تأیید نشده است و نیاز به استخراج مجدد پچ‌ها دارد.

آیا نصب این نرم‌افزار گارانتی تلویزیون را باطل می‌کند؟

بله؛ از آنجا که اجزای تلویزیون با دسترسی روت اجرا شده و سرویس‌های سیستمی سازنده را تغییر می‌دهند، ممکن است گارانتی دستگاه را باطل کند.

آیا پردازش‌های هوش مصنوعی روی خود تلویزیون انجام می‌شوند؟

خیر؛ مدل‌های تشخیص گفتار و هوش مصنوعی روی میزبان محاسباتی (کامپیوتر لینوکسی) اجرا شده و تلویزیون تنها به عنوان نمایانگر عمل می‌کند.

چه لایسنسی برای این پروژه در نظر گرفته شده است؟

کد اصلی پروژه تحت مجوز MIT منتشر شده است، در حالی که برخی افزونه‌ها و پکیج‌های جانبی از مجوز GPL-3.0-or-later استفاده می‌کنند.

جمع‌بندی

پروژه‌ی R2D2 یک راهکار پیشرفته و کاملاً آزاد برای کسانی است که می‌خواهند کنترل کامل‌تری بر روی تلویزیون هوشمند webOS خود داشته باشند. با انتقال پردازش‌های سنگین به یک میزبان لینوکسی و استفاده از پروتکل‌های بهینه، این پروژه توانسته است محدودیت‌های سخت‌افزاری تلویزیون را دور بزند. رعایت دقیق دستورالعمل‌های ساخت و آگاهی از ریسک‌های دسترسی روت، شرط اصلی موفقیت در استفاده از این ابزار متن‌باز است.

مشاهده‌ی پروژه در GitHub

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *