1

I have a looper device that can be connected to a PC as mass storage device. I know this because Windows offers me to choose how I want to mount it. However, Linux does not mount it as mass storage.

I have followed the guidance here : modified + copied 69-libmtp.rules to skip mtp device mounting, and also created my own rules file (/etc/udev/rules.d/12-ownrules.rules) as described there:

# /etc/udev/rules.d/12-ownrules.rules
SUBSYSTEMS=="usb", ENV{MODALIAS}=="usb:4353:4b4d", ENV{MODALIAS}="usb-storage"

However,(on Ubuntu 22.04, but also on Debian) udev tries to mount it as a sound card. Syslog:

kernel: [259420.947630] usb 3-1: New USB device found, idVendor=4353, idProduct=4b4d, bcdDevice= 1.00
kernel: [259420.947644] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: [259420.947648] usb 3-1: Product: SINCO
kernel: [259420.947651] usb 3-1: Manufacturer: Jieli Technology
kernel: [259420.947654] usb 3-1: SerialNumber: 433039343033362E
kernel: [259420.953224] usb 3-1: Quirk or no altset; falling back to MIDI 1.0

systemd-udevd[956644]: controlC3: Process '/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore 3' failed with exit code 99. pulseaudio[5540]: Failed to find a working profile. pulseaudio[5540]: Failed to load module "module-alsa-card" (argument: "device_id="3" name="usb-Jieli_Technology_SINCO_433039343033362E-00" card_name="alsa_card.usb-Jieli_Technology_SINCO_433039343033362E-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1""): initialization failed.

What is wrong ? Where is the alsa sound card detection specified and how to override that ? Per documentation, my own rules under /etc/udev/rules.d should take precedence, so why isn't it mounted as a mass storage ?

Edit: The lsusb -v output says:


Bus 003 Device 084: ID 4353:4b4d Jieli Technology SINCO
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x4353 
  idProduct          0x4b4d 
  bcdDevice            1.00
  iManufacturer           1 Jieli Technology
  iProduct                2 SINCO
  iSerial                 3 433039343033362E
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0083
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              9 USB-Midi
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0009
        bInCollection           1
        baInterfaceNr(0)        1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      3 MIDI Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      MIDIStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0041
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                 2
        bNrInputPins            1
        baSourceID( 0)          1
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                 8
        bNrInputPins            1
        baSourceID( 0)          7
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                 7
        iJack                   0 
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       8
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         1
          baAssocJackID( 0)       1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass         6 Imaging
      bInterfaceSubClass      1 Still Image Capture
      bInterfaceProtocol      1 Picture Transfer Protocol (PIMA 15470)
      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     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               6
Device Status:     0x0000
  (Bus Powered)

I guess the reason for alsa and gphoto trying the device is because of the audio, MIDI and PTP interfaces listed. Mass storage is not listed. However, the Windows machine that could mount it as mass storage did not have any special drivers installed for the device.

Edit 2: The Usbtreeview log is: (hexdumps removed)


    =========================== USB Port4 ===========================

Connection Status : 0x01 (Device is connected) Port Chain : 1-4 Properties : 0x01 IsUserConnectable : yes PortIsDebugCapable : no PortHasMultiCompanions : no PortConnectorIsTypeC : no ConnectionIndex : 0x04 (Port 4) CompanionIndex : 0 CompanionHubSymLnk : USB#ROOT_HUB30#4&3881863d&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8} CompanionPortNumber : 0x0D (Port 13) -> CompanionPortChain : 1-13

  ========================== Summary =========================

Vendor ID : 0x4353 (Unknown Vendor) Product ID : 0x4B4D Manufacturer String : Jieli Product String : SINCO Serial : 433039343033362E USB Version : 1.1 Port maximum Speed : High-Speed (Companion Port 1-13 is doing the SuperSpeed) Device maximum Speed : Full-Speed Device Connection Speed : Full-Speed Self powered : no Demanded Current : 100 mA Used Endpoints : 6

  ======================== USB Device ========================

    +++++++++++++++++ Device Information ++++++++++++++++++

