Skip to content
This repository has been archived by the owner on Jan 28, 2023. It is now read-only.

iOS7 Support and Discussion #542

Open
plamoni opened this issue Jun 10, 2013 · 639 comments
Open

iOS7 Support and Discussion #542

plamoni opened this issue Jun 10, 2013 · 639 comments

Comments

@plamoni
Copy link
Owner

plamoni commented Jun 10, 2013

UPDATE:

Thanks for everyone's continued interest in SiriProxy. I know lots of people are really excited to get it "up and running" with iOS7. Now that the software is public, you're welcome to discuss bugs/issues on on this forum. However, keep two things in mind:

1: Only public releases of iOS are supported by SiriProxy
I don't have a developer account with Apple right now, so I'm not under NDA (I never had access to pre-release iOS7), but my understanding is that the pre-release versions of the software point to a different set of servers from the production versions. Therefore, you'll have a number of issues as guzzoni.apple.com is hard-coded in in several places (and is an integral part of the SSL MITM cert generation process). This being the case, I highly recommend upgrading to the public release (NOT the GM release from earlier this week) before you file any bugs with SiriProxy.

2: SiriProxy has no full time development staff
At this point, I'm the sole developer on SiriProxy. ElvisImpersonator does an AMAZING job at supporting the SiriProxy developer community, but doesn't work on the core development. Both of us have full time jobs that keep us extremely busy and neither of us get paid to work on SiriProxy. It's a labor of love (one that you're free to participate in through pull requests!).

That being said, I am on call this week and Elvis has, um, left the building (he's traveling for work), so it might be a week or more before I even get a chance to do testing on iOS7. So, as with before: UPDATE TO iOS7 AT YOUR OWN RISK. There's no official support for iOS7 in SiriProxy at this time and I can't make any guarantees it will ever work on iOS7. As with any new release of iOS, Apple could (any may already have) put in measures to block SiriProxy from working.

Again, thank you for your continued interest in my project. SiriProxy started out as a fun short-term project that kept me busy while I was between jobs and has turned into much more than I ever would have expected. I will continue to try and keep things working as long as I can and I'm always every excited to see the awesome projects that you, the SiriProxy development community, create! Keep up the great work and thanks again!!!

-Pete


Original:

Okay, so I'm watching the WWDC right now and there's lots of change to Siri coming. This means two things:

1: NEW BETA -- NO DISCUSSION

There's a beta out today for developers. Please remember that as an Apple Developer, you must agree to an NDA regarding unreleased applications (e.g. iOS7). This means that you should refrain from discussion of changes to the Siri protocol or functionality until iOS7 is publicly released. Once it's out for the public we can start working on fixing whatever it might break. Please do not open issues regarding problems when using iOS7 until it is publicly released. Elvis and I will close these tickets.

2: SiriProxy might break with beta software

As mentioned, a new iOS might mean changes to the Siri protocol. The iOS6 changes were minimal and I was able to fix them pretty quickly. No promises for iOS7 or future software. Hopefully it's something I'll be able to work with, but don't go upgrading devices if SiriProxy is important to you.

Thanks everyone for your interest!

-Pete

@plamoni
Copy link
Owner Author

plamoni commented Jun 15, 2013

I really did not want this to turn into a focal point for violations of the developer NDA. Please do not discuss unreleased Apple software on this forum. For now on I'm just going to delete any such posts without warning or modification.

@elvisimprsntr
Copy link
Collaborator

Do not upgrade your devices to iOS 7 GM Seed if SiriProxy is important to you. Please keep in mind that iOS 7 is not yet a public release and we are still bound by an iOS developer NDA. We are investigating any issues for possible solutions. We will provide updates when we have relevant information we can disclose.

@alexrmc92
Copy link

Now that iOS 7 has officially been released lets get this working. It's been a few months since i've looked at the source. I don't think iOS7 resolve to guzzoni.apple.com anymore. With my local DNS server handling that domain, siri will still function on iOS7. Perhaps they changed the servers DNS name, or possibly they internalized the ip address for it. They could have also set iOS7 to use a specific name server for Siri.

I'll do some packet tracing at work today and see what i can find out.

@elvisimprsntr
Copy link
Collaborator

I know you are trying to be helpful, but please refrain from posting conjecture or speculation. It does not serve anyone any good and dilutes resources from real solutions. Pete is already looking into it.

P.S. I'll be sure to let your boss know you are using company resources and time to diagnose the problem. ;)

@Sikozu
Copy link

Sikozu commented Sep 18, 2013

Guys I came across this while looking for a solution to get siri-proxy working whilst I was in the beta;

zhangyuanwei/node-siri#13

The server is now daryl.apple.com, which I got also from my own tests.

@elvisimprsntr
Copy link
Collaborator

I know everyone is anxious and trying to be helpful, but once again please refrain from conjecture and speculation. What someone may have discovered while iOS was in beta is not likely to apply to the public release. From now on any information or posts that are known to be inaccurate will automatically be deleted.

@fablanglet
Copy link

The struture of the siri's object have been changed. "Properties" doesn't exist now.
The property "class" become "$class", for "group" and "v" it's the same case. See the example below.
Moreover, the domain daryl.apple.com has been used for the beta version, now it's ever guzzoni.apple.com but the version change, and the user-agent change
IOS 6.1: User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/6.1.3/10B329) Ace/2.1
IOS 7: User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/7.0/11A465) Ace/3.0

It's my observation, i modified the siriproxy code, but the protocol have more changes, because even i modified the structure of the object, siriproxy doesn't work. If someone has more information, let me know and we can work together (@Fab_Lan or html5webapp.blogspot.com).

