Busybox를 실행하는 Linux 상자가 있습니다. 카드 리더기가 2개 내장되어 있습니다. 카드 리더 유형을 확인하는 방법은 무엇입니까?
lshw
시도 했지만 이러한 명령은 Busybox에서 구현 되지 hwinfo
않습니다 .lspci
안녕하세요 스테판 차제라스(Stefan Chazeras),
귀하의 상세한 답변에 진심으로 감사드립니다. 나는 이것을 시도했다. 그러나 grep은 아무것도 찾지 못했습니다.
# 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
답변1
카드 리더는 일반적으로 USB 장치입니다. 그렇다면 다음과 같이 할 수 있습니다.
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}'
공급업체/제품 ID 및 이름을 가져옵니다(커널에서 보고함). 즉, USB 장치를 찾으세요구성로 설정되어 있습니다카드 리더그리고 해당 파일이 포함된 상위 디렉터리에 있는 vendorID
, productID
및 파일의 내용을 추출합니다 manufacturer
.product
configuration
PCI 장치의 경우 다음 드라이버를 사용하여 최소한 장치를 캡처합니다. busybox는 GNU 의 조건자를 find
지원하지 않으므로 다음과 같은 것이 필요합니다.find
-lname
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)
}'
아니요구성이번에는 이 파일을 사용하여 장치의 클래스를 확인할 수 있습니다(실제로 class
PCI 장치 클래스에 대한 파일이 있지만 여기서 Realtek 장치는 0xff00(기타)인 것을 볼 수 있습니다. PCI 장치 클래스) "카드 리더기"이므로 신뢰할 수 없음). 따라서 우리는 알려진 PCI 카드 리더 드라이버에 대한 심볼릭 링크를 찾고 drivers
이와 관련된 경로에서 공급업체/제품 ID를 얻습니다.
더 쉬운 방법은 다음을 사용하는 것입니다 /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