Fixed! I can now use ADB to talk to the phone in OSX! Turns out that it’s a problem with the way that LG designed the phone’s composite device vs the way that OSX recognizes composite devices. USB devices all present a class and a subclass to the OS when they’re plugged in. For composite devices the class is 0 and the subclass can be 0 (legacy) or 16(current.) Linux plays a little fast and loose, and assumes that anything with a class of 0 is a composite device, but OSX is a little more stringent. It looks for the subclass to be proper. LG made the subclass on the GW620 a 2. Not 0 or 16 like the USB spec says, but 2. Totally non-standard. So, I modified the Info.plist for OSX’s composite device driver so that it would also accept 2. Problem solved. š Here’s what you need to do to make it work:
- Open terminal (Applications/Utilities/Terminal)
- “cd /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/IOUSBCompositeDriver.kext/Contents”
- “sudo nano Info.plist” (or vi, or emacs, or whatever console editor you prefer)
- Copy the IOUSBComposite section (from <key> to </dict>)
- Paste the section in at line 66 (right after where it appears) so you have 2 copies in the file
- Change the bDeviceSubClass value from 0 to 2
- Change the key name from “IOUSBComposite” to “GW620”
- The end result should look something like this:
<key>GW620</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBComposite</string> <key>IOClass</key> <string>IOUSBCompositeDriver</string> <key>IOProviderClass</key> <string>IOUSBDevice</string> <key>bDeviceClass</key> <integer>0</integer> <key>bDeviceSubClass</key> <integer>2</integer> </dict>
- “sudo diskutil repairpermissions /” and let it finish
- “sudo touch /System/Library/Extensions” and wait a few mins for the extension reindexing to finish
- “adb devices” should now see your phone
Note, this is VERY kludgy, and will probably break every time OSX updates itself, but it works. I can finally stop rebooting every time I want to work on the phone! š