Example for SpeechRecognized (IOS7):
{"$group"=>"com.apple.ace.speech",
"$class"=>"SpeechRecognized",
"$v"=>"3.0",
"aceId"=>"GUID",
"refId"=>"GUID",
"recognition"=>
{"$group"=>"com.apple.ace.speech",
"$class"=>"Recognition",
"$v"=>"3.0",
"phrases"=>
[{"$group"=>"com.apple.ace.speech",
"$class"=>"Phrase",
"$v"=>"3.0",
"interpretations"=>
[{"$group"=>"com.apple.ace.speech",
"$class"=>"Interpretation",
"$v"=>"3.0",
"tokens"=>
[{"$group"=>"com.apple.ace.speech",
"$class"=>"Token",
"$v"=>"3.0",
"confidenceScore"=>804.0,
"endTime"=>780,
"originalText"=>"Teste",
"removeSpaceAfter"=>false,
"removeSpaceBefore"=>true,
"startTime"=>0,
"text"=>"Teste"}]}],
"lowConfidence"=>false,
"speechRepairApplied"=>false},
{"$group"=>"com.apple.ace.speech",
"$class"=>"Phrase",
"$v"=>"3.0",
"interpretations"=>
[{"$group"=>"com.apple.ace.speech",
"$class"=>"Interpretation",
"$v"=>"3.0",
"tokens"=>
[{"$group"=>"com.apple.ace.speech",
"$class"=>"Token",
"$v"=>"3.0",
"confidenceScore"=>808.0,
"endTime"=>1080,
"originalText"=>"Siri",
"removeSpaceAfter"=>false,
"removeSpaceBefore"=>false,
"startTime"=>780,
"text"=>"Siri"}]}],
"lowConfidence"=>false,
"speechRepairApplied"=>false},
{"$group"=>"com.apple.ace.speech",
"$class"=>"Phrase",
"$v"=>"3.0",
"interpretations"=>
[{"$group"=>"com.apple.ace.speech",
"$class"=>"Interpretation",
"$v"=>"3.0",
"tokens"=>
[{"$group"=>"com.apple.ace.speech",
"$class"=>"Token",
"$v"=>"3.0",
"confidenceScore"=>883.0,
"endTime"=>2780,
"originalText"=>"proxy",
"removeSpaceAfter"=>false,
"removeSpaceBefore"=>false,
"startTime"=>1080,
"text"=>"proxy"}]}],
"lowConfidence"=>false,
"speechRepairApplied"=>false}],
"sentenceConfidence"=>514},
"sessionId"=>"GUID"}

@bgottsch
Copy link

I've noticed 2 different headers with the new iOS 7 (I run the non-beta version). Maybe this can help someone. Also, in another test, I changed some of the SiriProxy code and had what I believe were problems with the SSL connection with the iDevice.

(the log below is from the non-modified SiriProxy server and in this test I was able to get a response from Siri)

[Info - Server] DNS Server started, tainting 'guzzoni.apple.com' with 10.0.1.25
[Info - Server] Starting SiriProxy on 0.0.0.0:443...
[Info - Server] SiriProxy up and running.
[Info - Plugin Manager] Plugins loaded: Example, Computer, Personal
[Info - iPhone] SSL completed for iPhone
[Header - iPhone] ACE /ace HTTP/1.0
[Header - iPhone] Host: guzzoni.apple.com
[Header - iPhone] Content-Length: 2000000000
[Header - iPhone] User-Agent: Assistant(iPhone/iPhone5,1; iPhone OS/7.0/11A465) Ace/3.0
[Header - iPhone] Accept-Language: en-US
[Header - iPhone] X-Ace-Host: st14p02sa:405549ce-fcc8-4779-b412-1ddf9eaacfed
[Header - iPhone]
[Debug - iPhone] Found end of headers
[Info - Plugin Manager] Plugins loaded: Example, Computer, Personal
[Info - iPhone] SSL completed for iPhone
[Header - iPhone] ACE /ace HTTP/1.0
[Header - iPhone] Host: guzzoni.apple.com
[Header - iPhone] Content-Length: 2000000000
[Header - iPhone] User-Agent: Assistant(iPhone/iPhone5,1; iPhone OS/7.0/11A465) Ace/3.0
[Header - iPhone] Accept-Language: en-US
[Header - iPhone] X-Ace-Host: st14p02sa:405549ce-fcc8-4779-b412-1ddf9eaacfed
[Header - iPhone]
[Debug - iPhone] Found end of headers
[Info - iPhone] Received Object: (group: , ref_id: , ace_id: F24C73B3-0681-476B-AAC5-1126D671BE26)
{"$class"=>"LoadAssistant",
"connectionType"=>"Wifi",
"speechId"=>"539335ad-021b-40a4-9496-b74e8c1806a5",
"assistantId"=>"a1746c70-7c6e-4dea-8401-e43f4c8eaa9f",
"activationToken"=>
"\xB1\xA2\xF6\xE6\xE2\x10\xC5 >j\xBD\x126\xA1\x97 \xB5j$",
"aceId"=>"F24C73B3-0681-476B-AAC5-1126D671BE26",
"$group"=>"com.apple.ace.system",
"sessionValidationData"=>
"\x02\xB5\xEB\xDB\x7F\x84\xA1{\xAE\xD3\x02s\x8B5\xC1\x05\xA4\xA2iT\xAF\x9D\x83V\xA0f\xB8L\x83c$\xF5h\x00\x00\x02\x00\x06\x00\x00\x00O\x00\x00\x00\x80\xEF\xAEP\xB1\xF06\xD1\xDD\xF0\x9D\x8E\xD3\xDA\xDB\x86\x05T\xEB\xFA\x1D\x8B\xA6\xB9z\b\xEB\x10.\x04'F\x11\xDDZ\x02\t\x96j\xEDJ\x90\xA2R\xDC\xB7\x03\x1ADo\xC5\xD2\xCD\x1EK\xD6\xE2&\xC6\xAB\xCE\xBE\x00]-\xA71=Bb\xA5\xE9\x98\e\xE7\xD2s!\xD0\xE7\xD2\xD6Q\xA2\x92Yw\xDF\x13W1\x9EH{\xD7P\xA6\x00\xFEM\xC3dG\r\x14\xEC1\x9D\xE3I\xB8\xEE/\x11[\xFB\f\f @m\xC4]\xCC'\x0F\x95\xA6\x00\x00\x01\x14\n\n<plist version="1.0">\n\n\tAssistant Identifier\n\ta1746c70-7c6e-4dea-8401-e43f4c8eaa9f\n\n\n\x00\x00\x00O\x01Lg\xA96\x93CA\xC8\a7%L\x90\xA2\xCE\xA5Z\x90\x02\x0F\x00\x00\x006\x02\x02H\xC5J\x95JR\xF6\xD2+x\n\xC9J\x19\xD0kR;\xB7#\x9D\xD1\xF9\xA4<\x8A\xD68(\xEA\xD4\x92Y\xD4YXq9\x1A\xDC\xFF{a\x15\x1D\x95\xE3\xA2\xE3c\xE57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
"language"=>"en-US"}
[Info - Forwarding object to Guzzoni]
[Info - iPhone] Received Object: (group: , ref_id: , ace_id: 4FCE4B6C-B901-4EB0-83D1-DF2FDAB5DF7B)
{"$class"=>"SetRestrictions",
"$group"=>"com.apple.ace.system",
"aceId"=>"4FCE4B6C-B901-4EB0-83D1-DF2FDAB5DF7B"}
[Info - Forwarding object to Guzzoni]
[Info - iPhone] Received Object: (group: , ref_id: , ace_id: C91C405F-4D4A-4B66-9455-956907C5D702)
{"$class"=>"ClearContext",
"$group"=>"com.apple.ace.system",
"aceId"=>"C91C405F-4D4A-4B66-9455-956907C5D702"}
[Info - Forwarding object to Guzzoni]
[Info - iPhone] Received Object: (group: , ref_id: , ace_id: BB62AF68-CEAF-4FE2-9462-D2AEFD9EA5B2)
{"aceId"=>"BB62AF68-CEAF-4FE2-9462-D2AEFD9EA5B2",
"$class"=>"UpdateRestrictions",
"$group"=>"com.apple.ace.system",
"restrictionsToRemove"=>["STARK"]}
[Info - Forwarding object to Guzzoni]
[Info - Guzzoni] SSL completed for Guzzoni
[Info - Guzzoni] SSL completed for Guzzoni
[Info - Plugin Manager] Plugins loaded: Example, Computer, Personal
[Info - Plugin Manager] Plugins loaded: Example, Computer, Personal
[Info - iPhone] SSL completed for iPhone
[Info - iPhone] SSL completed for iPhone
[Header - iPhone] HEAD /salt HTTP/1.1
[Header - iPhone] Host: guzzoni.apple.com
[Header - iPhone] Accept-Encoding: gzip, deflate
[Header - iPhone] Accept: /
[Header - iPhone] Content-Length: 0
[Header - iPhone] Connection: keep-alive
[Header - iPhone] Accept-Language: en-us
[Header - iPhone] User-Agent: AssistantServices/1 CFNetwork/672.0.2 Darwin/14.0.0
[Header - iPhone]
[Debug - iPhone] Found end of headers
[Header - iPhone] HEAD /ace HTTP/1.1
[Header - iPhone] Host: guzzoni.apple.com
[Header - iPhone] Accept-Encoding: gzip, deflate
[Header - iPhone] Accept: /
[Header - iPhone] Content-Length: 0
[Header - iPhone] Connection: keep-alive
[Header - iPhone] Accept-Language: en-us
[Header - iPhone] User-Agent: AssistantServices/1 CFNetwork/672.0.2 Darwin/14.0.0
[Header - iPhone]
[Debug - iPhone] Found end of headers
[Info - Guzzoni] SSL completed for Guzzoni
[Info - Guzzoni] SSL completed for Guzzoni

