BLAZER_USB(8) NUT Manual BLAZER_USB(8)

blazer_usb - درایور برای تجهیزات UPS مبتنی بر USB با پروتکل Megatec/Q1

blazer_usb -h

blazer_usb -a UPS_NAME [OPTIONS]

این صفحه راهنما فقط ویژگی‌های خاص سخت‌افزاری درایور blazer را مستند می‌کند. برای اطلاعات بیشتر درباره درایور اصلی، به nutupsdrv(8) مراجعه کنید.

لطفاً توجه داشته باشید که این درایور منسوخ شده است (deprecated) و هیچ توسعه جدیدی دریافت نخواهد کرد. اگر برای مدیریت دستگاه‌های شما کار می‌کند — عالی است، اما اگر در حال اجرای آن برای راه‌اندازی یک دستگاه جدید هستید، لطفاً درایور جدیدتر nutdrv_qx(8) را در نظر بگیرید که باید تمام انواع پروتکل Q* را برای NUT مدیریت کند.

همچنین لطفاً گزارش دهید اگر دستگاه شما با این درایور کار می‌کند، اما nutdrv_qx(8) واقعاً با هیچ زیردرایوری از آن پشتیبانی نمی‌کند!

مشخص شده است که درایور blazer با انواع مختلف UPS از شرکت‌های Blazer، Energy Sistem، Fenton Technologies، General Electric، Mustek و بسیاری دیگر کار می‌کند. جدول سازگاری NUT تمام مدل‌های پشتیبانی‌شده شناخته‌شده را فهرست می‌کند. با این حال به خاطر داشته باشید که سایر مدل‌هایی که در آنجا ذکر نشده‌اند نیز ممکن است پشتیبانی شوند، اما آزمایش نشده‌اند.

تمام دستگاه‌های دارای رابط سریال (از درایور blazer_ser استفاده کنید) و بسیاری از دستگاه‌های دارای رابط USB (از درایور blazer_usb استفاده کنید) پشتیبانی می‌شوند.

بسته به سازنده و مدل UPS خود، ممکن است لازم باشد مقادیری را بازنویسی (override) کنید یا مقادیر پیش‌فرضی برای آن‌ها تعیین نمایید. موارد زیر احتمالاً مواردی هستند که بیش از همه نیاز به تغییر خواهند داشت (به ups.conf(5) مراجعه کنید):

default.battery.voltage.high = value

حداکثر ولتاژ باتری که پس از حدود ۱۲ تا ۲۴ ساعت شارژ حاصل می‌شود. اگر می‌خواهید درایور یک مقدار تخمینی برای battery.charge گزارش دهد، باید این مقدار را مشخص کنید (به بخش BATTERY CHARGE GUESSTIMATION مراجعه کنید).

default.battery.voltage.low = value

حداقل ولتاژ باتری درست پیش از آن‌که UPS به‌طور خودکار خاموش شود. اگر می‌خواهید درایور یک مقدار تخمینی برای battery.charge گزارش دهد، باید این مقدار را مشخص کنید (به بخش BATTERY CHARGE GUESSTIMATION مراجعه کنید).

default.battery.voltage.nominal = value, override.battery.voltage.nominal = value

برخی دستگاه‌ها ولتاژ اسمی باتری نادرستی را نشان می‌دهند (یا اصلاً هیچ مقداری نشان نمی‌دهند)، بنابراین ممکن است لازم باشد مقدار پیش‌فرضی تعیین کنید یا آن را بازنویسی نمایید.

override.battery.packs = value

برخی دستگاه‌ها بخشی از ولتاژ کل باتری را گزارش می‌کنند. برای مثال، اگر battery.voltage.nominal برابر با 24 V باشد، اما دستگاه مقدار battery.voltage را حدود 2 V گزارش دهد، تعداد battery.packs برای تصحیح این مقدار خوانده‌شده برابر ۱۲ خواهد بود. درایور تلاش می‌کند این مورد را به‌طور خودکار تشخیص دهد، اما اگر به هر دلیلی با شکست مواجه شد، ممکن است بخواهید این مقدار را بازنویسی کنید.

