USB Flash not recognised by Windows and BIOS, but works fine in Linux

23
2014-04
  • bbalegere

    I have a Transcend JetFLash 2GB USB Drive.It was working fine and I had been using it occasionally.

    All of sudden it stopped working in all versions of Windows .USB Device not Recognised

    Unknown Device

    The USB Drive is also not recognised by the BIOS.It does not show in the list of bootable devices.(It used show up in the list earlier)

    However the USB Drive works fine in my Linux Mint 11 OS.

    Running dmesg gives this

    [  941.812192] usb 1-2: new high speed USB device using ehci_hcd and address 4
    [  941.936178] usb 1-2: device descriptor read/64, error -71
    [  942.164188] usb 1-2: device descriptor read/64, error -71
    [  942.380189] usb 1-2: new high speed USB device using ehci_hcd and address 5
    [  942.504138] usb 1-2: device descriptor read/64, error -71
    [  942.732179] usb 1-2: device descriptor read/64, error -71
    [  942.948154] usb 1-2: new high speed USB device using ehci_hcd and address 6
    [  943.364134] usb 1-2: device not accepting address 6, error -71
    [  943.476172] usb 1-2: new high speed USB device using ehci_hcd and address 7
    [  943.892140] usb 1-2: device not accepting address 7, error -71
    [  943.892191] hub 1-0:1.0: unable to enumerate USB device on port 2
    [  944.296190] usb 2-2: new full speed USB device using uhci_hcd and address 3
    [  944.438251] usb 2-2: not running at top speed; connect to a high speed hub
    [  944.709928] usbcore: registered new interface driver uas
    [  944.729999] Initializing USB Mass Storage driver...
    [  944.730509] scsi6 : usb-storage 2-2:1.0
    [  944.730908] usbcore: registered new interface driver usb-storage
    [  944.730917] USB Mass Storage support registered.
    [  945.736320] scsi 6:0:0:0: Direct-Access     JetFlash Transcend 2GB    8.07 PQ: 0 ANSI: 2
    [  945.744547] sd 6:0:0:0: Attached scsi generic sg1 type 0
    [  945.753316] sd 6:0:0:0: [sdb] 3944448 512-byte logical blocks: (2.01 GB/1.88 GiB)
    [  945.758274] sd 6:0:0:0: [sdb] Write Protect is off
    [  945.758288] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
    [  945.765167] sd 6:0:0:0: [sdb] No Caching mode page present
    [  945.765181] sd 6:0:0:0: [sdb] Assuming drive cache: write through
    [  945.784309] sd 6:0:0:0: [sdb] No Caching mode page present
    [  945.784323] sd 6:0:0:0: [sdb] Assuming drive cache: write through
    [  946.239512]  sdb: sdb1
    [  946.257279] sd 6:0:0:0: [sdb] No Caching mode page present
    [  946.257292] sd 6:0:0:0: [sdb] Assuming drive cache: write through
    [  946.257302] sd 6:0:0:0: [sdb] Attached SCSI removable disk
    

    Looks like there is something wrong the USB Drive.It is not recognised in any computer running Windows.

    Is there any way to fix this?

    Any idea why this problem occurred ?

  • Answers
  • harrymc

    Here are some things you can try :

    • While connected to the computer, unplug the power and after a few seconds plug it in again.
    • Try using the USB device with another USB port; if it works fine in another port the original port may have malfunctioned.
    • Shutdown the computer and disconnect it from the power for a long time so that all charge has dissipated from the motherboard. In the case of a laptop, removing the battery does the same thing.
    • Try using the USB device with another computer; if it works in another computer you know the problem is with the original.
    • If both computers have the same operating system and it works in one and not the other the problem would more likely to be a hardware one.
    • If the computer’s operating systems are different and it works in one it may be a compatibility problem with one of them. It could still be a hardware problem though.
    • Uninstall all USB controllers in Device Manager and restart the system. This will allow Windows to reinstall all of the USB controllers.
    • Make sure that BIOS is up to date (dangerous!)
    • Make sure that the chipset driver is up to date (motherboard)
    • Restore the operating system to a point where everything was working okay.
    • Give up on this USB as a pure lose.
  • ultrasawblade

    It might not show up in the BIOS if the first sector was overwritten for some reason.

    The line here in your Linux logs:

    [  944.438251] usb 2-2: not running at top speed; connect to a high speed hub
    

    is unusual if your computer is USB 2.0 compliant and the flash drive is also USB 2.0 compliant - I don't believe they've made USB 1.1 only machines since 1998 or so. Is this flash drive connected to a hub that might be malfunctioning (they can do that over time)? Is it connected to an extension cable? Devices might be unable to negotiate USB 2.0 speeds properly if a connecting cable or the connector is damaged or improper in some way. This can cause Windows to complain but not Linux - Windows has more issues with USB device speed and detection than Linux does.

    Since it's a Transcend device you might try running the Transcend recovery utility on it after backing up your data. Despite what it says about being an "online" tool, it's an executable you can download and run.

    I would also suppose that antivirus software, which you would likely be running on Windows but not Linux, could be a possible cause, although I don't think it would stop the drive from being recognized.


  • Related Question

    linux - Partition table corrupted (USB flash drive)
  • Questioner

    It's an 8 GB Patriot thumb drive, which I've used extensively with lots of data. Today, it is detected, but all data is gone: (EDIT at least some data is still there, but the partition table is gone)


    EDIT @Sathya (thanks) here's the relevant output from sudo fdisk -l:

    Disk /dev/sdc: 8019 MB, 8019509248 bytes
    247 heads, 62 sectors/track, 1022 cylinders
    Units = cylinders of 15314 * 512 = 7840768 bytes
    
    Disk /dev/sdc doesn't contain a valid partition table
    

    It looks like it is /dev/sdc, with that 8 GB... and no partition table.

    I tried to mount /dev/sdc (and then dmesg | tail):

    /media> sudo mount /dev/sdc mytmp
    mount: wrong fs type, bad option, bad superblock on /dev/sdc,
           missing codepage or other error
           In some cases useful info is found in syslog - try
           dmesg | tail  or so
    
    /media> dmesg | tail
    [   24.300000]  sdc: unknown partition table
    [   24.320000] sd 2:0:0:0: Attached scsi removable disk sdc
    [   24.370000] usb-storage: device scan complete
    [   26.870000] EXT2-fs error (device sdc): ext2_check_descriptors: Block bitmap for group 1 not in group (block 0)!
    [   26.870000] EXT2-fs: group descriptors corrupted!
    [   50.420000] unhashed dentry being revalidated: .DCOPserver_eeepc-brendanma__0
    [   50.430000] unhashed dentry being revalidated: .DCOPserver_eeepc-brendanma__0
    [   50.430000] unhashed dentry being revalidated: .DCOPserver_eeepc-brendanma__0
    [ 5565.470000] EXT2-fs error (device sdc): ext2_check_descriptors: Block bitmap for group 1 not in group (block 0)!
    [ 5565.470000] EXT2-fs: group descriptors corrupted!
    

    EDIT @Col: results from testdisk

    Disk /dev/sdc - 8013 MB / 7642 MiB - CHS 1022 247 62
    Current partition structure:
         Partition                  Start        End    Size in sectors
    
    Partition sector doesn't have the endmark 0xAA55
    

    After I hit [proceed], it says:

    Structure: Ok.
    
    
    Keys A: add partition, L: load backup, Enter: to continue
    

    The "Structure: Ok." seems reassuring... will "A: add partition" make my old data accessible (if it's still there), or will it make a new, fresh partition?

    Another option is "[ MBR Code ] Write TestDisk MBR code to first sector" - would it be better to do this?


    EDIT I found that at least some of my data is still on the flash drive, by using the below, and searching for English text in less (like " the "):

    cat /dev/sde | tr -cd '\11\12\40\1540-\176' | less
    

    (The drive changed from "/dev/sdb" to "/dev/sde" because I connected some extra drives today). I've learnt that "/dev/sde1" would be the first partition; and "/dev/sde" is the whole drive. Because unix treats these devices just like files, you can use all the ordinary unix file commands on them, like cat, and then process them like any other stream of data. The tr above removes non-printable characters ("\40" is space, which I wanted to preserve). In less, you can use "/" to search, similar to Vim.

    How can I get my data back (assuming it's still there)? If only the partition table is corrupted, is there a standard "partition recovery tool"? Is there a way to "repartition" without deleting everything?


  • Related Answers
  • Col

    It may be worth running testdisk over the device, it sounds like your partition table may have gone pop. Testdisk should be able to recover your data.

  • Seasoned Advice (cooking)

    ddrescue is the tool you need. I don't think you'll be able to salvage the partition table and access the data any other way, based on the output you've posted from testdisk etc.

    http://www.forensicswiki.org/wiki/Ddrescue

    ddrescue is a data recovery tool. It copies data from one file or block device (hard disc, cdrom, etc) to another, trying hard to rescue data in case of read errors.

    The basic operation of ddrescue is fully automatic. That is, you don't have to wait for an error, stop the program, read the log, run it in reverse mode, etc.

    If you use the logfile feature of ddrescue, the data is rescued very efficiently, (only the needed blocks are read). Also you can interrupt the rescue at any time and resume it later at the same point.

    Ddrescue does not write zeros to the output when it finds bad sectors in the input, and does not truncate the output file if not asked to. So, every time you run it on the same output file, it tries to fill in the gaps without wiping out the data already rescued.

    If you have two or more damaged copies of a file, cdrom, etc, and run ddrescue on all of them, one at a time, with the same output file, you will probably obtain a complete and error-free file. This is because the probability of having damaged areas at the same places on different input files is very low. Using the logfile, only the needed blocks are read from the second and successive copies.