Random Thoughts – Randocity!

Can I use my Xbox One or PS4 controller on my iPhone?

Posted in Apple, botch, california, game controller, gaming, video game by commorancy on September 16, 2019

XboxOneEliteController-smThis is a common question regarding the two most popular game controllers to have ever existed. Let’s explore.

MFi Certification

Let’s start with a little history behind why game controllers have been a continual problem for Apple’s iOS devices. The difficulty comes down to Apple’s MFi controller certification program. Since MFi’s developer specification release, not many controller developers have chosen to adopt it. The one notable exception is the SteelSeries Nimbus controller. It’s a fair controller, it holds well enough in the hand, has an okay battery life, but it’s not that well made. It does sport a lightning port so you can charge it with your iPhone’s charger, however. That’s of little concession, though, when you actually want to use an Xbox One or PS4 controller instead.

Because Apple chose to rely on its own MFi specification and certification system, manufacturers would need to build a controller that satisfies that MFi certification. Satisfying the requirements of MFi and getting certified likely requires licensing technology built by Apple. As we know, licenses typically cost money paid to Apple for the privilege of using that technology. That’s great for Apple, not so great for the consumer.

Even though the SteelSeries Nimbus is by no means perfect, it really has become the de facto MFi controller simply because no other manufacturers have chosen to adopt Apple’s MFi system. And why would they?

Sony and Microsoft

Both Sony and Microsoft have held (and continue to hold) the market as the dominant game controllers. While the SteelSeries Nimbus may have become the de facto controller for Apple’s devices, simply because there is nothing else really available, the DualShock and the Xbox One controllers are far and away better controllers for gaming. Apple hasn’t yet been able to break into the console market, even as much as they have tried with the Apple TV. Game developers just haven’t embraced the Apple TV in the same way they have of the Xbox One and the PS4. That’s obvious as to why. The Apple TV, while reasonable for some games, simply does not offer the same level of graphics and game power as an Xbox One or PS4. It also doesn’t have a controller built by Apple.

Until Apple gets its head into the game properly with a more suitably named game system actually intended for gaming, rather than general purpose entertainment, Apple simply can’t become a third console. Apple seems to try these roundabout methods of introducing hardware to try and usurp, or at least insert itself into certain markets. Because of this subtle roundabout method Apple chooses, it just never works out. In the case of MFi, that hasn’t worked out too well for Apple.

Without a controller that Apple has built themselves, few people see the Apple TV as anything more than a TV entertainment system with built-in apps… even if it can run limited games. The Apple TV is simply not seen as a gaming console. It doesn’t ship with a controller. It isn’t named appropriately. Thus, it is simply not seen as a gaming console.

With that said, the PS4 and the Xbox One are fully seen as gaming consoles and prove that with every new game release. Sony and Microsoft also chose to design and build their own controllers based on their own specifications; specifications that are intended for use on their consoles. Neither Sony, nor will Microsoft go down the path to MFi certification. That’s just not in the cards. Again, why would they? These controllers are intended to be used on devices Sony and Microsoft make. They aren’t intended to be used with Apple devices. Hence, there is absolutely zero incentive for Microsoft or Sony to retool their respective game controllers to cater to Apple’s MFi certification whims. To date, this has yet to happen… and it likely never will.

Apple is (or was) too caught up in itself to understand this fundamental problem. If Apple wanted Sony or Microsoft to bend to the will of Apple, Apple would have to pay Sony and Microsoft to spend their time, effort and engineering to retool their console controllers to fit within the MFi certification. In other words, not only would Apple have to entice Sony and Microsoft to retool their controllers, they’d likely have to pay them for that privilege. And so, here we are… neither the DualShock nor does the Xbox One controller support iOS via MFi certification.

iOS 12 and Below

To answer the above question, we have to observe Apple’s stance on iOS. As of iOS 12 and below, Apple chose to rely solely on its MFi certification system to certify controllers for use with iOS. That left few consumer choices. I’m guessing that Apple somehow thought that Microsoft and Sony would cave to their so-called MFi pressure and release updated controllers to satisfy Apple’s whims.

