How to Set Up Spire [Video Tutorial]

By , Jan 1, 2012

A few days ago chpwn released Spire, a legal Siri port for the iPhone 4 and other devices. The release was met with much excitement, and likely just as much confusion. How does it work? Can it work with an existing Siri Proxy?

Getting Spire working on your non-iPhone 4S device may seem daunting, but it’s actually fairly straight forward, especially if you’ve successfully followed our Siri Proxy tutorial in the past. The Spire setup pretty much involves the same steps needed to get Siri Proxy working, with a few notable differences thrown in.

Check inside as I show you how to get Siri running on your iPhone 4 using Spire. This should also work for other devices, like the fourth-generation iPod touch…

Before you start read this entire tutorial and view the videos. That way you have a good knowledge of how this works as a whole. It is really important to digest the entire tutorial before proceeding step-by-step. I really can’t recommend this enough.

Please understand that you must have access to an iPhone 4S in order to follow this tutorial. This is also a local only installation. If you want to use Siri over 3G or on foreign Wi-Fi on your non-4S device, you can setup a dynamic DNS on your virtual machine installation so that you can access Siri Proxy from anywhere. That is beyond the scope of this particular tutorial. Now that you are aware of the limitations involved with this tutorial, please proceed.

Setting Up Siri Proxy

Step 1: The first step is to follow our in-depth Siri Proxy setup tutorial. That tutorial showcases the basics in getting Spire working on your iPhone 4 or other devices.

Step 2: There is one small change in the Siri Proxy Tutorial that is required for using Spire. At Command 09, change the following command:

git clone git://github.com/plamoni/SiriProxy.git

-to-

git clone git://github.com/westbaer/SiriProxy.git

This is incredibly important. If you don’t alter Command 09 of the Siri Proxy Tutorial, then Spire will not function correctly. If you’ve already previously setup Siri Proxy, you can literally stop the server, and start at Command 09 to get it working. I’ve confirmed that this method works. If you’ve never setup Siri Proxy, simply follow the Siri Proxy Tutorial and replace Command 09 with the new command above.

Once Siri Proxy is up and running you may proceed with the Spire setup tutorial below:

Setting up Spire

Once you’ve confirmed that Siri Proxy works on your iPhone 4S using the Siri Proxy Tutorial, you may proceed with the Spire setup. Remember, you must have Siri Proxy running on your iPhone 4S before proceeding. Confirm that it works by invoking Siri and saying “Test Siri Proxy.” Siri should respond with “Siri Proxy is Up and Running!” Only then should you proceed with the Spire setup.

The following video shows the start-to-finish Spire setup. If you already have Siri Proxy installed using the steps above, the you may want to skip to 4:30 on the video for the Spire installation.

Step 1: If you have not done so already, jailbreak your iPhone 4. To learn how to jailbreak, check out our dedicated jailbreak page.

Step 2: Install Spire from Cydia. This will take a while, so be patient. It is a large download. You must reboot your device after installation.

Step 3: Install iFile from Cydia. There are alternatives to this step, but this is the easiest and most straight forward method. iFile has a free trial period if you don’t want to pay for it. I highly recommend you use iFile.

Step 4: Install the same certificate on your device that you installed on your iPhone 4S in the Siri Proxy Tutorial. It must be the same certificate. Like in the previous tutorial, I recommend using DropBox to transfer the certificate to your iPhone 4, but you can use email or other means as well. Again, as stated in the Siri Proxy Tutorial, the certificate can be found at ~/.siriproxy/ca.pem, and it is a hidden folder, so you will have to show hidden folders.

Step 5: Go to Settings > General > Siri and enable Siri.

Step 6: Go to Settings and configure Spire settings with the following Proxy Host:

https://guzzoni.apple.com

Step 7: Open iFile, and navigate to /etc/ and open the “hosts” file using iFile’s Text Viewer. Tap on Edit in the upper left-hand corner, and create a new line that includes the following:

(the ip address of your Ubuntu virtual machine) followed by guzzoni.apple.com

So for example, my new line looks like so:

10.0.1.12 guzzoni.apple.com

Tap Done.

Step 8: Go back to your Home screen, and test out Siri by holding the Home button. You should see data hit your server, but it will say something like this:

[Info - Guzzoni] Received Object: CommandFailed
[Info - Guzzoni] Received Object: CommandFailed

This is good, and shows that you can now communicate to the Siri Proxy Server. Now all we need to do to make Siri work for real is add three more necessary fields to the Siri plist file.

Step 9: Again, in iFile navigate to var/mobile/Library/Preferences/ and open com.apple.assistant.plist with the Property List Viewer. Tap on Accounts > Your Hex Key (random alphanumeric value) > and add the following fields using the “+” sign in the bottom right-hand corner:

Ace Host
Assistant Identifier
Speech Identifier

Tap Done.

Step 10: Invoke Siri by holding the Home button, and say “Test Siri Proxy.” It should respond just like it did on the iPhone 4S: “Siri Proxy is Up and Running!” If successful, congratulations, you just got Siri working legally on your non-iPhone 4S device!

Step 11: You can now remove the DNS server from your iPhone 4S, or just append your real DNS server after the Siri Proxy IP address using a comma. This is optional, but allows you to still use Siri Proxy and access the internet and use apps with no problems on your iPhone 4S.

Example:

10.0.1.12,10.0.1.1

