To get a reliable start of the WiFi service with jessie, I did the following:
1.) do NOT uncomment the wireless enable/start lines in /etc/network/interfaces.
This would try to start up the WiFi before USB is up and running and stable.
Apparently, once “wpa_supplicant” gets the error, it will not try again.
2.) I wrote a file named wlan0-start.timer, that waits 30 seconds after the start of boot, which
ends up being about 5 seconds after the end of booting.
3.) I wrote a file named wlan0-start.service that calls a script named wlan0-start.sh
This service is started when the .timer of the same file name is satisfied.
4.) I wrote a script named wlan0-start.sh that simply calls ‘ifup wlan0’
So, it appears that the normal .service dependency ‘WantedBy=multi-user.target’
does not wait long enough for the USB subsystem to be fully running.
If you try to start “wpa_supplicant” without the USB subsystem running,
it fails, hangs, and will not respond to later attempts to re-start.
If you can find the right dependency for wlan0-service, you might come up
with a simpler solution.
I gave up looking, and just wait 30 seconds (which is after the start of boot, not
the end of boot) which gives USB subsystem time to come up, and then
start the Wifi sub-system, and everything works.
This is not the optimum solution, but it does work.
— Graham