Again, why would either Sony or Microsoft choose to do this? Would they do it out of the goodness of their own heart? Doubtful. Sony and Microsoft would ask the question, “What’s in it for me?” Clearly, for iOS, not much. Sony doesn’t release games on iOS and neither does Microsoft. There’s no incentive to produce MFi certified controllers. In fact, Sony and Microsoft both have enough on their plates supporting their own consoles, let alone spending extra time screwing around with Apple’s problems.

That Apple chose to deny the use of the DualShock 4 and the Xbox One controllers on iOS was clearly an Apple problem. Sony and Microsoft couldn’t care less about Apple’s dilemmas. Additionally, because both of these controllers dominate the gaming market, even on PCs, Apple has simply lost out when sticking to their well-intentioned, but misguided MFi certification program. The handwriting was on the wall when they built the MFi developer system, but Apple is always blinded by its own arrogance. I could see that MFi would create more problems than it would solve for iOS when I first heard about it several years ago.

And so we come to…

iOS 13 and iPhone 11

With the release of iOS 13, it seems Apple has finally seen the light. They have also realized both Sony and Microsoft’s positions in gaming. There is simply no way that the two most dominant game controllers on the market will bow to Apple’s pressures. If Apple wants these controllers certified under its MFi program, it will need to take steps to make that a reality… OR, they’ll need to relax this requirement and allow these two controllers to “just work”… and the latter is exactly what Apple has done.

As of the release of iOS 13, you will be able to use both the Xbox One (bluetooth version) and the PS4’s DualShock 4 controller on iOS. Apple has realized its certification system was simply a pipe dream, one that never got realized. Sure, MFi still exists. Sure, iOS will likely support it for several more releases, but eventually Apple will obsolete it entirely or morph it into something that includes Sony and Microsoft’s controllers.

What that means for the consumer is great news. As of iOS 13, you can now grab your PS4 or Xbox One controller, pair it to iOS and begin gaming. However, it is uncertain exactly how compatible this will be for iOS. It could be that some games may not recognize these controllers until they are updated for iOS 13. This could mean that older games that only supported MFi may not work until they are updated for iOS 13. The problem here is that many projects have become abandoned over the years and their respective developers are no longer updating apps. That means that you could find your favorite game doesn’t work with the PS4 or Xbox One controller if it is now abandoned.

Even though iOS 13 will support the controllers, it doesn’t mean that older games will. There’s still that problem to be solved. Apple could solve that by folding the controllers under the MFi certification system internally to make them appear as though they are MFi certified. I’m pretty sure Apple won’t do that. Instead, they’ll likely offer a separate system that identifies “third party” controllers separately from MFi certified controllers. This means that developers will likely have to go out of their way to recognize and use Sony and Microsoft’s controllers. Though, we’ll have to wait and see how this all plays out in practice.

Great News

Even still, this change is welcome news to iOS and tvOS users. This means that you don’t have to go out and buy some lesser controller and hope it will feel and work right. Instead, you can now grab a familiar controller that’s sitting right next to you, pair it up and begin playing on your iPad.

This news is actually more than welcome, it’s a necessity. I think Apple finally realizes this. There is no way Sony or Microsoft would ever cave to Apple’s pressures. In fact, there was no pressure at all really. Ultimately, Apple shot themselves in the foot by not supporting these two controllers. Worse, by not supporting these controllers, it kept the Apple TV from becoming the hopeful gaming system that Apple had wanted. Instead, it’s simply a set-top box that provides movies, music and limited live streaming services. Without an adequate controller, it simply couldn’t become a gaming system.

Even the iPad and iPhone have been suffering without good solid controllers. Though, I’m still surprised that Apple itself hasn’t jumped in and built their own Apple game controller. You’d think that if they set out to create an MFi certification system that they’d have taken it to the next step and actually built a controller themselves. Nope.

