There are a few threads asking similar questions here (“How do I set up Pi Zero W wifi access using the USB Stick method?”) and I solved it this morning - however none of the threads that raise it currently seem to mention it.
I believe the cause of most people’s problems is the file system format of the USB drive that’s being created. I tried yesterday, and formatted a USB stick on my Mac with the exFat file format. No joy.
Then it occurred to me this morning that maybe HassOS/Hass.io can’t read exFat formatted USB drives, because standard Raspbian requires the installation of a couple of extra packages (exfat-utils and fuse-exfat) in order to read exFat-formatted drives.
So, I tried again with a USB drive formatted as ext4 storing the relevant network config files and badda bing, badda boom - Hass.io booted on my Pi Zero W and automatically connected to my wireless network.
So that’s the key - make sure the USB drive is formatted as ext4!
However that in itself is not a trivial thing to do, because as far as I can tell, neither Windows or MacOS can do it. (At least, not easily, without installing extra software). It’s certainly not the default option for either OS, when formatting a USB drive.
I did it via another Raspberry Pi that I run, but that might not be an easy option for casual users either. It means that you need to add the files to the USB drive using Linux (eg. on the RPi), since an ext4-formatted USB drive won’t easily mount on Windows or Mac.
I assume FAT32 would also work, since it’s possible to run Raspbian on an SD card formatted as FAT32, so that makes it easier for Windows users; however it’s not an option at all on MacOS and I don’t think it’s the default option on Windows.
But, there we go. Formatting the USB drive as ext4 is the key. I haven’t tested FAT32, but I suspect that would work too.