As many others have discovered, USB flash drive playback is stupid.
On my car, it ignores the folder structure and the track numbers in favor of indexing every mp3 file on the drive alphabetically and playing them in that order. I have to wonder, whose brainiac idea was that? Who would sit down and deliberately code for this? But I digress.
After a fair amount of experimenting and some wheel-reinventing, I confirmed that currently the only way to preserve one's desired playback order is to add sequential prefixes to the title fields of the ID3v2 tags.
Doing that manually in a tag editor would be tedious beyond belief. So I scripted the process, using not only numeric characters but also alpha and special ASCII characters in the prefixes. Using those extra characters allows the script to index up to 4225 tracks with only a two-character prefix, leaving more room on the display to show the actual title.
I start by assembling the desired folder structure by copying tracks and folders into a staging folder. Then I run the script. It does any necessary renaming to make the folders and files compatible with a standard FAT32 flash drive, then copies them onto the USB stick one at a time, adding the appropriate title tag prefix to preserve the sort order, and syncing the write after each file to prevent other kinds of sequencing problems. All I have to do is wait for it to finish.
I'm glad to share the script with whoever wants it. But there's a catch. It's written for Linux.
If you run Linux, good on you, and you can use the script pretty much as it is, after adding a package or two from your repositories.
If you're a Mac user and reasonably technical, you might be able to adapt the script for use on your platform.
Windows users can't run this script, sorry; but if you're a programmer you might look at it to see how you could reproduce it in Windows.
Just send me a PM if you're interested.