Skip to contentSkip to conversation

usb: usb-storage: No additional quirks need to be added to the ECD819-SU3 optical drive.

PATCH Superseded [email protected] 4 participants 6 messages Nov 7, 2025 – Nov 11, 2025

Subsystems (2)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 usb: usb-storage: No additional quirks need to be added to the ECD819-SU3 optical drive.

From: Chen Changcheng <[email protected]>

The optical drive of ECD819-SU3 has the same vid and pid as INIC-3069, as follows:

T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  3 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=13fd ProdID=3940 Rev= 3.10
S:  Manufacturer=HL-DT-ST
S:  Product= DVD+-RW GT80N
S:  SerialNumber=423349524E4E38303338323439202020
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=144mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=02 Prot=50 Driver=usb-storage
E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=0a(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

This will result in the optical drive device also adding the quirks of US_FL_NO_ATA_1X. When performing an erase operation, it will fail, and the reason for the failure is as follows:

[  388.967742] sr 5:0:0:0: [sr0] tag#0 Send: scmd 0x00000000d20c33a7
[  388.967742] sr 5:0:0:0: [sr0] tag#0 CDB: ATA command pass through(12)/Blank a1 11 00 00 00 00 00 00 00 00 00 00
[  388.967773] sr 5:0:0:0: [sr0] tag#0 Done: SUCCESS Result: hostbyte=DID_TARGET_FAILURE driverbyte=DRIVER_OK cmd_age=0s
[  388.967773] sr 5:0:0:0: [sr0] tag#0 CDB: ATA command pass through(12)/Blank a1 11 00 00 00 00 00 00 00 00 00 00
[  388.967803] sr 5:0:0:0: [sr0] tag#0 Sense Key : Illegal Request [current]
[  388.967803] sr 5:0:0:0: [sr0] tag#0 Add. Sense: Invalid field in cdb
[  388.967803] sr 5:0:0:0: [sr0] tag#0 scsi host busy 1 failed 0
[  388.967803] sr 5:0:0:0: Notifying upper driver of completion (result 8100002)
[  388.967834] sr 5:0:0:0: [sr0] tag#0 0 sectors total, 0 bytes done.
---
 drivers/usb/storage/unusual_uas.h | 6 ++++++
 1 file changed, 6 insertions(+)
drivers/usb/storage/unusual_uas.h +6 -0
index 1477e31d7763..6d32b787bff8 100644
@@ -97,6 +97,12 @@ UNUSUAL_DEV(0x125f, 0xa94a, 0x0160, 0x0160,
 		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
 		US_FL_NO_ATA_1X),
 
+UNUSUAL_DEV(0x13fd, 0x3940, 0x0310, 0x0310,
+		"Initio Corporation",
+		"external DVD burner ECD819-SU3",
+		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+		NULL),
+
 /* Reported-by: Benjamin Tissoires <[email protected]> */
 UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999,
 		"Initio Corporation",

base-commit: 284922f4c563aa3a8558a00f2a05722133237fe8

Signature · 1 line
2.25.1
maintainer
#1 lore raw
Quoted 40 lines · On Fri, Nov 07, 2025 at 02:10:46PM +0800, [email protected] wrote:

From: Chen Changcheng <[email protected]>

The optical drive of ECD819-SU3 has the same vid and pid as INIC-3069, as follows:

T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  3 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=13fd ProdID=3940 Rev= 3.10
S:  Manufacturer=HL-DT-ST
S:  Product= DVD+-RW GT80N
S:  SerialNumber=423349524E4E38303338323439202020
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=144mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=02 Prot=50 Driver=usb-storage
E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=0a(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

This will result in the optical drive device also adding the quirks of US_FL_NO_ATA_1X. When performing an erase operation, it will fail, and the reason for the failure is as follows:

[  388.967742] sr 5:0:0:0: [sr0] tag#0 Send: scmd 0x00000000d20c33a7
[  388.967742] sr 5:0:0:0: [sr0] tag#0 CDB: ATA command pass through(12)/Blank a1 11 00 00 00 00 00 00 00 00 00 00
[  388.967773] sr 5:0:0:0: [sr0] tag#0 Done: SUCCESS Result: hostbyte=DID_TARGET_FAILURE driverbyte=DRIVER_OK cmd_age=0s
[  388.967773] sr 5:0:0:0: [sr0] tag#0 CDB: ATA command pass through(12)/Blank a1 11 00 00 00 00 00 00 00 00 00 00
[  388.967803] sr 5:0:0:0: [sr0] tag#0 Sense Key : Illegal Request [current]
[  388.967803] sr 5:0:0:0: [sr0] tag#0 Add. Sense: Invalid field in cdb
[  388.967803] sr 5:0:0:0: [sr0] tag#0 scsi host busy 1 failed 0
[  388.967803] sr 5:0:0:0: Notifying upper driver of completion (result 8100002)
[  388.967834] sr 5:0:0:0: [sr0] tag#0 0 sectors total, 0 bytes done.
---
 drivers/usb/storage/unusual_uas.h | 6 ++++++
 1 file changed, 6 insertions(+)
drivers/usb/storage/unusual_uas.h +0 -0
index 1477e31d7763..6d32b787bff8 100644
@@ -97,6 +97,12 @@ UNUSUAL_DEV(0x125f, 0xa94a, 0x0160, 0x0160,
 		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
 		US_FL_NO_ATA_1X),

drivers/usb/storage/unusual_uas.h UNUSUAL_DEV(0x125f, 0xa94a, 0x0160, 0x0160, · line 108

Quoted 10 lines
drivers/usb/storage/unusual_uas.h +6 -0
 
+UNUSUAL_DEV(0x13fd, 0x3940, 0x0310, 0x0310,
+		"Initio Corporation",
+		"external DVD burner ECD819-SU3",
+		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+		NULL),
+
 /* Reported-by: Benjamin Tissoires <[email protected]> */
 UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999,
 		"Initio Corporation",

It's unprecedented to have two quirks with the same VID and PID, where the second augments the first by virtue of its wider range of bcdDevice values.

As explained in commit 89f23d51defc ("uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069"), the original Initio Corporation quirk in unusual_uas.h was added as a copy of the corresponding quirk in unusual_devs.h, which applies only to bcdDevice = 0x0209. Should we simply limit the existing unusual_uas.h quirk in the same way?

Benjamin and Alan, you two appear to be the people who originally reported the need for this uas quirk. Do you have any objection to changing the bcdDevice range from 0x0000 - 0x9999 to 0x0209 - 0x0209? Or can you suggest a range that does not include 0x0310?

Alan Stern

#2 lore raw
Quoted 64 lines · On Fri, Nov 07, 2025 at 02:10:46PM +0800, [email protected] wrote:
Quoted 47 lines

From: Chen Changcheng <[email protected]>

The optical drive of ECD819-SU3 has the same vid and pid as INIC-3069, as follows:
T:? Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=? 3 Spd=5000 MxCh= 0 D:? Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=? 1 P:? Vendor=13fd ProdID=3940 Rev= 3.10
S:? Manufacturer=HL-DT-ST
S:? Product= DVD+-RW GT80N
S:? SerialNumber=423349524E4E38303338323439202020
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=144mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=02 Prot=50 Driver=usb-storage E:? Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:? Ad=0a(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

This will result in the optical drive device also adding
the quirks of US_FL_NO_ATA_1X. When performing an erase operation,
it will fail, and the reason for the failure is as follows:
[? 388.967742] sr 5:0:0:0: [sr0] tag#0 Send: scmd 0x00000000d20c33a7
[? 388.967742] sr 5:0:0:0: [sr0] tag#0 CDB: ATA command pass through(12)/Blank a1 11 00 00 00 00 00 00 00 00 00 00 [? 388.967773] sr 5:0:0:0: [sr0] tag#0 Done: SUCCESS Result: hostbyte=DID_TARGET_FAILURE driverbyte=DRIVER_OK cmd_age=0s [? 388.967773] sr 5:0:0:0: [sr0] tag#0 CDB: ATA command pass through(12)/Blank a1 11 00 00 00 00 00 00 00 00 00 00 [? 388.967803] sr 5:0:0:0: [sr0] tag#0 Sense Key : Illegal Request [current]
[? 388.967803] sr 5:0:0:0: [sr0] tag#0 Add. Sense: Invalid field in cdb
[? 388.967803] sr 5:0:0:0: [sr0] tag#0 scsi host busy 1 failed 0
[? 388.967803] sr 5:0:0:0: Notifying upper driver of completion (result 8100002)
[? 388.967834] sr 5:0:0:0: [sr0] tag#0 0 sectors total, 0 bytes done.

---
? drivers/usb/storage/unusual_uas.h | 6 ++++++
? 1 file changed, 6 insertions(+)

drivers/usb/storage/unusual_uas.h +0 -0
index 1477e31d7763..6d32b787bff8 100644
@@ -97,6 +97,12 @@ UNUSUAL_DEV(0x125f, 0xa94a, 0x0160, 0x0160,
 ? 		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
 ? 		US_FL_NO_ATA_1X),

?

drivers/usb/storage/unusual_uas.h +6 -0
+UNUSUAL_DEV(0x13fd, 0x3940, 0x0310, 0x0310,
+		"Initio Corporation",
+		"external DVD burner ECD819-SU3",
+		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+		NULL),
+
Quoted 3 lines

? /* Reported-by: Benjamin Tissoires <[email protected]> */ ? UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999,
? "Initio Corporation",

It's unprecedented to have two quirks with the same VID and PID, where the second augments the first by virtue of its wider range of bcdDevice values.

As explained in commit 89f23d51defc ("uas: Add US_FL_IGNORE_RESIDUE for Initio Corporation INIC-3069"), the original Initio Corporation quirk in unusual_uas.h was added as a copy of the corresponding quirk in unusual_devs.h, which applies only to bcdDevice = 0x0209.? Should we simply limit the existing unusual_uas.h quirk in the same way?

Quoted 6 lines

Benjamin and Alan, you two appear to be the people who originally reported the need for this uas quirk.? Do you have any objection to changing the bcdDevice range from 0x0000 - 0x9999 to 0x0209 - 0x0209?? Or can you suggest a range that does not include 0x0310?

Alan Stern

Of course, we cannot have two quirks on devices with the same PID and VID. However, since we do not have the INIC-3069 USB device here, we cannot determine how to narrow down the scope. As you suggested,
it would be best to narrow the bcdDevice range to 0x0209 - 0x0209.

Chen Changcheng

#3 lore raw
In reply to Alan Stern
Quoted 78 lines · Alan Stern
Quoted 58 lines · On Fri, Nov 07, 2025 at 02:10:46PM +0800, [email protected] wrote:

From: Chen Changcheng <[email protected]>

The optical drive of ECD819-SU3 has the same vid and pid as INIC- 3069,
as follows:
T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  3 Spd=5000 MxCh= 0 D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1 P:  Vendor=13fd ProdID=3940 Rev= 3.10
S:  Manufacturer=HL-DT-ST
S:  Product= DVD+-RW GT80N
S:  SerialNumber=423349524E4E38303338323439202020
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=144mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=02 Prot=50 Driver=usb- storage
E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=0a(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

This will result in the optical drive device also adding the quirks of US_FL_NO_ATA_1X. When performing an erase operation, it will fail, and the reason for the failure is as follows:
[  388.967742] sr 5:0:0:0: [sr0] tag#0 Send: scmd 0x00000000d20c33a7
[  388.967742] sr 5:0:0:0: [sr0] tag#0 CDB: ATA command pass through(12)/Blank a1 11 00 00 00 00 00 00 00 00 00 00
[  388.967773] sr 5:0:0:0: [sr0] tag#0 Done: SUCCESS Result:
hostbyte=DID_TARGET_FAILURE driverbyte=DRIVER_OK cmd_age=0s [  388.967773] sr 5:0:0:0: [sr0] tag#0 CDB: ATA command pass through(12)/Blank a1 11 00 00 00 00 00 00 00 00 00 00
[  388.967803] sr 5:0:0:0: [sr0] tag#0 Sense Key : Illegal Request [current]
[  388.967803] sr 5:0:0:0: [sr0] tag#0 Add. Sense: Invalid field in cdb
[  388.967803] sr 5:0:0:0: [sr0] tag#0 scsi host busy 1 failed 0 [  388.967803] sr 5:0:0:0: Notifying upper driver of completion (result 8100002)
[  388.967834] sr 5:0:0:0: [sr0] tag#0 0 sectors total, 0 bytes done.

---
 drivers/usb/storage/unusual_uas.h | 6 ++++++

 1 file changed, 6 insertions(+)
drivers/usb/storage/unusual_uas.h +0 -0
index 1477e31d7763..6d32b787bff8 100644
@@ -97,6 +97,12 @@ UNUSUAL_DEV(0x125f, 0xa94a, 0x0160, 0x0160,
  		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
  		US_FL_NO_ATA_1X),

drivers/usb/storage/unusual_uas.h +6 -0
+UNUSUAL_DEV(0x13fd, 0x3940, 0x0310, 0x0310,
+		"Initio Corporation",
+		"external DVD burner ECD819-SU3",
+		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+		NULL),
+
Quoted 4 lines

 /* Reported-by: Benjamin Tissoires <[email protected]> */
 UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999,
  "Initio Corporation",

It's unprecedented to have two quirks with the same VID and PID, where
the second augments the first by virtue of its wider range of bcdDevice
values.

As explained in commit 89f23d51defc ("uas: Add US_FL_IGNORE_RESIDUE for
Initio Corporation INIC-3069"), the original Initio Corporation quirk in unusual_uas.h was added as a copy of the corresponding quirk in
unusual_devs.h, which applies only to bcdDevice = 0x0209.  Should we simply limit the existing unusual_uas.h quirk in the same way?

Quoted 5 lines

Benjamin and Alan, you two appear to be the people who originally reported the need for this uas quirk.  Do you have any objection to changing the bcdDevice range from 0x0000 - 0x9999 to 0x0209 - 0x0209?
Or can you suggest a range that does not include 0x0310?

Can only provide lsusb details for my device. Still need the residue flag for use with MakeMKV.

Bus 002 Device 002: ID 13fd:3940 Initio Corporation external DVD burner ECD819-SU3
Negotiated speed: SuperSpeed (5Gbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00

  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0
  bMaxPacketSize0         9
  idVendor           0x13fd Initio Corporation
  idProduct          0x3940 external DVD burner ECD819-SU3
  bcdDevice            3.09
  iManufacturer           1 Optiarc
  iProduct                2 BD ROM BC-5500H
  iSerial                 3 20202020202020202020202020202020
  bNumConfigurations      1
Signature · 1 line
Alan.
#4 lore raw
In reply to [email protected]
kernel test robot noticed the following build warnings:

Hi,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 284922f4c563aa3a8558a00f2a05722133237fe8]

url:    https://github.com/intel-lab-lkp/linux/commits/ccc194101-163-com/usb-usb-storage-No-additional-quirks-need-to-be-added-to-the-ECD819-SU3-optical-drive/20251107-141330
base:   284922f4c563aa3a8558a00f2a05722133237fe8
patch link:    https://lore.kernel.org/r/20251107061046.32339-1-ccc194101%40163.com
patch subject: [PATCH] usb: usb-storage: No additional quirks need to be added to the ECD819-SU3 optical drive.
config: nios2-randconfig-001-20251109 (https://download.01.org/0day-ci/archive/20251109/[email protected]/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251109/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

>> drivers/usb/storage/uas.c:928:24: warning: initialization of 'long unsigned int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
     928 |         .driver_info = (flags) }
         |                        ^
   drivers/usb/storage/unusual_uas.h:100:1: note: in expansion of macro 'UNUSUAL_DEV'
     100 | UNUSUAL_DEV(0x13fd, 0x3940, 0x0310, 0x0310,
         | ^~~~~~~~~~~
   drivers/usb/storage/uas.c:928:24: note: (near initialization for 'uas_usb_ids[9].driver_info')
     928 |         .driver_info = (flags) }
         |                        ^
   drivers/usb/storage/unusual_uas.h:100:1: note: in expansion of macro 'UNUSUAL_DEV'
     100 | UNUSUAL_DEV(0x13fd, 0x3940, 0x0310, 0x0310,
         | ^~~~~~~~~~~

Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for LEDS_EXPRESSWIRE Depends on [n]: GPIOLIB [=n] || NEW_LEDS [=y] && GPIOLIB [=n] Selected by [m]:
- BACKLIGHT_KTD2801 [=m] && HAS_IOMEM [=y] && BACKLIGHT_CLASS_DEVICE [=y]

vim +928 drivers/usb/storage/uas.c

115bb1ffa54c39 Matthew Wilcox 2010-10-07  923  
79b4c06112f12c Hans de Goede  2013-10-25  924  #define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \
79b4c06112f12c Hans de Goede  2013-10-25  925  		    vendorName, productName, useProtocol, useTransport, \
79b4c06112f12c Hans de Goede  2013-10-25  926  		    initFunction, flags) \
79b4c06112f12c Hans de Goede  2013-10-25  927  { USB_DEVICE_VER(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax), \

79b4c06112f12c Hans de Goede 2013-10-25 @928 .driver_info = (flags) }
79b4c06112f12c Hans de Goede 2013-10-25 929

Signature · 2 lines
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
#5 lore raw
In reply to [email protected]
kernel test robot noticed the following build errors:

Hi,

kernel test robot noticed the following build errors:

[auto build test ERROR on 284922f4c563aa3a8558a00f2a05722133237fe8]

url:    https://github.com/intel-lab-lkp/linux/commits/ccc194101-163-com/usb-usb-storage-No-additional-quirks-need-to-be-added-to-the-ECD819-SU3-optical-drive/20251107-141330
base:   284922f4c563aa3a8558a00f2a05722133237fe8
patch link:    https://lore.kernel.org/r/20251107061046.32339-1-ccc194101%40163.com
patch subject: [PATCH] usb: usb-storage: No additional quirks need to be added to the ECD819-SU3 optical drive.
config: loongarch-randconfig-001-20251109 (https://download.01.org/0day-ci/archive/20251109/[email protected]/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project b9ea93cd5c37fb6d606502fd01208dd48330549d)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251109/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All errors (new ones prefixed by >>):

In file included from drivers/usb/storage/uas.c:931:

>> drivers/usb/storage/unusual_uas.h:100:1: error: incompatible pointer to integer conversion initializing 'kernel_ulong_t' (aka 'unsigned long') with an expression of type 'void *' [-Wint-conversion]
     100 | UNUSUAL_DEV(0x13fd, 0x3940, 0x0310, 0x0310,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     101 |                 "Initio Corporation",
         |                 ~~~~~~~~~~~~~~~~~~~~~
     102 |                 "external DVD burner ECD819-SU3",
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     103 |                 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     104 |                 NULL),
         |                 ~~~~~
   drivers/usb/storage/uas.c:928:17: note: expanded from macro 'UNUSUAL_DEV'
     928 |         .driver_info = (flags) }
         |                        ^~~~~~~

1 error generated.

vim +100 drivers/usb/storage/unusual_uas.h

 > 100	UNUSUAL_DEV(0x13fd, 0x3940, 0x0310, 0x0310,

101 "Initio Corporation",
102 "external DVD burner ECD819-SU3",
103 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
104 NULL),
105

Signature · 2 lines
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki