diff options
Diffstat (limited to 'README')
| -rw-r--r-- | README | 26 |
1 files changed, 12 insertions, 14 deletions
| @@ -8,22 +8,18 @@ command/response payloads instead of binary blobs. The outer binary protocol is | |||
| 8 | still the same used but now the only command/response format is 8 (plist). | 8 | still the same used but now the only command/response format is 8 (plist). |
| 9 | 9 | ||
| 10 | The server is under the usbmuxd directory. You'll need CMake and libusb 1.0 to | 10 | The server is under the usbmuxd directory. You'll need CMake and libusb 1.0 to |
| 11 | build it. In addition, you need to apply the libusb patch in the patches/ | 11 | build it. Due to a bug in zero-length packet handling, you'll need either the |
| 12 | directory. If you want to debug using valgrind, apply the valgrind patch to | 12 | git version of libusb or 1.0.3, whenever it comes out. |
| 13 | improve the handling of the USB device filesystem ioctls. | ||
| 14 | 13 | ||
| 15 | There is a Python client library in the python-client directory. It should be | 14 | There is a Python client library in the python-client directory. It should be |
| 16 | compatible with Windows, Linux, and OSX (using the Apple usbmuxd on Win and OSX) | 15 | compatible with Windows, Linux, and OSX (using the Apple usbmuxd on Win and OSX) |
| 17 | tcprelay.py implements a TCP connection forwarder that lets you pipe TCP | 16 | tcprelay.py implements a TCP connection forwarder that lets you pipe TCP |
| 18 | connections to localhost to the phone. Run it with --help for usage. Note that | 17 | connections to localhost to the phone. Run it with --help for usage. The Python |
| 19 | under OSX you'll have to change the socket path from /tmp/usbmuxd to | 18 | client lib is also compatible with the new plist-based protocol and should |
| 20 | /var/run/usbmuxd (there is no socket path on Windows, only a TCP connection to | 19 | automatically select it if it sees such a server. However, you need Python 2.6 |
| 21 | localhost). The Python client lib is also compatible with the new plist-based | 20 | for Windows and Linux in this case, since the plistlib module doesn't come with |
| 22 | protocol and should automatically select it if it sees such a server. However, | 21 | older versions under these OSes (not that you'll have a server that supports |
| 23 | you need Python 2.6 for Windows and Linux in this case, since the plistlib | 22 | this protocol under Linux. TODO: does Windows iTunes use this yet?) |
| 24 | module doesn't come with older versions under these OSes (not that you'll have a | ||
| 25 | server that supports this protocol under Linux. TODO: does Windows iTunes even | ||
| 26 | use this yet?) | ||
| 27 | 23 | ||
| 28 | ARCHITECTURE | 24 | ARCHITECTURE |
| 29 | 25 | ||
| @@ -100,7 +96,9 @@ GOTCHAS AND ANNOYANCES | |||
| 100 | The usbmuxd CONNECT request port field is byte-swapped (network-endian). This is | 96 | The usbmuxd CONNECT request port field is byte-swapped (network-endian). This is |
| 101 | even more annoying for the plist based protocol, since it's even true there | 97 | even more annoying for the plist based protocol, since it's even true there |
| 102 | (where the field is plain text). So even for the plain text int, you need to | 98 | (where the field is plain text). So even for the plain text int, you need to |
| 103 | swap the bytes (port 22 becomes <integer>5632</integer>). | 99 | swap the bytes (port 22 becomes <integer>5632</integer>). I have no clue if this |
| 100 | is the case on the new plist protocol on PPC macs (is the newer iTunes available | ||
| 101 | for those?) | ||
| 104 | 102 | ||
| 105 | There are a bunch of gotchas due to the USB framing, and this is even worse | 103 | There are a bunch of gotchas due to the USB framing, and this is even worse |
| 106 | because implementations tend to get it wrong (i.e. libusb, and this is the | 104 | because implementations tend to get it wrong (i.e. libusb, and this is the |
| @@ -135,7 +133,7 @@ is normally not an issue, but it's annoying for debugging because lost packets | |||
| 135 | gets out of sync and then might crash and burn dozens of packets later. | 133 | gets out of sync and then might crash and burn dozens of packets later. |
| 136 | 134 | ||
| 137 | The server needs a proper front-end (i.e. daemonizing, commandline options, | 135 | The server needs a proper front-end (i.e. daemonizing, commandline options, |
| 138 | etc), a lot of testing, and some optimizing. | 136 | etc), more testing, and some optimizing. |
| 139 | 137 | ||
| 140 | Someone should probably do some edge-case testing on the TCP stuff. | 138 | Someone should probably do some edge-case testing on the TCP stuff. |
| 141 | 139 | ||
