Good looking apples — with a surprise!
Someday my colleagues reported that their iPhones (4) were preventing them to go online through the USB Cable.
The guys used to connect iPhone USB cables between their iPhones and Macbooks (they used to leave "Settings" -> "Personal Hotspot" Set to "ON" & "Mobile Data" Set to "ON").
Not only that — the issue affected everyone in the office!
As the only in-house IT worker, I researched for ways to fix the glitch and restore the USB tethering functionality.
The solution I put together is not for the faint-hearted and I can't guarantee it'll work for you — 'though, if you really want USB tethering back, you might give it a shot.
I have a small torx screwdriver.
First of all, perform a downgrade of iTunes to 10.6.3.
Before doing that, backup your Music Library (and everything iTunes-related).
1. Unplug your iPhone from the Mac.
2. Uninstall iTunes 11.x.
3. Download iTunes 10.6.3 from here: http://support.apple.com/kb/DL1575
4. Open Finder and search for “iTunes Library.itl”.
5. (Once found) Rename the folder withing which “iTunes Library.itl” is located to something else (please note this effectively clears your iTunes Library).
6. Reboot then connect the iPhone 4.
7. Check whether USB Tethering works.
I have a big sledgehammer.
IF USB Tethering doesn't work…(Tested with iTunes 11.0.1):
8. Open Network Preferences and remove "iPhone USB" from the list.
9. Repeat steps 1, 4, 5 then continue from below (skip step 2, 3, 6, 7 & 8).
(With a disconnected iPhone).
10. Download AppleUSBEthernetHost kext 2.2.0 from one of the following locations:
11. Double Click on the AppleUSBEthernetHost kext 2.2.0 (Download mirror linked), extract its contents somewhere then run a terminal, grant yourself sudo permissions and update the uncompressed 2.2.0 kext folder permissions as follows:
chmod -R 755 /Users/<username>/Downloads/AppleUSBEthernetHost.kext
chown -R root:wheel /Users/<username>/Downloads/AppleUSBEthernetHost.kext
12. Check if the original AppleUSBEthernet kext is still loaded and (in case loaded), manually unload it with the following commands:
kextstat | grep AppleUSBEthernet
13. Save a backup copy of the broken kext (ie. instead of deleting it):
mv /System/Library/Extensions/AppleUSBEthernetHost.kext /System/Library/Extensions/AppleUSBEthernetHost.kext.broken1
14. Move the downloaded 2.2.0 kext to /System/Library/Extensions/ location:
mv /Users/<username>/Downloads/AppleUSBEthernetHost.kext /System/Library/Extensions/
15. Fix the 2.2.0 kext permissions:
find /System/Library/Extensions/AppleUSBEthernetHost.kext -type f | xargs chmod 644
16. Once you receive the message "Found new Network Interface", click on the "Network Preferences"-Button and click on "Apply" (so the interface will get configured).
17. (optional - just in case) Open Disk Utility & repair permissions.
19. Connect iPhone.
20. Check on Network Preferences if the iPhone is listed among the network connections.
Nice try mate.
If iPhone not listed among network connections:
Manually load AppleUSBEthernetHost 2.2.0 kext (with a connected iPhone):
sudo kextload /System/Library/Extensions/AppleUSBEthernetHost.kext
a sh1tl0ad amount of threads at "site:apple.com iphone 4 usb tethering"