Because Apple relied on third parties to fulfill its controller needs, it only really ever got one controller out of the deal. A controller that’s fair, but not great. It’s expensive, but not that well made. As I said above, it’s the SteelSeries Nimbus. It’s a mid-grade controller that works fine in most cases, but cannot hold a candle to the PS4’s or the Xbox One’s controller for usability. Personally, I always thought of the Nimbus controller as a “tide me over” controller until something better came along. That never happened. Unfortunately, it has taken Apple years to own up to this mistake. A mistake that they’ve finally decided to rectify in iOS 13.

A little late, yes, but well done Apple!

↩︎

 

Advertisements

What does Reset Network Settings in iOS do?

Posted in Apple, botch, business, california by commorancy on October 25, 2018

apple-cracked-3.0-noderivsIf you’ve experienced networking issues with your iPad or iPhone, you may have called Apple for support. Many times they recommend that you “Reset Network Settings.” But, what exactly does this operation do? Let’s explore.

What’s included in this Reset Network Settings process?

This is a complicated answer and how it affects you depends on several factors. What this process does, in addition to resetting a bunch of locally stored device settings on the iOS device itself, it also deletes network settings stored in your iCloud Keychain. If you have only an iPhone and own no other devices (i.e., no iPads, no Macs, no iPods, no Apple Watches, no Apple TVs, nothing else), resetting these settings will likely work just fine for you.

However, if you own or use multiple Apple devices and these devices participate in iCloud Keychain, things can get complicated… very, very complicated. The “or use” statement is the one that makes this process much more complicated. If you have a work Mac computer that’s hooked up to your Apple ID and is participating in iCloud Keychain, performing “Reset Network Settings” on an iPhone can become problematic for your work computer. How? First, let’s find out more about iCloud Keychain.

iCloud Keychain

What is iCloud Keychain? This is an iCloud network service that stores sensitive passwords and credit card information in a secure way. This iCloud service also lets multiple iOS, MacOS, tvOS and WatchOS devices participate and use this data as part of your Apple ID. If you own multiple Apple devices, they can all share and use this same set of sensitive data without having to enter it individually on each device (convenience).

Your iCloud Keychain is specific to your Apple ID which is protected by your Apple ID login and password. The iCloud Keychain was created as both a convenience (all devices can share data), but also secure in that this data is protected behind your Apple ID credentials.

When you “Reset Network Settings” on any iOS (or possibly even MacOS, tvOS or even WatchOS) device and your devices participate in iCloud Keychain synchronization, a “Reset Network Settings” can cause networking issues for all of your devices. Why?

The iCloud Keychain stores WiFi access point names (SSIDs) and passwords. Not only that, it also stores credit cards that you might use with Apple Pay (this becomes important later). When you run “Reset Network Settings” on any iOS device, it will wipe all access point SSIDs and Passwords from your iCloud Keychain.

You might be asking, “Why is this a problem?” This will become a problem for all devices participating in iCloud Keychain. All of your Apple devices share in using this SSID and password data from your iCloud Keychain. This important to understand.  Because of this level of sharing, it only takes one device to learn of an access point for all Apple devices to use that network when in range. For example, if you bring your Mac to a convention and log it into an access point at the convention, your Mac logs this access point data to the iCloud Keychain. Your phone will immediately pick up on this new access point addition and also connect to that access point using the newly stored password as soon as it finds it… automagically.

Likewise, it only takes one device to wipe an access point and all devices lose access to it. It’s a single shared location for this networking data. One device adds it, all can use it. One device deletes it, all devices forget about it. Is this a good idea? You decide.

Reset Network Settings and Multiple Devices

Here’s where things get complicated with iCloud Keychain. If you are having network troubles with your iPhone, you might be requested by Apple Support to “Reset Network Settings”.

If all of your MacOS, tvOS, iOS and WatchOS devices participate in iCloud Keychain and you actually perform “Reset Network Settings” on your iPhone, it will wipe not only the current access point, but every access point that every device is aware of. It returns your network settings on iOS (and in iCloud Keychain) to a clean slate to start it over. It does this to try and clear out any problematic network settings. It also deletes known access points from the iCloud Keychain. This wipes access to this data for ALL of your Apple devices, not just the one you performed “Reset Network Settings” on.

