J.J. Garcia
2006-Aug-10 08:05 UTC
[CentOS] Multi-Card reader (SD, MMC, etc) and CONFIG_SCSI_MULTI_LUN kernel option in 34.0.2. Workaround
Hi folks, Im trying to get a multi-card reader on centos (SD, MMC, and so, 4 card slots) and i have read (http://www.cs.sfu.ca/~ggbaker/personal/cf-linux) that CONFIG_SCSI_MULTI_LUN should be enabled on kernel (=Y) but current 34.0.2 doesn't have it enabled by default, is there any particular reason to not be enabled? By the other hand i've also tweak the /etc/grub.conf file to boot the kernel with max_luns=32 and results are the same, only scsc lun=0 is recognized. At the same time using the workaround mentioned in the link pasted b4 regarding to modify the /etc/modules.conf to include 'options scsi_mod max_scsi_luns=8' gives the same results, no detection at all for the card slots. [root at sparkbox ~]# cat /proc/bus/usb/devices T: Bus=01 Lev=01 Prnt=01 Port=06 Cnt=03 Dev#= 7 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=0644 ProdID=0200 Rev= 4.00 S: Manufacturer=TEAC S: Product=CA-200 S: SerialNumber=0000020307B2 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb- storage E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=125us E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms and /var/log/dmesg still shows: <...> scsi3 : SCSI emulation for USB Mass Storage devices Vendor: TEAC Model: USB HS-CF Card Rev: 4.00 Type: Direct-Access ANSI SCSI revision: 02 Attached scsi removable disk sdc at scsi3, channel 0, id 0, lun 0 USB Mass Storage device found at 7 <...> Instead of (if i understand well for this scsi3 line) after a [root at sparkbox]# sg_scan -i (it should show) /dev/sg2: scsi3 channel=0 id=0 lun=0 [em] type=0 Generic STORAGE DEVICE 0128 [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0] /dev/sg3: scsi3 channel=0 id=0 lun=1 [em] type=0 Generic STORAGE DEVICE 0128 [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0] /dev/sg4: scsi3 channel=0 id=0 lun=2 [em] type=0 Generic STORAGE DEVICE 0128 [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0] /dev/sg5: scsi3 channel=0 id=0 lun=3 [em] type=0 Generic STORAGE DEVICE 0128 [wide=0 sync=0 cmdq=0 sftre=0 pq=0x0] But actually, [root at sparkbox ~]# sg_scan -i [root at sparkbox ~]# (shows nothing) And [root at sparkbox ~]# sg_map Stopping because no sg devices found Strange, could not find device /dev/sda mapped to sg device?? Strange, could not find device /dev/sdb mapped to sg device?? Strange, could not find device /dev/sdc mapped to sg device?? Strange, could not find device /dev/sdd mapped to sg device?? Looking at SCSI: [root at sparkbox ~]# cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: HDS728080PLA380 Rev: PF2O Type: Direct-Access ANSI SCSI revision: 05 Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: Genesys Model: USB to IDE Disk Rev: 0002 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi3 Channel: 00 Id: 00 Lun: 00 Vendor: TEAC Model: USB HS-CF Card Rev: 4.00 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi4 Channel: 00 Id: 00 Lun: 00 Vendor: Model: USB DISK Pro Rev: 1.1b Type: Direct-Access ANSI SCSI revision: 02 And finally doing the last workaround found in the link from Greg Baker article for my scsi3 chain: [root at sparkbox ~]#echo >/proc/scsi/scsi "scsi add-single-device 3 0 0 1" [root at sparkbox ~]#echo >/proc/scsi/scsi "scsi add-single-device 3 0 0 2" [root at sparkbox ~]#echo >/proc/scsi/scsi "scsi add-single-device 3 0 0 3" Solves the identification: [root at sparkbox ~]# cat /proc/scsi/scsi Attached devices: <...> Host: scsi3 Channel: 00 Id: 00 Lun: 00 Vendor: TEAC Model: USB HS-CF Card Rev: 4.00 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi3 Channel: 00 Id: 00 Lun: 01 Vendor: TEAC Model: USB HS-xD/SM Rev: 4.00 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi3 Channel: 00 Id: 00 Lun: 02 Vendor: TEAC Model: USB HS-MS Card Rev: 4.00 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi3 Channel: 00 Id: 00 Lun: 03 Vendor: TEAC Model: USB HS-SD Card Rev: 4.00 Type: Direct-Access ANSI SCSI revision: 02 Now, even without update the udev rules with a new rule It seems to work after inserting the SD (1GB card) card on card-reader, from dmesg: <...> SCSI device sdg: 2012160 512-byte hdwr sectors (1030 MB) sdg: Write Protect is off sdg: Mode Sense: 23 00 00 00 sdg: assuming drive cache: write through SCSI device sdg: 2012160 512-byte hdwr sectors (1030 MB) sdg: Write Protect is off sdg: Mode Sense: 23 00 00 00 sdg: assuming drive cache: write through sdg: sdg1 <...> Mounting the correct SD card on fstab and only remaining to update permissions/udev or pamconsole (not sure where) to get RW access for user space. Hope it helps and just to clarify for mentionned CONFIG_SCSI_MULTI_LUN option in kernel. Jose.
William Hooper
2006-Aug-10 12:38 UTC
[CentOS] Multi-Card reader (SD, MMC, etc) and CONFIG_SCSI_MULTI_LUN kernel option in 34.0.2. Workaround
J.J. Garcia wrote:> Hi folks, > > > Im trying to get a multi-card reader on centos (SD, MMC, and so, 4 card > slots) and i have read (http://www.cs.sfu.ca/~ggbaker/personal/cf-linux) > that CONFIG_SCSI_MULTI_LUN should be enabled on kernel (=Y) but current > 34.0.2 doesn't have it enabled by default, is there any particular > reason to not be enabled?IIRC scanning LUNs freaks out some (real) SCSI hardware. IIRC for Fedora they are creating a whitelist so that known OK devices are scanned.> By the other hand i've also tweak the /etc/grub.conf file to boot the > kernel with max_luns=32 and results are the same, only scsc lun=0 is > recognized. > > At the same time using the workaround mentioned in the link pasted b4 > regarding to modify the /etc/modules.conf to include 'options scsi_mod > max_scsi_luns=8' gives the same results, no detection at all for the card > slots.Shouldn't that be max_luns=8, not max_scsi_luns=8 ? -- William Hooper
Aleksandar Milivojevic
2006-Aug-10 14:45 UTC
[CentOS] Multi-Card reader (SD, MMC, etc) and CONFIG_SCSI_MULTI_LUN kernel option in 34.0.2. Workaround
Quoting "J.J. Garcia" <stigmatedbrain at gmail.com>:> Hi folks, > > Im trying to get a multi-card reader on centos (SD, MMC, and so, 4 card > slots) and i have read (http://www.cs.sfu.ca/~ggbaker/personal/cf-linux) > that CONFIG_SCSI_MULTI_LUN should be enabled on kernel (=Y) but current > 34.0.2 doesn't have it enabled by default, is there any particular > reason to not be enabled?Because some broken SCSI devices choke on that, and you don't really need it.> By the other hand i've also tweak the /etc/grub.conf file to boot the > kernel with max_luns=32 and results are the same, only scsc lun=0 is > recognized.Not sure, but on command line you might need to specify for what module the option is (also, it is loadable module, not part of static kernel). Try passing "scsi_mod.max_luns=32" to the kernel. Have you tried putting it into /etc/modprobe.conf (options scsi_mod max_luns=32) and rebuilding initrd image after that? That's the way I was doing it so far, and it always worked for me. Also, since it is really USB device, could it be it doesn't have LUNs at all? -- NOTICE: If you are not intended recipient, you are hereby notified that by reading this message you agreed not to disturb frogs during mating season. For more info, visit http://www.8-P.ca/