Device Description : USB composite device Device Path : \?\USB#VID_4353&PID_4B4D#433039343033362E#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE) Kernel Name : \Device\USBPDO-4 Device ID : USB\VID_4353&PID_4B4D\433039343033362E Hardware IDs : USB\VID_4353&PID_4B4D&REV_0100 USB\VID_4353&PID_4B4D Driver KeyName : {36fc9e60-c465-11cf-8056-444553540000}\0006 (GUID_DEVCLASS_USB) Driver : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.22621.3672 Date: 2024-08-12 Company: Microsoft Corporation) Driver Inf : C:\WINDOWS\inf\usb.inf Legacy BusType : PNPBus Class : USB Class GUID : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB) Service : usbccgp Enumerator : USB Location Info : Port_#0004.Hub_#0002 Address : 4 Location IDs : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(4), ACPI(SB)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS04) Container ID : {36ad08c2-9303-504b-a7ed-5c884fb32618} Manufacturer Info : (Standard USB controller) Capabilities : 0x94 (Removable, UniqueID, SurpriseRemovalOK) Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER) Problem Code : 0 Address : 4 EnhancedPowerMgmtEnabled : 0 Power State : D0 (supported: D0, D3, wake from D0)

    ---------------- Connection Information ---------------

...

    --------------- Connection Information V2 -------------

... ---------------------- Device Descriptor ---------------------- bLength : 0x12 (18 bytes) bDescriptorType : 0x01 (Device Descriptor) bcdUSB : 0x110 (USB Version 1.1) bDeviceClass : 0x00 (defined by the interface descriptors) bDeviceSubClass : 0x00 bDeviceProtocol : 0x00 bMaxPacketSize0 : 0x40 (64 bytes) idVendor : 0x4353 (Unknown Vendor) idProduct : 0x4B4D bcdDevice : 0x0100 iManufacturer : 0x01 (String Descriptor 1) Language 0x0409 : "Jieli Technology" iProduct : 0x02 (String Descriptor 2) Language 0x0409 : "SINCO" iSerialNumber : 0x03 (String Descriptor 3) Language 0x0409 : "433039343033362E" bNumConfigurations : 0x01 (1 Configuration)

------------------ Configuration Descriptor -------------------

bLength : 0x09 (9 bytes) bDescriptorType : 0x02 (Configuration Descriptor) wTotalLength : 0x0083 (131 bytes) bNumInterfaces : 0x03 (3 Interfaces) bConfigurationValue : 0x01 (Configuration 1) iConfiguration : 0x00 (No String Descriptor) bmAttributes : 0x80 D7: Reserved, set 1 : 0x01 D6: Self Powered : 0x00 (no) D5: Remote Wakeup : 0x00 (no) D4..0: Reserved, set 0 : 0x00 MaxPower : 0x32 (100 mA)

    ---------------- Interface Descriptor -----------------

bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x00 (Interface 0) bAlternateSetting : 0x00 bNumEndpoints : 0x00 (Default Control Pipe only) bInterfaceClass : 0x01 (Audio) bInterfaceSubClass : 0x01 (Audio Control) bInterfaceProtocol : 0x00 iInterface : 0x09 (String Descriptor 9) Language 0x0409 : "USB-Midi"

    ------ Audio Control Interface Header Descriptor ------

bLength : 0x09 (9 bytes) bDescriptorType : 0x24 (Audio Interface Descriptor) bDescriptorSubtype : 0x01 (Header) bcdADC : 0x0100 wTotalLength : 0x0009 (9 bytes) bInCollection : 0x01 baInterfaceNr[1] : 0x01

    ---------------- Interface Descriptor -----------------

bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x01 (Interface 1) bAlternateSetting : 0x00 bNumEndpoints : 0x02 (2 Endpoints) bInterfaceClass : 0x01 (Audio) bInterfaceSubClass : 0x03 (MIDI Streaming) bInterfaceProtocol : 0x00 iInterface : 0x00 (No String Descriptor)

    - MIDI Adapter Class specific MS Interface Descriptor -

