You know where I am nearly every single time I get an Uber or Lyft? Right outside my building, where my phone is hanging onto a Wi-Fi connection that won't work from there. Maybe it's not as common as it is in my life, but SMS seems essential until phones figure out how to deal with the Wi-Fi limbo state.
This is very accurate. I've gotten in the habit of manually killing my phone's WiFi as I leave my apartment and start walking down the hall calling a Lyft/Uber, and the same when outside my office. This remains an unsolved problem.
It really isn't. It'd be trivial to allow mobile data to always supplement wifi data. There are apps that do this already ([1] and [2]), and some phones have the option as well (either stock or as a ROM). The problem are cellular data caps, nobody wants to blow their caps by using cellular when they could be using wifi only. There is no way for wifi to know when you're about to lose coverage, or have spotty coverage; the only way around it is to always have the mobile antenna connected to towers so it can take over. But that costs money, many mobile phone companies even disable these options on their phones to reduce congestion in their towers ([3], though it may be out of date now).
One day we might solve this problem, if we're ever able to pressure phone companies into reinvesting into their infrastructure instead of their investors.
I get that this exists, but it literally never seems to trigger for me. The situation GP brings up happens constantly despite this feature being enabled.
I think the problem is that by the time your phone knows WiFi is non-viable (e.g. it's sent, retried, timed out), you've probably screwed whatever connection you were hoping to make.
Short of hammering the AP with test transmissions (oh no, battery life) when the connection starts to get below a certain level, not sure how it could solve this before the user attempts to do something.
I think the onus is on devs to implement it. So far, the only app I've found with robust reconnect is XiiaLive Pro (a music-streaming app). I use it daily for streaming radio stations and I often forget to disable WIFI when I leave the house, so by the time I'm down the block, the music usually cuts off for 1-2 seconds before the app realizes WIFI is gone. Amazingly, it auto-retries using the 3g/4g connection. I've used 10s of music streaming apps, and ALL of them required a manual stop/start after WIFI signal is gone.
I have that enabled and the setting states that ~70MB have been downloaded in this way, but I don't know over which period and it also never does "feel" like it's working.
I disabled it after my phone freaked out one day and kept re-downloading the same few hundred iTunes songs over and over, blowing past my data cap and costing me $30 in overages, all while it was asleep on my desk (albeit mysteriously very warm).
There are also consequences to your battery for utilizing cellular data instead of/in addition to WiFi. I'm an atypical user in that I don't really care about cellular data costs, but it annoys me when my battery begins dropping at a visible rate and my phone becomes toasty warm.
I considered that, but thought the impact would be inconsequential. If you want to save battery life you'd turn one or both antennas off (or GPS, vibrations, screen brightness, etc.). Maybe running both would be too much for the battery though, I don't know.
My phone lasts nearly 24 hours on a charge, I wouldn't mind it last considerably less (18 hours for example) if I used both antennas though.
I don't know how regular web-browsing / app use from the phone with two antennas would affect it, but I frequently use my phone as a WiFi hotspot for a laptop, and that's rather battery intensive.
You are only scratching the surface. The real problem is not for mobile to take over, we can do it, but when to consider wifi down. It is all fun and games if your wireless network is connected to good fiber, but it is not always the case. Internet uplink may be high RTT or flaky itself, it may be low speed and someone started torrent client and video call, it may as well be the very same mobile broadband with "unlimited throttled home" plan, wifi AP can be connected to gateway over multiple wireless hops, etc.. Platform always has to question "is it problem with remote end or uplink? is uplink 2 better than uplink 1?"
Network switch comes with non-zero cost that all connections must be treated reset and have to be reestablished, so even if the platform monitors quality of all uplinks, we still need some uplink stickiness to avoid constant switching between uplinks in places with spotty coverage or flaky uplinks. I'm not saying current status quo is the best, but currently we cannot have it work perfectly.
It's be good if at the TCP level you could send multiple request packets across different connections on mobile and have whoever got back first was chosen for a while as the default. You have to admit currently this is very clunky.
I would also add that specifically for things like Uber it'd be good to set very low network timeouts for Wifi and allow certain apps to suggest to the device they'd like to switch.
True, however when you're leaving the building, the most common case ought to be that you stop being able to ping the upstream router. Easy for the phone to find out, since single-hop ICMP doesn't need a long timeout.
There are other possible failure modes, of course, but fixing the common case has value.
Now I'm not too experienced, so correct me if I'm wrong, but isn't a signal strength reading part of the wireless protocol? If your signal strength takes a consistent dive over a small period of time (as you walk out of the building) you could engage the cellular connection to at least supplement the pope wireless connection.
Or how about if some x% of packets were lost/failed checksum you revert to cellular?
Both of these would likely require changes to the wireless drivers but they don't seem too unachievable.
Sure, but that's assuming you can detect the weak signal, boot up the cellular antenna, negotiate a new connection to the nearest towers (after discovering them) and connect to the internet.
I'm making a bit of an assumption here, but I think if Apple or Google could detect spotty wifi quickly enough to boot up the cellular antenna, they would be. I think the issue is more that by the time the phone can tell there is a problem there isn't enough time to bring up the cellular antenna and connect before service is interrupted.
I can't say I know much about cellular networks either, but in my opinion having the cellular antenna connected to the network at all times would greatly simplify the handoff when wifi gets spotty. The ability to use both to download/upload is just icing on the proverbial cake.
I'm not sure how it works exactly, but Google's own cellular company, Google Fi, promotes the fact that they use WiFi when available, even for phone calls, but can switch quickly to cell when needed. Phone calls are not interrupted when switching. I especially like this setup because my cellular reception is poor at work, but I can use my employer's WiFi to receive calls and data. Phone call clarity is better on WiFi than cellular but sometimes there is a bit of lag that reminds me of calling overseas using geosynchronous satellite connections in the 90's.
Great prices also. Since I'm almost always using WiFi, the $20 a month for global unlimited text and phone calls with a $10/gig data rate means I only spend about $25 a month for my smartphone service. You can only use a subset of Google phones, but I find my Nexus 5x fits my needs. I also always get Android updates right away, if I want to install them.
Google's Project Fi wireless service prefers WiFi whenever it can right out of the box. That coupled with rock bottom prices & the ability to hop onto whichever network you like make it the best mobile provider around imo [just a user, no affiliation]
Can you elaborate? I just did a cursory Google and it's not clear to me why this is true.
They're $10/gb flat with refunds for unused GB. At what usage levels do you think they're 'some of the highest rates in the industry?'
I use <3 gb/MO, mainly because the mobile <-> WiFi switching is so seamless, and I've never paid more than $50/mo off contract. The UX is also top tier, which i couldn't say about Straight Talk (my last provider).
I'll buy that they're not the cheapest, but which plan offers substantially cheaper?
I pretty much don't turn on WiFi unless I'm doing streaming audio or video.
Having wifi on is pretty bad for my battery life in general, because I'm moving around a dense city and my phone constantly is trying to connect to open wifi hotspots that are going in and out of range. Keeping it on only extends battery life if my phone is staying in one place with good wifi.
As a general rule, I always turn off the prompt to join open networks. At best, it's annoying as you move around; at worst, you accidentally join a malicious open network.
Settings > Wi-Fi > Ask to Join Networks (at the bottom of that screen)
Airplane mode, Wifi only, Mobile data (LTE) only, Wifi + Mobile data (LTE). This listing is in order of battery consumption AFAIK.
The user I responded to uses only Mobile data (LTE). His Wifi is never on, but his Mobile data always is. I suggested that since he uses mobile data instead of wifi, he would be using more battery.
Windows Phone has a nice manual workaround to this. When you disable WiFi, you can say for just 30m or an hour or four. Excellent because I never remember I've disabled WiFi until I've eaten a ton of mobile data. Of course, it's still a poor substitute for not having proper switching.
It's not an unsolved problem, it's exactly what the iPhone's Wi-Fi Assist is for.
The problem is that Apple botched the roll out and everybody freaked out and complained about their iPhone eating their data plan and driving their phone bill to $2000.
There's an app that's basically IFTTT for phones. Let's you set your phone to do things like silence itself or disengage wifi based on location. For the life of me I can't remember the name but it's out there and hopefully someone replies with it.
I really thought it was just me and my network. I disable my wifi daily starting my commute as Spotify chokes on loading songs as I walk away and lose the connection. I've been searching for a way to make it drop faster but no dice yet.
While driving for Lyft, dropping someone a good ways up Beechwood Canyon, I received a text message "You've fallen off the Lyft network, please drive to where you have better data coverage"
This is very much the opposite for me (and quite common in Argentina).
I've no signal at home. Can't receive SMS or calls. So I need to leave my phone next to the window to get the SMS. And then, generally, wait, since verification SMSs take from minutes to hours to reach.
I wish companies abroad would stop taking instant SMS for granted. It's also the stupidest second-factor you can ask me for: if I ever lose my phone, then I lost my number too.
I get get Wi-Fi from home up to about half a block down my road. Then there's the cafes and stuff, and of course, 4G.
It's also the stupidest second-factor you can ask me for: if I ever lose my phone, then I lost my number too.
This is a known probem, and most good 2FA services have solutions. For example, Google offers a small number of "recovery codes" you can store for times when your 2FA device isn't available. https://support.google.com/accounts/answer/1187538?hl=en
> if I ever lose my phone, then I lost my number too.
The assumption is that your phone is PIN-protected, and you can contact your phone operator to get the old SIM blocked and a new SIM issued. This breaks down when it comes to prepaid though.
> you can contact your phone operator to get the old SIM blocked and a new SIM issued
I know this works for some companies in some countries, and this brings me back the same thing I keep seeing all over: stop assuming the entire world works exactly like your city/provider/contract.
Of course there was a massive online campaign when it was released last year to turn it off, because Apple was costing you money because the phone might use more 3G data! People... [in AU at least you pay by the GB for data]
you then have the option to enable "Aggressive Wi-Fi to Cellular handover"
> It just artificially reduces the WiFi RSSI (received signal strength indication) to encourage the WiFi state machine to decide to switch the connection from WiFi to cellular network.
Anecdotally, I have had fewer headaches with the phone holding on to poor wifi-signals since I enabled this. Ideally the phone would handle this in a smarter way, e.g., by monitoring the strength of both the wifi and data signals and switching to whichever is likely to have the least packet loss.
> Ideally the phone would handle this in a smarter way, e.g., by monitoring the strength of both the wifi and data signals and switching to whichever is likely to have the least packet loss
The tradeoff here of course is battery life. The phone OS doesn't want to switch on a second radio until absolutely necessary for obvious reasons.
As someone who works in a building with four underground stories, this cuts both ways: there are plenty of times when I've had seemingly zero bars and full wifi yet no ability to conjure network access until I manually disable cellular data. Why it's trying to prioritize cell over wifi in the first place, god only knows.
I'd imagine it could have something to do with the incentive to take up as much cellular data as possible, the same reason many providers don't let your phone access the built in antenna.
I turn it off when I get into my elevator because if not it'll be in a 1x limbo state for about five minutes, even once I am completely out of the building.
Phone apps in general have a huge problem with extremely high timeouts and no user-facing cancel/retry buttons.
My intuition for whether a request that's not done yet is ever going to complete seems to be much better than what's written into most apps. It's really annoying when I have to entirely kill and reopen the app, rather than just have that one operation retried.
The answer to that of course is that the underlying network protocols need to be aware of this dilemma. It's wasteful for every developer to try and solve this problem on their own.
The main culprit here is of course TCP's session based view of the world which was invented for a completely different era. An era when "cable got cut" was a catastrophic event that was almost never going to happen. It's a pity that the native app world is still mostly stuck with TCP/HTTP based networking stack where a UDP/mobile-specific-protocol is what's needed.
I've set my home access point to disconnect the client when signal drops below -78. It means it might spend more time on cellular, but at least I avoid that limbo state at the front of my house.
Can someone who understands the problem summarize why switching over to another channel dynamically is so difficult?
My naive intuition would just say that if the wifi connection suddenly degrades, the networking stack should just automatically switch over and try cellular -- are there complications?
The way it works is that following: to check if wifi is in range, the only thing you can do is ping 'arthur you there?' to the router and wait for a response.
That wait time, unfortunately, is long on human timescales. Also, there's the chance your ping was lost, so your phone tries at least a few times before giving up.
My iPhone tends to remain connected to the downstairs WiFi even when I've gone upstairs and there is a much stronger connection available nearby. I'm not speaking milliseconds, this continues to happen for hours. I usually to turn off and on the wifi to ensure it re-connects optimally. Why isn't this a standard behavior? Forget milliseconds, even a 5-min re-check would be great.
I can't speak for your iPhone or the wifi software version on it, but the problem is kind of tough --- your phone would want to generally avoid hopping around different networks if it can get a decent connection from one, and it's not so clear-cut when you make that decision to check for other networks.
(I agree you make it seem pretty clear though, either it is silly or there are more details to be learned...)
I still cannot fathom why the wifi handshake process takes more than a millisecond. I have no problem with the idea that wifi signals should be unreliable since the frequencies interact with typical everyday objects like walls, but the connection strength should be known on sub-second timescales.
This Quora thread is a good example of the typical non-answers provided to this question.
Time-division multiplexing. The router has to wait for everyone else to stop using the band—and then take that opportunity to tell them to all shut up for a moment—before it can say anything. And it has to finish what it was saying before it does even this, because it has guaranteed its clients it would send packets of certain lengths by certain deadlines. (Plus QOSing: as the person owning a router, you almost always want your established wi-fi connections to take service priority, so that your phone coming gradually into range as you get home doesn't kill your family's downloads.)
Add more antennas, and you can say more things on more channels at once. "Enterprise-grade" multi-antenna routers (e.g. routers in conference halls) negotiate new connections much more quickly.
Cell towers are essentially a whole bunch of antennas (or a few antennae in highly-MIMO setups, so effectively the same thing) so there's comparatively next to no latency for sending "unexpected" packets to the tower.
(Establishing connectivity with a new cell is still hard, though, since it takes a moment for a handset to get the tower's attention when the handset doesn't yet know where precisely the tower is for MIMO-beamforming to kick in. This is ameliorated by many cellular ISPs mirroring connection state between neighbouring cells, so that when you move from one cell to another, the new tower is already "expecting" you.)
You have added to the list of differences between wifi and other standards, but you have not actually shown where the timescale comes from starting from first principles. Why 10s to connect? Why not 10 ms or 10 minutes?
I'm not sure why it's 10s; my point was mostly that, once you figure out exactly what part of the connectivity process eats up the majority of the 10 second delay, it'll be much easier to figure out the why.
Since connectivity takes (far) less than 10s on enterprise-grade multi-antenna routers, all that time is being spent in some component that's different between the two classes of hardware. So looking at the difference in BOM between average products of the two classes might be helpful in figuring things out.
Right, but there are multiple accounts of this floating around the web, many contradicting each other, and none that I've found that can explain what sets the actual timescale.
I should have mentioned something earlier, but I totally agree, and I'm not sure why these things happen on human timescales. =/. Looks like no one answered with a detailed-enough response to 100% understand it, but maybe that's an opportunity for a good blog post by an expert. (and hackernews karma from me!)
Otherwise, I hope things have been going well, btw =).