1

I have a Kingston's DataTraveler SE9 (8G, SerialNumber: 0014785448B4BCA13728002A), and I myself am running Pop!_OS, and I can't seem to figure out why it's not being detected. Not in a Windows system either. It's not detected in GNOME's disks utility either. I tried lsusb and it sure is showing up there:

 Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 001 Device 003: ID 0bda:2852 Realtek Semiconductor Corp. Bluetooth Radio
 Bus 001 Device 002: ID 04f2:b735 Chicony Electronics Co., Ltd HP Wide Vision HD Camera
*Bus 001 Device 008: ID 0951:1689 Kingston Technology DataTraveler SE9*
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

(Remember that it's bus 001 and device 008, will be useful later)

But it's not showing up in the fdisk output:

Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: MTFDHBA512TDV-1AZ1AABHA                 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: F244FCA0-47AE-4C49-B585-B9F2437DBCEC

Device Start End Sectors Size Type /dev/nvme0n1p1 2048 3678206 3676159 1.8G EFI System /dev/nvme0n1p2 3678208 379082751 375404544 179G Linux filesystem /dev/nvme0n1p3 798515200 894152703 95637504 45.6G Microsoft basic data /dev/nvme0n1p4 894152704 999010301 104857598 50G Linux filesystem /dev/nvme0n1p5 999010304 1000202239 1191936 582M Windows recovery environmen /dev/nvme0n1p6 1000202240 1000214526 12287 6M BIOS boot

Disk /dev/zram0: 7.09 GiB, 7617904640 bytes, 1859840 sectors Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Neither in the lsblk's output:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
zram0       252:0    0   7.1G  0 disk [SWAP]
nvme0n1     259:0    0 476.9G  0 disk 
├─nvme0n1p1 259:1    0   1.8G  0 part /boot/efi
├─nvme0n1p2 259:2    0   179G  0 part /home
├─nvme0n1p3 259:3    0  45.6G  0 part 
├─nvme0n1p4 259:4    0    50G  0 part /
├─nvme0n1p5 259:5    0   582M  0 part 
└─nvme0n1p6 259:6    0     6M  0 part 

Output from sudo dmesg -w does show that atleast it's being recognised as a USB at some low-level:

[458632.136596] usb 1-2: new high-speed USB device number 8 using xhci_hcd
[458632.292668] usb 1-2: New USB device found, idVendor=0951, idProduct=1689, bcdDevice= 1.00
[458632.292685] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[458632.292691] usb 1-2: Product: DataTraveler SE9
[458632.292697] usb 1-2: Manufacturer: Kingston
[458632.292703] usb 1-2: SerialNumber: 0014785448B4BCA13728002A

And finally, for some weird reason, if I scrounge through all the /dev/ entries, I find this! (sudo ls /dev/*):

<...>
/dev/char:
<...>
lrwxrwxrwx 1 root root 18 Dec 11 11:51 189:7 -> ../bus/usb/001/008
<...>

Huh? Is it being detected as a character device?

And I don't know if this can even work, but I tried sudo mount /dev/bus/usb/001/008 /mnt and I get the output: mount: /mnt: /dev/bus/usb/001/008 is not a block device. Not sure if this means it can't mount because it isn't a block device, or because it just isn't a device anymore (dead).

Oh and forgot to add, it isn't assigned a block device address either (nothing of the sort /dev/sd*, infact there's no block device in my system with that prefix).

Any clue what's going on here?

EDIT: As per @u1686_grawity 's suggestion, here's the output of lsusb.py -ci:

WARNING: Failure to read usb.ids
usb1              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (xhci-hcd 0000:08:00.3) hub
  1-2               0951:1689 00 1IF  [USB 2.00,   480 Mbps, 200mA] (Kingston DataTraveler SE9 0014785448B4BCA13728002A)
    1-2:1.0           (IF) 08:06:50 2EPs (Mass Storage:SCSI:Bulk-Only)  
  1-3               04f2:b735 ef 3IFs [USB 2.01,   480 Mbps, 500mA] (Chicony Electronics Co.,Ltd. HP Wide Vision HD Camera 0001)
    1-3:1.0           (IF) 0e:01:00 1EP  (Video:Video Control:None) uvcvideo video4linux/video1 video4linux/video0 
    1-3:1.1           (IF) 0e:02:00 0EPs (Video:Video Streaming:None) uvcvideo 
    1-3:1.2           (IF) fe:01:01 0EPs (Application Specific Interface:Device Firmware Update:None)  
  1-4               0bda:2852 e0 2IFs [USB 1.00,    12 Mbps, 500mA] (Realtek Bluetooth Radio 00e04c000001)
    1-4:1.0           (IF) e0:01:01 3EPs (Wireless:Radio Frequency:Bluetooth) btusb bluetooth/hci0 
    1-4:1.1           (IF) e0:01:01 2EPs (Wireless:Radio Frequency:Bluetooth) btusb 
usb2              1d6b:0003 09 1IF  [USB 3.10, 10000 Mbps,   0mA] (xhci-hcd 0000:08:00.3) hub
usb3              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (xhci-hcd 0000:08:00.4) hub
usb4              1d6b:0003 09 1IF  [USB 3.10, 10000 Mbps,   0mA] (xhci-hcd 0000:08:00.4) hub
grawity
  • 501,077

1 Answers1

4

If this were only happening on Linux, the most common answer would be that the necessary driver modules are missing (e.g. incomplete kernel upgrade).

But given that it also happens on Windows, it's probably safe to assume that the fault is in the USB stick's firmware; i.e. the flash drive is playing dead and there's probably nothing you can do about it.

Huh? Is it being detected as a character device?

It's being "detected as" a character device at the same lower level as lsusb is working at. The device nodes in /dev/bus give you access to the "raw" USB device, where you can send custom USB request blocks. This is not mutually exclusive with it being detected as a USB Mass Storage device above that and as a SCSI block device several layers higher up; you'll have the same /dev/bus if you connect any working USB stick as well – or, for that matter, a USB mouse.

("Detected as" because that's absolutely not how USB devices work – they do not say "I'm a character device" or "I'm a block device"; there are maybe five layers in between the two. The USB device is interrogated to list the 'interfaces' it supports, then each interface gets an appropriate driver assigned, then the driver creates a device node as needed – or attaches to a higher-layer driver. So you get a block device because that's what the "SCSI disk" driver uses, and the SCSI driver is there because of a "Mass Storage" USB interface.)

You can use lsusb.py -ci to get a list of all interfaces that each USB device claims to expose. (The program is part of usbutils, the same as lsusb, but you may need to download it directly from GitHub as some distributions don't like it being Python, but it provides a really convenient overview of USB devices and interfaces.)

It's fairly common for USB sticks to switch to a mode where they report a 0-size medium or no medium at all (like a CD drive without a CD in it). These still create a SCSI block device but the 'lsblk' tool deliberately skips them as empty. But failing to show up as a block device entirely is also not unheard of.

wouldn't a badly partitioned drive also not work

No; typical partitioning is done as a layer above the block device. The entire USB stick is presented as a single linear storage device, where the OS stores a partition table for its own purposes (using one of several formats) and creates further block devices on top. When you're editing partitions in diskmgmt.msc or in GNOME Disks, all you're really doing is changing data in sectors 0 or 1 of the disk.

(There is a different kind of partitioning that causes the drive to expose several separate block devices (SCSI LUNs), and certain USB sticks – including a few of Kingston's – have a "manufacturer" tool that allows this. But this is not the kind of partitioning that you do via GNOME Disks.)

grawity
  • 501,077