pcimodules and lspci not working alternative solution

pcimodules no longer works it produces nothing probably because the format of /sys/bus/pci is different.

lspci -k doesn't work on older lspci versions.

pciutils can be compiled but it won't work if you have an old system and compile on a newer glibc.

iteriate through /sys/bus/pci/devices/*/modalias

cat /sys/bus/pci/devices/*/modalias
pci:v00008086d00001237sv00000000sd00000000bc06sc00i00
pci:v00008086d00007000sv00000000sd00000000bc06sc01i00
pci:v00008086d00007111sv00000000sd00000000bc01sc01i8A
pci:v000080EEd0000BEEFsv00000000sd00000000bc03sc00i00
pci:v00008086d0000100Esv00008086sd0000001Ebc02sc00i00
pci:v000080EEd0000CAFEsv00000000sd00000000bc08sc80i00
pci:v00008086d00002415sv00008086sd00000000bc04sc01i00
pci:v0000106Bd0000003Fsv00000000sd00000000bc0Csc03i10
pci:v00008086d00007113sv00000000sd00000000bc06sc80i00




compare it to /lib/modules/4.4.98/modules.alias
pci:v00008086d00001237sv00000000sd00000000bc06sc00i00
the part we care about is:
8086d00001237 (note I now truncate more of the end so try again removing the 7 or even the 73 at the end to be more inclusive or you will have a lower success rate).


cat /lib/modules/4.4.98/modules.alias|grep 8086d0000123
alias pci:v00008086d00001234sv*sd*bc*sc*i* pata_mpiix
alias pci:v00008086d00001230sv*sd*bc*sc*i* pata_oldpiix
alias pci:v00008086d00001234sv*sd*bc*sc*i* piix
alias pci:v00008086d00001230sv*sd*bc*sc*i* piix

So bash to the rescue!

iteriate through /sys/bus/pci/devices/*/modalias

compare it to /lib/modules/4.4.98/modules.alias

 bash script that I use in my init

#use this code to do the same thing as pcimodules
for device in `ls -1 /sys/bus/pci/devices/`; do
   device=`cat /sys/bus/pci/devices/$device/modalias`
    #specifying 9:11 or 9:14 with 9:11 being less restrictive and presenting more options
    #9:14 drills down and is more strict giving you less chance of getting the wrong driver
   alias=${device:9:14}
   kernversion=`uname -r`
   module=`cat /lib/modules/$kernversion/modules.alias|grep $alias|awk '{print $3}'`
   if [ ! -z "$module" ]; then
     for mod in $module; do
     echo "module for $device $alias =$module"
     modprobe $module
     done
     else
     echo "No module found for $device $alias"
   fi
done


Tags:

pcimodules, lspci, solutionpcimodules, produces, format, sys, pci, doesn, versions, pciutils, compiled, compile, newer, glibc, iteriate, devices, modalias, sv, bc, sc, eed, beefsv, esv, ebc, cafesv, bd, fsv, csc, lib, modules, alias, truncate, removing, inclusive, grep, pata_mpiix, pata_oldpiix, piix, bash, init, ls, specifying, restrictive, presenting, drills, strict, kernversion, uname, module, awk, z, quot, mod, echo, modprobe, fi,

Latest Articles

  • How To Stop DNSMasq from listening on all IPs/Interfaces and allow only localhost
  • du - VAS Billing Subscriptions Hack/Scam MLPremiumSub Invascom Astromart Issues Complaint
  • Docker Swarm vs Kubernetes Comparison Guide
  • When is it time to leave your VPS/VDS Cloud Hosting Provider?
  • 2024 Buyer's Guide: How to Choose and Buy the Best VPS/VDS for Your Needs - Tips and Strategies
  • Postfix / sendmail config for DKIM, SPF and DMARC Tutorial Guide E-mail Delivery for Hotmail.com Gmail.com and More HowTo
  • Install Grafana on Linux Debian Ubuntu Tutorial Guide
  • How To Completely Disable ufw in Linux Ubuntu Mint Debian
  • System has not been booted with systemd as init system (PID 1). Can't operate. Failed to talk to init daemon. Ubuntu Debian Linux Solution Cannot reboot
  • Mint Ubuntu Linux Gnome Showing Home Directory on Desktop instead of Desktop Directory
  • vi vim not doing code highlighting E319: Sorry, the command is not available in this version solution
  • Proxmox How To Rename Node Hostname Fix Solution
  • Linux how to get list of all timezones on system Ubuntu
  • Proxmox install issue cannot see the buttons or install wrong / bad resolution cannot see the entire screen problem solution
  • configure.ac:75: error: possibly undefined macro: AC_PROG_LIBTOOL If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. solution
  • Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326. autoreconf: failed to run aclocal: No such file or directory solution
  • /bin/sh: autoreconf: command not found solution
  • glib-2.0 required to compile QEMU solution
  • How To Upgrade Debian 8,9,10 to Debian 12 Bookworm
  • Linux dhcp dhclient Mint Redhat Ubuntu Debian How To Use Local Domain DNS Server Instead of ISPs