@bgottsch
Copy link

Also another issue I discovered was that Siri on my iPhone, when connect to the SiriProxy over wifi, uses cellular data to get the requests. When I have cellular + wifi enabled Siri works and presents 2 different headers. When I disable it (wifi only), it shows only one header and does not work. I tested it on my wifi iPad and I get the same result as the iPhone with cellular off, and in this log it appears to be doing circles, differently from the one I posted above. (the above one was using wifi + 3g)

@elvisimprsntr
Copy link
Collaborator

Siri was known to "leak" over the cellular connection in iOS 6 when the cellular connection was determined to be better, which was often the case for me when connected to LTE. Thus one had to disable the cellular data connection.

I came across this quote by Olivier Bonaventure, one of, if not the leading researcher in the field of Multi Path TCP.
Olivier Bonaventure writes:
"Besides changes in UI, multitasking and other features that the press discusses, iOS7 also includes support for Multipath TCP. Multipath TCP is a major extension to TCP that is able to use different interfaces for the same connection. Until now, Multipath TCP has been mainly used by researchers with a modified Linux kernel. iOS7 changes that, with millions of Multipath-TCP enabled devices that can switch from 3G to WiFi without losing existing TCP connections. This is not yet the case on iOS7, which currently seems to only enable it for SIRI, but other use cases will likely appear in the future."
Source: http://m.slashdot.org/story/191809

I am not an expert, but MPTCP seems to offer multiple connections over multiple IP addresses (e.g. Cellular, Wifi) to provide more robust services when one connection quality is poor or is dropped. While these reports suggest Apple is limiting MPTCP between Wifi and cellular and only for Siri, I can see the benefits of providing more robust connection to services when switching cell towers, when for a brief moment your phone has multiple cellular data connections. Also could be a used for persistent MPTCP LTE connections to improve throughput and robustness.

Regardless, from what little I have read on MPTCP, it seems turing off the cellular connection to limit Siri to using Wifi only would thwart Siri trying to use both.

@bgottsch
Copy link

@elvisimprsntr Maybe this could represent a problem. I'm looking into MPTCP. Therefore, it is possible that the iPhone prefers wifi over cellular, so if the SiriProxy connection is working it won't be a problem. Another way I though to fix this is to use VPN. While I using iOS 6, I used VPN over cellular and it worked perfectly with SiriProxy. Although, with or without the MPTCP, SiriProxy is yet not able to work with iOS 7. I think the MPTCP problems will be better figured out when it is working. For now we will have to disable cellular while we try to find a fix to SiriProxy. When I have more info of how Siri on iOS 7 works I'll let you know. In the mean time, I'll have a look into MPTCP.

@elvisimprsntr
Copy link
Collaborator

@bgottsch I used a VPN to invoke SiriProxy in iOS 6 with success as well. At the moment I am having trouble getting Siri to route thru the VPN connection. It seems Siri ignores the "route all traffic thru VPN" setting, or at least the symptoms appear that way.

@bgottsch
Copy link

@elvisimprsntr I just tested it using VPN (I run iVPN) over 3G and the SiriProxy identifies a connection from my iPhone. I found 2 headers in the log:

