Thanks Tim! Hadn't heard of Union FS until now, I'll check it into that!

Matteo

On Tue, Apr 28, 2026 at 4:46 PM Tim Hardisty <[email protected]>
wrote:

>
> I did FAT overlay of LittleFS using the NuttX Union FS. Works, but lots of
> faffing about!
>
> Also used USB composite for USBMSD and CDCNCM.
>
> This can all be done as I think you need/want!
>
> > On 28 Apr 2026, at 20:38, Matteo Golin <[email protected]> wrote:
> >
> > Hi Alan,
> >
> > Yes, I would be using the MCU's own on-package flash. Thanks for the
> > helpful blog link! I was also planning to use SmartFS so this revealed a
> > new challenge: converting from SmartFS to FAT so that users have an easy
> > experience. This sounds like it might be more of a challenge than I
> > originally thought. I hadn't heard of MTP before, so maybe I'll take a
> look
> > at that. If it can circumvent this filesystem compatibility thing, that
> > would be awesome.
> >
> > Thanks for the help!
> > Matteo
> >
> >> On Tue, Apr 28, 2026 at 3:24 PM Alan C. Assis <[email protected]>
> wrote:
> >>
> >> Hi Matteo,
> >>
> >> If by "its own flash memory" you mean the internal MCU flash memory,
> then I
> >> never tried it.
> >>
> >> But, for external SPI Flash you can just use the flash device as USB MSC
> >> LUN as I did here:
> >>
> >>
> https://acassis.wordpress.com/2016/01/03/using-the-nuttxs-usb-mass-storage-to-copy-spi-nor-flash-content/
> >>
> >> In my case I was using SmartFS and downloading the raw content and then
> >> mounting it later on the computer using FUSE SmarFS driver that Ken
> Pettit
> >> created.
> >>
> >> If you are using FAT FS you don't need this step, but of course if some
> >> application is writing in the flash while you copy it, the Mass Storage
> >> could get corrupted.
> >>
> >> I think it is possible to force the USB MSC to be exported as RDONLY,
> but I
> >> didn't see this option in the NuttX menuconfig, it could be a good
> >> addition.
> >>
> >> BTW, I think the best alternative should be using MTP instead of MSC.
> Seems
> >> like Xiaomi contributed a USB MTP to drivers/usbdev/ but looking at the
> >> source code I noticed it is only a wrapper, maybe for some userspace
> >> implementation.
> >>
> >> This is the problem with hidden features: someone submits a contribution
> >> without any documentation or board config, so people will have
> difficulty
> >> understanding and making it work.
> >>
> >> BR,
> >>
> >> Alan
> >>
> >>
> >>
> >> On Tue, Apr 28, 2026 at 2:56 PM Matteo Golin <[email protected]>
> >> wrote:
> >>
> >>> Hello,
> >>>
> >>> I am currently working on a project for a device which logs some data
> to
> >>> its own flash memory. I then want to be able to extract this data to a
> >> host
> >>> device (laptop, desktop, etc.) over a USB connection. For this, my aim
> >> was
> >>> to use USB mass storage.
> >>>
> >>> Looking at the docs for it (
> >>>
> >>
> https://nuttx.apache.org/docs/latest/applications/system/usbmsc/index.html
> >>> ),
> >>> it appears that in order to allow the files to be downloadable over
> USB,
> >> I
> >>> need to first unmount the file system that the files were stored in so
> >> that
> >>> the USB interaction doesn't corrupt them. Is there any way around this,
> >> or
> >>> is there a way to make the USB mass storage read only to avoid
> potential
> >>> corruption? Not the biggest deal if not.
> >>>
> >>> I also see that the default commands for this feature are
> msconn/msdis. I
> >>> would be connecting/disconnecting via my own application, which I
> suppose
> >>> means I would perform this via ioctls/something. My device will also be
> >>> using a shell over USB. Is it possible to have the shell functionality
> >>> suspended by a similar command to `msconn` and then restored when the
> >> host
> >>> driver "ejects" the USB mass storage device? This way the user can
> toggle
> >>> between doing other things in the shell and extracting files.
> >>>
> >>> If anyone has used this feature and has tips, let me know!
> >>>
> >>> Best,
> >>> Matteo
> >>>
> >>
>

Reply via email to