mount_msdosfs not working for USB device SparkFun Pro nRF52840 Mini
Ben Woods
woodsb02 at freebsd.org
Mon Apr 5 06:03:44 UTC 2021
Hi FreeBSD USB peeps,
I recently bought myself a small bluetooth development board to tinker with - a SparkFun Pro nRF52840 Mini:
https://www.sparkfun.com/products/15025
But I am having difficulty mounting the mass storage device it presents when in bootloader mode (accessible by double tapping the reset button). In this mode it presents 3 devices at once - a USB serial (CDC), a DFU (device firmware upgrade) and a mass-storage device (MSD).
When I attempt to mount the FAT32 formatted mass storage device I get the error:
mount_msdosfs: /dev/da1: Invalid argument
I suspect the issue is a USB quirk, and I may just need to use usbconfig with the right command to fix it. I'm hoping someone is able to help me get this mounting, or troubleshoot further?
Cheers,
Ben
--- Output below from bootloader mode ---
# camcontrol devlist
<Generic- SD/MMC CRW 1.00> at scbus0 target 0 lun 0 (pass0,da0)
<SparkFun nRF525840 Mini 1.0> at scbus1 target 0 lun 0 (pass1,da1)
# ls -lah /dev/da1*
crw-r----- 1 root operator 0xc9 5 Apr 13:56 /dev/da1
# mount -t msdosfs /dev/da1 /mnt
mount_msdosfs: /dev/da1: Invalid argument
# mount -t msdosfs /dev/msdosfs/NRF52BOOT /mnt
mount_msdosfs: /dev/msdosfs/NRF52BOOT: Invalid argument
# fstyp -lu /dev/da1
msdosfs NRF52BOOT
# file -s /dev/da1
/dev/da1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "UF2 UF2 ", root entries 64, sectors 7998 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 32, sectors/track 1, heads 1, serial number 0x420042, label: "NRF52BOOT ", FAT (16 bit)
# dmesg
ugen0.10: <Adafruit Industries Bluefruit nRF52840 DFU> at usbus0
umodem0 on uhub1
umodem0: <Bluefruit Serial> on usbus0
umodem0: data interface 1, has no CM over data, has no break
umass1 on uhub1
umass1: <Bluefruit UF2> on usbus0
umass1: SCSI over Bulk-Only; quirks = 0x0000
umass1:1:1: Attached to scbus1
da1 at umass-sim1 bus 1 scbus1 target 0 lun 0
da1: <SparkFun nRF525840 Mini 1.0> Removable Direct Access SCSI-2 device
da1: Serial Number C1599CE596019A19
da1: 1.000MB/s transfers
da1: 3MB (8000 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>
# usbconfig -d 0.10 dump_all_desc
ugen0.10: <Adafruit Industries Bluefruit nRF52840 DFU> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x00ef <Miscellaneous device>
bDeviceSubClass = 0x0002
bDeviceProtocol = 0x0001
bMaxPacketSize0 = 0x0040
idVendor = 0x1b4f
idProduct = 0x5284
bcdDevice = 0x0100
iManufacturer = 0x0001 <Adafruit Industries>
iProduct = 0x0002 <Bluefruit nRF52840 DFU>
iSerialNumber = 0x0003 <C1599CE596019A19>
bNumConfigurations = 0x0001
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x0062
bNumInterfaces = 0x0003
bConfigurationValue = 0x0001
iConfiguration = 0x0000 <no string>
bmAttributes = 0x0080
bMaxPower = 0x0032
Additional Descriptor
bLength = 0x08
bDescriptorType = 0x0b
bDescriptorSubType = 0x00
RAW dump:
0x00 | 0x08, 0x0b, 0x00, 0x02, 0x02, 0x02, 0x01, 0x00
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0000
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0002 <Communication device>
bInterfaceSubClass = 0x0002
bInterfaceProtocol = 0x0001
iInterface = 0x0004 <Bluefruit Serial>
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x00
RAW dump:
0x00 | 0x05, 0x24, 0x00, 0x20, 0x01
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x05, 0x24, 0x01, 0x00, 0x01
Additional Descriptor
bLength = 0x04
bDescriptorType = 0x24
bDescriptorSubType = 0x02
RAW dump:
0x00 | 0x04, 0x24, 0x02, 0x02
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x06
RAW dump:
0x00 | 0x05, 0x24, 0x06, 0x00, 0x01
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0081 <IN>
Interface 1
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0000
bNumEndpoints = 0x0002
bInterfaceClass = 0x000a <CDC-data>
bInterfaceSubClass = 0x0000
bInterfaceProtocol = 0x0000
iInterface = 0x0000 <no string>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0002 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0082 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 2
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0002
bAlternateSetting = 0x0000
bNumEndpoints = 0x0002
bInterfaceClass = 0x0008 <Mass storage>
bInterfaceSubClass = 0x0006
bInterfaceProtocol = 0x0050
iInterface = 0x0005 <Bluefruit UF2>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0003 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
--
From: Ben Woods
woodsb02 at freebsd.org
More information about the freebsd-usb
mailing list