lspci(8) The PCI Utilities lspci(8)

lspci - بررسی و نمایش دستگاه‌های پی‌سی‌آی (PCI)

lspci [گزینه‌ها]

lspci ابزاری برای نمایش اطلاعات مربوط به گذرگاه‌های PCI در سامانه و دستگاه‌های متصل به آن‌ها است.

به‌طور پیش‌فرض، فهرستی خلاصه از دستگاه‌ها را نمایش می‌دهد. از گزینه‌های شرح‌داده‌شده در زیر می‌توانید برای درخواست خروجی با جزئیات بیشتر یا خروجی مناسب برای پردازش توسط برنامه‌های دیگر استفاده کنید.

اگر قصد دارید اشکالاتی را در درایورهای دستگاه‌های PCI یا در خود lspci گزارش کنید، لطفاً خروجی «lspci -vvx» یا حتی بهتر «lspci -vvxxx» را ضمیمه نمایید (با این حال، هشدارهای احتمالی زیر را ببینید).

برخی از بخش‌های خروجی، به‌ویژه در حالت‌های با جزئیات بسیار بالا، احتمالاً تنها برای متخصصان با‌تجربهٔ PCI قابل درک است. برای تعاریف دقیق فیلدها، لطفاً به مشخصات PCI یا فایل‌های سرآیند header.h و /usr/include/linux/pci.h مراجعه کنید.

دسترسی به برخی از بخش‌های فضای پیکربندی PCI در بسیاری از سیستم‌عامل‌ها به کاربر ریشه (root) محدود شده است، بنابراین قابلیت‌های lspci که در دسترس کاربران عادی قرار دارند محدود هستند. با این وجود، lspci تمام تلاش خود را می‌کند تا بیشترین اطلاعات در دسترس را نمایش داده و سایر اطلاعات را با متن <access denied> مشخص نماید.

تخلیهٔ داده‌های دستگاه PCI در قالبی سازگار با نسخه‌های پیشین و قابل خواندن توسط ماشین. برای جزئیات به بخش‌های بعد مراجعه کنید.
تخلیهٔ داده‌های دستگاه PCI در قالبی قابل خواندن توسط ماشین برای تجزیه و پردازش آسان توسط اسکریپت‌ها. برای جزئیات به بخش‌های بعد مراجعه کنید.
نمایش نموداری درخت‌مانند شامل تمامی گذرگاه‌ها، پل‌ها، دستگاه‌ها و ارتباطات میان آن‌ها.

حالت مشروح؛ نمایش اطلاعات دقیق و پرجزئیات درباره تمامی دستگاه‌ها.
حالت بسیار مشروح؛ نمایش جزئیات بیشتر. این سطح شامل تمام مواردی است که مفید تلقی می‌شوند.
نمایش با بیشترین جزئیات ممکن؛ نمایش هر آنچه که قادر به تجزیهٔ آن هستیم، حتی اگر چندان جالب به نظر نرسد (مانند نواحی حافظهٔ تعریف‌نشده).
نمایش درایورهای هسته که هر دستگاه را مدیریت می‌کنند و همچنین ماژول‌های هسته که توانایی مدیریت آن را دارند. هنگام استفاده از گزینهٔ -v در حالت خروجی عادی، به‌طور پیش‌فرض فعال است. (در حال حاضر تنها روی لینوکس با هستهٔ 2.6 یا جدیدتر کار می‌کند.)
نمایش خروجی هگزادسیمال بخش استاندارد از فضای پیکربندی (نخستین ۶۴ بایت یا ۱۲۸ بایت برای پل‌های CardBus).
نمایش خروجی هگزادسیمال تمام فضای پیکربندی PCI. این گزینه تنها در دسترس کاربر ریشه (root) است زیرا تعدادی از دستگاه‌های PCI هنگام تلاش برای خواندن برخی از بخش‌های فضای پیکربندی دچار فروپاشی (crash) می‌شوند (این رفتار احتمالاً استاندارد PCI را نقض نمی‌کند، اما دست‌کم بسیار نامناسب است). با این حال، چنین دستگاه‌هایی نادر هستند، بنابراین نیازی نیست چندان نگران باشید.
نمایش خروجی هگزادسیمال فضای پیکربندی گسترش‌یافتهٔ PCI (۴۰۹۶ بایتی) که در گذرگاه‌های PCI-X 2.0 و PCI Express در دسترس است.
نمای گذرگاه‌محور (Bus-centric). نمایش تمامی شماره‌های IRQ و نشانی‌ها همان‌گونه که توسط کارت‌های روی گذرگاه PCI دیده می‌شوند، به جای آنچه که توسط هسته دیده می‌شود.
همیشه شماره دامنه‌های PCI نمایش داده شود. به‌طور پیش‌فرض، lspci نمایش آن را در سامانه‌هایی که تنها دارای دامنهٔ 0 هستند، نادیده می‌گیرد.
شناسایی دستگاه‌های PCI بر اساس مسیر عبوری از میان هر پل، به جای شمارهٔ گذرگاه.
شناسایی دستگاه‌های PCI بر اساس مسیر عبوری از میان هر پل، با نمایش شمارهٔ گذرگاه و همچنین شمارهٔ دستگاه.

