اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
اختبار إمكانية اتصال أجهزة متعددة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
الخلفية
يمكن تشغيل عدة أجهزة افتراضية من Cuttlefish من خلال تنفيذ
الأمر التالي:
launch_cvd --num_instances=n
عند تشغيل نسختَين أو أكثر باستخدام العلامة --num_instances
،
تشارك النُسخ وسيط الاتصال لشبكة Wi-Fi والبلوتوث. يتيح هذا الإعداد
لمثيلات Cuttlefish العثور على بعضها والاتصال بها عبر
البلوتوث وWi-Fi بدون اتّخاذ إجراء إضافي.
ومع ذلك، إذا كنت تُنفِّذ نُسخًا متعددة باستخدام العلامة
--base_instance_num
وطلبات متعددة من launch_cvd
، عليك
تحديد مسار خادم vhost الخاص بخدمة wmediumd
لمشاركة وسيط Wi-Fi، وأيضاً
منع إطلاق نُسخ متعددة من الأجهزة الافتراضية لخدمة نقطة الوصول.
مثال على إطلاق تطبيق على أجهزة متعددة
توضِّح الأوامر التالية كيفية تشغيل نسختَين من Cuttlefish تشاركان
وسيط Wi-Fi باستخدام التنفيذ التسلسلي لـ launch_cvd
.
launch_cvd
launch_cvd --base_instance_num=2 \
--vhost_user_mac80211_hwsim=$HOME/cuttlefish_runtime.1/internal/vhost_user_mac80211 \
--ap_kernel_image="" --ap_rootfs_image="" #Prevent launching multiple VM instances for AP
البلوتوث
يتيح rootcanal تنفيذ بلوتوث Cuttlefish ويمكن التحكّم فيه
من خلال وحدة تحكّم سطر الأوامر في واجهة مستخدم الويب.
في وحدة التحكّم، تتوفّر عدة أوامر تتيح التحكّم في تكنولوجيا
البلوتوث على الجهاز الضيف:
الأمر |
الوصف |
list |
إدراج الأجهزة الحالية والأجهزة الفيزيائية |
add DEVICE_TYPE [ARGS] |
إنشاء جهاز جديد من النوع DEVICE_TYPE |
del DEVICE_INDEX |
حذف جهاز |
add_phy PHY_TYPE |
إضافة وحدة معالجة قوية جديدة باستخدام PHY_TYPE |
del_phy PHY_INDEX |
حذف وحدة معالجة |
add_device_to_phy DEVICE_INDEX PHY_INDEX |
إضافة جهاز إلى phy |
del_device_from_phy DEVICE_INDEX PHY_INDEX |
حذف جهاز من phy |
add_remote HOSTNAME PORT PHY_TYPE |
إضافة جهاز التحكّم عن بُعد في الجذر كجهاز وتسجيله في phy |
نوع الجهاز وargs |
beacon [MAC_ADDRESS] [ADVERTISE_INTERVAL] |
scripted_beacon [MAC_ADDRESS] [CONFIG_PATH] [EVENTS_PATH] |
keyboard [MAC_ADDRESS] [ADVERTISE_INTERVAL] |
loopback [MAC_ADDRESS] [ADVERTISE_INTERVAL] |
sniffer |
Wi-Fi
wmediumd_control
wmediumd_control
هي أداة سطر أوامر تتحكّم في اتصال Wi-Fi
الوسيط. تتضمّن الأداة الأوامر التالية للتلاعب بشبكة Wi-Fi:
الأمر |
الوصف |
set_snr MAC_ADDR1
MAC_ADDR2
SNR_VALUE |
ضبط قيمة نسبة الإشارة إلى الضوضاء (من 0 إلى 255) بين محطتَين
|
start_pcap PCAP_FILE_PATH
|
بدء تسجيل جميع اللقطات
المُرسَلة إلى الهواء وتخزينها في ملف ملف pcap. |
stop_pcap
|
إيقاف عملية التقاط الحزم الحالية ووضع علامة عليها بأنّها مكتملة |
list_stations
|
إدراج جميع المحطات المرتبطة بعلامة
wmediumd |
reload_config
[CONFIG_FILE_PATH]
|
إعادة تحميل إعدادات wmediumd باستخدام
CONFIG_FILE_PATH، في حال
تم حذف
CONFIG_FILE_PATH، إعادة تحميلملف الإعدادات المثبَّت حاليًا
|
set_position MAC_ADDR
X_POSITION
Y_POSITION |
ضبط موضع المحطة في
فضاء ثنائي الأبعاد
|
OpenWRT
إذا كنت تريد الاتصال بـ OpenWRT (نقطة الوصول)، يمكنك استخدام ssh
أو
صفحة المشرف على الويب.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Test connectivity of multiple devices\n\nBackground\n----------\n\nRunning multiple Cuttlefish virtual devices can be done by executing the\nfollowing command: \n\n```\nlaunch_cvd --num_instances=n\n```\n\nWhen you are running two or more instances using `--num_instances` flag,\ninstances share the connectivity medium for Wi-Fi and Bluetooth. This setting\nallows the Cuttlefish instances to discover and connect to each other via\nBluetooth and Wi-Fi without additional action.\n\nHowever, if you are executing multiple instances by using the\n`--base_instance_num` flag and multiple `launch_cvd` invocations, you need\nto specify `wmediumd`'s vhost server path to share Wi-Fi medium, and also\nprevent launching multiple VM instances for AP.\n\nMulti-device launch example\n---------------------------\n\nThe following commands show how to launch two Cuttlefish instances that share\nthe Wi-Fi medium using serial execution of `launch_cvd`. \n\n```\nlaunch_cvd\n``` \n\n```\nlaunch_cvd --base_instance_num=2 \\\n --vhost_user_mac80211_hwsim=$HOME/cuttlefish_runtime.1/internal/vhost_user_mac80211 \\\n --ap_kernel_image=\"\" --ap_rootfs_image=\"\" #Prevent launching multiple VM instances for AP\n```\n\nBluetooth\n---------\n\nThe Cuttlefish bluetooth implementation is supported by rootcanal and can be\ncontrolled with the Web UI command line console.\n\nIn the console, there are several commands that allow for the control of\nbluetooth on the guest device:\n\n| Command | Description |\n|--------------------------------------------------------------------------------------------------|-----------------------------------------------------------------|\n| `list` | List current devices and phys |\n| `add` \u003cvar translate=\"no\"\u003eDEVICE_TYPE\u003c/var\u003e \u003cvar translate=\"no\"\u003e[ARGS]\u003c/var\u003e | Create new device of type \u003cvar translate=\"no\"\u003eDEVICE_TYPE\u003c/var\u003e |\n| `del` \u003cvar translate=\"no\"\u003eDEVICE_INDEX\u003c/var\u003e | Delete a device |\n| `add_phy` \u003cvar translate=\"no\"\u003ePHY_TYPE\u003c/var\u003e | Add new phy with \u003cvar translate=\"no\"\u003ePHY_TYPE\u003c/var\u003e |\n| `del_phy` \u003cvar translate=\"no\"\u003ePHY_INDEX\u003c/var\u003e | Delete a phy |\n| `add_device_to_phy` \u003cvar translate=\"no\"\u003eDEVICE_INDEX\u003c/var\u003e \u003cvar translate=\"no\"\u003ePHY_INDEX\u003c/var\u003e | Add a device to phy |\n| `del_device_from_phy` \u003cvar translate=\"no\"\u003eDEVICE_INDEX\u003c/var\u003e \u003cvar translate=\"no\"\u003ePHY_INDEX\u003c/var\u003e | Delete a \\`device from phy |\n| `add_remote` \u003cvar translate=\"no\"\u003eHOSTNAME\u003c/var\u003e \u003cvar translate=\"no\"\u003ePORT PHY_TYPE\u003c/var\u003e | Add a remote Rootcanal as device and register it to phy |\n\n| Device type and args |\n|-------------------------------------------------------------------------------------------------------------------------------------------|\n| `beacon` \u003cvar translate=\"no\"\u003e[MAC_ADDRESS]\u003c/var\u003e \u003cvar translate=\"no\"\u003e[ADVERTISE_INTERVAL]\u003c/var\u003e |\n| `scripted_beacon` \u003cvar translate=\"no\"\u003e[MAC_ADDRESS]\u003c/var\u003e \u003cvar translate=\"no\"\u003e[CONFIG_PATH]\u003c/var\u003e \u003cvar translate=\"no\"\u003e[EVENTS_PATH]\u003c/var\u003e |\n| `keyboard` \u003cvar translate=\"no\"\u003e[MAC_ADDRESS]\u003c/var\u003e \u003cvar translate=\"no\"\u003e[ADVERTISE_INTERVAL]\u003c/var\u003e |\n| `loopback` \u003cvar translate=\"no\"\u003e[MAC_ADDRESS]\u003c/var\u003e \u003cvar translate=\"no\"\u003e[ADVERTISE_INTERVAL]\u003c/var\u003e |\n| `sniffer` |\n\nWi-Fi\n-----\n\n### wmediumd_control\n\n`wmediumd_control` is a command-line tool that controls Wi-Fi connectivity\nmedium. The tool has the following commands to manipulate Wi-Fi:\n\n| Command | Description |\n|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `set_snr` \u003cvar translate=\"no\"\u003eMAC_ADDR1\u003c/var\u003e \u003cvar translate=\"no\"\u003eMAC_ADDR2\u003c/var\u003e \u003cvar translate=\"no\"\u003eSNR_VALUE\u003c/var\u003e | Set SNR value (0\\~255) between two stations |\n| `start_pcap` \u003cvar translate=\"no\"\u003ePCAP_FILE_PATH\u003c/var\u003e | Start capturing all frames transmitted to air and stores it to .pcap file |\n| `stop_pcap` | Stop and finalize current packet capture |\n| `list_stations` | List all stations attached to wmediumd |\n| `reload_config` \u003cvar translate=\"no\"\u003e[CONFIG_FILE_PATH]\u003c/var\u003e | Reload wmediumd configuration with \u003cvar translate=\"no\"\u003eCONFIG_FILE_PATH\u003c/var\u003e, if \u003cvar translate=\"no\"\u003eCONFIG_FILE_PATH\u003c/var\u003e is omitted, reload currently loaded config file |\n| `set_position` \u003cvar translate=\"no\"\u003eMAC_ADDR\u003c/var\u003e \u003cvar translate=\"no\"\u003eX_POSITION\u003c/var\u003e \u003cvar translate=\"no\"\u003eY_POSITION\u003c/var\u003e | Set position of the station in two-dimensional space |\n\n### OpenWRT\n\nIf you want to connect to OpenWRT (Access Point), you can use either `ssh` or\nthe admin webpage.\n\n| Connection Type | Method |\n|-----------------|-------------------------------|\n| ssh | ``` ssh root@192.168.96.2 ``` |\n| Admin webpage | \u003chttps://192.168.96.2\u003e |"]]