This looks interesting, hopeful it gets some adaption.
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:
The Nintendo Switch has a hilarious use case for this. When you view a screenshot or screen recording in the Switch’s album, there’s a menu option called Send to Smartphone. Press it, and a dialog comes up with a QR code. This points to a non-internet-connected Wi-Fi network that the Switch has just set up. You scan it, wait several seconds for your phone to connect to the network, and… the Switch displays a second QR code. This one is an HTTP URL pointing to a web server the Switch is now running. Scan that one, and you can finally access your screenshot through the phone browser. You have to go through this process every time you want to send media. You can’t remember the Wi-Fi network on your phone, as the password changes every time; you can’t tell the Switch to run a web server on an existing network; and you can’t ask it to show the password as text so you can easily input it into a non-phone device.
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.
> 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.
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)
Interesting. Is it using WiFi Direct or is it just a standard adhoc WiFi network? I though WiFi Direct was suppose to basically be a the open/standard transport part of Airdrop like things such that it would be seamless but frankly I have not used it enough to know.
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?
QR code based Wifi setup is extremely handy for guest networks with obscure SSIDs and long complex passwords, and makes it easy for visitors to reconnect when the password changes.
I think there are two issues with trying to get adoption for this in mainstream products:
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.
This may be a stupid question but I was actually looking for this the other day - what is the existing way to do this specifically with iOS? I couldn't find any sort of docs or SDK describing how I might setup a device to talk to iOS and get on the local wifi.
As I recall it's all via MFi (Made For iPod, etc.) which unfortunately isn't accessible to the average man on the street. All behind NDAs in a special developer portal. Typical Apple.
This is great. I needed something like this for bootstrapping headless raspberry pis. I ended up rolling my own ad hoc provisioning script, and packaging it in a custom raspbian image. This seems like a great candidate for inclusion in a Pi distro.
Open wifi networks for configuration used to be a pretty good solution, but have become less useful since the advent of phones automatically failing over to their mobile connection if the local network can’t route traffic to the internet.
This implements a fairly common functionality that is surprisingly missing (no existing libraries or standards). The downside is that the current SDK doesn't have the stack I'd want to use (Flutter + micropython)
This is a testament to the abject failure that is the wifi protocol and its popular implementations. Everything that needs to be done here would be possible with some simple wifi-based broadcast (like "ad-hoc" back in the days?) and the possibility for a phone to connect to multiple wifi networks at once. Not sure if this is for political or economic reasons, or just incompetence.
I'm not so interested in setting up WiFi, as I don't trust most of these devices on my network or connected to the internet. However it would be nice to have an easier way to connect to a WiFi Direct network and load up the "configuration" website on that network.
Is this similar to how Apple shares WiFi creds between nearby iPhones? I've found that quite handy more than a handful of times and have missed having it on other non-Apple devices.
I believe that's over Handoff protocol, which combines Bluetooth, Bluetooth LE, and Wi-Fi Direct depending on the circumstances — also iirc used by AirDrop and "set up your Apple TV" and so on.
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:
https://qifi.org/
Declaimer: I have no relationship with the site. I've just used it for generation after a code review and taking the site offline.