quicktime_video_hack icon indicating copy to clipboard operation
quicktime_video_hack copied to clipboard

Not receiving CWPA Message

Open j-santander opened this issue 4 years ago • 10 comments

My objective is to replicate your project on C++. I'm currently on Ubuntu 20.10 with libusb 1.0.23. I've managed so far to enable the hidden QT-Config, to receive the PING message from the device and to send the PING message back. Unfortunately, the device never sends anything after that. According to the technical description there should be a SYNC-CWPA message.

The device is a recent iPhone SE with iOS 13.7

The same thing seems to happen with your code, I've tried both with docker and with locally built version.

Running docker with:

docker run --privileged -v /dev/bus/usb:/dev/bus/usb -it qvhrun:$(git branch --show-current) bash

The output is:

root@b11f966c8a95:/# /bin/linux/qvh gstreamer -v
{"level":"info","msg":"Set Debug mode","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"requested udid:''","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Starting Gstreamer","time":"2020-12-14T22:30:45Z"}
{"level":"info","msg":"Starting Gstreamer..","time":"2020-12-14T22:30:45Z"}
{"level":"info","msg":"Gstreamer is running!","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Opened usbcontext:\u0026{0x7fa318000c80 0xc000088180 {}}","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found MuxConfig 3 for Device 1.49: 05ac:12a8 (available configs: [1 2 3 4])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found MuxConfig 4 for Device 1.49: 05ac:12a8 (available configs: [1 2 3 4])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Getting serial for: vid=05ac,pid=12a8,bus=1,addr=49","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Got serial00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found MuxConfig 3 for Device 1.49: 05ac:12a8 (available configs: [1 2 3 4])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found MuxConfig 4 for Device 1.49: 05ac:12a8 (available configs: [1 2 3 4])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"no udid specified, using '00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found MuxConfig 3 for Device 1.49: 05ac:12a8 (available configs: [1 2 3 4])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found MuxConfig 4 for Device 1.49: 05ac:12a8 (available configs: [1 2 3 4])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Enabling QT config RC:0","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Checking for active QT config for 00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Reopening Context","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Getting serial for: vid=05ac,pid=12a8,bus=1,addr=50","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Got serial00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found QTConfig 5 for Device 1.50: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found MuxConfig 3 for Device 1.50: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Found MuxConfig 4 for Device 1.50: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"QTConfig for 00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 activated","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Opened usbcontext:\u0026{0x7fa31c000d60 0xc000148120 {}}","time":"2020-12-14T22:30:45Z"}
{"level":"debug","msg":"Config is active: 0","time":"2020-12-14T22:30:45Z"}
{"error_message":"failed connecting to usb","original_error":"Could not retrieve config"}

Running locally seems to be work slightly better.

jsantand@jsantander-p:~/local/quicktime_video_hack$ ./quicktime_video_hack gstreamer -v
{"level":"info","msg":"Set Debug mode","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Opened usbcontext:\u0026{0xbf2e40 0xc00008e120 {}}","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (6 alternate settings) altsettings:6 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found MuxConfig 4 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found QTConfig 5 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found MuxConfig 3 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 4 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (8 alternate settings) altsettings:8 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 3 (9 alternate settings) altsettings:9 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 4 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (7 alternate settings) altsettings:7 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Getting serial for: vid=05ac,pid=12a8,bus=1,addr=52","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Got serial00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found MuxConfig 3 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found MuxConfig 4 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found QTConfig 5 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"info","msg":"no usbSerial specified, using '00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Starting Gstreamer","time":"2020-12-14T23:33:17+01:00"}
{"level":"info","msg":"Starting Gstreamer..","time":"2020-12-14T23:33:17+01:00"}
{"level":"info","msg":"Gstreamer is running!","time":"2020-12-14T23:33:17+01:00"}
{"level":"warning","msg":"Error opening usb deviceslibusb: bad access [code -3]","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found MuxConfig 3 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found MuxConfig 4 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (3 alternate settings) altsettings:3 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found QTConfig 5 for Device 1.52: 05ac:12a8 (available configs: [1 2 3 4 5])","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (2 alternate settings) altsettings:2 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Skipping 00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 because it already has an active QT config","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Opened usbcontext:\u0026{0x7f73b0000df0 0xc0001a1200 {}}","time":"2020-12-14T23:33:17+01:00"}
{"level":"warning","msg":"Error opening usb deviceslibusb: bad access [code -3]","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Config is active: 0, QT config is: 5","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"QT Config is active: vid=05ac,pid=12a8,bus=1,addr=52,config=5","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Looking for quicktime interface..","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Found Quicktimeinterface: 2","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Got QT iface:vid=05ac,pid=12a8,bus=1,addr=52,config=5,if=2,alt=0","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Clear Feature RC: 0","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Clear Feature RC: 0","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Inbound Bulk: ep #6 IN (address 0x86) bulk [512 bytes]","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Outbound Bulk: ep #5 OUT (address 0x05) bulk [512 bytes]","time":"2020-12-14T23:33:17+01:00"}
{"level":"debug","msg":"Endpoint claimed","time":"2020-12-14T23:33:17+01:00"}
{"level":"info","msg":"Device '00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000' USB connection ready, waiting for ping..","time":"2020-12-14T23:33:17+01:00"}
{"level":"info","msg":"AudioVideo-Stream has started","time":"2020-12-14T23:33:17+01:00"}

but it still stops at the same point as my c++ code.

I guess there's something missing. Unfortunately I don't have a Mac to debug the real exchange between quicktime and the device.

BTW, in the technical documentation, the HPD1 and the HPA1 messages are not documented.

j-santander avatar Dec 14 '20 22:12 j-santander

Hey Julian! Cool stuff! :-D Out of curiosity, may I ask what your planning to do with the tool? Is it just for fun or are you planning to do something with it professionally?

I definitely need to spend some time figuring out a few improvements for Linux support, that is long overdue. Have you tried disabling the built-in ubuntu usbmux?

It is interesting that it does not work for you, usually when the PING is received everything works just fine.

Can you run qvh diagnostics metrics.csv --dump=binary.bin and check the binary dump of the usb transferred data?

Kudos for uncovering that I forgot to document these messages, I'll do it on the weekend. I will also try to test the tool with my iPhones and tablets again to give some better explanations how to use this on Linux.

danielpaulus avatar Dec 15 '20 06:12 danielpaulus

Hi @danielpaulus. thanks. Well, my intent is professional: we're adding support for iOS devices on a test probe.

Just executed the command you indicated, the output:

xxd inbound-binary.bin:

00000000: 676e 6970 0000 0000 0100 0000            gnip........

xxd outbound-binary.bin:

00000000: 1000 0000 676e 6970 0000 0000 0100 0000  ....gnip........
00000010: 1400 0000 6e79 7361 0000 0000 0000 0000  ....nysa........
00000020: 3061 7068 1400 0000 6e79 7361 0100 0000  0aph....nysa....
00000030: 0000 0000 3064 7068  

Note that this is on a freshly connected device. If I run it a second time, the error I get is:

{"level":"warning","msg":"Error opening usb deviceslibusb: bad access [code -3]","time":"2020-12-15T07:39:04+01:00"}
{"level":"debug","msg":"Config is active: 4, QT config is: 5","time":"2020-12-15T07:39:04+01:00"}
{"level":"info","msg":"Stopped","time":"2020-12-15T07:39:04+01:00"}

I just realized this is similar to what is described in #37

The zip contains the inbound-binary.bin, the outbound-binary.bin and logfile-1608014449.log output.zip

Please let me know if I can test anything else from my side.

j-santander avatar Dec 15 '20 06:12 j-santander

disabling usbmuxd (masking it as described in #37) changes slightly the behaviour:

  • When running first time after connecting the device. It is the same, flow stops after receiving & sending the PING message.
  • When running second time, then it does not receive the PING:
{"level":"debug","msg":"Start dumping all binary transfer","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Opened usbcontext:\u0026{0x7f1ee8000cd0 0xc00008f0e0 {}}","time":"2020-12-15T08:00:33+01:00"}
{"level":"warning","msg":"Error opening usb deviceslibusb: bad access [code -3]","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Config is active: 5, QT config is: 5","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"QT Config is active: vid=05ac,pid=12a8,bus=1,addr=33,config=5","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Looking for quicktime interface..","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"iface:Interface 0 (1 alternate settings) altsettings:1 isvendor:false isub:false","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"iface:Interface 1 (1 alternate settings) altsettings:1 isvendor:true isub:false","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"iface:Interface 2 (1 alternate settings) altsettings:1 isvendor:true isub:true","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Found Quicktimeinterface: 2","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Got QT iface:vid=05ac,pid=12a8,bus=1,addr=33,config=5,if=2,alt=0","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Clear Feature RC: 0","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Clear Feature RC: 0","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Inbound Bulk: ep #6 IN (address 0x86) bulk [512 bytes]","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Outbound Bulk: ep #5 OUT (address 0x05) bulk [512 bytes]","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Endpoint claimed","time":"2020-12-15T08:00:33+01:00"}
{"level":"info","msg":"Device '00008030001151092E98402E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000' USB connection ready, waiting for ping..","time":"2020-12-15T08:00:33+01:00"}
{"level":"debug","msg":"Signal received: interrupt","time":"2020-12-15T08:00:43+01:00"}

My guess is that there are two separate problems:

  • There's a conflict with system processes in linux trying to get hold of the device. As an aside, in my c++ code I'm taking measures to detach the device from kernel drivers before trying to claim the interface (most of the times it works, when it fails there's an API to reset the device and I try again). Now, this is my first exposure to talking to USB devices, so it might not be the right thing to do,
  • Either something has changed in the message sequence or we're missing something. As I said, I don't have any experience with libusb so I proceeded slowly adding pieces progressively to my code. What it seems is that device seems to get stuck in an odd state (e.g. the device does not send PING when connected again).

j-santander avatar Dec 15 '20 07:12 j-santander

usbmuxd will always force the device to configuration 4, even if 5 configurations are available: https://github.com/libimobiledevice/usbmuxd/blob/master/src/usb.c#L396-L399. It will also claim the usbmux interfaces; calling set_configuration from another program will result in EBUSY.

You'll have to patch usbmuxd for this to work.

Yes, in some scenarios, the device does not detect you disconnected from the Valeria interface (e.g. if you didn't properly send the stop packets). You can always reset the device by physically disconnecting it and reconnecting it again.

qmfrederik avatar Dec 15 '20 08:12 qmfrederik

usbmuxd will always force the device to configuration 4, even if 5 configurations are available: https://github.com/libimobiledevice/usbmuxd/blob/master/src/usb.c#L396-L399. It will also claim the usbmux interfaces; calling set_configuration from another program will result in EBUSY.

You'll have to patch usbmuxd for this to work.

Yes, in some scenarios, the device does not detect you disconnected from the Valeria interface (e.g. if you didn't properly send the stop packets). You can always reset the device by physically disconnecting it and reconnecting it again.

ok, thanks for the reference to the patch. As I said, in my C++ code it seems I can work around that by detaching drivers and releasing interfaces and if everything fails requesting the device to reset before trying again.

However, the issue of not receiving the CWPA after the PING seems to be present with and without the usbmuxd and it is also present in freshly connected devices.

j-santander avatar Dec 15 '20 09:12 j-santander

For the record. I'm making progress in my port to C++, already capturing audio and video.

For me, the key was what @qmfrederik indicated. It seems that usbmuxd requires the patch linked in the comment. Patching and recompiling usbmuxd, made the project working correctly (and from there I was able to continue with my C++ port).

So the situation seems to be:

  • With unpatched usbmuxd, it doesn't work because usbmuxd interferes with setting the configuration and claiming the interfaces.
  • With patched usbmuxd. It works. We see the PING and the CWPA.
  • Without usbmuxd (masking or what I was doing to reset the device), it doesn't work (missing CWPA).

To me, this indicates that some part of the flurry of messages that usbmuxd exchanges, is required for the QT interface to work.

I'll keep looking into this. In my target environmen I'm not sure even if I will have usbmuxd available and deploying a patched version might be a big hassle.

j-santander avatar Dec 28 '20 17:12 j-santander

To me, this indicates that some part of the flurry of messages that usbmuxd exchanges, is required for the QT interface to work.

If I'm not mistaken, usbmuxd starts a Lockdown session. This allows the host to authenticate to the device (e.g. making it 'trusted'). I think that this is required for the AV interface to work. In other words, the AV interface does not work if the host has not established a trust relationship with the device

With unpatched usbmuxd, it doesn't work because usbmuxd interferes with setting the configuration and claiming the interfaces.

usbmuxd just got patched: https://github.com/libimobiledevice/usbmuxd/commit/bf2e2ec054102286ad6ab272be42c21034c136ed, see libimobiledevice/usbmuxd#160 for the discussion

qmfrederik avatar Jan 09 '21 12:01 qmfrederik

For the record. I'm making progress in my port to C++, already capturing audio and video.

For me, the key was what @qmfrederik indicated. It seems that usbmuxd requires the patch linked in the comment. Patching and recompiling usbmuxd, made the project working correctly (and from there I was able to continue with my C++ port).

So the situation seems to be:

  • With unpatched usbmuxd, it doesn't work because usbmuxd interferes with setting the configuration and claiming the interfaces.
  • With patched usbmuxd. It works. We see the PING and the CWPA.
  • Without usbmuxd (masking or what I was doing to reset the device), it doesn't work (missing CWPA).

To me, this indicates that some part of the flurry of messages that usbmuxd exchanges, is required for the QT interface to work.

I'll keep looking into this. In my target environmen I'm not sure even if I will have usbmuxd available and deploying a patched version might be a big hassle.

successed on iphone 8 ,iphone xs,but still can not get CWPA on iphone 11 and iphone 12 with patched usbmuxd

JinYing123 avatar Jan 29 '21 02:01 JinYing123

I added a check if the device is paired now with https://github.com/danielpaulus/quicktime_video_hack/pull/91

danielpaulus avatar Apr 29 '21 12:04 danielpaulus

quicktime_video % ./quicktime_video_hack gstreamer {"level":"info","msg":"no usbSerial specified, using '00008101001C15A20AD2001E\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'","time":"2021-06-22T12:28:06-04:00"} {"level":"info","msg":"found iPhone 12 Pro 14.6 for udid 00008101-001C15A20AD2001E","time":"2021-06-22T12:28:06-04:00"} {"level":"info","msg":"Starting Gstreamer..","time":"2021-06-22T12:28:06-04:00"} zsh: illegal hardware instruction ./quicktime_video_hack gstreamer

krishtoautomate avatar Jun 22 '21 16:06 krishtoautomate