iPhone 4(S) access via gphoto2
Alexey Dokuchaev
danfe at nsu.ru
Sun Oct 13 08:22:12 UTC 2013
On Sun, Oct 13, 2013 at 08:50:53AM +0200, Hans Petter Selasky wrote:
> iPhones sometimes have multiple configurations.
>
> usbconfig -d X.Y dump_device_desc
Dumping desc produced almost identical files (the only differences were in
idProduct and iSerialNumber, quite expectedly).
> usbconfig -d X.Y set_config 1
> usbconfig -d X.Y set_config 2
> usbconfig -d X.Y set_config 3
I presume I do not need to re-plug or otherwise re-init the phone after
setting config, correct? (It seems I don't, asking just to make sure.)
> PTP might not always be available from the first configuration.
I've tried to play with set_config, but without much luck. However, I did
dump_all_config_desc to discover that config index 2 (the one that is "PTP
+ Apple Mobile Device", with bInterfaceClass = 0x0006) is missing from the
output for the "bad" iPhone (diff attached).
Why is it missing? Is there any way to force/inject it into the stack?
./danfe
-------------- next part --------------
--- ok.all_config 2013-10-13 15:34:36.000000000 +0800
+++ bad.all_config 2013-10-13 15:35:04.000000000 +0800
@@ -203,92 +203,6 @@
- Configuration index 2
-
- bLength = 0x0009
- bDescriptorType = 0x0002
- wTotalLength = 0x003e
- bNumInterfaces = 0x0002
- bConfigurationValue = 0x0003
- iConfiguration = 0x0007 <PTP + Apple Mobile Device>
- bmAttributes = 0x00c0
- bMaxPower = 0x00fa
-
- Interface 0
- bLength = 0x0009
- bDescriptorType = 0x0004
- bInterfaceNumber = 0x0000
- bAlternateSetting = 0x0000
- bNumEndpoints = 0x0003
- bInterfaceClass = 0x0006
- bInterfaceSubClass = 0x0001
- bInterfaceProtocol = 0x0001
- iInterface = 0x0000 <no string>
-
- Endpoint 0
- bLength = 0x0007
- bDescriptorType = 0x0005
- bEndpointAddress = 0x0002 <OUT>
- bmAttributes = 0x0002 <BULK>
- wMaxPacketSize = 0x0200
- bInterval = 0x000a
- bRefresh = 0x0000
- bSynchAddress = 0x0000
-
- Endpoint 1
- bLength = 0x0007
- bDescriptorType = 0x0005
- bEndpointAddress = 0x0081 <IN>
- bmAttributes = 0x0002 <BULK>
- wMaxPacketSize = 0x0200
- bInterval = 0x000a
- bRefresh = 0x0000
- bSynchAddress = 0x0000
-
- Endpoint 2
- bLength = 0x0007
- bDescriptorType = 0x0005
- bEndpointAddress = 0x0083 <IN>
- bmAttributes = 0x0003 <INTERRUPT>
- wMaxPacketSize = 0x0040
- bInterval = 0x000a
- bRefresh = 0x0000
- bSynchAddress = 0x0000
-
-
- Interface 1
- bLength = 0x0009
- bDescriptorType = 0x0004
- bInterfaceNumber = 0x0001
- bAlternateSetting = 0x0000
- bNumEndpoints = 0x0002
- bInterfaceClass = 0x00ff
- bInterfaceSubClass = 0x00fe
- bInterfaceProtocol = 0x0002
- iInterface = 0x0000 <no string>
-
- Endpoint 0
- bLength = 0x0007
- bDescriptorType = 0x0005
- bEndpointAddress = 0x0004 <OUT>
- bmAttributes = 0x0002 <BULK>
- wMaxPacketSize = 0x0200
- bInterval = 0x0000
- bRefresh = 0x0000
- bSynchAddress = 0x0000
-
- Endpoint 1
- bLength = 0x0007
- bDescriptorType = 0x0005
- bEndpointAddress = 0x0085 <IN>
- bmAttributes = 0x0002 <BULK>
- wMaxPacketSize = 0x0200
- bInterval = 0x0000
- bRefresh = 0x0000
- bSynchAddress = 0x0000
-
-
-
Configuration index 3
bLength = 0x0009
More information about the freebsd-usb
mailing list