[Header - iPhone] ACE /ace HTTP/1.0
[Header - iPhone] Host: guzzoni.apple.com
[Header - iPhone] Content-Length: 2000000000
[Header - iPhone] User-Agent: Assistant(iPhone/iPhone5,1; iPhone OS/7.0/11A465) Ace/3.0
[Header - iPhone] Accept-Language: en-US

and

[Header - iPhone] HEAD /ace HTTP/1.1
[Header - iPhone] Host: guzzoni.apple.com
[Header - iPhone] Accept-Encoding: gzip, deflate
[Header - iPhone] Accept: /
[Header - iPhone] Content-Length: 0
[Header - iPhone] Connection: keep-alive
[Header - iPhone] Accept-Language: en-us
[Header - iPhone] User-Agent: AssistantServices/1 CFNetwork/672.0.2 Darwin/14.0.0

When I ask Siri something over this VPN connection it does not respond, so I think it is working. On my VPN setup, I point my computer running SiriProxy as the DNS server and run RubyDNS from the SiriProxy on the same address. Maybe this is preventing your iPhone to connect to the server.

Also I have found this link http://www.networkworld.com/news/2013/091913-ios7-multipath-273995.html which says "MPTCP is spreading the connection’s data across several subflows, sending it over the least congested paths."

@elvisimprsntr
Copy link
Collaborator

@bgottsch I use DD-WRT for both my VPN server and to perform a transparent guzzoni.apple.com redirect, which worked well under iOS 6.

The source of the information all points to Professor Olivier Bonaventure, http://perso.uclouvain.be/olivier.bonaventure/blog/html/2013/09/18/mptcp.html
I wonder if he actually consulted Apple and once the "Cone of Silence" was lifted when iOS 7 became public, allowed him to publish Apple's use of MPTCP. If Apple is using his implementation of MPTCP, it would certainly help his case over the competing implementations.

Regardless, it seems like getting SiriProxy working with iOS 7 will be more work than anticipated. I see it as a challenge and opportunity to learn.

@bgottsch
Copy link

@elvisimprsntr It seems that iOS 7 avoids using VPN to connect Siri. I am having problems with the VPN connection and Siri. It appears to be avoiding, as you said before. The DNS + wifi-only solution is working. For now I'll use that to see whats happening to SiriProxy. I agree, it will be a challenge.

@bgottsch
Copy link

@elvisimprsntr @plamoni I could be wrong, but I think the problem is on EventMachine and on the SSL connections.

@plamoni
Copy link
Owner Author

plamoni commented Sep 20, 2013

I'd be kind of surprised if the issue was with the SSL. The SSL is the lowest level thing (from an OSI layer prospective) that gets logged. It tosses bunches of logging when you're having connection issues, even if those are actually TCP or DNS related. If the SSL were failing, we'd be having trouble getting any data at all.

I think it's more likely that the problem is related to the multi-path TCP used by Siri in iOS7. It sounds like the VPN use-case might not be viable anymore. Again, I've had just enough free time to follow these threads, I haven't had time to do any real investigation yet.

My planned approach is to do basically the opposite of what I did when building the proxy. Essentially, when I started out, I would build the protocol encoders/decoders in one at a time, starting with a simple passthrough that handles the SSL MITM, then building on various elements of the protocol stack. If you look into the connection class, you'll see this behavior and should be able to short-circuit it. By cutting out the higher level decoders (which might be broken), it should be easier to determine at what level things are breaking down.

My worry is that the problem occurs within the TCP layer itself, which is actually handled by the kernel of the host OS. This is a sort-of worst-case-scenario. The only real solution would probably be to require people to implement MP-TCP on their servers, which would eliminate support for OSX and Windows hosts. Only Linux hosts would work and you'd probably have to build a customized kernel to add support for MP-TCP.

Again, I've done no research at all beyond reading these threads. So don't panic. I just need time. Hope to have some this weekend.

Also, I have an iPhone 5S on order. Should get here in a couple weeks.

@C4Wiz
Copy link

C4Wiz commented Sep 20, 2013

@elvisimprsntr
Copy link
Collaborator

Here is a good write up on how MPTCP actually works. http://lwn.net/Articles/544399/

@elvisimprsntr
Copy link
Collaborator

Installation options for various OS distributions: http://multipath-tcp.org/pmwiki.php?n=Users.HowToInstallMPTCP

P.S. Sorry native Windows users, you may be out of luck unless you are willing to run Linux on a VM

@bgottsch
Copy link

I wonder if OSX 10.9 Mavericks has MPTCP. I'm also installing the VM so I can test it.

@elvisimprsntr
Copy link
Collaborator

There seems to be a MPTCP virtualization method. https://github.com/multipath-tcp/mptcp-virtual

@bgottsch
Copy link

@elvisimprsntr I've seen your link. Awesome. I'm installing it (since I run on a Mac). I'll see if I can find something new with it.

@plamoni
Copy link
Owner Author

plamoni commented Sep 20, 2013