ondelay = value

مدت‌زمان انتظار پیش از روشن کردن UPS (بر حسب دقیقه). توجه داشته باشید که مقداری کمتر از ۳ دقیقه ممکن است باعث شود نسخه‌های اولیه سفت‌افزار (firmware) به‌طور خودکار روشن نشوند، بنابراین پیش‌فرض آن ۳ دقیقه است. محدوده قابل قبول 0..9999 دقیقه است.

offdelay = value

مدت‌زمان انتظار پیش از خاموش کردن UPS (بر حسب ثانیه). این مقدار به مضارب ۶ ثانیه (برای کمتر از ۶۰ ثانیه) یا ۶۰ ثانیه (برای بیشتر از ۶۰ ثانیه) کوتاه (truncate) می‌شود. مقدار پیش‌فرض ۳۰ ثانیه است. محدوده قابل قبول 12..600 ثانیه است.

norating

اگر تلاش کنید اطلاعات مشخصات نامی (rating) را از برخی از UPSها بخوانید، قفل می‌کنند. تنظیم این فلگ باعث می‌شود درایور از این مرحله صرف‌نظر کند.

novendor

اگر تلاش کنید اطلاعات سازنده (vendor) را از برخی از UPSها بخوانید، قفل می‌کنند. تنظیم این فلگ باعث می‌شود درایور از این مرحله صرف‌نظر کند.

protocol = string

صرف‌نظر کردن از تشخیص خودکار پروتکل و استفاده انحصاری از پروتکل مشخص‌شده. مقادیر پشتیبانی‌شده عبارتند از megatec، megatec/old، mustek و zinto.

runtimecal = value,value,value,value

پارامتر مورد استفاده در تخمین زمان کارکرد (اختیاری). این پارامتر دو زمان کارکرد را در بارهای متفاوت می‌گیرد. معمولاً زمان کارکرد در بار کامل (full load) و زمان کارکرد در نیمه‌بار (half load) استفاده می‌شود. برای مثال، اگر UPS شما دارای زمان کارکرد نامی ۲۴۰ ثانیه در بار کامل و ۷۲۰ ثانیه در نیمه‌بار باشد، باید مقدار زیر را وارد کنید
runtimecal = 240,100,720,50

بار اول همیشه باید بیشتر از بار دوم باشد. اگر مقادیری برای بارهایی غیر از ۱۰۰ و ۵۰ درصد در دسترس دارید، می‌توانید از آن‌ها نیز استفاده کنید، اما فاصله آن‌ها را تا حد ممکن از یکدیگر حفظ کنید. فقط بیش از حد به وضعیت بدون بار (no load) نزدیک نشوید (در این حالت پیش‌بینی زمان کارکرد بیشتر به بار بی‌باری باتری وابسته می‌شود).

chargetime = value

زمان مورد نیاز برای شارژ کامل باتری پس از تخلیه کامل. در صورت عدم تعیین، پیش‌فرض درایور ۴۳۲۰۰ ثانیه (۱۲ ساعت) است. تنها زمانی استفاده می‌شود که runtimecal نیز مشخص شده باشد.

idleload = value

حداقل بار باتری مورد استفاده درایور برای تخمین زمان کارکرد. در صورت عدم تعیین، پیش‌فرض درایور 10% است. تنها زمانی استفاده می‌شود که runtimecal نیز مشخص شده باشد.

port = string

گزینه‌ای الزامی برای تمامی درایورهای NUT. مقداری مانند value باید تعیین شود، معمولاً auto برای درایورهایی که اتصالات USB را مدیریت می‌کنند.

