Improv Wi-Fi: Open Standard for Setting Up Wi-Fi via Bluetooth LE
improv-wifi.com
improv-wifi.com
On a related note most mobile devices already support QR code for setting up a WiFi networks (iOS, Android). Works extremely well. This website has a JavaScript implementation you can take offline for generation:
Declaimer: I have no relationship with the site. I've just used it for generation after a code review and taking the site offline.
The sad thing is that, while Nintendo could have added more polish to the feature, they had no way to make the UX truly good for an average user without depending on some cloud service. The file transfer protocols with good UX are all either Internet-dependent (cloud storage), proprietary (AirDrop), slow (classic Bluetooth file transfer), or all of the above. Under those constraints, the QR codes feel a bit like a clever hack.
I'm also a bit surprised QR codes can't be composed or combined. e.g have a single QR code that has a WiFi connection as the first code and then a URL code as a second. I know QR codes can increase in size to fit more data but I guess it still has to be a single string/byte array?
It uses WebRTC for local file transfers, though as of yet it still needs a server to shuffle connection messages between peers on the same IP.
There would have been other alternatives to make life easier for people:
1) the Switch is gonna be connected to your LAN anyways via WiFi - so have it open up a SMB server that you can connect to.
2) Use the Nintendo Switch companion app and broadcast packets to allow local discovery
3) Expose the content of the internal storage and/or SD card via USB MTP
4) Use the NFC transmitter in the right JoyCon that is normally used to read Amiibos to transmit the WiFi credentials like Sony does this in some of the Alpha cameras.
The problem is, we're talking about Nintendo here who require you put the Switch into the DMZ with full (!) firewall exposure to play Animal Crossing because apparently they have never ever heard about STUN/TURN or WebRTC. Good luck if you have two people in one household who both want to play Animal Crossing as the host with someone else!
I, seriously, have NO FUCKING IDEA how a company can be at the same time so good at implementing software and so fucking bad at the basics. Jesus. They have all the hardware they need but apparently are unable to make use of it.
(Side note: Anyone here who has tried fuzzing the network stack that Animal Crossing uses? Could be a nice vector for remote code execution, especially since the way AC operates network play requires it be wide open to the Internet)
1. Loads of products that have this problem use a wifi hotspot to do that transfer instead. Yes it sucks, but they don't want to pay for BLE that is only used for the connection process.
2. Both Apple and Android already have wifi-based connection processes built into the OS that have the enormous advantage of being able to fiddle with your WiFi settings and access your WiFi passwords. If you use those systems the connection process is actually reasonably slick (and if you don't it is the most awful thing ever).
Good luck though. I worked on the WiFi connection process for a product and the whole thing is a complete mess. Any improvement is a good thing.
One thing that's a bit sad is that better authentication (PEAP) isn't widely supoirted or easy to set up.
Unfortunately, I've found it very hard to toy with Wi-Fi. I'm not sure older chipsets can implement these features.
Only works with Edge and Chrome? Firefox user here, what have they done that makes it incompatible with web standards?
Firefox and Safari (and quite many other browsers) do not support WebBluetooth
How are they going to meet this goal if they can't even get it to work in a major browser?