This might be a solution for testing to see if MP-TCP is at the core of the
problem (I'm still far from sure it is), but it's not a sustainable
solution. Requiring people to install a (second in many cases) virtual
machine just to handle the base connection is a pain. Most of the
improvements I've made to SP over the last couple years are focused on
trimming dependancies (on things like third-party DNS servers). I would
hate to have a new dependency of "boot up a whole new (virtual) computer..."

On Fri, Sep 20, 2013 at 3:41 PM, Beno notifications@github.com wrote:

@elvisimprsntr https://github.com/elvisimprsntr I've seen your link.
Awesome. I'm installing it (since I run on a Mac). I'll see if I can find
something new with it.


Reply to this email directly or view it on GitHubhttps://github.com//issues/542#issuecomment-24845908
.

@bgottsch
Copy link

@plamoni @elvisimprsntr I agree. Using a VM is too complicated. I think of two solutions to this. One is to disable cellular, which will make Siri use wifi and hence connect to SiriProxy. The second is to fix the server for iOS 7 and see if Siri automatically uses wifi (since it's a more reliable connection it should be automatic). Though, for this options or any other to work, SiriProxy must first be fixed. So in the mean time, while doing the testings, using a VM is not a bad idea. Another work around would be to disable cellular. I'm currently checking the connection.rb file to see if I can find where the problem is. Let you know if I have found something.

@bgottsch
Copy link

@plamoni @elvisimprsntr I think I found the problem. It may be stupid, but I think guzzoni is refusing/disconnecting from the SiriProxy. If analysed the connection.rb and it does almost everything correctly. The first and most important issue is with the new objects, which are a bit different and make the SiriProxy not interpret them. The other (which I think is the key issue) is that the iPhone, even with cellular disabled, creates new headers when it completes the SSL to guzzoni. This makes the SiriProxy/iPhone reconnect resulting in a loop hole where it never connects to guzzoni. I'm not an expert on servers so I might be wrong, but in all my testing I was not able to send/receive objects from guzzoni with iOS 7. In the same server I was able to do so with my iPad running iOS 6 (to verify if it was not another problem). A question I have is the cause of this disconnection, if it is the iPhone or guzzoni who made it.

Ps.: sorry to bother on a Saturday.

@C4Wiz
Copy link

C4Wiz commented Sep 26, 2013

any updates on the development of this?

@plamoni
Copy link
Owner Author

plamoni commented Sep 26, 2013

Not yet. :-)

@plamoni
Copy link
Owner Author

plamoni commented Sep 26, 2013

Some good news:

http://arstechnica.com/apple/2013/09/multipath-tcp-lets-siri-seamlessly-switch-between-wi-fi-and-3glte/

The important part is here:

In the comments on Bonaventure's blog post, Kristian Evensen writes that it looks like Siri doesn't actually use MPTCP to send packets over Wi-Fi and 3G/LTE at the same time. Rather, it sets up MPTCP and then continues to communicate over Wi-Fi. If the Wi-Fi network then goes down or stops working, the communication can switch seamlessly from Wi-Fi to 3G or LTE without the need to reconnect, renegotiate a secure connection, and retransmit the audio making up the question to Siri.

This is very good news. Basically, if it's correct, it means that MPTCP is not killing SiriProxy and that it's just a change to the protocol that's breaking stuff. SiriProxy should continue to work as it does today for our purposes as long as it determines it can talk to the Apple servers over the WiFi.

Also, consider that since the proxy happens via DNS, it means that the IP address the Siri client connects to is that of the proxy server. So it may try to open multiple paths to that server, but those attempted over 3G/4G/LTE should be unsuccessful (unless your SP server is public -- which is still a bad idea). Therefore, it should limit itself to the SP server and make everyone pretty happy.

So just need to figure out why the protocol interpretation is broken (not necessarily easy) and hopefully we'll be back in business.

Hopefully. :-)

@griches
Copy link

griches commented Aug 3, 2015

Hey guys,

The Assistant+ app is great. I’ve tied it in to my Home Automation app (Home Remote) for iOS and now can directly control stuff with Siri with no need for a server as long as it’s supported kit.

I want to write a plug in for Assistant+ that will read my list of actions in the Home Remote app but can’t work out how to test my extension with Assistant+. I’ve tweeted the author but had no response, do any of you have any experience with this?

Ta,

G

On 31 Jul 2015, at 11:51, kami83 notifications@github.com wrote:

Hi,

thanks a lot for the answer. This morning i installed Assistant+ on IOS 8.4 directly from Cydia. It works great and i can configure a lot of Triggers. Thanks a lot.

Cu kami


Reply to this email directly or view it on GitHub #542 (comment).

@gb160
Copy link

gb160 commented Aug 3, 2015

@griches no can't help with that I'm afraid, I was looking at making a plugin to interface with any Kodi client, but after looking at I was able to do exactly what I wanted just by using curl commands and the Kodi Json api....infact this (Json, curl) was how I interfaced with my home automation system.
I'm pretty sure anything that has a Json api can be easily interfaced with Siri using this method.

@msreynolds
Copy link

I have started playing with the Amazon Echo. Amazon released a voice API SDK recently, so I wrote the same plugin for it that I had written for SiriProxy:

Github project:
https://github.com/msreynolds/askIndigo

Second to last post here (mreyn2005):
http://forums.indigodomo.com/viewtopic.php?f=84&t=12840&p=100144

@griches
Copy link

griches commented Aug 4, 2015

Assistant+ is awesome, I didn’t even need to write a plug in in the end.

You can see a video of the results here: http://youtube.com/watch?v=UAAPpK1ZJb0

On 3 Aug 2015, at 16:39, Matthew Reynolds notifications@github.com wrote:

I have started playing with the Amazon Echo. Amazon released a voice API SDK recently, so I wrote the same plugin for it that I had written for SiriProxy:

Github project:
https://github.com/msreynolds/askIndigo https://github.com/msreynolds/askIndigo
Second to last post here (mreyn2005):
http://forums.indigodomo.com/viewtopic.php?f=84&t=12840&p=100144 http://forums.indigodomo.com/viewtopic.php?f=84&t=12840&p=100144

Reply to this email directly or view it on GitHub #542 (comment).

@gb160
Copy link

gb160 commented Aug 4, 2015

@griches that's very similar to what I've achieved....however I don't see the purpose in the App you've made....is it just for simple integration of official home kit appliances?
Why can't assistant+ talk directly to your home automation system?

How mine works is that as long as my home automation system(domoticz) can control a device, so can Siri.....I really like domoticz for the reason that even if the hardware isn't natively supported, as long as you can control the device from the command line, then it's very simple to integrate into domoticz, and as long as it's in domoticz.....it's in Siri!

So far I've got my lights, CH and AC, and full Logitech Harmony and Kodi control....all achieved with next to no hassle.
I'm looking for more things to integrate now.

@griches
Copy link

griches commented Aug 4, 2015

It doesn’t control any HomeKit enabled devices. Milight/LimitlessLED/EasyBulb don’t support any voice control and their apps are awful. Same goes for WeMo currently.

The main aim of the app is to provide Today screen access without the need to open any apps, the voice control is just a bonus.

On 4 Aug 2015, at 14:49, gb160 notifications@github.com wrote:

@griches https://github.com/griches that's very similar to what I've achieved....however I don't see the purpose in the App you've made....is it just for simple integration of official home kit appliances?
Why can't assistant+ talk directly to your home automation system?