نمایش کدهای سازنده (vendor) و دستگاه (device) در PCI به‌صورت عددی، به جای جستجوی آن‌ها در فهرست شناسه‌های PCI.
نمایش کدهای سازنده و دستگاه در PCI به‌صورت توأمان عددی و نام متنی.
استفاده از DNS برای پرس‌وجو از پایگاه‌دادهٔ مرکزی شناسه‌های PCI در صورتی که دستگاه در فایل محلی pci.ids یافت نشود. اگر پرس‌وجوی DNS موفقیت‌آمیز باشد، نتیجه در مسیر $XDG_CACHE_HOME/pci-ids ذخیره (کَش) می‌شود و در اجراهای بعدی حتی در صورت عدم تعیین گزینهٔ -q شناسایی خواهد شد. لطفاً از این سوییچ در اسکریپت‌های خودکار تنها با احتیاط استفاده کنید تا از ایجاد بار بیش از حد روی سرورهای پایگاه‌داده جلوگیری شود.
مشابه -q، اما حافظهٔ موقت محلی بازنشانی (reset) می‌شود.
پرس‌وجو از پایگاه‌دادهٔ مرکزی حتی برای ورودی‌هایی که به‌صورت محلی شناسایی شده‌اند. در صورتی که مشکوک هستید ورودی نمایش‌داده‌شده نادرست است، از این گزینه استفاده کنید.

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

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

استفاده از <file> به‌عنوان فهرست شناسه‌های PCI به‌جای مسیر /usr/share/hwdata/pci.ids.
-p <file>
استفاده از <file> به‌عنوان نگاشت شناسه‌های PCI مدیریت‌شده توسط ماژول‌های هسته. به‌طور پیش‌فرض، lspci از مسیر /lib/modules/kernel_version/modules.pcimap استفاده می‌کند. تنها در سیستم‌های لینوکسی با ابزارهای مدیریت ماژول به‌قدر کافی جدید کاربرد دارد.
فعال‌سازی حالت نگاشت گذرگاه (bus mapping) که یک پویش دقیق از تمامی دستگاه‌های PCI، از جمله دستگاه‌های پشت پل‌های با پیکربندی نادرست و غیره انجام می‌دهد. این گزینه تنها در حالت دسترسی مستقیم به سخت‌افزار نتایج معناداری ارائه می‌دهد، که معمولاً نیازمند امتیازات کاربر ریشه (root) است. به‌طور پیش‌فرض، نگاشت‌کنندهٔ گذرگاه دامنه را می‌پوید. می‌توانید از گزینهٔ -s برای انتخاب دامنه‌ای متفاوت استفاده کنید.
نمایش نسخهٔ lspci. این گزینه باید به‌صورت مستقل استفاده شود.

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

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

اگر قصد دارید خروجی lspci را به‌صورت خودکار پردازش کنید، لطفاً از یکی از قالب‌های خروجی ماشین‌خوان (-m, -vm, -vmm) شرح‌داده‌شده در این بخش استفاده نمایید. تمامی قالب‌های دیگر احتمالاً در نسخه‌های آیندهٔ lspci دستخوش تغییر خواهند شد.

تمامی اعداد همواره در مبنای هگزادسیمال چاپ می‌شوند. اگر می‌خواهید به‌جای نام‌ها شناسه‌های عددی را پردازش کنید، لطفاً سوییچ -n را اضافه نمایید.

