Friday, April 30, 2010

USB drive not being recognized under Linux

SkyHi @ Friday, April 30, 2010

In order to access USB drive under Linux you need to load special USB driver and support must be included in running Linux kernel. Try following command one by one to solve your problem:

Step # 1 : Make sure your external drive detected by system
Run dmesg command which print or control the kernel ring buffer:

# dmesg

OR

# dmesg | grep –i USB

Output:

SLPB PCI0 HUB0 USB0 USB1 USB2 USBE
usbcore: registered new driver usbfs
usbcore: registered new driver hub
USB Universal Host Controller Interface driver v2.3
uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 1
hub 1-0:1.0: USB hub found
uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 2
hub 2-0:1.0: USB hub found
uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 3
usb 1-2: new full speed USB device using uhci_hcd and address 2
hub 3-0:1.0: USB hub found

As you see USB support is included in kernel. You can also verify this with following command:

# lspci -v | grep HCI

Output:

0000:00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02) (prog-if 00 [UHCI])
0000:00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02) (prog-if 00 [UHCI])
0000:00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02) (prog-if 00 [UHCI])
0000:00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI])

Step # 2 : Load USB modules/driver
If you cannot see your external USB drive in above dmesg output then try to load usb-uhci and usb-ohci modules (driver):

# modprobe usb-uhci
# modprobe usb-ohci
# modprobe usb-storage

Now again run dmesg:

# dmesg

Output:

usb 4-1: new high speed USB device using ehci_hcd and address 3
scsi2 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 3
usb-storage: waiting for device to settle before scanning
Vendor: SAMSUNG Model: SV4002H Rev: 0811
Type: Direct-Access ANSI SCSI revision: 00
SCSI device sdb: 78242976 512-byte hdwr sectors (40060 MB)
sdb: assuming drive cache: write through
SCSI device sdb: 78242976 512-byte hdwr sectors (40060 MB)
sdb: assuming drive cache: write through
sdb: sdb1
sd 2:0:0:0: Attached scsi disk sdb
usb-storage: device scan complete

Step 3 : Use external USB drive
As you see device sdb assigned to an external USB drive use mount command to mount drive:
List partitions on /dev/sdb:

# fdisk -l | grep sdb

Output:

Disk /dev/sda doesn't contain a valid partition table
Disk /dev/sdb: 40.0 GB, 40060403712 bytes
/dev/sdb1 1 4870 39118243+ c W95 FAT32 (LBA)

Now mount partition:

# mount /dev/sdb1 /mnt

See also:


REFERENCES
http://www.cyberciti.biz/faq/usb-drive-not-being-recognized-under-linux/