NVME-FW-DOWNLOAD(1) NVMe Manual NVME-FW-DOWNLOAD(1)

nvme-fw-download - بارگیری میان‌افزار (Firmware) جدید در دستگاه NVMe

nvme fw-download <device> [--fw=<firmware-file> | -f <firmware-file>]
                        [--xfer=<transfer-size> | -x <transfer-size>]
                        [--offset=<offset> | -O <offset>]
                        [--output-format=<fmt> | -o <fmt>] [--verbose | -v]
                        [--timeout=<timeout> | -t <timeout>]

دستور Firmware Image Download برای بارگیری تمام یا بخشی از ایمیج میان‌افزار به‌منظور به‌روزرسانی کنترلر در آینده استفاده می‌شود. این دستور می‌تواند زمانی که سایر دستورها در صف ارسال مدیریت (Admin Submission Queue) یا صف‌های ارسال ورودی/خروجی (I/O Submission Queues) در انتظار اجرا هستند نیز ارسال شود. دستور Firmware Image Download، ایمیج جدید میان‌افزار را (به‌صورت کامل یا بخشی از آن) در کنترلر رونوشت می‌کند.

ایمیج میان‌افزار می‌تواند از چندین بخش تشکیل شده باشد که هر کدام با دستورهای جداگانهٔ Firmware Image Download به‌طور جداگانه بارگیری شوند. هر دستور Firmware Image Download شامل یک آفست بر مبنای Dword و تعداد Dword است که محدودهٔ Dword را مشخص می‌کند. نرم‌افزار میزبان باید اطمینان حاصل کند که بخش‌های میان‌افزار دارای محدوده‌های Dword هم‌پوشان نباشند. بخش‌های میان‌افزار می‌توانند بدون ترتیب مشخصی به کنترلر ارسال شوند.

ایمیج جدید میان‌افزار به عنوان بخشی از دستور Firmware Image Download اعمال نمی‌شود. اعمال آن پس از یک راه‌اندازی مجدد (reset) انجام می‌گیرد، که در آن ایمیج مورد نظر برای اعمال و شیار میان‌افزاری که باید در آن تثبیت شود با دستور Firmware Commit (به‌صورت nvme fw-commit <args>) تعیین می‌شود.

نکته: ابزار nvme-cli باید یک بافر حافظه پیوسته (خطی) اختصاص داده و باینری میان‌افزار را در آن نگاشت کند. برای این کار، nvme-cli ابتدا تلاش می‌کند بافر را با استفاده از صفحه‌های بزرگ تی‌ال‌بی (huge TLB pages) تخصیص دهد. اگر تخصیص با استفاده از huge pages با شکست مواجه شود، به استفاده از posix_memalign()‎ همراه با madvise()‎ بازمی‌گردد، هرچند که این کار نیز احتمالاً با شکست روبرو خواهد شد.

برای افزایش احتمال موفقیت، ممکن است بخواهید پیش از شروع بارگیری میان‌افزار، تعدادی صفحهٔ بزرگ (huge pages) را از پیش تخصیص دهید:

echo 20 > /proc/sys/vm/nr_hugepages

برای جزئیات بیشتر به این نشانی مراجعه کنید: https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt

-f <firmware-file>, --fw=<firmware-file>

شناسهٔ الزامی. این گزینه مسیر فایل میان‌افزار دستگاه را روی سیستم شما مشخص می‌کند که توسط برنامه خوانده شده و به دستگاه ارسال خواهد شد.

-x <transfer-size>, --xfer=<transfer-size>

اندازهٔ تقطیع هر بخش انتقال را مشخص می‌کند. این گزینه زمانی کاربرد دارد که دستگاه برای میان‌افزار نیازمند حداکثر اندازهٔ انتقال مشخصی باشد. مقدار پیش‌فرض آن 4k است.

-O <offset>, --offset=<offset>

آفست شروع را بر حسب dword مشخص می‌کند. این گزینه در واقع تنها زمانی کاربرد دارد که میان‌افزار شما به چندین فایل تقسیم شده باشد؛ در غیر این صورت آفست از صفر شروع شده و بر اساس اندازهٔ xfer داده‌شده به‌طور خودکار تنظیم می‌شود.

-o <fmt>, --output-format=<fmt>

تنظیم قالب گزارش‌دهی روی normal، json یا binary. در هر زمان تنها یک قالب خروجی می‌تواند استفاده شود.

-v, --verbose

افزایش میزان جزئیات اطلاعات در خروجی.

-t <timeout>, --timeout=<timeout>

جایگزینی مقدار زمان انتظار پیش‌فرض (تایم‌اوت)، بر حسب میلی‌ثانیه.

•انتقال میان‌افزار با اندازهٔ ۱۲۸ کیلوبایت (128KiB) در هر نوبت:
# nvme fw-download /dev/nvme0 --fw=/path/to/nvme.fw --xfer=0x20000

بخشی از مجموعهٔ nvme-user

02/16/2026 NVMe