حلّ المجتمع

تمرير دونغل Zigbee عبر ZVM إلى نظام Home Assistant OS

A Home Assistant OS user cannot see a ConBee II dongle in ZVM; community members provide a libvirt XML passthrough method and Zigbee2MQTT verification path.

لا يمكن لمشاركة Samba تمرير محول Zigbee فعلي إلى HAOS

تتعلق المشكلة الأصلية بجهاز USB تسلسلي، وليس بمجلد. يمكن لمشاركة Samba إتاحة الملفات أمام آلة افتراضية، لكنها لا تستطيع جعل جهاز ConBee أو Sonoff أو Nortek أو أي جهاز راديو مشابه يظهر كعتاد USB داخل الضيف. المسار العملي المتبع في المجتمع يربط جهاز USB المضيف بالضيف ZVM عبر libvirt.

يظل هذا حلاً مؤقتًا عبر سطر الأوامر، وليس محدد USB مؤكدًا في ZVM. أنشئ نسخة احتياطية من XML الخاص بالآلة الافتراضية وأوقف تشغيل Home Assistant OS قبل تعديل العتاد الدائم. قد يؤدي تعديل XML غير الصحيح أو فقدان وحدة الدونغل إلى منع تشغيل الضيف، لذا احتفظ بنسخة يمكنها استعادة الإعداد السابق.

حدّد الدونغل من دون نسخ معرّفات مستخدم آخر

اتصل بـ ZimaOS عبر مسار SSH والصلاحيات المدعوم، ثم شغّل lsusb. ابحث عن زوج المورّد والمنتج الخاص بالدونغل، مثل 1a86:55d4 في المثال. ستختلف معرّفات ConBee أو Sonoff أو Nortek لديك.

افصل الدونغل وأعد توصيله مرة واحدة إذا كانت القائمة غير واضحة. قد يكون التطابق حسب المورّد والمنتج غير حاسم أيضًا عند توصيل محولين متطابقين. يشرح تنسيق جهاز المضيف في libvirt المطابقة باستخدام VID/PID وعناوين USB الأكثر تحديدًا.

سجّل اسم libvirt الدقيق للآلة الافتراضية أو معرّف UUID باستخدام virsh list --all. لا تستخدم معرّفًا نموذجيًا من المناقشة. صدّر تعريفها الحالي باستخدام virsh dumpxml VM_NAME قبل تغييره.

أضف كتلة hostdev واحدة داخل قسم أجهزة الضيف

بعد إيقاف تشغيل الضيف، افتح تعريفه باستخدام virsh edit VM_NAME. داخل عنصر <devices> الموجود، أضف <hostdev mode='subsystem' type='usb' managed='yes'><source><vendor id='0xVID'/><product id='0xPID'/></source></hostdev>، واستبدل VID وPID بالقيم الموجودة على مضيفك.

أضف قسم hostdev كاملًا واحدًا لكل جهاز فعلي. لا تنشئ غلاف <devices> ثانيًا، ولا تلصق الكتلة بعد وسم الإغلاق </devices>. احفظ التغييرات، ثم افحص XML مرة أخرى قبل تشغيل الآلة الافتراضية.

شغّل الضيف وتحقق باستخدام virsh list --all. إذا فشل التشغيل، اقرأ أول خطأ صادر عن libvirt. استعد XML المحفوظ بدلًا من تراكم تعديلات إضافية. تشير نتيجة “device not found” إلى مشكلة في تعداد الأجهزة على المضيف أو المطابقة؛ بينما يشير خطأ تحليل XML إلى موضع الكتلة أو صياغتها.

تحقق من الجهاز في HAOS قبل التعامل مع Zigbee2MQTT

في Home Assistant، افتح الإعدادات ← النظام ← العتاد، وابحث عن جهاز USB أو جهاز تسلسلي جديد. قد تتغير أسماء الواجهات مثل /dev/ttyACM0؛ وعندما يعرض HAOS إدخالًا من نوع /dev/serial/by-id/...، استخدم هذه الهوية الثابتة في Zigbee2MQTT.

لا تضبط serial.port في Zigbee2MQTT إلا بعد أن يتعرف HAOS على الجهاز. أعد تشغيل الإضافة وافحص سجلها بحثًا عن نجاح اتصال المحول. إذا رأى HAOS الدونغل لكن تعذر على Zigbee2MQTT فتحه، فهذا يعني أن خطوة التمرير تعمل بالفعل، وأن المشكلة انتقلت إلى نوع المحول أو الإعداد التسلسلي أو صلاحية وصول الإضافة.

أعد تشغيل HAOS ثم أعد تشغيل ZimaOS لاختبار استمرار الإعداد. تأكد من عودة مسار by-id نفسه ومن إعادة اتصال Zigbee2MQTT. قد تؤدي تغييرات موارد ZVM إلى استبدال XML اليدوي في بعض الإصدارات، لذا كرر فحص XML بعد تغيير وحدة المعالجة المركزية أو الذاكرة أو الأقراص أو ترقية المنصة.

الأسئلة الشائعة

أين يُخزَّن ملف XML؟

لا تحتاج إلى تحديد موقع ملف يدويًا. استخدم virsh edit VM_NAME لتحرير تعريف النطاق المسجّل، واستخدم virsh dumpxml لإنشاء نسخة احتياطية منه.

هل يمكن تمرير عدة أجهزة USB إلى الآلة الافتراضية نفسها؟

نعم، تعرض المناقشة كتلة hostdev واحدة لكل جهاز. يجب أن تطابق كل كتلة العتاد المقصود من دون التباس.

لماذا تغيّر مسار USB بعد إعادة التشغيل؟

قد تتغير أسماء الأجهزة المختصرة عندما يعدّد Linux العتاد. فضّل مسار by-id في HAOS بعد التمرير، لكن أعد فحص XML إذا اختفى الجهاز بالكامل.

توجد الأوامر الخاصة بـ HAOS ومثال XML اللاحق في مناقشة مشاركة USB على ZVM.