How mine works is that as long as my home automation system(domoticz) can control a device, so can Siri.....I really like domoticz for the reason that even if the hardware isn't natively supported, as long as you can control the device from the command line, then it's very simple to integrate into domoticz, and as long as it's in domoticz.....it's in Siri!

So far I've got my lights, CH and AC, and full Logitech Harmony and Kodi control....all achieved with next to no hassle.
I'm looking for more things to integrate now.


Reply to this email directly or view it on GitHub #542 (comment).

@gb160
Copy link

gb160 commented Aug 4, 2015

@griches ahhh....it does look pretty sweet having it all in the today screen.
Would it take much to make it work on different home automation systems?
I'm using do Domoticz btw.

@griches
Copy link

griches commented Aug 4, 2015

For example: if domoticz supports calling actions by URL then Home Remote would provide buttons on your Today Screen to call the domoticz actions that would call your other actions, or call them directly. You don’t always want to talk.

It also supports Pebble and Apple Watch.

On 4 Aug 2015, at 14:49, gb160 notifications@github.com wrote:

@griches https://github.com/griches that's very similar to what I've achieved....however I don't see the purpose in the App you've made....is it just for simple integration of official home kit appliances?
Why can't assistant+ talk directly to your home automation system?

How mine works is that as long as my home automation system(domoticz) can control a device, so can Siri.....I really like domoticz for the reason that even if the hardware isn't natively supported, as long as you can control the device from the command line, then it's very simple to integrate into domoticz, and as long as it's in domoticz.....it's in Siri!

So far I've got my lights, CH and AC, and full Logitech Harmony and Kodi control....all achieved with next to no hassle.
I'm looking for more things to integrate now.


Reply to this email directly or view it on GitHub #542 (comment).

@gb160
Copy link

gb160 commented Aug 5, 2015

@griches any chance I can try your app ? I'll purchase it if it works well.

@griches
Copy link

griches commented Aug 5, 2015

Of course. DM me on Twitter @Gary_BBGames and I'll add you to the beta

On 5 Aug 2015, at 08:17, gb160 notifications@github.com wrote:

@griches any chance I can try your app ? I'll purchase it if it works well.


Reply to this email directly or view it on GitHub.

@gb160
Copy link

gb160 commented Aug 13, 2015

@griches Hi, I'm following u on twitter but can't send u a DM.
Im prob doing something wrong...im new to twitter lol.

@griches
Copy link

griches commented Aug 13, 2015

Can you just @ me of give me your username and I’ll send you one.

Ta,

G

On 13 Aug 2015, at 10:09, gb160 notifications@github.com wrote:

@griches https://github.com/griches Hi, I'm following u on twitter but can't send u a DM.
Im prob doing something wrong...im new to twitter lol.


Reply to this email directly or view it on GitHub #542 (comment).

@papertigers
Copy link

So it turns out siriproxy might work again but only the new appletv. Since there is no mTCP at play on this device. I have left my DNS records on my network and I noticed Siri was not working on the new Apple TV. Turning off that particular dns zone fixed the issue. I'll test and see if I can get it working

@papertigers
Copy link

Actually the issue will be getting the cert onto the apple tv.

@griches
Copy link

griches commented Nov 1, 2015

So here’s something interesting I found out today, the Siri remote can drive the focus engine on tvOS/Apple TV.

My app, Home Remote, ha been ported to Apple TV (still in review) and this works a treat. This means with the app open, you can control your home from the Siri remote.

You can see a video of it here: https://youtu.be/T9_AzlE8Pxs

On 31 Oct 2015, at 20:05, Michael Zeller notifications@github.com wrote:

Actually the issue will be getting the cert onto the apple tv.


Reply to this email directly or view it on GitHub #542 (comment).

@griches
Copy link

griches commented Nov 1, 2015

I should add that the TV doesn’t need to be on, you can just leave the Apple TV on, with the app open and sleep disabled and it will work.

On 1 Nov 2015, at 17:54, Gary Riches gary@bouncingball.mobi wrote:

So here’s something interesting I found out today, the Siri remote can drive the focus engine on tvOS/Apple TV.

My app, Home Remote, ha been ported to Apple TV (still in review) and this works a treat. This means with the app open, you can control your home from the Siri remote.

You can see a video of it here: https://youtu.be/T9_AzlE8Pxs https://youtu.be/T9_AzlE8Pxs

On 31 Oct 2015, at 20:05, Michael Zeller <notifications@github.com mailto:notifications@github.com> wrote:

Actually the issue will be getting the cert onto the apple tv.


Reply to this email directly or view it on GitHub #542 (comment).

@griches
Copy link

griches commented Nov 2, 2015

So here you guys, here is another update from yesterdays.

The Siri remote can drive the Focus engine on the Apple TV, activating any button that has the label you speak…. Now that’s all well and good but can be quite limiting… But what if there was a way to have much more text… There is!

My app, Home Remote, allows custom voice commands on the iOS app, so “Study Bright” can have a voice command of “Turn on the study lights”. I tried assigning the custom voice commands to the accessibility label on the button.

Here is the result: https://youtu.be/tqT49ItvQ08

This means that with Home Remote for tvOS, you will be able to call any URL command with variations of post/put/json, native WeMo commands, and milight/easybulb all with Siri when the tvOS app is open.

Ta,

G

On 1 Nov 2015, at 18:00, Gary Riches gary@bouncingball.mobi wrote:

I should add that the TV doesn’t need to be on, you can just leave the Apple TV on, with the app open and sleep disabled and it will work.

On 1 Nov 2015, at 17:54, Gary Riches <gary@bouncingball.mobi mailto:gary@bouncingball.mobi> wrote:

So here’s something interesting I found out today, the Siri remote can drive the focus engine on tvOS/Apple TV.

My app, Home Remote, ha been ported to Apple TV (still in review) and this works a treat. This means with the app open, you can control your home from the Siri remote.

You can see a video of it here: https://youtu.be/T9_AzlE8Pxs https://youtu.be/T9_AzlE8Pxs

On 31 Oct 2015, at 20:05, Michael Zeller <notifications@github.com mailto:notifications@github.com> wrote:

Actually the issue will be getting the cert onto the apple tv.


Reply to this email directly or view it on GitHub #542 (comment).

