PCI硬件列表lspci的命令的知识点和问题
Tofloor
poster avatar
pigpigrun
deepin
2020-05-17 18:04
Author
本帖最后由 pigpigrun 于 2020-5-18 15:06 编辑

我在终端输入lspci -tv  输出如下类似内容:1
...
2
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (3) I218-LM (rev 03)
3
...

输出的内容都是一些关于pci或者pci-e总线上的设备列表,有点而像windows的硬件管理器的意思。
但是我有个疑惑,lspci列出的硬件列表信息,是否也说明了,这个硬件设备的驱动也已经安装好了呢?还请有经验的大神指点一下小弟。。。。。。

为了读懂这个输出还特意学习了一下PCI、PCI-e的规范。
这个pci规范主要知识点如下:
在PCI或者说PCIe里,每个设备有三个编号:总线编号(Bus Number)、设备编号(Device Number)和功能编号(Function Number)
对输出类似内容(00:19.0)来说:这个设备的BusNumber是00,DeviceNumber是19,FunctionNumber是0
理论上,可以有256个Bus,每个Bus可以有32个Device,每个Device可以有8个Function





        
还有一个疑问,就是lspci命令是怎么能知道00:19.0这个设备就是个Ethernet controller,并且是Intel Corporation Ethernet Connection (3) I218-LM (rev 03)的呢?我搜索网络查询结果找到答案如下:
终端命令输入:lspci -nn
1
...
2
00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection (3) I218-LM [8086:15a2] (rev 03)
3
...
可以看到上面输出的内容是不是,有两个方括号括起来的编号,DeviceClass前两位02是一个Network controller,而后两位00表示这个设备是一个Ethernet controller,而8086这个VendorID,代码供应商是Intel Corporation(话说还真是应景啊,作为8086的创始者用8086这个ID),而DeviceID为15a2的设备为Ethernet Connection (3) I218-LM,组合一下,就和lspci的输出一致了。




最后多说点儿:具体到如何读取DeviceClass和VendorIDeviceID,简单来说,PCI总线上每个设备,都会对应一段内存地址,这个地址可以根据设备的编号直接计算出来,加上偏移量,就可以读到这些数据了。
具体的还是得多看:https://pci-ids.ucw.cz/这个网站(这个设备清单是由这个网站维护的)是权威,全是英文,我的E文水平有点差,看着特别累!!!!
这都是我的无线网卡不能扫描网络,为了解决这个问题,不停的找原因,找问题,找答案一路走来所看所学的一些知识点。
关于上面红色字体部分的问题,有那位大神知道的烦请给指点解释一下,再次感谢!!!!



Reply Favorite View the author
All Replies
avatar
普通石头
deepin
2020-05-18 01:48
#1
本帖最后由 xltian1230 于 2020-5-17 18:05 编辑

列出来的只说明系统认到有这个设备,不代表驱动一定就装上了,至于为什么知道这个设备是什么,因为你的系统里装了hwids这个包,里面包含了各种硬件(PCI, USB, OUI, IAB)ID的databases,实际就是来自你提到的https://pci-ids.ucw.cz/。 你仔细看下lspci的-i 的解释:Use specified ID database instead of /usr/share/misc/pci.ids.gz。
至于有没有驱动,你看下lspci -v输出的结果,如果某个设备有加载驱动,应该会有Kernel driver in use:xxx这一行,说明这个设备的驱动模块xxx被使用了



Reply View the author
avatar
pigpigrun
deepin
2020-05-18 23:17
#2
本帖最后由 pigpigrun 于 2020-5-18 15:26 编辑
https://bbs.deepin.org/post/194495
列出来的只说明系统认到有这个设备,不代表驱动一定就装上了,至于为什么知道这个设备是什么,因为你的系统 ...

感谢【xltian1230】的解答,你这么一讲,我豁然开朗了不少,学到了Linux是如何识别管理,以及如何鉴别这些硬件是否安装了驱动,这些知识点了。
在我进阶Linux的道路上你就是恩师!再次感谢你的讲解!!
Reply View the author
avatar
pigpigrun
deepin
2020-05-19 07:44
#3
lspci -v输出如下:
02:05.0 Network controller: Broadcom Inc. and subsidiaries BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01)
        Subsystem: Broadcom Inc. and subsidiaries BCM4322 802.11a/b/g/n Wireless LAN Controller
        Flags: bus master, fast devsel, latency 32, IRQ 20
        Memory at fe900000 (32-bit, non-prefetchable) [size=16K]
        Capabilities:
        Kernel driver in use: b43-pci-bridge
        Kernel modules: ssb

有一句 【Kernel driver in use: b43-pci-bridge】请问这种状态下,是否说明驱动已经安装好了呢?
盼求解答讲解!!!!!!
Reply View the author
avatar
lcw0268
deepin
2020-05-19 12:41
#4
楼主走错路了,无线网卡通常都是USB接口,lsusb看看,显示的4位代码可以找到无线网卡的型号。遇到硬件问题论坛提问,解决问题更快。很佩服你。
Reply View the author
avatar
普通石头
deepin
2020-05-19 18:05
#5
楼上的都不看LZ的帖子内容吗?lspci的结果都已经显示无线网卡类型了还USB,笔记本电脑里内置的无线网卡很多都是miniPCIe接口好吧。无线网卡除了内核驱动,通常还需要firmware,这是要额外安装的。LZ看看dmesg信息里有没有提示缺少firmware
Reply View the author
avatar
pigpigrun
deepin
2020-05-21 15:45
#6
本帖最后由 pigpigrun 于 2020-5-21 07:48 编辑

我的无线网卡的确是插在PCI槽上的那种,不是USB的。
目前依然没有解决这个无线网卡的问题。
dmesg
有一些这样的信息
[   82.549748] Broadcom 43xx driver loaded [ Features: PNLS ]
[   82.550272] b43 ssb0:0: firmware: failed to load b43/ucode16_mimo.fw (-2)
感觉是载入ucode16_mimo.fw失败。这个/b43意思就目录名字吗?b43/ucode16_mimo.fw这个绝对路径应该在那里呢?
我从这个无线网卡的网站上下载了LINUX-64的驱动(hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz),解压后,里面有一个Makefile文件,还有个lib和src目录,请问这个是驱动的源码吗?我试着make去编译,发现总是出错,继续不下去。
感觉这个无线网卡,是可以驱动起来的,可就是我,不得方法,还请有经验的大神再给指点一下,万分感谢。我的这块儿无线网卡是, Broadcom BCM4322的,有同款的网卡的请不吝赐教!!
Reply View the author
avatar
xiejia751229
deepin
2020-05-21 15:59
#7
还有dmidecode
Reply View the author
avatar
lcw0268
deepin
2020-05-21 16:38
#8
安装固件,你已经知道型号,找固件包安装就可以,类似驱动,你下载的源码包安装编译要满足依赖,错误的话,不卸载可能硬件就不能再用。
Reply View the author
avatar
普通石头
deepin
2020-05-21 19:00
#9
觉得你可以参考下面两篇文章
http://linuxwireless.sipsolutions.net/en/users/Drivers/b43/#firmware
https://www.jianshu.com/p/dc243f02fdb0
Reply View the author