setpci(8) The PCI Utilities setpci(8)

setpci - پیکربندی و تنظیم دستگاههای پیسیآی (PCI)

setpci [options] devices operations...

setpci ابزاری برای پرس‌وجو و پیکربندی دستگاه‌های PCI است.

تمام اعداد در نمادگذاری هگزادسیمال (شانزده‌شانزدهی) وارد می‌شوند.

دسترسی‌های ریشه (کاربر ارشد) تقریباً برای تمام عملیات‌ها ضروری است، به‌جز خواندن سرآیند (هدر) استانداردِ فضای پیکربندی در برخی سیستم‌عامل‌ها. لطفاً برای جزئیات مربوط به حقوق دسترسی به lspci(8) مراجعه کنید.

به setpci می‌گوید که پرگو (verbose) باشد و اطلاعات مفصلی دربارهٔ دسترسی‌ها به فضای پیکربندی نمایش دهد.
به setpci می‌گوید زمانی که کاری برای انجام وجود ندارد (وقتی هیچ دستگاهی انتخاب نشده است) خطا نگیرد یا شکایت نکند. این گزینه برای استفاده در اسکریپت‌های پیکربندی با توزیع گسترده در نظر گرفته شده است، جایی که مشخص نیست آیا دستگاه مورد نظر در دستگاه موجود است یا خیر.
«حالت نمایشی» (Demo mode) -- چیزی در ثبات‌های (رجیسترهای) پیکربندی نمی‌نویسد. مفید است که setpci -vD را امتحان کنید تا مطمئن شوید توالی پیچیدهٔ عملیات‌های setpci دقیقاً همان کاری را انجام می‌دهد که مد نظر شماست.
در صورتی که هر عملیات دستگاه خاصی را انتخاب کرده باشد (استفاده از انتخاب‌گر -s با دامنه، گذرگاه، اسلات و تابع مشخص)، از پویش گذرگاه اجتناب می‌کند. این کار سریع‌تر است، اما اگر دستگاه وجود نداشته باشد، به‌جای تطبیق با یک مجموعهٔ خالی از دستگاه‌ها، با شکست مواجه می‌شود.
نمایش نسخهٔ setpci. این گزینه باید به‌صورت مستقل استفاده شود.
نمایش راهنمای کامل دربارهٔ گزینه‌های موجود. این گزینه باید به‌صورت مستقل استفاده شود.
نمایش فهرستی از تمام ثبات‌ها و قابلیت‌های شناخته‌شدهٔ PCI. این گزینه باید به‌صورت مستقل استفاده شود.

ابزارهای PCI از کتابخانهٔ PCI برای ارتباط با دستگاه‌های PCI استفاده می‌کنند (برای جزئیات به pcilib(7) مراجعه کنید). شما می‌توانید از گزینه‌های زیر برای تأثیرگذاری بر رفتار آن استفاده کنید:

این کتابخانه از روش‌های متنوعی برای دسترسی به سخت‌افزار PCI پشتیبانی می‌کند. به‌طور پیش‌فرض، از نخستین روش دسترسیِ موجود استفاده می‌کند، اما می‌توانید با استفاده از این گزینه این تصمیم را لغو و بازنویسی (override) کنید. برای مشاهدهٔ فهرستی از روش‌های موجود و توضیحات آن‌ها از -A help استفاده کنید.
رفتار کتابخانه توسط چندین پارامتر نام‌گذاری‌شده کنترل می‌شود. این گزینه امکان تنظیم مقدار هر یک از پارامترها را فراهم می‌کند. برای مشاهدهٔ فهرستی از پارامترهای شناخته‌شده و مقادیر پیش‌فرض آن‌ها از -O help استفاده کنید.
استفاده از دسترسی مستقیم سخت‌افزاری از طریق سازوکار پیکربندی ۱ اینتل (Intel configuration mechanism 1). (این گزینه میان‌بری برای -A intel-conf1 است.)
استفاده از دسترسی مستقیم سخت‌افزاری از طریق سازوکار پیکربندی ۲ اینتل (Intel configuration mechanism 2). (این گزینه میان‌بری برای -A intel-conf2 است.)
افزایش سطح اشکال‌زدایی (debug) کتابخانه.

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

فقط دستگاه‌های موجود در دامنه (domain)، گذرگاه (bus)، اسلات (slot) و تابع (function) مشخص‌شده را در نظر می‌گیرد. (در صورتی که سامانهٔ شما دارای چندین پل میزبان یا host bridge باشد، آن‌ها می‌توانند فضای شمارهٔ گذرگاه مشترک داشته باشند، یا هر یک دامنه‌ای مستقل از 0 تا ffff را آدرس‌دهی کنند؛ دامنه‌ها از 0 تا ffff، گذرگاه از 0 تا ff، اسلات از 0 تا 1f و تابع از 0 تا 7 شماره‌گذاری می‌شوند). هر جزء از آدرس دستگاه می‌تواند حذف شود یا با «*» مقداردهی شود که هر دو به معنی «هر مقداری» هستند. تمام اعداد به‌صورت هگزادسیمال هستند. برای مثال، «0:» به معنی همهٔ دستگاه‌ها در گذرگاه 0 است، «0» به معنی همهٔ توابع دستگاه 0 در هر گذرگاهی است، «0.3» تابع سوم دستگاه 0 را در تمام گذرگاه‌ها انتخاب می‌کند و «.4» فقط با چهارمین تابع از هر دستگاه تطابق دارد.
انتخاب دستگاه‌ها با شناسهٔ سازنده (vendor)، دستگاه (device)، شناسهٔ کلاس (class ID) و واسط برنامه‌نویسی (programming interface) مشخص‌شده. شناسه‌ها به‌صورت هگزادسیمال مشخص می‌شوند و می‌توان آن‌ها را حذف کرد یا به‌صورت «*» قرار داد که هر دو به معنای «هر مقداری» است. شناسهٔ کلاس می‌تواند شامل نویسه‌های «x» باشد که نمایانگر «هر رقمی» هستند.