@griches
Copy link

griches commented Feb 21, 2016

I think with a combination of software I have got a pretty good SiriProxy replacement now.

Home Remote for Mac mirrors the iOS app's Today Screen set up. Home Remote can control milight, memo, LIFX & Indigo natively, as well as sending TCP and UDP packets and URL commands with varying payloads.
I recently bought an Amazon Echo to control my home. I had been using fake Wemo devices to call a URL in Home Remote, which then does any heavy lifting in terms of native control or auth.

You can see the Echo turning off milight, Hue and LIFX with one action here: https://youtu.be/cSPBfL62XPU
I have now moved that to fake Hue lights instead. The benefit of moving to Hue means that HomeBridge (node.js Home Kit) can now see the fake Hue lights.

This is the end result: https://youtu.be/9GpBUbqndl0 https://youtu.be/9GpBUbqndl0

One server with Home Remote, HomeBridge and Amazon Echo Hue support means I can control absolutely anything, with my voice, internally or externally to the network.

G

On 2 Nov 2015, at 23:14, Gary Riches gary@bouncingball.mobi wrote:

So here you guys, here is another update from yesterdays.

The Siri remote can drive the Focus engine on the Apple TV, activating any button that has the label you speak…. Now that’s all well and good but can be quite limiting… But what if there was a way to have much more text… There is!

My app, Home Remote, allows custom voice commands on the iOS app, so “Study Bright” can have a voice command of “Turn on the study lights”. I tried assigning the custom voice commands to the accessibility label on the button.

Here is the result: https://youtu.be/tqT49ItvQ08 https://youtu.be/tqT49ItvQ08

This means that with Home Remote for tvOS, you will be able to call any URL command with variations of post/put/json, native WeMo commands, and milight/easybulb all with Siri when the tvOS app is open.

Ta,

G

On 1 Nov 2015, at 18:00, Gary Riches <gary@bouncingball.mobi mailto:gary@bouncingball.mobi> wrote:

I should add that the TV doesn’t need to be on, you can just leave the Apple TV on, with the app open and sleep disabled and it will work.

On 1 Nov 2015, at 17:54, Gary Riches <gary@bouncingball.mobi mailto:gary@bouncingball.mobi> wrote:

So here’s something interesting I found out today, the Siri remote can drive the focus engine on tvOS/Apple TV.

My app, Home Remote, ha been ported to Apple TV (still in review) and this works a treat. This means with the app open, you can control your home from the Siri remote.

You can see a video of it here: https://youtu.be/T9_AzlE8Pxs https://youtu.be/T9_AzlE8Pxs

On 31 Oct 2015, at 20:05, Michael Zeller <notifications@github.com mailto:notifications@github.com> wrote:

Actually the issue will be getting the cert onto the apple tv.


Reply to this email directly or view it on GitHub #542 (comment).

@joshjames
Copy link

Of course with the echo you can hook in to Alexa voice services (avs) it would be trivial to write a Siri clone for ios that's actually utilising avs, essentially providing everyone with the same functionality of siri with a proxy, perhaps re-purposing Siri proxy to support an avs client will bring it back to life ?

On 22 Feb 2016, at 7:31 AM, Gary Riches notifications@github.com wrote:

I think with a combination of software I have got a pretty good SiriProxy replacement now.

Home Remote for Mac mirrors the iOS app's Today Screen set up. Home Remote can control milight, memo, LIFX & Indigo natively, as well as sending TCP and UDP packets and URL commands with varying payloads.
I recently bought an Amazon Echo to control my home. I had been using fake Wemo devices to call a URL in Home Remote, which then does any heavy lifting in terms of native control or auth.

You can see the Echo turning off milight, Hue and LIFX with one action here: https://youtu.be/cSPBfL62XPU
I have now moved that to fake Hue lights instead. The benefit of moving to Hue means that HomeBridge (node.js Home Kit) can now see the fake Hue lights.

This is the end result: https://youtu.be/9GpBUbqndl0 https://youtu.be/9GpBUbqndl0

One server with Home Remote, HomeBridge and Amazon Echo Hue support means I can control absolutely anything, with my voice, internally or externally to the network.

G

On 2 Nov 2015, at 23:14, Gary Riches gary@bouncingball.mobi wrote:

So here you guys, here is another update from yesterdays.

The Siri remote can drive the Focus engine on the Apple TV, activating any button that has the label you speak…. Now that’s all well and good but can be quite limiting… But what if there was a way to have much more text… There is!

My app, Home Remote, allows custom voice commands on the iOS app, so “Study Bright” can have a voice command of “Turn on the study lights”. I tried assigning the custom voice commands to the accessibility label on the button.

Here is the result: https://youtu.be/tqT49ItvQ08 https://youtu.be/tqT49ItvQ08

This means that with Home Remote for tvOS, you will be able to call any URL command with variations of post/put/json, native WeMo commands, and milight/easybulb all with Siri when the tvOS app is open.

Ta,

G

On 1 Nov 2015, at 18:00, Gary Riches <gary@bouncingball.mobi mailto:gary@bouncingball.mobi> wrote:

I should add that the TV doesn’t need to be on, you can just leave the Apple TV on, with the app open and sleep disabled and it will work.

On 1 Nov 2015, at 17:54, Gary Riches <gary@bouncingball.mobi mailto:gary@bouncingball.mobi> wrote:

So here’s something interesting I found out today, the Siri remote can drive the focus engine on tvOS/Apple TV.

My app, Home Remote, ha been ported to Apple TV (still in review) and this works a treat. This means with the app open, you can control your home from the Siri remote.

You can see a video of it here: https://youtu.be/T9_AzlE8Pxs https://youtu.be/T9_AzlE8Pxs

On 31 Oct 2015, at 20:05, Michael Zeller <notifications@github.com mailto:notifications@github.com> wrote:

Actually the issue will be getting the cert onto the apple tv.


Reply to this email directly or view it on GitHub #542 (comment).


Reply to this email directly or view it on GitHub.

@griches
Copy link

griches commented Feb 21, 2016

But there is no clone here. It's Siri, calling any URL.

Siri > home kit > fake hue > home remote.

On 21 Feb 2016, at 21:57, Josh James notifications@github.com wrote:

