GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Mendapatkan Jenis Pembaca Kartu Internal?

Saya memiliki kotak Linux yang menjalankan Busybox. Ada dua pembaca kartu bawaan. Bagaimana saya bisa mendapatkan jenis pembaca kartu?

Saya mencoba lshw , hwinfo dan lspci tetapi perintah ini tidak diterapkan di Busybox.

Halo Stéphane Chazelas,

Terima kasih banyak atas jawaban terperinci Anda. Saya mencobanya. Namun grep tidak menemukan apa pun.

# l `find /sys/devices -path '*/usb*/configuration'`
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0470300.ehci_v2/usb3/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0470400.ohci_v2/usb7/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0470500.ehci_v2/usb4/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0470600.ohci_v2/usb8/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0471000.xhci_v2/usb1/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0471000.xhci_v2/usb2/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0480300.ehci_v2/usb5/5-1/5-1.1/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0480300.ehci_v2/usb5/5-1/5-1.2/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0480300.ehci_v2/usb5/5-1/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0480300.ehci_v2/usb5/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0480400.ohci_v2/usb9/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0480500.ehci_v2/usb6/configuration
-r--r--r--    1 root     root          4096 Oct  2 19:14 /sys/devices/rdb.3/f0480600.ohci_v2/usb10/configuration
# l `find /sys/devices -path '*/pci*/driver'`
dr-xr-xr-x    2 root     root             0 Oct  2 19:20 .
dr-xr-xr-x    4 root     root             0 Oct  2 19:20 ..
-r--r--r--    1 root     root             0 Oct  2 19:31 devices
# l /proc/bus/pci/devices
-r--r--r--    1 root     root             0 Oct  2 19:31 /proc/bus/pci/devices

Jawaban yang Diterima:

Pembaca kartu sering kali merupakan perangkat USB. Jika demikian, Anda dapat melakukan sesuatu seperti:

find /sys/devices -path '*/usb*/configuration' -exec \
   grep -lx 'CARD READER'  {} + | awk -F/ -vOFS=/ '{
     NF--
     getline idv < ($0 "/idVendor")
     getline idp < ($0 "/idProduct")
     getline v < ($0 "/manufacturer")
     getline p < ($0 "/product")
     print idv":"idp" "v" "p}'

Untuk mendapatkan ID dan nama vendor/produk (seperti yang dilaporkan oleh kernel). Yaitu mencari perangkat USB yang konfigurasinya diatur ke CARD READER dan ekstrak konten vendorID , productID , manufacturer dan product file yang terletak di direktori induk yang berisi configuration berkas.

Untuk perangkat PCI, ini akan menangkap setidaknya perangkat yang menggunakan driver di bawah ini. busybox find tidak mendukung GNU find -lname predikat, jadi kita membutuhkan sesuatu seperti:

find /sys/devices -path '*/pci*/driver' -type l -exec readlink {} \; -print |
  awk -F/ -v OFS=/ '
    BEGIN{d["cb710"]d["r592"]d["r852"]d["rts5208"]d["rtsx_pci"]}
    $NF in d {
      getline
      NF--
      getline v < ($0 "/vendor")
      getline p < ($0 "/device")
      print substr(v, 3) ":" substr(p, 3)
    }'

Tidak ada konfigurasi file yang bisa kita gunakan kali ini untuk menentukan class device (sebenarnya ada class file untuk kelas perangkat PCI, tetapi saya dapat melihatnya sebagai 0xff00 (Lain-lain) untuk perangkat Realtek di sini, tidak ada kelas perangkat PCI yang didedikasikan untuk "pembaca kartu" sehingga kami tidak dapat mengandalkannya). Jadi alih-alih kami mencari drivers symlink yang mengarah ke salah satu driver yang dikenal sebagai driver untuk pembaca kartu PCI, dan dapatkan ID vendor/produk di jalur yang terkait dengan itu.

Terkait:Memuat perpustakaan bersama dan penggunaan RAM?

Pendekatan yang lebih sederhana adalah dengan menggunakan /proc/bus/pci/devices :

awk '
  BEGIN{d["cb710"]d["r592"]d["r852"]d["rts5208"]d["rtsx_pci"]}
  $NF in d {print substr($2, 1, 4) ":" substr($2, 5)}
' < /proc/bus/pci/devices

Linux
  1. Bagaimana Menjalankan Perintah Sebagai Administrator Sistem (root)?

  2. Bagaimana Internal Sudo Bekerja?

  3. Bagaimana Cara Mendapatkan Kunci Usb Untuk Pemasangan Otomatis?

  1. Cara mendapatkan ukuran file tar.gz dalam (MB) dengan python

  2. Bagaimana cara mendapatkan nama pengguna di Makefile?

  3. Cara mendapatkan status keluar satu lingkaran di bash

  1. Cara mengubah kata sandi root mysql

  2. Bagaimana kernel me-mount partisi root?

  3. Bagaimana cara mendapatkan alamat IP saya dari baris perintah?