Page MenuHomeFreeBSD

usb_quirks: add quirk for HPE iLO Virtual CD-ROM
Needs ReviewPublic

Authored by yuri_aetern.org on Jun 25 2022, 11:18 PM.
Tags
None
Referenced Files
Unknown Object (File)
Dec 26 2023, 4:42 PM
Unknown Object (File)
Dec 20 2023, 4:39 AM
Unknown Object (File)
Dec 13 2023, 8:07 AM
Unknown Object (File)
Nov 3 2023, 10:58 PM
Unknown Object (File)
Oct 21 2023, 4:21 PM
Unknown Object (File)
Jul 27 2023, 4:31 PM
Unknown Object (File)
May 27 2023, 6:59 PM
Unknown Object (File)
May 13 2023, 3:37 AM
Subscribers
This revision needs review, but all specified reviewers are disabled or inactive.

Details

Reviewers
hselasky
Summary

Add quirk for iLO Virtual CD-ROM found on HPE systems.

Test Plan

HPE ProLiant DL380 Gen10. Without setting the quirk mounting root from installation ISO fails with error 19.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

Also set UQ_MSC_NO_GETMAXLUN as it's auto-added anyway.

Can you dump the usb configuration descriptor using "usbdump dump_curr_config_desc" for your device?

Sounds strange that ATAPI is not selected by default when CD-ROMs are used!

--HPS

Can you dump the usb configuration descriptor using "usbdump dump_curr_config_desc" for your device?

Sounds strange that ATAPI is not selected by default when CD-ROMs are used!

--HPS

I guess you wanted the usbconfig in there? Here you go:

ugen1.3: <iLO Virtual CD-ROM> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (0mA)


 Configuration index 0

    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x0020
    bNumInterfaces = 0x0001
    bConfigurationValue = 0x0001
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x00c0
    bMaxPower = 0x0000

    Interface 0
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0000
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x0008  <Mass storage>
      bInterfaceSubClass = 0x0002
      bInterfaceProtocol = 0x0050
      iInterface = 0x0010  <Virtual CD-ROM>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000

Please note that it seems that da driver attaches to this device, and not cd.

What's interesting, if I "insert" the media after the system is booted, which makes the umass device to "connect", the quirks do NOT seem to be applied, and the device is unusable.

Hi,

The USB storage driver checks the interface sub-class (bInterfaceSubClass = 0x0002) to select SCSI or ATAPI.
BTW: SCSI also supports CD-ROMs.

sys/dev/usb/storage/umass.c: case UISUBCLASS_SCSI:
sys/dev/usb/storage/umass.c: case UISUBCLASS_UFI:
sys/dev/usb/storage/umass.c: case UISUBCLASS_RBC:
sys/dev/usb/storage/umass.c: case UISUBCLASS_SFF8020I:
sys/dev/usb/storage/umass.c: case UISUBCLASS_SFF8070I:

sys/dev/usb/usb.h:#define UISUBCLASS_RBC 1
sys/dev/usb/usb.h:#define UISUBCLASS_SFF8020I 2
sys/dev/usb/usb.h:#define UISUBCLASS_QIC157 3
sys/dev/usb/usb.h:#define UISUBCLASS_UFI 4
sys/dev/usb/usb.h:#define UISUBCLASS_SFF8070I 5
sys/dev/usb/usb.h:#define UISUBCLASS_SCSI 6

Can you check if this field changes?

Did you check if a BIOS/ILO firmware update would fix your issue?

Did you report this issue to HP?

So I'm not sure if quirking this is a good idea or not. It should not be required to quirk this at all. This stuff should just work!

You are sure you didn't mix .iso images and regular disk images, when providing the file for the virtual-DISK / CD-ROM?

Did you "Google" the product and vendor ID's in hexadecimal, to see if Linux or other systems have similar such quirks?