نکته
این مقدار می‌تواند یک مسیر در سیستم‌فایل دستگاه مانند /dev/usb/hiddev0 باشد اما استفاده فعلی از API مربوط به libusb مانع از شناخت و تطبیق از طریق چنین شناسه‌هایی می‌شود. همچنین ممکن است ذاتاً غیرقابل اعتماد باشند (وابسته به اتصال مجدد کابل و ترتیب شمارش دستگاه‌ها). در حال حاضر مقدار واقعی value نادیده گرفته می‌شود، اما از نظر ساختاری وجود مقداری برای پیکربندی port همچنان الزامی است.

امکان کنترل چندین دستگاه UPS به‌طور هم‌زمان از طریق اجرای چندین نمونه از این درایور وجود دارد، به شرطی که بتوان آن‌ها را با تنظیم ترکیبی از گزینه‌های vendor، product، vendorid، productid، serial، bus یا device که در ادامه توضیح داده شده‌اند، به‌طور یکتا متمایز کرد. برای دستگاه‌ها یا سیستم‌عامل‌هایی که اطلاعات کافی ارائه نمی‌دهند، گزینه allow_duplicates می‌تواند کاربردی باشد (محدود و پرخطر!).

vendorid = regex, productid = regex, vendor = regex, product = regex, serial = regex

انتخاب یک UPS مشخص، در صورتی که بیش از یک دستگاه از طریق USB متصل باشد. هر گزینه یک عبارت منظم گسترده را مشخص می‌کند (برای اطلاعات بیشتر در مورد عبارات منظم به regex(7) مراجعه کنید)، که باید با مقادیر رشته‌ای کامل مربوط به vendor/product/serial دستگاه UPS (بدون احتساب فاصله‌های سفید پیرامون) یا کل کد هگزادسیمال ۴ رقمی برای vendorid و productid مطابقت داشته باشد.

برای یافتن رشته‌های مناسب جهت تطبیق، اجرای lsusb(8) یا اجرای این درایور NUT با آرگومان خط فرمان -DD را امتحان کنید.

مثال‌ها:

•-x vendor="Foo.Corporation.*"
•-x vendorid="051d*" (APC)
•-x product=";.*(Smart|Back)-?UPS.*"

bus = regex

اختیاری، توصیه نمی‌شود.

انتخاب یک UPS روی یک گذرگاه USB مشخص یا گروهی از گذرگاه‌ها. آرگومان یک عبارت منظم است که باید با نام گذرگاهی که UPS به آن متصل است مطابقت داشته باشد (مثلاً bus="002" یا bus="00[2-3]") همان‌طور که در لینوکس در مسیر /sys/bus/usb/devices یا در خروجی lsusb(8) دیده می‌شود؛ شامل صفرهای ابتدایی.


نکته
سیستم‌عامل تضمین نمی‌کند که شماره‌های گذرگاه در طول راه‌اندازی‌های مجدد، بارگذاری مجدد درایورهای هسته یا اتصال مجدد دستگاه (مثلاً تغییر تعداد دستگاه‌های متصل به هاب‌های USB) پایدار باقی بمانند.

device = regex

اختیاری، توصیه نمی‌شود.

انتخاب یک UPS روی یک دستگاه USB مشخص یا گروهی از دستگاه‌ها. آرگومان یک عبارت منظم است که باید با نام دستگاهی که UPS به آن متصل است مطابقت داشته باشد (مثلاً device="001" یا device="00[1-2]") همان‌طور که در لینوکس در مسیر /sys/bus/usb/devices یا در خروجی lsusb(8) دیده می‌شود؛ شامل صفرهای ابتدایی.


نکته
سیستم‌عامل تضمین نمی‌کند که شماره‌های دستگاه در طول راه‌اندازی‌های مجدد یا اتصال مجدد دستگاه پایدار باقی بمانند.

busport = regex

اختیاری، توصیه نمی‌شود.

در صورت پشتیبانی توسط سخت‌افزار، سیستم‌عامل و libusb در محیط پیاده‌سازی‌شده خاص، این گزینه باید اجازه دهد به جای مقادیر شمارشی منطقی device شماره درگاه‌های فیزیکی روی یک هاب USB مشخص شود، و در نتیجه — این مورد باید در طول راه‌اندازی‌های مجدد یا اتصال‌های مجدد نوسان کمتری داشته باشد. برای مثال، این مقدار ممکن است در خروجی توپولوژی USB دستور lsusb -tv روی سیستم‌هایی که این ابزار را دارند، مشاهده شود.