bLength : 0x07 (7 bytes) bDescriptorType : 0x24 (Class Specific Interface Descriptor) bDescriptorSubtype : 0x01 (MS Header) bcdADC : 0x0100 wTotalLength : 0x0041 (65 bytes)

    ---------------- MIDI IN Jack Descriptor --------------

bLength : 0x06 (6 bytes) bDescriptorType : 0x24 (Class Specific Interface Descriptor) bDescriptorSubtype : 0x02 (MIDI_IN_JACK) bJackType : 0x01 (Embedded) bJackID : 0x01 (ID=1) iJack : 0x00 (No String Descriptor)

    --------------- MIDI OUT Jack Descriptor --------------

bLength : 0x09 (9 bytes) bDescriptorType : 0x24 (Class Specific Interface Descriptor) bDescriptorSubtype : 0x03 (MIDI_OUT_JACK) bJackType : 0x02 (External) bJackID : 0x02 (ID=2) bNrInputPins : 0x01 (1 pin) baSourceID[1] : 0x01 (input pin connected to entity ID=1) baSourcePin[1] : 0x01 (connected to input pin number 1 iJack : 0x00 (No String Descriptor)

    --------------- MIDI OUT Jack Descriptor --------------

bLength : 0x09 (9 bytes) bDescriptorType : 0x24 (Class Specific Interface Descriptor) bDescriptorSubtype : 0x03 (MIDI_OUT_JACK) bJackType : 0x01 (Embedded) bJackID : 0x08 (ID=8) bNrInputPins : 0x01 (1 pin) baSourceID[1] : 0x07 (input pin connected to entity ID=7) baSourcePin[1] : 0x01 (connected to input pin number 1 iJack : 0x00 (No String Descriptor)

    ---------------- MIDI IN Jack Descriptor --------------

bLength : 0x06 (6 bytes) bDescriptorType : 0x24 (Class Specific Interface Descriptor) bDescriptorSubtype : 0x02 (MIDI_IN_JACK) bJackType : 0x02 (External) bJackID : 0x07 (ID=7) iJack : 0x00 (No String Descriptor)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x09 (9 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x84 (Direction=IN EndpointID=4) bmAttributes : 0x02 (TransferType=Bulk) wMaxPacketSize : 0x0040 (64 bytes) bInterval : 0x00 (0 ms) bRefresh : 0x00 bSynchAddress : 0x00

    --- Class-Specific MS Bulk Data Endpoint Descriptor ---

bLength : 0x05 (5 bytes) bDescriptorType : 0x25 (Audio Endpoint Descriptor) bDescriptorSubtype : 0x01 (MS General) bNumEmbMIDIJack : 0x01 (1 embedded MIDI jack) baAssocJackID(1) : 0x08 (Jack(1) ID=8)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x09 (9 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x04 (Direction=OUT EndpointID=4) bmAttributes : 0x02 (TransferType=Bulk) wMaxPacketSize : 0x0040 (64 bytes) bInterval : 0x00 (0 ms) bRefresh : 0x00 bSynchAddress : 0x00

    --- Class-Specific MS Bulk Data Endpoint Descriptor ---

bLength : 0x05 (5 bytes) bDescriptorType : 0x25 (Audio Endpoint Descriptor) bDescriptorSubtype : 0x01 (MS General) bNumEmbMIDIJack : 0x01 (1 embedded MIDI jack) baAssocJackID(1) : 0x01 (Jack(1) ID=1)

    ---------------- Interface Descriptor -----------------

bLength : 0x09 (9 bytes) bDescriptorType : 0x04 (Interface Descriptor) bInterfaceNumber : 0x02 (Interface 2) bAlternateSetting : 0x00 bNumEndpoints : 0x03 (3 Endpoints) bInterfaceClass : 0x06 (Image) bInterfaceSubClass : 0x01 (Still Imaging device) bInterfaceProtocol : 0x01 iInterface : 0x00 (No String Descriptor)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x07 (7 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x81 (Direction=IN EndpointID=1) bmAttributes : 0x02 (TransferType=Bulk) wMaxPacketSize : 0x0040 (64 bytes) bInterval : 0x00 (ignored)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x07 (7 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x01 (Direction=OUT EndpointID=1) bmAttributes : 0x02 (TransferType=Bulk) wMaxPacketSize : 0x0040 (64 bytes) bInterval : 0x00 (ignored)

    ----------------- Endpoint Descriptor -----------------

bLength : 0x07 (7 bytes) bDescriptorType : 0x05 (Endpoint Descriptor) bEndpointAddress : 0x82 (Direction=IN EndpointID=2) bmAttributes : 0x03 (TransferType=Interrupt) wMaxPacketSize : 0x0040 (64 bytes) bInterval : 0x06 (6 ms)

  -------------------- String Descriptors -------------------
         ------ String Descriptor 0 ------

bLength : 0x04 (4 bytes) bDescriptorType : 0x03 (String Descriptor) Language ID[0] : 0x0409 (English - United States) ------ String Descriptor 1 ------ bLength : 0x22 (34 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "Jieli Technology"

         ------ String Descriptor 2 ------

bLength : 0x0C (12 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "SINCO" ------ String Descriptor 3 ------ bLength : 0x22 (34 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "433039343033362E" ------ String Descriptor 9 ------ bLength : 0x12 (18 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "USB-Midi"

    +++++++++++++++++ Device Information ++++++++++++++++++

Friendly Name : USB-Midi Device Description : USB audio device Device Path 1 : \?\USB#VID_4353&PID_4B4D&MI_00#6&26ad1c9d&0&0000#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global (AM_KSCATEGORY_AUDIO) Device Path 2 : \?\USB#VID_4353&PID_4B4D&MI_00#6&26ad1c9d&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_CAPTURE) Device Path 3 : \?\USB#VID_4353&PID_4B4D&MI_00#6&26ad1c9d&0&0000#{65e8773e-8f56-11d0-a3b9-00a0c9223196}\global (AM_KSCATEGORY_RENDER) Kernel Name : \Device\000002ab Device ID : USB\VID_4353&PID_4B4D&MI_00\6&26AD1C9D&0&0000 Hardware IDs : USB\VID_4353&PID_4B4D&REV_0100&MI_00 USB\VID_4353&PID_4B4D&MI_00 Driver KeyName : {4d36e96c-e325-11ce-bfc1-08002be10318}\0007 (GUID_DEVCLASS_MEDIA) Driver : \SystemRoot\system32\drivers\usbaudio.sys (Version: 10.0.22621.3958 Date: 2024-08-18 Company: Microsoft Corporation) Driver Inf : C:\WINDOWS\inf\wdma_usb.inf Legacy BusType : PNPBus Class : MEDIA Class GUID : {4d36e96c-e325-11ce-bfc1-08002be10318} (GUID_DEVCLASS_MEDIA) Service : usbaudio Enumerator : USB Location Info : 0000.0014.0000.004.000.000.000.000.000 Address : 4 Manufacturer Info : (General USB audio) Capabilities : 0xA0 (SilentInstall, SurpriseRemovalOK) Status : 0x0180200A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER) Problem Code : 0 EnhancedPowerMgmtEnabled : 0 Power State : D0 (supported: D0, D3, wake from D0)

    +++++++++++++++++ Device Information ++++++++++++++++++

Friendly Name : USB-Midi [0] Device Description : Generic software device Device Path : \?\SWD#MMDEVAPI#MIDII_E318B491.P_0000#{6dc23320-ab33-4ce4-80d4-bbb3ebbf2814} (DEVINTERFACE_MIDI_OUTPUT) Kernel Name : \Device\000002ae Device ID : SWD\MMDEVAPI\MIDII_E318B491.P_0000 Driver KeyName : {62f9c741-b25a-46ce-b54c-9bccce08b6f2}\0007 (GUID_DEVCLASS_SWD) Driver Inf : C:\WINDOWS\inf\c_swdevice.inf Legacy BusType : PNPBus Class : SoftwareDevice Class GUID : {62f9c741-b25a-46ce-b54c-9bccce08b6f2} (GUID_DEVCLASS_SWD) Enumerator : SWD Location Info : - Address : 4294967295 (0xFFFFFFFF) Manufacturer Info : Microsoft Capabilities : 0xD0 (UniqueID, RawDeviceOK, SurpriseRemovalOK) Status : 0x0180200A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER) Problem Code : 0 EnhancedPowerMgmtEnabled : 0 Power State : D0 (supported: D0, D3)

    +++++++++++++++++ Device Information ++++++++++++++++++

Friendly Name : USB-Midi [1] Device Description : Generic software device Device Path : \?\SWD#MMDEVAPI#MIDII_E318B491.P_0001#{504be32c-ccf6-4d2c-b73f-6f8b3747e22b} (DEVINTERFACE_MIDI_INPUT) Kernel Name : \Device\000002af Device ID : SWD\MMDEVAPI\MIDII_E318B491.P_0001 Driver KeyName : {62f9c741-b25a-46ce-b54c-9bccce08b6f2}\0008 (GUID_DEVCLASS_SWD) Driver Inf : C:\WINDOWS\inf\c_swdevice.inf Legacy BusType : PNPBus Class : SoftwareDevice Class GUID : {62f9c741-b25a-46ce-b54c-9bccce08b6f2} (GUID_DEVCLASS_SWD) Enumerator : SWD Location Info : - Address : 4294967295 (0xFFFFFFFF) Manufacturer Info : Microsoft Capabilities : 0xD0 (UniqueID, RawDeviceOK, SurpriseRemovalOK) Status : 0x0180200A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER) Problem Code : 0 EnhancedPowerMgmtEnabled : 0 Power State : D0 (supported: D0, D3)

    +++++++++++++++++ Device Information ++++++++++++++++++

Friendly Name : LOOPER Device Description : LOOPER Device Path 1 : \?\USB#VID_4353&PID_4B4D&MI_02#6&26ad1c9d&0&0002#{f33fdc04-d1ac-4e8e-9a30-19bbd4b108ae} (GUID_DEVINTERFACE_WPD_AUDIO) Device Path 2 : \?\USB#VID_4353&PID_4B4D&MI_02#6&26ad1c9d&0&0002#{6ac27878-a6fa-4155-ba85-f98f491d4f33} (GUID_DEVINTERFACE_WPD) Device Path 3 : \?\USB#VID_4353&PID_4B4D&MI_02#6&26ad1c9d&0&0002#{6bdd1fc6-810f-11d0-bec7-08002be2092f} (GUID_DEVINTERFACE_IMAGE) Kernel Name : \Device\000002ac Device ID : USB\VID_4353&PID_4B4D&MI_02\6&26AD1C9D&0&0002 Hardware IDs : USB\VID_4353&PID_4B4D&REV_0100&MI_02 USB\VID_4353&PID_4B4D&MI_02 Driver KeyName : {eec5ad98-8080-425f-922a-dabf3de3f69a}\0002 (GUID_DEVCLASS_WPD) Driver : \SystemRoot\system32\DRIVERS\WUDFRd.sys (Version: 10.0.22621.3672 Date: 2024-08-12 Company: Microsoft Corporation) Driver Inf : C:\WINDOWS\inf\wpdmtp.inf Legacy BusType : PNPBus Class : WPD Class GUID : {eec5ad98-8080-425f-922a-dabf3de3f69a} (GUID_DEVCLASS_WPD) Service : WUDFWpdMtp Enumerator : USB Location Info : 0000.0014.0000.004.000.000.000.000.000 Address : 6 Manufacturer Info : SINCO Capabilities : 0x80 (SurpriseRemovalOK) Status : 0x0180200A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER) Problem Code : 0 Lower Filters : WinUsb EnhancedPowerMgmtEnabled : 0 IdleInWorkingState : 0 Power State : D0 (supported: D0, D3, wake from D0)

         ++++++++++++++ WPD Information +++++++++++++++

Manufacturer : SINCO Model : LOOPER Device Type : 0 (Generic) Device Protocol : MTP: 1.00 Power Source : 0 (Battery) -------- Storage -------- ID : s10001 Type : 3 (Fixed RAM) Size : 4.3 GB / 4 GiB / 4 294 967 296 Available : 4.3 GB / 4 GiB / 4 294 967 296 File System : Generic multilayer

So it appears that when windows accesses the files on it, it does it via MTP. In this case, the question would be, how to accessing the files on the device via MTP.

jmtpfs -l lists no devices.

tzp
  • 111

2 Answers2

1

What is wrong ? Where is the alsa sound card detection specified and how to override that ? Per documentation, my own rules under /etc/udev/rules.d should take precedence, so why isn't it mounted as a mass storage ?

That's not how udev rules work. The MODALIAS parameter cannot actually force a certain driver to be associated with the device; it can only trigger the loading of that driver in general, but the driver itself decides whether it recognizes a device as supported or not.

(Drivers are not loaded per-device; there is only one instance of any driver loaded at a time, which is called to handle all matching devices.)

More than that, the USB device will specify what kind of device it should be recognized as. When you connect it, the device reports to the OS a list of 'interfaces' such as "Mass Storage: SCSI" or "Human Interface Device: Keyboard" (this being part of the USB "device descriptor" that DOSed_And_Confused mentioned).

The Linux 'usb-storage' driver has a list of devices and interfaces which it should try to claim (e.g. "vendor=any, model=any, class=Mass_Storage, subclass=any" plus a bunch of special cases) and neither will it be called for anything else, nor will it try to claim anything else.

So it sounds like the device is actually claiming to be a MIDI audio device when connected at first, and Linux is handling it about as correctly as it could. The lsusb -v and USBTreeView outputs might reveal more clues, but the usual possibilities are:

  • The device supports multiple USB 'configurations' where (for example) config #1 might be MIDI and config #2 might be storage, and its MIDI interface has a Windows driver which automatically switches it to the storage configuration instead. That's a common trick done by USB 4G/LTE modems, which often pretend to be a CD-ROM device at first (until their specific driver is installed and switches them to modem mode).

  • The device has a Windows driver which uses some kind of custom MIDI command that causes it to re-initialize as a storage device. This is an even more common trick done by USB 4G/LTE modems, to the extent that Linux even has a usb_modeswitch collection of those hidden commands to switch them into the right mode.

  • The device actually accepts SCSI storage commands over the allegedly "MIDI audio" interface? I guess that's possible, though it still would rely on a custom driver on Windows.

  • Other options might exist, depending on how your USBTreeView output compares to the lsusb output.

grawity
  • 501,077
0

I've been playing around with ALSA, PulseAudio and some other gadgets lately...Lets give this a whirl.

The descriptors must be indicating support for audio/MIDI functions so ALSA takes over, understandably.

Your custom udev rule isn't working because ENV(MODALIAS) is not the correct way to force the kernel to recognize the device as mass storage. MODALIAS can't be changed like this because it is read-only and autogenerated by the kernel, based on the USB device’s descriptors.

You need to overide ALSA's detection of the looper and force it to be treated as a mass storage device.

Try creating this udev rule to ignore ALSA's detection:

#/etc/udev/rules.d/12-ownrules.rules

Disable ALSA's detection of the looper

ATTR{idVendor}=="4353", ATTR{idProduct}=="4b4d", ENV{SND_HINT}="ignore"

Force mass storage mode

ATTR{idVendor}=="4353", ATTR{idProduct}=="4b4d", ENV{ID_USB_DRIVER}="usb-storage", RUN+="/sbin/modprobe usb-storage"

Try blacklisting the driver for the looper as well:

#/etc/modprobe.d/blacklist.conf

blacklist snd_usb_audio

Reload udev and unplug/replug the looper.