در قالب ساده، هر دستگاه در یک خط مجزا توصیف می‌شود که به‌صورت پارامترهای مناسب برای ارسال به یک اسکریپت شل قالب‌بندی شده است، یعنی مقادیر با فاصله جدا شده و در صورت نیاز نقل‌قول شده و اسکیپ شده‌اند. برخی از آرگومان‌ها وابسته به موقعیت (موقعیتی) هستند: اسلات، کلاس، نام سازنده، نام دستگاه، نام سازندهٔ زیرسیستم و نام زیرسیستم (دو مورد آخر در صورتی که دستگاه فاقد زیرسیستم باشد خالی خواهند بود)؛ مابقی آرگومان‌ها مشابه گزینه‌ها هستند:

شمارهٔ بازبینی (Revision number).
رابط برنامه‌نویسی (Programming interface).

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

خروجی مشروح توالی‌ای از رکوردها است که با خطوط خالی از یکدیگر جدا شده‌اند. هر رکورد یک دستگاه را با توالی‌ای از خطوط توصیف می‌کند که هر خط شامل یک جفت `tag: value' است. tag و value با یک نویسهٔ تب (tab) منفرد از هم جدا شده‌اند. نه رکوردها و نه خطوط درون یک رکورد، هیچ‌کدام دارای ترتیب خاصی نیستند. برچسب‌ها به حروف بزرگ و کوچک حساس هستند (Case-sensitive).

برچسب‌های زیر تعریف شده‌اند:

نام اسلاتی که دستگاه در آن قرار دارد ([domain:]bus:device.function). این برچسب همواره نخستین مورد در یک رکورد است.
نام کلاس.
نام سازنده.
نام دستگاه.
نام سازندهٔ زیرسیستم (اختیاری).
نام زیرسیستم (اختیاری).
اسلات فیزیکی که دستگاه در آن قرار دارد (اختیاری، فقط لینوکس).
شمارهٔ بازبینی (اختیاری).
رابط برنامه‌نویسی (اختیاری).
درایور هسته که در حال حاضر دستگاه را مدیریت می‌کند (اختیاری، فقط لینوکس).
ماژول هسته که اعلام کرده قادر به مدیریت دستگاه است (اختیاری، فقط لینوکس). خطوط متعددی با این برچسب می‌توانند وجود داشته باشند.
گره NUMA که این دستگاه به آن متصل است (اختیاری، فقط لینوکس).
گروه IOMMU که این دستگاه بخشی از آن است (اختیاری، فقط لینوکس).

برچسب‌های جدید ممکن است در نسخه‌های آینده افزوده شوند، بنابراین باید هر برچسبی را که نمی‌شناسید نادیده بگیرید.

در این حالت، lspci تلاش می‌کند تا کاملاً با نسخه‌های قدیمی خود سازگار باشد. این حالت تقریباً مشابه قالب مشروح عادی است، اما برچسب Device هم برای اسلات و هم برای نام دستگاه استفاده می‌شود، بنابراین دو بار در یک رکورد تکرار می‌گردد. لطفاً از به‌کارگیری این قالب در کدهای جدید خودداری کنید.

/usr/share/hwdata/pci.ids
فهرستی از تمامی شناسه‌های شناخته‌شدهٔ PCI (سازندگان، دستگاه‌ها، کلاس‌ها و زیرکلاس‌ها). در نشانی https://pci-ids.ucw.cz نگهداری می‌شود؛ از ابزار update-pciids برای بارگیری جدیدترین نسخه استفاده کنید.
/usr/share/hwdata/pci.ids.gz
اگر lspci با پشتیبانی از فشرده‌سازی کامپایل شده باشد، این فایل پیش از pci.ids بررسی می‌شود.
$XDG_CACHE_HOME/pci-ids
تمامی شناسه‌های یافت‌شده در حالت پرس‌وجوی DNS در این فایل ذخیره (کَش) می‌شوند.

گاهی اوقات lspci قادر به رمزگشایی کامل ثبات‌های پیکربندی نیست. این وضعیت معمولاً زمانی رخ می‌دهد که مستندات کافی در اختیار نویسندگان قرار نداشته است. در چنین مواردی، این ابزار دست‌کم علامت <?> را چاپ می‌کند تا نشان دهد احتمالاً اطلاعات بیشتری وجود دارد. در صورت آگاهی از جزئیات، وصله‌ها مسلماً با استقبال مواجه خواهند شد.

دسترسی به فضای پیکربندی گسترش‌یافته در حال حاضر تنها توسط بخش پشتیبان linux_sysfs پشتیبانی می‌شود.

setpci(8), pci.ids(5), update-pciids(8), pcilib(7)

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

05 April 2026 pciutils-3.15.0