What this means is that every device participating in iCloud Keychain will lose access to ALL access points that had previously been known because they have been deleted as part of “Reset Network Settings”. If your iOS device knew of all access points, they will ALL be wiped from iCloud Keychain. This means that every device will immediately lose access to its current access point. It also means that every Apple device you own must now be touched to reselect a new access point requiring you to reenter the password for that access point… On. Every. Apple. Device!

For example, I own two Macs, two iPads, three iPhones and two iPod Touches. A “Reset Network Settings” from a single device means I will need to go and manually touch 9 different devices to reconnect them to WiFi after a single iOS device performs a “Reset Network Settings” operation. It requires this because every device has lost access to even its home network which means no access to iCloud Keychain… which means, touching every device to get them back onto a WiFi network.

For me, it was even more complicated than the mere hassle of setting up WiFi on every device. It wiped known access points created by my employer on my Mac which were put into my iCloud Keychain… access points where I didn’t know the name or passwords. Thankfully, I was able to recover this data from another co-worker’s Mac and get back onto my corporate network. Otherwise, I’d have been down at my IT team’s desk asking for them to fix my Mac… and all as a result of performing “Reset Network Settings” on my iPhone.

Horrible, horrible design.

Avoiding This Problem

Can this problem be avoided? Possibly. If you turn off iCloud Keychain on your iOS device BEFORE you perform “Reset Network Settings”, it may avoid wiping the data in the iCloud Keychain. I say “may” because after you take the device out of iCloud Keychain, then reset the network settings and then rejoin it to iCloud Keychain, it may propagate the differences at the time the device rejoins. Hopefully, not. Hopefully, the newly reset device will ONLY download the existing data in the iCloud Keychain without making any modifications to it. With Apple, you never know.

The secondary issue is that removing your iPhone from iCloud Keychain may remove stored credit cards. This may mean reentry of all of your credit cards after you have “Reset Network Settings” and after you have rejoined your device to the iCloud Keychain. This may also depend on iOS version. I just tried removing iCloud Keychain, then performed “Reset Network Settings”, then rejoined iCloud Keychain and all my cards are still intact on the device. If you’re on iOS 11 or iOS 10, your results may vary.

Why is this a problem?

First off, I don’t want to have to go touch many devices after a single device reset. That’s just stupid. Second, removing the device from iCloud Keychain to perform “Reset Network Settings” will wipe all of your current credit card data from the device and likely from the iCloud Keychain. Third, Apple needs to fix their shit to allow more granularity in what it wipes with “Reset Network Settings”. In fact, it shouldn’t even touch iCloud Keychain data. It should wipe only locally stored information on the device and then see if that works. If that doesn’t work, then wipe the data on iCloud Keychain, but only as a LAST RESORT!

I understand that Apple seems to think that wiping all network data (including what’s in iCloud Keychain) might solve “whatever the problem is”, but that’s just a sledgehammer. If what’s stored in iCloud Keychain were a problem, my 8 other devices should be experiencing the same issue as well. It’s basically, stupid Apple troubleshooting logic.

As I mentioned, disabling iCloud Keychain may unregister your credit cards from your device (and from the Keychain). I know this was the case in iOS 11, but in iOS 12 it seems to not require this any longer. I definitely don’t want to have to rescan all of my credit cards again onto my iOS device to restore them. It takes at least 30 minutes to do this with the number of cards I have to input. With the Apple Watch, this process is horribly unreliable and lengthy. It can sometimes take over an hour diddling with Bluetooth timeouts and silly unreliability problems to finally get all of my cards back onto the Watch (in addition to the iPhone).

Such time wasting problems over a single troubleshooting thing that should be extremely straightforward and easy. Horrible, horrible design.

Representatives and Suggestions

If you’re talking to an Apple representative over the phone about a networking problem and they suggest for you to “Reset Network Settings”, you should refer them to this article so they can better understand what it is they are asking you to do.

