Timeouts during initial Mode Sense commands

Hans Petter Selasky hps at selasky.org
Thu Dec 19 07:40:25 UTC 2019


On 2019-12-19 01:11, Denver Hull wrote:
> Hello,
> 
> I have several different microcontroller boards that are supposed to 
> appear as storage devices when plugged in.  They work fine on Linux 
> systems, but on FreeBSD 11.3 and 12.1 they don't show up at all. Here's 
> what dmesg shows for one of them:
> 
> ugen1.3: <Adafruit Industries LLC PyPortal> at usbus1
> umodem0 on uhub1
> umodem0: <CircuitPython CDC control> on usbus1
> umodem0: data interface 1, has no CM over data, has no break
> umass3 on uhub1
> umass3: <CircuitPython Mass Storage> on usbus1
> umass3:  SCSI over Bulk-Only; quirks = 0x0000
> umass3:5:3: Attached to scbus5
> uaudio0 on uhub1
> uaudio0: <CircuitPython Audio> on usbus1
> uaudio0: No playback.
> uaudio0: No recording.
> uaudio0: MIDI sequencer.
> uaudio0: No HID volume keys found.
> ums2 on uhub1
> ums2: <CircuitPython HID> on usbus1
> ums2: 16 buttons and [XYZ] coordinates ID=2
> (da3:umass-sim3:3:0:0): got CAM status 0x44
> (da3:umass-sim3:3:0:0): fatal error, failed to attach to device
> g_access(944): provider da3 has error 6 set
> g_access(944): provider da3 has error 6 set
> g_access(944): provider da3 has error 6 set
> g_access(944): provider da3 has error 6 set
> g_access(944): provider da3 has error 6 set
> 
> There's a definite delay after the last ums message.  I used camcontrol 
> debug in single user mode on a bare 12.1 system to get a little more 
> information about what was happening.  It looks like the initial Inquiry 
> and Test Unit Ready commands succeed, but the next Mode Sense command 
> times out, as well as all subsequent commands. There are several seconds 
> of inactivity between retries, and there's no sense data, so I'm 
> assuming that indicates timeout.
> 
> At this point I'm not sure how best to proceed to get these devices to 
> work, so any help will be appreciated.
> 

Did you try setting one or more quirks for these devices using usbconfig?

UQ_MSC_NO_TEST_UNIT_READY
UQ_MSC_NO_RS_CLEAR_UA
UQ_MSC_NO_START_STOP
UQ_MSC_NO_GETMAXLUN
UQ_MSC_NO_INQUIRY
UQ_MSC_NO_INQUIRY_EVPD
UQ_MSC_NO_PREVENT_ALLOW
UQ_MSC_NO_SYNC_CACHE
UQ_MSC_SHUTTLE_INIT
UQ_MSC_ALT_IFACE_1
UQ_MSC_FLOPPY_SPEED
UQ_MSC_IGNORE_RESIDUE
UQ_MSC_WRONG_CSWSIG
UQ_MSC_RBC_PAD_TO_12
UQ_MSC_READ_CAP_OFFBY1
UQ_MSC_FORCE_SHORT_INQ

If you run "usbdump -i usbusX -f Y -s 65536 -vvv" you might see the last 
failing SCSI command. X.Y are numbers after ugen for your device.

Likely your device has a software bug in its USB/SCSI implementation, 
which is quite common unfortunately.

--HPS


More information about the freebsd-usb mailing list