iokit-utils
iokit-utils copied to clipboard
iOS / iPhoneOS 13 device capture
I'm doing some really unsupported/stupid stuff where I compiled libusb for Darwin in XCode for iPhoneOS. That works fine, but the hotplug / device resolution doesn't seem to detect devices (it returns nothing) as well as your code, which returns
[1;96mAppleT8030USBXHCI(AppleT8030USBXHCI):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOClass</key>
<string>AppleT8030USBXHCI</string>
</dict>
</plist>
[1;96mAppleUSB20XHCILightningPort(usb-drd-port-hs):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>device_type</key>
<data>
dXNiLWRyZC1wb3J0LWhzAA==
</data>
<key>name</key>
<data>
dXNiLWRyZC1wb3J0LWhzAA==
</data>
</dict>
</plist>
[1;96mIOUSBHostDevice(USB2.0 HUB):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOCFPlugInTypes</key>
<dict>
<key>9dc7b780-9ec0-11d4-a54f-000a27052861</key>
<string>IOUSBHostFamily.kext/PlugIns/IOUSBLib.bundle</string>
</dict>
</dict>
</plist>
[1;96mAppleUSB20Hub(AppleUSB20Hub):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOClass</key>
<string>AppleUSB20Hub</string>
</dict>
</plist>
[1;96mAppleUSB20HubPort(AppleUSB20HubPort):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
[1;96mAppleUSB20HubPort(AppleUSB20HubPort):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
[1;96mAppleUSB20HubPort(AppleUSB20HubPort):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
[1;96mAppleUSB20HubPort(AppleUSB20HubPort):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
[1;96mIOUSBHostDevice(canable gs_usb):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOCFPlugInTypes</key>
<dict>
<key>9dc7b780-9ec0-11d4-a54f-000a27052861</key>
<string>IOUSBHostFamily.kext/PlugIns/IOUSBLib.bundle</string>
</dict>
</dict>
</plist>
[1;96mAppleUSBHostCompositeDevice(AppleUSBHostCompositeDevice):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOClass</key>
<string>AppleUSBHostCompositeDevice</string>
</dict>
</plist>
[1;96mIOUSBHostInterface(IOUSBHostInterface):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOCFPlugInTypes</key>
<dict>
<key>2d9786c6-9ef3-11d4-ad51-000a27052861</key>
<string>IOUSBHostFamily.kext/PlugIns/IOUSBLib.bundle</string>
</dict>
</dict>
</plist>
[1;96mIOUSBHostInterface(canble firmware upgrade interface):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOCFPlugInTypes</key>
<dict>
<key>2d9786c6-9ef3-11d4-ad51-000a27052861</key>
<string>IOUSBHostFamily.kext/PlugIns/IOUSBLib.bundle</string>
</dict>
</dict>
</plist>
[1;96mIOUSBHostInterface(IOUSBHostInterface):[0m [1;92m(os/kern) successful[0m
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOCFPlugInTypes</key>
<dict>
<key>2d9786c6-9ef3-11d4-ad51-000a27052861</key>
<string>IOUSBHostFamily.kext/PlugIns/IOUSBLib.bundle</string>
</dict>
</dict>
</plist>
The USB interface is obviously detected by the iPhoneOS kernel. Could you throw up a small snippet on how somebody might, say,
- open the interface / claim it
- perform controlTransferOut / controlTransferIn against it
- perform transferIn / transferOut against endpoints from that interface
This would open a massive world in iOS/iPhoneOS development where USB device support isn't really documented but is actually secretly supported.
[1;96mClass Name Type Spawn UC One Two Equal[0m
AppleT8030TypeCPhy AppleT8030TypeCPhy [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
AppleARMIODevice usb-drd [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
AppleT8030USBXHCI AppleT8030USBXHCI [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
AppleUSB20XHCILightningPort usb-drd-port-hs [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
IOUSBHostDevice USB2.0 HUB [1;95m 0[0m [1;93m(iokit/common) not permitted [0m [1;94m [0m 0 0
AppleUSB20Hub AppleUSB20Hub [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
AppleUSB20HubPort AppleUSB20HubPort [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
AppleUSB20HubPort AppleUSB20HubPort [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
AppleUSB20HubPort AppleUSB20HubPort [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
AppleUSB20HubPort AppleUSB20HubPort [1;95m 0[0m [1;93m(iokit/common) unsupported function [0m [1;94m [0m 0 0
IOUSBHostDevice canable gs_usb [1;95m 0[0m [1;93m(iokit/common) not permitted [0m [1;94m [0m 0 0
I think this means the functionality we need to do anything other than list the device is not supported/permitted but I'd be curious to hear your thoughts.