Neither Apple Support, nor will any of your phone carrier support teams warn you of this iCloud Keychain problem when requesting “Reset Network Settings.” They will ask you to perform this step as though it’s some simple little step. It’s not!

Whenever Apple asks me to perform the “Reset Network Settings” troubleshooting step, I always decline citing this exact problem. Perhaps someone at Apple will finally wake up and fix this issue once and for all. Until then, you should always question Apple’s troubleshooting methods before blindly following them.

How to disable iCloud Keychain

To disable the iCloud Keychain on your iOS device, go to …

Settings=>Your Name=>iCloud=>Keychain

… and toggle it off. Your Name is actually your name. It is located at the very top of settings. Once toggled off, it will likely unregister your credit cards stored on your iOS device, but I guess it’s a small price to pay if you really need to reset these network settings to your restore networking to 100% functionality. Of course, there’s no guarantee that “Reset Network Settings” or jumping through any of these hoops will solve this problem. There’s also the possibility that “Reset Network Settings” could still screw with your iCloud Keychain even if you disable it before performing “Reset Network Settings”.

With Apple, your mileage may vary.

How to Reset Network Settings

Settings=>General=>Reset=>Reset Network Settings

If you own multiple Apple devices and they are using iCloud Keychain, don’t perform this step first. Instead, disable iCloud Keychain first (above), then perform this step. If you only own one Apple device, there is no need to disable iCloud Keychain.

Network Problems and Quick Fixes

In my most recent case of being prompted to “Reset Network Settings”, my phone’s Wi-Fi calling feature simply stopped working. I first called T-Mobile and they referred me to “Reset Network Settings” (based on Apple’s documentation) and they also referred me to Apple Support. Because I already knew about the iCloud Keychain problem from a previous inadvertent wipe of all of my network access points, this time I opted to turn off iCloud Keychain before attempting “Reset Network Settings.” Suffice it to say that “Reset Network Settings” didn’t do a damned thing, as I full well expected.

In fact, I tried many options prior to “Reset Network Settings”. These included:

  • Disabling and enabling Wi-Fi calling
  • Joining a different access point
  • Restarting my Comcast modem
  • Restarting my network router
  • Restarting my Apple Airport
  • Restarting my phone
  • Hard restarting my phone
  • Disabling and enabling Wi-Fi
  • Dumping Sysdiagnose logs and digging through them
  • Killing and restarting the Phone app

I tried all of the above and nothing resolved the issue. No, not even “Reset Network Settings”.

Then it dawned on me. I had recalled reading a year or two back that sometimes Airplane Mode can resolve some network connectivity issues. I’m not sure exactly what Airplane Mode actually does under the hood in detail, but it appears to modify a bunch of configs and disable all networking including Cellular, Wi-Fi, Bluetooth and anything else that performs networking.

Once Airplane Mode was enabled, I allowed the phone to sit for 30 seconds to make sure all components recognized Airplane Mode. Then, I disabled Airplane Mode. Almost immediately, the phone’s menu bar now says ‘T-Mobile Wi-Fi’. Wow, that actually worked.

If you’re having networking problems on your iPhone, try enabling then disabling Airplane Mode instead of “Reset Network Settings”. At least, it’s worth a try before resorting to disabling iCloud Keychain followed by “Reset Network Settings”.

iOS 11 vs 12

The first time I experienced my issue with the iCloud Keychain and “Reset Network Settings”, I was using iOS 11. I’m firmly of, “Once Bitten, Twice Shy.” This means, I haven’t tested this on iOS 12 to see if Apple has changed their ways. It’s very doubtful they have and very likely this problem still persists even in the most current version of iOS.

Design Rant Mode On

Apple seems to be under the delusion that we’re still living in a one-device-ownership-world. We’re not. We now own Macs, Apple TVs, Watches, iPhones and iPads that all rely on their multi-device services, such as iCloud Keychain. To design a feature that can wipe the entire data shared by multiple devices is not only the very definition of shit software, it’s also the very definition of a shit company that hasn’t the first clue of what the hell they’ve actually built.


If this article is helpful to you, please leave a comment below.

↩︎

%d bloggers like this: