We’ve been talking about a Siri port ever since iPhone 4S has been released. The jailbreak community already fully ported Siri to the iPhone 4, iPhone 3GS and iPod Touch 4G but unfortunately there was no way to release the port to the public at the time because Apple owns the copyright on the software, images, and data used inside iOS. When Apple released the second build of iOS 5.0.1, it was released unencrypted and wide open for inspection, allowing developers to easily grab all the Siri files they need for a port without piracy.
Today, we’re going to show you how to install Siri on *older* devices and use it over WiFi and 3G. This is not an easy process, and definitely not for everybody. We did our best, to make this tutorial as easy as possible.
NOTE: this tutorial is only relevant if you have an iPhone 4S on hand. If not, you’ll have more difficulty getting the 4S authentication tokens.
NOTE: this whole tutorial is happening on a Mac. Because that’s how we roll. If you’re rocking a PC, you can do the exact same thing on Ubuntu using aptget instead of Mac Ports
First of all let’s do some port forwarding. We’re using an AirPort Extreme, so if you’re using any other router, use google to do your research on how to forward ports.
1. Open AirPort Utility
2. Click on Manual Setup
3. Go to Advanced > Port Mapping and tap on the “+” symbol
4. Put in 443 for all the ports and your IP address. Click continue
5. Fill in a description. Call it whatever you want. I called it Siri and click done
6. Now wait for your router to update and you’re done
Now, you need to get SiriProxy up and running. Let’s see how to do this:
1. Download SiriProxy
2. Download and install Mac Ports
3 Open Terminal and type : sudo port install dnsmasq . Type in your computer’s password
4. Type bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) to download/install RVM
5. Type [[ -s “$HOME/.rvm/scripts/rvm” ]] && . “$HOME/.rvm/scripts/rvm” to activate RVM
6. Type echo ‘[[ -s “$HOME/.rvm/scripts/rvm” ]] && . “$HOME/.rvm/scripts/rvm” # Load RVM function’ >> ~/.bash_profile to add RVM to your .bash_profile
7. Type rvm install 1.9.3 to install Ruby 1.9.3
8. Some users might get an error while installing Ruby. This only applies to *some* Lion users.
9. If you get this error, type rvm install 1.9.3 –with-gcc=clang ( there’s two dashes before ‘with’. don’t know why it spits only one in the public post – always check out the screenshots too. that’s why we post them )
10. Type rvm use 1.9.3 –default to set RVM to use/default to 1.9.3
11. Now you need to cd into the the siri proxy folder you downloaded at step 1 ( make sure you unzipped it first ). The easiest way is to type cd and then just drag-and-drop the folder from your desktop ( or downloads location – whatever it may be ) to your terminal shell.
12. Type rvmsudo gem install rake bundler to install Rake and Bundler. Type in your computer password
13. Type rake install to Install SiriProxy gem
14. Type mkdir ~/.siriproxy to make .siriproxy directory
15. Type cp ./config.example.yml ~/.siriproxy/config.yml to move default config file to .siriproxy
16. Type sudo port install openssl
NOTE: now here is where you need to pay some attention if you want to make Siri running over 3G ( as well as WiFi ). If you have a static IP continue to the next step. If you have dynamic IP you’ll need some sort of service like dynDNS set up ( that’s a whole other tutorial. So google it, get it done, and proceed to the next step )
17. Now we need to generate certificates
For dynamic IP:
1. Browse to /opt/local/etc/openssl/openssl.cnf and open openssl.cnf in a text editor ( we used TextWrengler ).
2. Scroll down (line 148), until you see:
commonName = Common Name (eg, YOUR name)
commonName_max = 64
3. Replace it with:
0.commonName = Common Name (eg, YOUR name)
0.commonName_default = www.domain1.com
0.commonName_max = 64
1.commonName = Common Name (eg, YOUR name)
1.commonName_default = www.domain2.org
1.commonName_max = 64
4. Save and quit
5. Open up a finder window, hit cmd+shift+g and go to ~/.siriproxy
6. open up a terminal shell and cd ~/.siriproxy
7. Generate the certificates (do these commands one at a time, carefully.) IMPORTANT: You can use whatever info you want when it asks for it, just make sure that for the common names you put your dnyDNS or no-ip domain FIRST and guzzoni.apple.com SECOND. Very important step.
openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
openssl genrsa -des3 -out server.key 4096
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.passless.crt
openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.passless.key
For static IP:
- Type ./siriproxy gencerts
18. Next you need to install ca.pem ( for static IP ) or ca.crt ( for dynamic iP ) onto your iPhone ( both iPhone 4S and iPhone 4 ). To do that open a finder window, press cmd+shift+G and enter the following path ~/.siriproxy
19. Email ca.pem/ca.crt to yourself
20. On your phone you will see the new file. Tap on it and install it.
21. Search your Mac for this file: dnsmasq.conf. Once you’ve found it, open it in a texteditor ( we suggest TextWrangler – free ). Inside the file find #address=double-click.net/127.0.0.1 ( line 62 ). Right below that, add the following line: address=/guzzoni.apple.com/your-computer-IP
21.1 Type in terminal sudo dnsmasq . Check activity monitor if dnsmasq is running ( all processes )
22. On your iPhone 4S, open Settings.app. Go to WiFi, select your WiFi, and edit your DNS. Should be something like 10.0.1.0. Change it to your computer’s IP ( the same address you used in dnsmasq.conf file )
23. Now you need to cd into the bin folder found in the westbaer-SiriProxy-a2219ee that you’ve downloaded at step 1. To do that type cd and drag-and-drop the bin folder into the terminal
24. Type ./siriproxy bundle
25. Type rvmsudo siriproxy server and type your password.
26. Now everything should be up and running. To test it, fire up Siri and say ‘Test Siri Proxy’
27. On your iPhone 4, open Cydia, and install Spire ( it’s a big download so make sure you’re on WiFi and your phone won’t go to sleep in the process ) and iFile.
28. Go to Settings.app >Generala>Siri> and turn it on ( turn off Raise to Speak option – you don’t need it, it’s annoying and it will drain your battery )
29. Go to Settings.app > Spire and fill in your proxy host. For static IP use https://guzzoni.apple.com . For dynamic IP use https://your-dns-domain-name
30. Open iFile and browse to /var/mobile/Library/Preferences/ find the com.apple.assistant.plist and tap on it to open with the property list viewer.
31. Now you need to add 3 new strings to the Dictionary. Tap on ‘Accounts’ , then tap on ‘Dictionary’, hit the “+” symbol on the bottom right side of the screen and add:
- Ace Host
- Assistant Identifier
- Speech Identifier
32. Make sure SiriProxy is running and use your iPhone 4S to trigger Siri ( say whatever, it doesn’t matter ). By doing this, you will assign your 4S tokens to your iPhone 4.
33. Now you should be able to use Siri over WiFi on your iPhone 4.
34. To use it over 3G, open iFile browse to /etc/ and look for the hosts file. Open it with text viewer, edit it, and add the following line:
- for static IP: your-ip-address guzzoni.apple.com
- for dynamic IP: your-dns-domain-name guzzoni.apple.com
35. That’s it. Enjoy Siri on your iPhone 4
NOTE: a terminal shell with SiriProxy running is required at all times in order for Siri to work on your iPhone 4
Massive props to westbaer and methoddk