Le mercredi 12 juin 2024 à 17:13 +0200, Alban Browaeys a écrit : > Le mercredi 12 juin 2024 à 03:39 +0200, Alban Browaeys a écrit : > > Le mardi 11 juin 2024 à 10:21 +0200, Oliver Neukum a écrit : > > > > > > > > > On 10.06.24 21:25, Alban Browaeys wrote: > > > > I found that for "smartctl" to work on my two Seagate Expansion > > > > external USB3 I had to add the "j" usb-storage quirks ie > > > > "US_FL_NO_REPORT_LUNS". > > > > (They are years apart). > > > > > > Hi, > > > > > > does the attached patch do the job? > > > > > > Regards > > > Oliver > > > > No, it does not work. > > smartctl is still broken with the US_FL_NO_REPORT_LUNS in > > drivers/usb/storage/unusual_uas.h. > > > > But if I add back the "j" usb.quirks flag back with: > > echo -n "0x0bc2:0x2037:j" | sudo tee > > /sys/module/usb_storage/parameters/quirks > > and then: > > echo -n "2-2:1.0" | sudo tee /sys/bus/usb/drivers/uas/unbind > > echo -n "2-2:1.0" | sudo tee /sys/bus/usb/drivers/uas/bind > > then smartctl works. > > > > I tested on tw kernels with the two different seagate drives. > > > > sudo grep Seagate /sys/devices/ -r |& grep Seagate > > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/manufacturer:Seagate > > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/2- > > 2:1.0/host8/target8:0:0/8:0:0:0/vendor:Seagate > > > > head /sys/devices/pci0000\:00/0000\:00\:14.0/usb2/2-2/quirks > > 0x0 > > > > > > > > > > lrwxrwxrwx 1 root root 9 12 juin 03:14 usb- > > Seagate_Expansion_HDD_00000000NACSHZWL-0:0 -> ../../sdc > > lrwxrwxrwx 1 root root 10 12 juin 03:14 usb- > > Seagate_Expansion_HDD_00000000NACSHZWL-0:0-part1 -> ../../sdc1 > > > > sudo smartctl -i /dev/sdc > > smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.10.0-rc3+] (local > > build) > > Copyright (C) 2002-23, Bruce Allen, Christian Franke, > > www.smartmontools.org > > > > Read Device Identity failed: scsi error unsupported field in scsi > > command > > > > If this is a USB connected device, look at the various -- > > device=TYPE > > variants > > A mandatory SMART command failed: exiting. To continue, add one or > > more '-T permissive' options. > > > > > > lsusb -t > > /: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, > > 480M > > |__ Port 001: Dev 002, If 0, Class=Vendor Specific Class, > > Driver=[none], 12M > > |__ Port 001: Dev 002, If 1, Class=Audio, Driver=[none], 12M > > |__ Port 001: Dev 002, If 2, Class=Audio, Driver=[none], 12M > > |__ Port 005: Dev 003, If 0, Class=Hub, Driver=hub/4p, 480M > > |__ Port 002: Dev 005, If 0, Class=Vendor Specific Class, > > Driver=cp210x, 12M > > |__ Port 003: Dev 008, If 0, Class=Wireless, Driver=btusb, > > 12M > > |__ Port 003: Dev 008, If 1, Class=Wireless, Driver=btusb, > > 12M > > |__ Port 009: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M > > |__ Port 003: Dev 009, If 0, Class=Human Interface Device, > > Driver=usbhid, 1.5M > > |__ Port 003: Dev 009, If 1, Class=Human Interface Device, > > Driver=usbhid, 1.5M > > |__ Port 004: Dev 010, If 0, Class=Human Interface Device, > > Driver=usbhid, 1.5M > > |__ Port 004: Dev 010, If 1, Class=Human Interface Device, > > Driver=usbhid, 1.5M > > /: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, > > 5000M > > |__ Port 002: Dev 002, If 0, Class=Mass Storage, Driver=uas, > > 5000M > > |__ Port 003: Dev 003, If 0, Class=Mass Storage, Driver=usb- > > storage, 5000M > > |__ Port 005: Dev 004, If 0, Class=Hub, Driver=hub/4p, 5000M > > |__ Port 006: Dev 005, If 0, Class=Mass Storage, Driver=usb- > > storage, 5000M > > > > with the "j" usb.quirks flag: > > sudo smartctl -i /dev/sdc > > smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.10.0-rc3+] (local > > build) > > Copyright (C) 2002-23, Bruce Allen, Christian Franke, > > www.smartmontools.org > > > > === START OF INFORMATION SECTION === > > Model Family: Seagate Barracuda 2.5 5400 > > Device Model: ST4000LM024-2AN17V > > Serial Number: WCKAEWZZ > > LU WWN Device Id: 5 000c50 0e732b6d8 > > Firmware Version: 0001 > > User Capacity: 4 000 787 030 016 bytes [4,00 TB] > > Sector Sizes: 512 bytes logical, 4096 bytes physical > > Rotation Rate: 5526 rpm > > Form Factor: 2.5 inches > > Device is: In smartctl database 7.3/5528 > > ATA Version is: ACS-3 T13/2161-D revision 5 > > SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s) > > Local Time is: Wed Jun 12 03:30:47 2024 CEST > > SMART support is: Available - device has SMART capability. > > SMART support is: Enabled > > > > > > > > Your patch had: > +UNUSUAL_DEV(0x0bc2, 0x2037, 0x0000, 0x9999, > + "Seagate", > + "RSS LLC Expansion HDD", > + USB_SC_DEVICE, USB_PR_DEVICE, NULL, > + US_FL_NO_REPORT_LUNS), > + > +/* Reported-by: Alban Browaeys <alban.browaeys@xxxxxxxxx> */ > +UNUSUAL_DEV(0x0bc2, 0x231a, 0x0000, 0x9999, > + "Seagate", > + "RSS LLC Expansion Portable", > + USB_SC_DEVICE, USB_PR_DEVICE, NULL, > + US_FL_NO_REPORT_LUNS), > + > > but: > head /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/manufacturer > Seagate > > head /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/product > Expansion HDD > > head /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/id* > ==> /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/idProduct <== > 2037 > > ==> /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/idVendor <== > 0bc2 > head /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/quirks > 0x0 > > > > and: > > head /sys/devices/platform/usb@fe900000/fe900000.usb/xhci- > hcd.0.auto/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1.4/manufacturer > Seagate > head /sys/devices/platform/usb@fe900000/fe900000.usb/xhci- > hcd.0.auto/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1.4/product > Expansion > head /sys/devices/platform/usb@fe900000/fe900000.usb/xhci- > hcd.0.auto/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1.4/id* > ==> /sys/devices/platform/usb@fe900000/fe900000.usb/xhci- > hcd.0.auto/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1.4/idProduct <== > 231a > > ==> /sys/devices/platform/usb@fe900000/fe900000.usb/xhci- > hcd.0.auto/usb2/2-1/2-1.2/2-1.2.1/2-1.2.1.4/idVendor <== > 0bc2 > > > I replace the product name with the one from sysfs in your patch but > the patch still does not work. > +UNUSUAL_DEV(0x0bc2, 0x2037, 0x0000, 0x9999, > + "Seagate", > + "Expansion HDD", > + USB_SC_DEVICE, USB_PR_DEVICE, NULL, > + US_FL_NO_REPORT_LUNS), > > +UNUSUAL_DEV(0x0bc2, 0x231a, 0x0000, 0x9999, > + "Seagate", > + "Expansion", > + USB_SC_DEVICE, USB_PR_DEVICE, NULL, > + US_FL_NO_REPORT_LUNS), > > > > How could I see if the quirk is applied? > Does sysfs: > head /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/quirks > 0x0 > tells it was not? > > > On the 0x2037 box: > lsusb -t > /: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, > 480M > |__ Port 001: Dev 002, If 0, Class=Vendor Specific Class, > Driver=[none], 12M > |__ Port 001: Dev 002, If 1, Class=Audio, Driver=[none], 12M > |__ Port 001: Dev 002, If 2, Class=Audio, Driver=[none], 12M > |__ Port 005: Dev 003, If 0, Class=Hub, Driver=hub/4p, 480M > |__ Port 002: Dev 005, If 0, Class=Vendor Specific Class, > Driver=cp210x, 12M > |__ Port 003: Dev 008, If 0, Class=Wireless, Driver=btusb, > 12M > |__ Port 003: Dev 008, If 1, Class=Wireless, Driver=btusb, > 12M > |__ Port 009: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M > |__ Port 003: Dev 009, If 0, Class=Human Interface Device, > Driver=usbhid, 1.5M > |__ Port 003: Dev 009, If 1, Class=Human Interface Device, > Driver=usbhid, 1.5M > |__ Port 004: Dev 010, If 0, Class=Human Interface Device, > Driver=usbhid, 1.5M > |__ Port 004: Dev 010, If 1, Class=Human Interface Device, > Driver=usbhid, 1.5M > /: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, > 5000M > |__ Port 002: Dev 002, If 0, Class=Mass Storage, Driver=uas, > 5000M > |__ Port 003: Dev 003, If 0, Class=Mass Storage, Driver=usb- > storage, 5000M > |__ Port 005: Dev 004, If 0, Class=Hub, Driver=hub/4p, 5000M > |__ Port 006: Dev 005, If 0, Class=Mass Storage, Driver=usb- > storage, 5000M > > > lsusb > Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub > Bus 001 Device 002: ID 046d:08ae Logitech, Inc. QuickCam for > Notebooks > Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. Hub > Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. Hub > Bus 001 Device 005: ID 10c4:ea60 Silicon Labs CP210x UART Bridge > Bus 001 Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd > Bluetooth Dongle (HCI mode) > Bus 001 Device 009: ID 17ef:608c Lenovo Lenovo Calliope USB Keyboard > Bus 001 Device 010: ID 046d:c517 Logitech, Inc. LX710 Cordless > Desktop Laser > Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub > Bus 002 Device 002: ID 0bc2:2037 Seagate RSS LLC Expansion HDD > Bus 002 Device 003: ID 1058:1078 Western Digital Technologies, Inc. > Elements Portable (WDBUZG) > Bus 002 Device 004: ID 05e3:0626 Genesys Logic, Inc. Hub > Bus 002 Device 005: ID 08e4:017a Pioneer Corp. BD-XD07 BD/DVD/CD > Writer > > > > Mind I have not test the 0x231a device on 6.9 branch yet as the > kernel > build with the patch change is till building. I only tested the > 0x2037 > one on 6.10.0-rc3. > > > > Regards, > Alban > Note: Should I add Hans de Goede to the recipients, or only when the patch is ready? I read the code but I cannot find where the flags are applied in the uas driver (drivers/usb/storage/uas.c). In usb-storage the flow is: storage_probe drivers/usb/storage/usb.c > uas_use_uas_driver if true exit > usb_stor_probe1 > get_device_info > usb_stor_adjust_quirks > usb-storage.quirks applied but for my uas diver when usb-storage driver probe it exits in storage_probe before usb_stor_probe1 because uas_use_uas is true. When uas probe: uas_init drivers/usb/storage/uas.c > usb_register > usb_device_match+0x43/0xa0 > usb_match_id+0x70/0xb0 > usb_match_device+0x13a/0x210 usb_match_device: SUCCESS id_table idVendor 0xbc2 idProduct 0x2037 driver_info 0x10000000 devive id vendor 0xbc2 device id product 0x2037 but then I see no code to apply the flag US_FL_NO_REPORT_LUNS. Could you help me find it? I don't understand how the usb-storage.quirks "j" flag could help if the uas has no code to apply the flag. I alos see in the code that I was supposed to add more info: for 0x0bc2 0x2037: - /sys/kernel/debug/usb/devices T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0 D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 P: Vendor=0bc2 ProdID=2037 Rev=19.01 S: Manufacturer=Seagate S: Product=Expansion HDD S: SerialNumber=00000000NACSHZWL C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=896mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=uas E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 0 Alt= 1 #EPs= 4 Cls=08(stor.) Sub=06 Prot=62 Driver=uas E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms - lsusb -v Bus 002 Device 002: ID 0bc2:2037 Seagate RSS LLC Expansion HDD Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 3.20 bDeviceClass 0 [unknown] bDeviceSubClass 0 [unknown] bDeviceProtocol 0 bMaxPacketSize0 9 idVendor 0x0bc2 Seagate RSS LLC idProduct 0x2037 Expansion HDD bcdDevice 19.01 iManufacturer 1 Seagate iProduct 2 Expansion HDD iSerial 3 00000000NACSHZWL bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0079 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 896mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 4 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 98 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Command pipe (0x01) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 MaxStreams 32 Status pipe (0x02) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 MaxStreams 32 Data-in pipe (0x03) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 7 MaxStreams 32 Data-out pipe (0x04) Binary Object Store Descriptor: bLength 5 bDescriptorType 15 wTotalLength 0x0016 bNumDeviceCaps 2 USB 2.0 Extension Device Capability: bLength 7 bDescriptorType 16 bDevCapabilityType 2 bmAttributes 0x00000f0e BESL Link Power Management (LPM) Supported BESL value 3840 us SuperSpeed USB Device Capability: bLength 10 bDescriptorType 16 bDevCapabilityType 3 bmAttributes 0x00 wSpeedsSupported 0x000e Device can operate at Full Speed (12Mbps) Device can operate at High Speed (480Mbps) Device can operate at SuperSpeed (5Gbps) bFunctionalitySupport 1 Lowest fully-functional device speed is Full Speed (12Mbps) bU1DevExitLat 10 micro seconds bU2DevExitLat 32 micro seconds Device Status: 0x000c (Bus Powered) U1 Enabled U2 Enabled for 0x0bc2 0x231a - /sys/kernel/debug/usb/devices T: Bus=02 Lev=04 Prnt=05 Port=03 Cnt=02 Dev#= 8 Spd=5000 MxCh= 0 D: Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 P: Vendor=0bc2 ProdID=231a Rev= 7.10 S: Manufacturer=Seagate S: Product=Expansion S: SerialNumber=NAADEE3G C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=896mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=uas E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms I:* If#= 0 Alt= 1 #EPs= 4 Cls=08(stor.) Sub=06 Prot=62 Driver=uas E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms - lsusb -v Bus 002 Device 008: ID 0bc2:231a Seagate RSS LLC Expansion Portable Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 3.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 9 idVendor 0x0bc2 Seagate RSS LLC idProduct 0x231a Expansion Portable bcdDevice 7.10 iManufacturer 1 Seagate iProduct 2 Expansion iSerial 3 NAADEE3G bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0079 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 896mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 4 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 98 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Command pipe (0x01) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 MaxStreams 32 Status pipe (0x02) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 MaxStreams 32 Data-in pipe (0x03) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 7 MaxStreams 32 Data-out pipe (0x04) Binary Object Store Descriptor: bLength 5 bDescriptorType 15 wTotalLength 0x0016 bNumDeviceCaps 2 USB 2.0 Extension Device Capability: bLength 7 bDescriptorType 16 bDevCapabilityType 2 bmAttributes 0x00000f0e BESL Link Power Management (LPM) Supported BESL value 3840 us SuperSpeed USB Device Capability: bLength 10 bDescriptorType 16 bDevCapabilityType 3 bmAttributes 0x00 wSpeedsSupported 0x000e Device can operate at Full Speed (12Mbps) Device can operate at High Speed (480Mbps) Device can operate at SuperSpeed (5Gbps) bFunctionalitySupport 1 Lowest fully-functional device speed is Full Speed (12Mbps) bU1DevExitLat 10 micro seconds bU2DevExitLat 32 micro seconds Device Status: 0x0000 (Bus Powered) Cheers, Alban