You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This update brings significant changes to the Nomad Experimental branch, namely USB mass storage functionality, a boot-time mode toggle using the physical boot button, and infrastructure for making Nomad more consumer-friendly. I have been working on this for ages and it finally just started working (with a bunch of catches lol)
What's New
USB Mass Storage Mode (MSC)
The Nomad can now present itself as a USB mass storage device when plugged into a PC. This allows direct file transfer to and from the SD card without needing a Wi-Fi connection. This is optional, and is enabled at any time by pressing the boot button (on the left).
Known limitations:
Transfer speeds are limited by hardware. The ESP32-S3 can only achieve USB 1.1 speeds.
Best observed speed is around 900 KB/s, though I rarely see it and have no idea how or why it does that sometimes.
Some systems take up to 60 seconds to mount the device. (it just sits there frozen)
The web server must be turned off while MSC is active, it does this automatically
Disabling USB CDC on boot slightly improves speed, but disables serial output.
If you are updating you existing Nomad system this version requires a bit more work, read below.
This isn't a new issue, but the spinner on the LCD UI freezes every 60 sec when the screen updates, might just remove the spinner since its not as needed for debug now.
If you have any knowledge or suggestions to help improve transfer speeds on the ESP32 platform using TinyUSB or other approaches, I would appreciate your feedback. Existing documentation and examples are limited. I am desperate for fast mount times and better write speed, my code is jank rn but I am just overjoyed its working at all.
Boot Button: Mode Selection
You can now toggle between operation modes using the boot button:
By Default it will boot into Media mode and work as normal with no change to the experiance
Pressing the button at any time after boot will reboot the device into USB mode, it should mount to your PC or device as a mass storage device after awhile of being frozen.
Pressing it again will put you back into Media mode (reboot)
Additionally, reflashing the device now requires the following steps:
Hold the boot button
While holding it, press and release the reset button
Release the boot button
The screen will stay black, and the board will enter flash mode, ready for code upload. (you might be able to get around this)
Arduino Settings Required
To use this update, make sure your Arduino IDE settings are configured as follows:
USB Mode: USB-OTG (TinyUSB), This is required for MSC to work.
Disable USB CDC on Boot: Enabled (optional but recommended for slightly better MSC performance; disables serial output)
If its not working as expected you can try enabling CDC and checking serial, I left the printlns in the code.
It is also very imporant you get the new library files, usb_mode.cpp, usb_mode.h, and boot_mode.h. These files contain the "firmware" for running the USB systems, the idea was that I could just fully skip the webserver code by having it in its own thing, I now understand there are probably better ways to have done this.
Why These Changes?
Originally, this was a personal project not intended for public release. However, there has been a lot of interest, and I'm considering making a consumer-ready version of Nomad. This has a few goals:
Create a version that's easier for non-technical users
Keep the design open source (not gonna get greedy with it I promise)
Possibly sell prebuilt units to help pay for college
The current ESP32-S3 board works well but is relatively expensive and has limitations. A future revision may use something like the LilyGO T-Dongle, which offers a removable SD card slot and better flexibility for end users. I already said the T-Dongle wont work, but as usually I am still trying anyway. A few people have recommended other boards that could work well, I am very open to suggestions.
Looking Ahead
Over the next week, the focus will be on polish and cleanup rather than new features
Many features from Experimental will likely be merged into the main branch (Finally)
So far, bug reports have been minor and easily resolved, please contact me if you hit any snags!
Feedback Welcome
I'm especially looking for help with:
Improving USB MSC speed on the ESP32-S3
Better methods of mode switching
Recommendations for alternative boards that offer better performance or usability
Suggestions for improving the end-user experience
Feel free to open an issue or start a discussion. Thanks for following the project and testing early builds.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
This update brings significant changes to the Nomad Experimental branch, namely USB mass storage functionality, a boot-time mode toggle using the physical boot button, and infrastructure for making Nomad more consumer-friendly. I have been working on this for ages and it finally just started working (with a bunch of catches lol)
What's New
USB Mass Storage Mode (MSC)
The Nomad can now present itself as a USB mass storage device when plugged into a PC. This allows direct file transfer to and from the SD card without needing a Wi-Fi connection. This is optional, and is enabled at any time by pressing the boot button (on the left).
Known limitations:
If you have any knowledge or suggestions to help improve transfer speeds on the ESP32 platform using TinyUSB or other approaches, I would appreciate your feedback. Existing documentation and examples are limited. I am desperate for fast mount times and better write speed, my code is jank rn but I am just overjoyed its working at all.
Boot Button: Mode Selection
You can now toggle between operation modes using the boot button:
Additionally, reflashing the device now requires the following steps:
The screen will stay black, and the board will enter flash mode, ready for code upload. (you might be able to get around this)
Arduino Settings Required
To use this update, make sure your Arduino IDE settings are configured as follows:
USB-OTG (TinyUSB)
, This is required for MSC to work.Enabled
(optional but recommended for slightly better MSC performance; disables serial output)Why These Changes?
Originally, this was a personal project not intended for public release. However, there has been a lot of interest, and I'm considering making a consumer-ready version of Nomad. This has a few goals:
The current ESP32-S3 board works well but is relatively expensive and has limitations. A future revision may use something like the LilyGO T-Dongle, which offers a removable SD card slot and better flexibility for end users. I already said the T-Dongle wont work, but as usually I am still trying anyway. A few people have recommended other boards that could work well, I am very open to suggestions.
Looking Ahead
Feedback Welcome
I'm especially looking for help with:
Feel free to open an issue or start a discussion. Thanks for following the project and testing early builds.
Beta Was this translation helpful? Give feedback.
All reactions