Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

A problem with USB storage in Linux has cost me more than one day: dmesg says USB is detected, but fdisk -l can't find USB storage.

My kernel is 2.4.32.

Infomation about this USB storage can also be found via proc:

# cat /proc/scsi/usb-storage-0/0 
   Host scsi0: usb-storage
       Vendor: USB 2.0
      Product: USB Flash Drive
Serial Number: 00000000001485
     Protocol: Transparent SCSI
    Transport: Bulk
         GUID: 048d11670000000000001485
     Attached: Yes

lsmod shows:

# lsmod | grep usb
usb-storage            27800   0 
usbcore                56864   0  [ehci-hcd uhci usb-storage]
scsi_mod              108120   1  [usb-storage]

scsi

 # cat /proc/scsi/scsi     
    Attached devices: 
    Host: scsi0 Channel: 00 Id: 00 Lun: 00
      Vendor: USB 2.0  Model: USB Flash Drive  Rev: 0.00
      Type:   Direct-Access                    ANSI SCSI revision: 02

"fdisk -l /dev/sda" gives me nothing, and "strace fdisk -l /dev/sda" shows me:

open("/dev/sda", O_RDONLY|O_LARGEFILE)  = -1 ENXIO (No such device or address)

tail of dmesg

hub.c: new USB device 00:1d.7-2, assigned address 2
usb.c: kmalloc IF af910660, numif 1
usb.c: new device strings: Mfr=1, Product=2, SerialNumber=3
usb.c: USB device number 2 default language ID 0x409
Manufacturer: USB 2.0
Product: USB Flash Drive
SerialNumber: 00000000001485
scsi0 : SCSI emulation for USB Mass Storage devices
  Vendor: USB 2.0   Model: USB Flash Drive   Rev: 0.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2
usb.c: usb-storage driver claimed interface af910660
usb.c: kusbd: /sbin/hotplug add 2
hub.c: port 3, portstatus 100, change 0, 12 Mb/s
hub.c: port 4, portstatus 100, change 0, 12 Mb/s
hub.c: port 5, portstatus 100, change 0, 12 Mb/s
hub.c: port 6, portstatus 100, change 0, 12 Mb/s
hub.c: port 7, portstatus 100, change 0, 12 Mb/s
hub.c: port 8, portstatus 100, change 0, 12 Mb/s
share|improve this question

migrated from stackoverflow.com Feb 16 '12 at 12:44

This question came from our site for professional and enthusiast programmers.

1  
Seriously? 2.4? That's over a decade old. Time to upgrade. 10 years ago. –  psusi Feb 16 '12 at 14:46
    
yeah, but it's property of company, not my own box. any solution to figure out what's up without upgrading? thx –  Ken Feb 17 '12 at 0:51
1  
Are they also still using Windows 95? Beat whoever is in charge with a rubber hose until they stop using obsolete software. –  psusi Feb 17 '12 at 1:31
    
you are very humorous, lol. –  Ken Feb 17 '12 at 2:43
    
Isn't redhat still using the 2.4.32 kernel as default for their enterprise security systems? This might not be outdated, just lts. –  Michael K Feb 21 '12 at 8:48

3 Answers 3

up vote 3 down vote accepted

Finally, I solved this problem! :-P

It turned out to be that I insmod scsi_mod.o and sd_mod.o, but the kernel had support for SCSI already.

sigh~

I also found that scsi_mod should be insmod'ed before sd_mod, and ehci_hcd.o before usb-storage.o. If not, dmesg will say usb.c: USB device not accepting new address=2 (error=-71).

share|improve this answer
2  
Glad you've fixed it - could you mark your own answer as accepted please? –  pjc50 Feb 20 '12 at 16:39

"kernel is 2.4.32" - really? Can't you use something a bit more modern?

Have you tried looking at "cat /proc/scsi/scsi"? How about "fdisk -l /dev/sda"?

"fdisk -l" on its own doesn't always try all disk-like devices in the system. Giving it a specific device will force it to look at that and tell you its partition table.

share|improve this answer
    
thanks for ur reply.i've update my question with scsi and "fdisk -l /dev/sda". somewhere need to look into to find more infomation? upgrading is not allowed cause it's property of company. –  Ken Feb 17 '12 at 0:56
    
It sounds like the problem is somewhere in hotplug - the SCSI device is there, but nothing in /dev. Unless it's somewhere else in /dev. Do "ls -lR /dev > file" before and after plugging it in and diff the results. Do you have to use this specific system? Is it Intel or some other architecture? –  pjc50 Feb 17 '12 at 17:03
    
there's no difference before and after plugging it in:-(. i must use this system and it's Intel architecture. anywhere need to check on ? i really don't know how to solve this problem. –  Ken Feb 20 '12 at 1:42

Look more closely at dmesg when you insert the usbstick - my guess is that t isn't getting plumbed at /dev/sda.

share|improve this answer
    
i've post tail part of dmesg, something wrong? –  Ken Feb 17 '12 at 2:44
    
Does anything funny show up in /dev? Is that everything from dmesg from the time you plug it in? –  Ben Feb 17 '12 at 15:35
    
/dev is exactly the same before and after plugging usb stick in, dmesg's output is a bit long (185 lines), what i posted is just the end part of it. do i need to post it all so you can analyse it better? –  Ken Feb 20 '12 at 1:47

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.