نکته
این گزینه در عمل توسط برخی از بیلد‌های NUT پشتیبانی نمی‌شود (در این حالت باید همراه با یک هشدار نادیده گرفته شود)، و همچنین توسط تمام سیستم‌هایی که NUT می‌تواند روی آن‌ها اجرا شود نیز پشتیبانی نمی‌گردد.

allow_duplicates

اختیاری، توصیه نمی‌شود.

اگر چندین دستگاه UPS دارید که ممکن است توسط گزینه‌های بالا به‌طور یکتا شناسایی نشوند (مثلاً فقط VID:PID در آنجا قابل کشف باشد)، این فلگ به هر نمونه درایور که در آن تنظیم شده اجازه می‌دهد اولین تطابق را در صورت موجود بودن انتخاب کند، یا برای بررسی مورد دیگر ادامه دهد.

به‌طور معمول، راه‌اندازی اولیه درایور در این مرحله با اعلام خطای «Resource busy» یا خطایی مشابه متوقف می‌شود، با این فرض که دستگاهی که به‌درستی تطبیق داده شده یکتا است — و فرایند دیگری در حال حاضر آن را مدیریت می‌کند.


هشدار
این ویژگی ذاتاً غیرقطعی (non-deterministic) است! انتساب نام نمونه درایور به دستگاه واقعی ممکن است بین دفعات اجرا متفاوت باشد!

اگر فقط برایتان مهم است که بدانید حداقل یکی از UPSهای بی‌نام شما آنلاین است، این گزینه می‌تواند مفید باشد.

اما اگر واقعاً نیاز دارید بدانید کدام دستگاه است، این گزینه کمکی نخواهد کرد!

usb_set_altinterface = bAlternateSetting

فراخوانی اجباری و مازاد usb_set_altinterface()، به‌ویژه در صورت نیاز برای دستگاه‌هایی که چندین نقش USB را ایفا می‌کنند و در آن‌ها UPS توسط شماره رابط 0 (پیش‌فرض) نشان داده نمی‌شود.

usb_config_index, usb_hid_rep_index, usb_hid_desc_index, usb_hid_ep_in, usb_hid_ep_out

استفاده اجباری از شماره‌های رابط، نقطه پایانی (endpoint)، شاخص توصیف‌گر (descriptor index) و غیره خاص، به جای استفاده از مقدار پیش‌فرض 0 (به ندرت مقادیر دیگر در برخی درایورها برای دستگاه‌های شناخته‌شده‌ای که از شماره‌های غیر صفر استفاده می‌کنند). به‌صورت یک عدد هگزادسیمال مشخص می‌شود.

به‌عنوان یک قاعده کلی تجربی برای کشف usb_hid_desc_index، می‌توانید مقادیر بزرگتر wDescriptorLength (تقریباً ۶۰۰ بایت به بالا) را در گزارش‌های lsusb یا ابزارهای مشابه مشاهده کنید.

LIBUSB_DEBUG = INTEGER

عیب‌یابی زمان اجرای درایورهای دارای قابلیت USB در NUT می‌تواند نه تنها شامل افزایش سطح جزئیات اشکال‌زدایی عمومی NUT باشد (مثلاً با استفاده از تنظیم DEBUG_MIN در ups.conf(5) یا دستورات پروتکل برای تغییر مقدار driver.debug)، بلکه ممکن است از اشکال‌زدایی اختصاصی LibUSB نیز بهره‌مند شود.

برای مورد اخیر، می‌توانید گزینه درایور LIBUSB_DEBUG را تنظیم کنید؛ همچنین به‌صورت سنتی می‌توانید پیش از شروع یک برنامه درایور NUT، متغیر محیطی LIBUSB_DEBUG را مقداردهی و export کنید (می‌تواند در اسکریپت راه‌اندازی اولیه درایور یا متد سرویس، احتمالاً از طریق nut.conf(5) تنظیم و "export" شود)، با یک مقدار عددی مانند 4 («همه پیام‌ها منتشر می‌شوند»).

