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 >>> >>
