Embedded & Engineering Insights
I’ve plugged a card reader in a USB socket on my Linux box and it’s not that trivial to know if it’s on /dev/sda or /dev/sdb or elsewhere. That can be even dangerous – I know someone who just erased his hard drive, trying to reformat a card. (Yes, he used a script that assumed the card reader is /dev/sda… and it worked so well on his old machine).
Here’s a method to find it out.
$ cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: ASUS Model: DVD-E616A Rev: 1.08 Type: CD-ROM ANSI SCSI revision: 05 Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: WDC WD2500KS-00M Rev: 02.0 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi4 Channel: 00 Id: 00 Lun: 00 Vendor: GENERIC Model: USB Storage-CFC Rev: I19B Type: Direct-Access ANSI SCSI revision: 00 Host: scsi4 Channel: 00 Id: 00 Lun: 01 Vendor: GENERIC Model: USB Storage-MSC Rev: I19B Type: Direct-Access ANSI SCSI revision: 00 Host: scsi4 Channel: 00 Id: 00 Lun: 02 Vendor: GENERIC Model: USB Storage-SMC Rev: I19B Type: Direct-Access ANSI SCSI revision: 00 Host: scsi4 Channel: 00 Id: 00 Lun: 03 Vendor: GENERIC Model: USB Storage-SDC Rev: I19B Type: Direct-Access ANSI SCSI revision: 00
So here they are – the DVD-ROM, the hard drive, and readers for various types of cards. I’m interested in the SD card reader, so that would be the device identified by “scsi4 Channel: 00 Id: 00 Lun: 03” – that’s 4:0:0:3.
The second piece of magic
$ ls -l /sys/bus/scsi/drivers/sd/4:0:0:3/block* lrwxrwxrwx 1 root root 0 2008-11-03 15:03 /sys/bus/scsi/drivers/sd/4:0:0:3/block:sde -> ../../../../../../../../../block/sde
So the SD card I’ve just plugged in is in /dev/sde.