برای جزئیات بیشتر، از جمله مقادیر پشتیبانی‌شده فعلی برای نسخه کتابخانه شما، به عنوان مثال ببینید:

subdriver = string

انتخاب یک زیردرایور سریال روی USB (serial-over-USB). می‌توانید از میان phoenix، ippon، cypress و krauler انتخاب کنید. هنگام استفاده از این گزینه، تعیین vendorid و productid نیز الزامی است.

langid_fix = value

اعمال راهکار رفع مشکل شناسه زبان (language ID) روی زیردرایور krauler. این گزینه برای کارکرد برخی دستگاه‌ها (مانند LDLC، Dynamix و دیگران) الزامی است. شما باید مقدار value را برابر (0x409 یا 0x4095)، مطابق با ورودی دستگاه خود در لیست سازگاری سخت‌افزار NUT (به اختصار HCL) تعیین کنید.

این درایور از برخی دستورات آنی پشتیبانی می‌کند (به upscmd(8) مراجعه کنید):

beeper.toggle

تغییر وضعیت بیپر (هشدار صوتی) UPS. (روی برخی سخت‌افزارها در دسترس نیست.)

load.on

روشن کردن بار بلافاصله.

load.off

خاموش کردن بار بلافاصله (به بخش KNOWN PROBLEMS مراجعه کنید).

shutdown.return

قطع بار و برقراری مجدد آن هنگام بازگشت برق. از تایمرهای تعریف‌شده توسط ondelay و offdelay استفاده می‌کند.

shutdown.stayoff

قطع بار و خاموش ماندن آن (به بخش KNOWN PROBLEMS مراجعه کنید). از تایمر تعریف‌شده توسط offdelay استفاده می‌کند.

shutdown.stop

توقف فرآیند خاموش شدن در حال انجام.

test.battery.start.deep

انجام آزمایش عمیق باتری (روی برخی سخت‌افزارها در دسترس نیست.)

test.battery.start.quick

انجام آزمایش سریع باتری (۱۰ ثانیه‌ای).

test.battery.start value

انجام آزمایش باتری به مدت value دقیقه.

test.battery.stop

توقف آزمایش باتری در حال اجرا (روی برخی سخت‌افزارها در دسترس نیست.)

به دلیل تقاضای عمومی، این درایور یک مقدار تخمینی battery.charge و به‌طور اختیاری battery.runtime را گزارش می‌دهد، به شرطی که چند مورد از آرگومان‌های بخش EXTRA ARGUMENTS که در بالا ذکر شدند را مشخص کرده باشید.

اگر هر دو مقدار battery.voltage.high و battery.voltage.low را در ups.conf(5) مشخص کنید، اما runtimecal را وارد نکنید، وضعیت شارژ را صرفاً با بررسی ولتاژ باتری تخمین می‌زند. این روش زیر بار قابل اعتماد نیست، زیرا تنها زمانی مقادیر خوانده‌شده نسبتاً دقیقی به دست می‌دهد که بار را قطع کنید، بگذارید باتری چند دقیقه استراحت کند و سپس ولتاژ مدار باز سلول را اندازه بگیرید. این کار در زمانی که برق قطع شده و UPS در حال تأمین انرژی سیستم‌های شما است، اصلاً عملی نیست.

                     battery.voltage - battery.voltage.low
battery.charge =  --------------------------------------------- x 100 %
                  battery.voltage.high - battery.voltage.low

