Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

USBD_MSC demo (SDK v15.2.0) - why are filesystem operations not allowed while the USB is plugged in?

A while ago I was experimenting with the usbd_msc demo, trying to get the firmware working as RAM-disk-only storage, without any permanent storage like Flash or SDC. While that was easy enough to modify, there's one thing I can't figure out.

In each fatfs wrapping function listed in the main.c file, there's a check whether the USB cable is still connected (m_usb_connected) which prevents the filesystem operation from being executed. The variable m_usb_connected is modified by the usbd event handler on connect and disconnect.

Is there any practical reason for this prevention of file operations? The system I'm trying to integrate with normally uses a USB stick, so it likely does not logically disconnect from the USB device until it's physically pulled out.

If the filesystem absolutely must not be modified while USB is connected, can I externally (i.e. through a FET) disconnect the VBUS line to get the nRF82840 to detect a disconnect event, do my filesystem operations, and then return the VBUS line to its normal state?