我正在寫一個bash腳本,用圖像填充cf卡。由於只允許使用指定的卡,因此我想檢查是否將正確類型的CF卡插入USB CF卡寫入器。如何讀出CF卡的供應商ID
我知道有可能以某種方式讀取cf卡的供應商ID和固件版本(我在嵌入式系統上看到過),但我不知道如何在我的linux系統上實現這個功能(openSUSE 10.3 )和一個usb cf卡作家。
其他人知道如何?
非常感謝, 克里斯
我正在寫一個bash腳本,用圖像填充cf卡。由於只允許使用指定的卡,因此我想檢查是否將正確類型的CF卡插入USB CF卡寫入器。如何讀出CF卡的供應商ID
我知道有可能以某種方式讀取cf卡的供應商ID和固件版本(我在嵌入式系統上看到過),但我不知道如何在我的linux系統上實現這個功能(openSUSE 10.3 )和一個usb cf卡作家。
其他人知道如何?
非常感謝, 克里斯
你可以嘗試做
cat /proc/scsi/scsi
,看看是否有meaningfull信息。由於CF卡具有PID/VID並不意味着它由USB讀卡器輸出。
看看的lsusb
或cat /proc/scsi/usb-storage/*
謝謝,但這隻顯示有關cf卡設備的信息,但沒有插入cf卡的信息... – Chris 2009-11-04 12:20:31
hdparm -i /dev/sda
輸出可以告訴你有關的模型,固件版本和大多數ATA硬盤的序列號(包括,我相信一個CF「盤」)。
smartctl -a /dev/sda
還會告訴你很多關於隨機光盤,包括型號,序列,固件,容量,以及一些統計數據到磁盤的一般健康狀況。
我相信這對於CF盤來說可以很好地工作,就像它對SATA或PATA盤所做的那樣,儘管我現在沒有在這裏檢查。
感謝您的建議。我使用3種不同的讀卡器嘗試了命令(加上sdparm),但它們都不起作用......看起來讀卡器不會導出這些信息。不過,這些命令適用於我的固定硬盤。 – Chris 2009-11-05 07:46:57
除了使用lsusb,你可以嘗試dbus。
這是一個示例python代碼,應該列出硬件層次結構中的所有scsi_host父項。
import dbus
bus = dbus.SystemBus()
hal = bus.get_object ('org.freedesktop.Hal',
u'/org/freedesktop/Hal/Manager')
hal_manager = dbus.Interface(hal, u'org.freedesktop.Hal.Manager')
volume_udi_list = hal_manager.FindDeviceByCapability('scsi_host')
for udi in volume_udi_list:
# inspect all scsi_host devices
dev = bus.get_object (u'org.freedesktop.Hal', udi)
volume = dbus.Interface(dev, u'org.freedesktop.Hal.Device')
# get their parent
parent = volume.GetProperty('info.parent')
dev = bus.get_object (u'org.freedesktop.Hal', parent)
volume = dbus.Interface(dev, u'org.freedesktop.Hal.Device')
# Here we can find vendor id for usb-storage devices
props = volume.GetAllProperties()
print "\n".join(("%s: %s" % (k, props[k]) for k in props))
請注意,只有讀卡器被分配一個USB供應商ID,CF本身不是。如果你沒有使用lsbus看到它,這意味着它沒有連接到USB總線。無論如何,使用dbus可以瀏覽樹結構以查看可用的信息類型。 – baol 2010-04-01 20:16:05
它看起來沒有導出......它顯示cf卡rw設備上的信息,但插入卡時不會改變。 – Chris 2009-11-04 12:25:37