راهی برای به دست آوردن مقادیر دقیق‌تر بدون قطع بار وجود دارد، اما این کار مستلزم رهگیری مقدار (و سرعت) جریان ورودی و خروجی به باتری است. اگر runtimecal را مشخص کرده باشید، درایور تلاش می‌کند این کار را انجام دهد. با این حال توجه داشته باشید که این موضوع به شدت به مقادیری که وارد می‌کنید وابسته است و UPS نیز باید قادر به گزارش میزان بار باشد. دستگاه‌های متعددی وجود دارند که در تمام زمان‌ها 0% (یا هر مقدار ثابت دیگری) را گزارش می‌دهند، که در این صورت بدیهی است این روش کار نخواهد کرد.

درایور همچنین راهی برای تعیین افت ظرفیت باتری در طول زمان ندارد، بنابراین خودتان باید این موضوع را مدیریت کنید (با تنظیم مقادیر در runtimecal). همچنین توجه داشته باشید که درایور وضعیت اولیه شارژ را بر اساس ولتاژ باتری حدس می‌زند، بنابراین ممکن است حتی وقتی مطمئن هستید که باتری‌ها پر هستند، مقداری کمتر از 100% باشد. اصلاً هیچ راهی برای اندازه‌گیری قابل اعتماد این مورد بین 0 و 100% شارژ کامل وجود ندارد.

این تخمین بهتر از هیچی است (اما نه خیلی بهتر). اگر هر یک از محاسبات فوق مقادیر نادرستی به شما ارائه می‌دهد، به یاد داشته باشید که این شما بوده‌اید که مقادیر را در ups.conf(5) وارد کرده‌اید، بنابراین از نویسنده گلایه نکنید. اگر به چیزی بهتر نیاز دارید، خرید یک UPS را در نظر بگیرید که خودش battery.charge و battery.runtime را بدون کمک درایور NUT گزارش کند.

از آنجا که درایورهای blazer جایگزین درایورهای megatec شده‌اند، ممکن است برخی تغییرات در پیکربندی برای کاربرانی که به blazer مهاجرت می‌کنند مورد نیاز باشد.

بخشی از این موضوع شامل گزینه‌های زیر در megatec است که در ups.conf باید تغییر یابند:

battvolts

باید از default.battery.voltage.high و default.battery.voltage.low استفاده کنید.

dtr and rts

باید از cablepower استفاده کنید.

ignoreoff

این پارامتر را می‌توان به سادگی کنار گذاشت، زیرا ناشی از برداشتی نادرست از مشخصات فنی بود.

برخی از دستورات UPS توسط همه مدل‌ها پشتیبانی نمی‌شوند. در بیشتر موارد، زمانی که کاربر تلاش می‌کند فرمانی پشتیبانی‌نشده را اجرا کند، درایور پیامی به گزارش سیستم (system log) ارسال می‌کند. متأسفانه برخی مدل‌ها حتی راهی برای بررسی این موضوع توسط درایور فراهم نمی‌کنند، بنابراین دستورات پشتیبانی‌نشده بدون هیچ پیامی با شکست مواجه می‌شوند.

هر دو دستور آنی load.off و shutdown.stayoff به این منظور در نظر گرفته شده‌اند که بار را به مدت نامحدود قطع کنند. با این حال، برخی از مدل‌های UPS اجازه این کار را نمی‌دهند.

برخی مدل‌ها مقداری ساختگی برای وضعیت بیپر گزارش می‌کنند (همیشه enabled یا disabled خواهد بود). بنابراین، ممکن است به نظر برسد دستور beeper.toggle هیچ تأثیری در وضعیت گزارش‌شده توسط درایور ندارد، در حالی که در واقعیت به خوبی کار می‌کند.

مشخص شده است که مقدار دما و بار در برخی مدل‌ها ساختگی است.

•Arjen de Korte <adkorte-guest at alioth.debian.org>
•Alexander Gordeev <lasaine at lvk.cs.msu.su>

blazer_ser(8), nutupsdrv(8), upsc(8), upscmd(8), upsrw(8)

•صفحه خانگی NUT (Network UPS Tools): https://www.networkupstools.org
•لیست سازگاری سخت‌افزاری NUT (HCL): https://www.networkupstools.org/stable-hcl.html
06/21/2026 Network UPS Tools 2.8.5