هنگامی که -s و -d ترکیب شوند، تنها دستگاه‌هایی انتخاب می‌شوند که با هر دو معیار مطابقت داشته باشند. زمانی که یک گزینه چندین بار استفاده شود، گزینه‌ای که در راست‌ترین موقعیت قرار دارد بر بقیه اولویت یافته و جایگزین آن‌ها می‌شود و یک هشدار صادر می‌گردد.

دو نوع عملیات وجود دارد: خواندن و نوشتن. برای خواندن یک ثبات (رجیستر)، کافی است نام آن را مشخص کنید. نوشتن‌ها به شکل زیر هستند: name=value,value... که در آن هر value یک عدد هگزادسیمال یا عبارتی از نوع data:mask است که هر دو مقدار data و mask اعداد هگزادسیمال هستند. در حالت دوم، فقط بیت‌هایی که متناظر با یک‌های باینری در mask هستند تغییر می‌یابند (از نظر فنی، این یک عملیات خواندن-تغییر-نوشتن یا read-modify-write است).

چندین روش برای شناسایی یک ثبات وجود دارد:

  • آدرس آن را به هگزادسیمال مشخص کنید.
  • نام آن را بنویسید. ابزار Setpci نام تمام ثبات‌ها در سرآیندهای استانداردِ پیکربندی را می‌داند. از `setpci --dumpregs' برای دریافت فهرست کامل استفاده کنید. برای درک دقیق معنای این ثبات‌ها به مشخصات گذرگاه PCI مراجعه کنید یا فایل‌های header.h یا /usr/include/pci/pci.h را برای خلاصه‌ای از آن‌ها بررسی فرمایید.
  • اگر ثبات بخشی از یک قابلیت (capability) پی‌سی‌آی باشد، می‌توانید نام قابلیت را مشخص کنید تا آدرس نخستین ثبات آن به‌دست آید. نام‌هایی را که با `CAP_' یا `ECAP_' در خروجی --dumpregs شروع می‌شوند مشاهده کنید.
  • اگر نام قابلیت برای setpci شناخته‌شده نیست، می‌توانید با شماره‌اش در قالب CAPid یا ECAPid به آن ارجاع دهید، که در آن id شناسهٔ عددیِ قابلیت در مبنای هگزادسیمال است.
  • هر یک از قالب‌های بالا می‌تواند با +offset همراه شود تا یک افست (عددی هگزادسیمال) به آدرس افزوده گردد. این ویژگی برای آدرس‌دهیِ ثبات‌های درون یک قابلیت، یا برای اصلاح بخش‌هایی از ثبات‌های استاندارد مفید است.
  • برای انتخاب تعداد بایت‌های دانه‌بندی و انتقالی (۱، ۲ یا ۴ بایت)، باید یک مشخص‌کنندهٔ عرض .B ، .W یا .L را اضافه کنید. اگر به یک ثبات با نام آن ارجاع می‌دهید و عرض ثبات مشخص و شناخته‌شده است، می‌توان عرض را حذف کرد.
  • در نهایت، اگر یک قابلیت چندین بار وجود داشته باشد، می‌توانید با استفاده از @number مشخص کنید کدام مورد هدف قرار گیرد. نمایه‌گذاری از ۰ آغاز می‌شود.

تمامی نام‌های ثبات‌ها و مشخص‌کننده‌های عرض، به بزرگی و کوچکی حروف حساس نیستند (case-insensitive).

ثبات فرمان (command register) با اندازهٔ کلمه (word-sized / ۲ بایت) را درخواست می‌کند.
4.w
آدرس عددیِ همان ثبات است.
یک کلمهٔ ۳۲ بیتی (dword / ۴ بایت) را با شروع از مکان ثبات فرمان درخواست می‌کند؛ یعنی هر دو ثبات command و status با یکدیگر.
بایت بالاییِ ثبات vendor ID را مشخص می‌کند (به‌یاد داشته باشید که PCI دارای ترتیب بایت کم‌ارزش یا little-endian است).
متناظر با کلمهٔ دوم از قابلیت مدیریت مصرف توان (power management capability) است.
نخستین کلمهٔ ۳۲ بیتی از قابلیت توسعه‌یافته (extended capability) با شناسهٔ 0x108 را درخواست می‌کند.

lspci(8), pcilib(7)

مجموعه ابزار PCI Utilities توسط Martin Mares <mj@ucw.cz> نگهداری می‌شود.

05 April 2026 pciutils-3.15.0