There are lots of other possibilities and troubleshooting steps for Spire and Siri Proxy in general. This is probably the most basic implementation of Spire usage that you will come across thus far. I can’t take all of the credit though. Special thanks to Methoddk for his excellent tutorial which helped a lot with regard to plist params. Also, an obvious thanks goes to chpwn for making such an awesome (and legal) Siri port, and Plamoni and Westbaer for their Siri Proxy implementations.

I know many of you will continue to have questions and issues. We will try our best to help where time permits, but our best advice is to experiment and follow the tutorial closely. Be sure to read and watch the videos in their entirety before even attempting this.

If you have questions about Ubuntu, virtual machines, etc. Our best advice is to see our original Siri Proxy Tutorial.

Let me know what you think in the comment section. Did this tutorial help you?

  • Share:
  • Follow:
  • Anonymous

    I installed the program from the tutorials provided, Spire/Siri is still replying that it can’t take any requests at this time? Do I need to reinstall the program.

    • Osorio11

      try Siriport dot ru+ crt.1 I guarantee you it will eventally work and you save yourself a lot of grive.
      I tried the method described and NEVER got a working siri, so A: why even bother, and B: if you use the port I mentioned(which is also Spire based) you can have a working Siri onyour phone by tomorrow at the leatest.
      Succes.

      • Anonymous

        Do I use “Siriport dot ru+ crt.1″ for the proxy server?

        Mr. Glen Stephenson

      • Anonymous

        Mr. Glen Stephenson

  • Anonymous

    Mr. Glen Stephenson

  • http://www.facebook.com/people/Alan-Salzano/100000648051525 Alan Salzano

    im trying to get this on my ipod touch 4g without a 4s iv gotten everything done but i get
    [Info - Plugin Manager] Plugins loaded: [#<SiriProxy::Plugin::Example:0x0000000153cba8 @manager=#>]
    Create server for iPhone connection
    start conn #<SiriProxy::Connection::Iphone:0x0000000153c9a0 @signature=21, @processed_headers=false, @output_buffer="", @input_buffer="", @unzipped_input="", @unzipped_output="", @unzip_stream=#, @zip_stream=#, @consumed_ace=false, @auth_data=nil, @faux=false, @name=”iPhone”, @ssled=false>
    any ideas or is it just an invalid key?

  • Osorio11

    I don’t know if this is the right place to ask my questions, but uit seems that the author knows what hwee is talking about, and many of you here also.
    My problems are these: I have successfully had siriport dot ru working, until it stopped answering 11 days ago. The servers are up, so there must be something else wrong.
    Uninstalled it and followed the free way to get it with a different certificate via the tutorial on how to get Siri via Spire from the Cydiablog.
    This one is, so far, unresponsive as well.
    My question: is it at this time at all possible to have Siri for free via one of the two methods I described or should I just forget it?
    Doing it the way as described in the tutorial in the main article above goes beyond my limited capabilities.
    Any usefull advice is VERY welcome!

  • yiqiao zhao

    Hi
    I followed the all steps 1 by 1 in the video but am getting

    [Warning] Non-4S device connected.
    [Info] Found cached session data.
    [Info] Found cached speech id.
    [Info] Found cached assistant id.
    [Info - iPhone] Received Object: LoadAssistant
    /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/CFPropertyList-2.1/lib/rbCFPropertyList.rb:177:in `guess': Unknown class NilClass. Try using :convert_unknown_to_string if you want to use unknown object types! (CFTypeError)
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/CFPropertyList-2.1/lib/rbCFPropertyList.rb:159:in `block in guess’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/CFPropertyList-2.1/lib/rbCFPropertyList.rb:157:in `each_pair’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/CFPropertyList-2.1/lib/rbCFPropertyList.rb:157:in `guess’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/CFPropertyList-2.1/lib/rbCFPropertyList.rb:159:in `block in guess’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/CFPropertyList-2.1/lib/rbCFPropertyList.rb:157:in `each_pair’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/CFPropertyList-2.1/lib/rbCFPropertyList.rb:157:in `guess’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/CFPropertyList-2.1/lib/rbCFPropertyList.rb:397:in `to_plist’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/lib/siriproxy/connection.rb:192:in `inject_object_to_output_stream’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/lib/siriproxy/connection.rb:134:in `process_compressed_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/lib/siriproxy/connection.rb:102:in `receive_binary_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:94:in `receive_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:65:in `receive_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:65:in `receive_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:65:in `receive_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:65:in `receive_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:65:in `receive_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:65:in `receive_data’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/lib/siriproxy.rb:16:in `initialize’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/lib/siriproxy/command_line.rb:96:in `new’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/lib/siriproxy/command_line.rb:96:in `start_server’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/lib/siriproxy/command_line.rb:85:in `run_server’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/lib/siriproxy/command_line.rb:37:in `initialize’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/bin/siriproxy:6:in `new’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.3.0/bin/siriproxy:6:in `’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/bin/siriproxy:19:in `load’
    from /home/tiger/.rvm/gems/ruby-1.9.3-p125@SiriProxy/bin/siriproxy:19:in `’

  • Raghav Ahuja

    hosts file is missing in my iPhone.

  • Rony bou segaan

    Hi jeff,
    Im entering command number 11 : rake install and when i hit enter im getting rake aborted!
    how can i proceed ? could you please help me

  • Rony bou segaan

    Hi jeff,
    Im entering command number 11 : rake install and when i hit enter im getting rake aborted!
    cannot load such file — bundler/gem-tasks.
    how can i proceed ? could you please help me
    any idea?

  • http://profile.yahoo.com/5L7X3MTTLZ46GIEWCHZDA6QNZM Liel jakob

    dnsmasq failed to create listening socket for port 53

    having this error need help thanks