Of course with the echo you can hook in to Alexa voice services (avs) it would be trivial to write a Siri clone for ios that's actually utilising avs, essentially providing everyone with the same functionality of siri with a proxy, perhaps re-purposing Siri proxy to support an avs client will bring it back to life ?

On 22 Feb 2016, at 7:31 AM, Gary Riches notifications@github.com wrote:

I think with a combination of software I have got a pretty good SiriProxy replacement now.

Home Remote for Mac mirrors the iOS app's Today Screen set up. Home Remote can control milight, memo, LIFX & Indigo natively, as well as sending TCP and UDP packets and URL commands with varying payloads.
I recently bought an Amazon Echo to control my home. I had been using fake Wemo devices to call a URL in Home Remote, which then does any heavy lifting in terms of native control or auth.

You can see the Echo turning off milight, Hue and LIFX with one action here: https://youtu.be/cSPBfL62XPU
I have now moved that to fake Hue lights instead. The benefit of moving to Hue means that HomeBridge (node.js Home Kit) can now see the fake Hue lights.

This is the end result: https://youtu.be/9GpBUbqndl0 https://youtu.be/9GpBUbqndl0

One server with Home Remote, HomeBridge and Amazon Echo Hue support means I can control absolutely anything, with my voice, internally or externally to the network.

G

On 2 Nov 2015, at 23:14, Gary Riches gary@bouncingball.mobi wrote:

So here you guys, here is another update from yesterdays.

The Siri remote can drive the Focus engine on the Apple TV, activating any button that has the label you speak…. Now that’s all well and good but can be quite limiting… But what if there was a way to have much more text… There is!

My app, Home Remote, allows custom voice commands on the iOS app, so “Study Bright” can have a voice command of “Turn on the study lights”. I tried assigning the custom voice commands to the accessibility label on the button.

Here is the result: https://youtu.be/tqT49ItvQ08 https://youtu.be/tqT49ItvQ08

This means that with Home Remote for tvOS, you will be able to call any URL command with variations of post/put/json, native WeMo commands, and milight/easybulb all with Siri when the tvOS app is open.

Ta,

G

On 1 Nov 2015, at 18:00, Gary Riches <gary@bouncingball.mobi mailto:gary@bouncingball.mobi> wrote:

I should add that the TV doesn’t need to be on, you can just leave the Apple TV on, with the app open and sleep disabled and it will work.

On 1 Nov 2015, at 17:54, Gary Riches <gary@bouncingball.mobi mailto:gary@bouncingball.mobi> wrote:

So here’s something interesting I found out today, the Siri remote can drive the focus engine on tvOS/Apple TV.

My app, Home Remote, ha been ported to Apple TV (still in review) and this works a treat. This means with the app open, you can control your home from the Siri remote.

You can see a video of it here: https://youtu.be/T9_AzlE8Pxs https://youtu.be/T9_AzlE8Pxs

On 31 Oct 2015, at 20:05, Michael Zeller <notifications@github.com mailto:notifications@github.com> wrote:

Actually the issue will be getting the cert onto the apple tv.


Reply to this email directly or view it on GitHub #542 (comment).


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.

@jumper4000
Copy link

I haven't followed this thread in a while, but is there anything like SiriProxy out there yet? I know there's Assistant+, but it just doesn't have the flexibility and power that SiriProxy had. Is there anything similar to SiriProxy yet that would give me full control over Siri and what it does/say?

@graanco
Copy link

graanco commented Sep 11, 2021

I don’t trust tim the crook with my data… I want my own personal cloud and this Siri is the biggest hurtle.. is there a way I can redirect Siri to my own system??

@andymcblane
Copy link

@graanco on iOS7?

@graanco
Copy link

graanco commented Sep 11, 2021

For any iOS version like a man in the middle that redirects the requests. Is that possible to reverse engineer it. That way all devices would use the local server instead of sending them to apple

@tommyd75
Copy link

tommyd75 commented Sep 11, 2021

I used to use something called Siri Proxy back in the early days of Siri.
but I’m not sure that’s workable anymore.
It would be a middle man that redirected all your Siri requests to your Siriproxy server and of your request matched one of your responses you could have it send a command to something or respond with a specific reply and if not it sent the request to Apple servers.
You had to change the hosts file on your jailbroken iphone in order to redirect all requests to your server first. Oops didn’t see the earlier response about Siri proxy

@graanco
Copy link

graanco commented Sep 11, 2021

… that only redirects from the phone and not every device. In order to do what want would be to use a DNS redirect the request to the server. That way everything is contained as mini pod Apple TV all phones iPads. Only issue is when you are outside the internal network but maybe use a vpn into the internal when away…

@nathreed
Copy link

nathreed commented Sep 11, 2021

@graanco what you’re suggesting isn’t possible anymore. That’s what the project on this GitHub repo originally did, back in the iOS 5 and maybe iOS 6 days.

Apple broke it by implementing a couple changes, but most notably certificate pinning (IIRC) that makes it completely impossible to MITM Siri unless your iOS device is jailbroken. Even then, I’m sure the protocol has changed so much that this repo wouldn’t be of much help anymore.

If you’re concerned with privacy, don’t use Siri. Or only use it for queries that will run entirely on-device, with the support for that coming in iOS 15.

Update: looking back through the old posts in this thread, the issue is actually MPTCP. Either way, what you want to do isn’t possible and never really was with this project either (it passed most requests on to Apple unmodified anyway, so in order to do what you want you’d have to basically reimplement all the server side functionality as SiriProxy plug-ins).

@graanco
Copy link

graanco commented Sep 12, 2021

Yes host file for Siri but if you run your own dns server you could control that without jb the device. And it would control all home devices. Time to research mptcp

@nathreed
Copy link

@graanco running your own DNS is what this project did. MPTCP breaks that, because it uses multiple paths for the DNS lookup and the connection to the Siri servers (I’m a little hazy on the details after so long). It isn’t really possible anymore. If it was, this project would be active.

@graanco
Copy link

graanco commented Sep 12, 2021

Well I have a will and a big desire to stick it to the man!!! I am going to attack this!! And make if it needs to go to the servers it will save that response into the system so it doesn’t ever do it again hmmm only issue is stuff like weather. Isn’t that what apple was originally about???

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests