Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Nov 2021 13:49:24 +0100
From:      Hans Petter Selasky <hps@selasky.org>
To:        Milan Obuch <freebsd-usb@dino.sk>, freebsd-usb@freebsd.org
Subject:   Re: USBDMSC emulated device does not work on FreeBSD
Message-ID:  <df6b1571-54a3-91e2-6da5-82df6644bd64@selasky.org>
In-Reply-To: <20211112123438.6305fc56@zeta.dino.sk>
References:  <20211112095915.226af6be@zeta.dino.sk> <6a6850f5-8233-aae7-8e65-42594402fcb5@selasky.org> <20211112120714.73f195a9@zeta.dino.sk> <972a650d-d490-1965-13a4-2fb984531f1d@selasky.org> <20211112121806.2db2a908@zeta.dino.sk> <85cdc03e-e8f1-871c-6e1d-66181e45dcb1@selasky.org> <20211112123438.6305fc56@zeta.dino.sk>

next in thread | previous in thread | raw e-mail | index | archive | help
On 11/12/21 12:34, Milan Obuch wrote:
> On Fri, 12 Nov 2021 12:20:45 +0100
> Hans Petter Selasky <hps@selasky.org> wrote:
> 
>> On 11/12/21 12:18, Milan Obuch wrote:
>>> On Fri, 12 Nov 2021 12:11:38 +0100
>>> Hans Petter Selasky <hps@selasky.org> wrote:
>>>    
>>>> Hi,
>>>>   
>>>>> kernel: ugen1.3: <Microchip Inc PolarFireSoc-FlashDrive> at usbus1
>>>>>
>>>>> line in console (and later in dmesg). Relevant line in output of
>>>>> 'usbconfig show_ifdrv' command is
>>>>>
>>>>> ugen1.3: <Microchip Inc PolarFireSoc-FlashDrive> at usbus1,
>>>>> cfg=255 md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)
>>>>
>>>> cfg=255 means something very low level USB failed. It was not able
>>>> to set the configuration number.
>>>>
>>>> Try:
>>>>
>>>> usbconfig -d ugen1.3 set_config 0
>>>>
>>>> --HPS
>>>>   
>>>
>>> I tried, basically no change (no output on console, no change in
>>> output of 'usbconfig show_ifdrv' command).
>>>
>>> Also, I tried 'usbconfig -d ugen1.3 dump_all_desc' just out of
>>> curiosity, output is
>>>
>>> ugen1.3: <Microchip Inc PolarFireSoc-FlashDrive> at usbus1, cfg=255
>>> md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)
>>>
>>>     bLength = 0x0012
>>>     bDescriptorType = 0x0001
>>>     bcdUSB = 0x0200
>>>     bDeviceClass = 0x0000  <Probed by interface class>
>>>     bDeviceSubClass = 0x0000
>>>     bDeviceProtocol = 0x0000
>>>     bMaxPacketSize0 = 0x0008
>>>     idVendor = 0x1514
>>>     idProduct = 0x0001
>>>     bcdDevice = 0x3000
>>>     iManufacturer = 0x0001  <retrieving string failed>
>>>     iProduct = 0x0002  <retrieving string failed>
>>>     iSerialNumber = 0x0003  <retrieving string failed>
>>>     bNumConfigurations = 0x0001
>>>    
>>
>> Hi,
>>
>> I suspect the USB implementation in this device is buggy and not
>> fully spec. compliant.
>>
>> You may try to set the UQ_NO_STRINGS quirk on this device and re-plug:
>>
>> usbconfig -d ugen1.3 add_quirk UQ_NO_STRINGS
>>
>> Then physically re-plug the device.
>>
>> --HPS
>>
> 
> I agree this device has buggy USB implementation - there is
> 
> __assert_func(): services/mmc/mmc_api.c:214: HSS_MMC_ReadBlock() Assertion failed: ((size_t)srcOffset & (HSS_MMC_SECTOR_SIZE-1)) == 0u
> 
> soon after 'usbdmsc' command execution (when connected to FreeBSD box).
> That could explain it does not work :)
> 
> Trying the command you wrote I get just
> 
> Adding quirk 'UQ_NO_STRINGS' failed, continuing.
> 
> I tested this on both 11.4 and 12.2 boxes. So I think something FreeBSD
> did in early stage after discovering new device on USB bus disturbs
> this device's USB stack badly and somehow it crashes (I need reset in
> order to continue working with it).
> 
> Regards,
> Milan
> 

There is also "usbdump -i usbus1 -f 3 -s 65536 -vvv"

which may point at the exact command which is failing.

-_HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?df6b1571-54a3-91e2-6da5-82df6644bd64>