Menu

Home

SiriProxy on Raspberry Pi


About

SiriProxy on Raspberry Pi is a SD card image with SiriProxy pre-installed. It does not require a jailbreak, nor do I endorse doing so.

First, you need to purchase a Raspberry Pi Model B from Newark/Element-14 or through thru another reputable distributor in your area.

Second, you will need a few accessories to provide power, Ethernet, HDMI connection, and a USB keyboard/mouse. Most you may already have on hand. The HDMI and USB keyboard/mouse are temporary if you intend to eventually run your RPi as a headless system. Please check the RPi verified peripherals page to confirm your keyboard compatibility or before purchasing a new one.

Third, you will need a SD card greater than 4GB to install the SiriProxy on Raspberry Pi SD image. Check the SD card compatibility page first. NOTE: An image created from a SD card from one manufacturer may not fit on a SD card of the same size from another manufacturer. If you receive an error such as end of device this is an indication the image did not write completely and you may need a larger SD card.

Lastly, I kindly ask for a small donation of $1 USD to help cover the cost of the hardware, and for my time configuring, testing, and updating the SD card image.

Donate

Thank you, in advance.

Project Admins:

SiriProxy

SiriProxy is a proxy server that allows one to add custom functionality to Siri from simple custom responses to executing custom programs. There is a large list of plugins that you can add to SiriProxy, or customize to create you own plugins.

I am using SiriProxy for voice control of my home automation system. All my plugins are on my GitHub page

Watch Demo Video

Video


Installation (New for SiriProxy 0.5.0+)


These instructions assume the user has some basic Linux command line, editor, and networking knowledge. If you are new to Linux, download the Debian command line reference card. These instructions will help guide you through the minimal steps to get SiriProxy working. If you are still having some trouble, I highly recommend you ask a friend who can help.

There are a few steps particular to your network configuration that cannot be pre-configured on the SD card image. Method A assumes you have a router running the open source firmware DD-WRT. Method B is an alternate way, but it requires a little more manual steps on your part.



  • Adjust the localization and peripheral configuration.
    a. You can leave it alone.
    b. Or, you can adjust the settings now.
    • dpkg-reconfigure tzdata
    • dpkg-reconfigure locales
    • dpkg-reconfigure keyboard-configuration

  • Assign a static IP address.
    a. Configure your router to assign a static IP address for your RPi MAC address, if supported.
    b. Or, perform the following:
    • Update the /etc/network/interfaces file to use a static IP address.
    • Restart networking or reboot: sh /etc/init.d/networking restart or reboot
    • Update the /etc/resolv.conf to use Google public DNS servers.

  • DNS redirect
    a. Add a transparent DNS redirect to your router, if supported. address=/guzzoni.apple.com/###.###.###.###
    Video
    b. Or, perform the following:
    • Change your iOS device WiFi DNS server setting to use the IP address of your RPi.
    • Make sure to use the -d ###.###.###.### option when starting SiriProxy
    • Or, install DNSMASQ and NOT use the -d ###.###.###.### option when starting SiriProxy
      • apt-get install dnsmasq
      • Add address=/guzzoni.apple.com/###.###.###.### to the /etc/dnsmasq.conf
      • sh /etc/init.d/dnsmasq restart
        Video

  • Generate new certificate file for your iOS device.
    • siriproxy gencerts
    • Copy the /root/.siriproxy/ca.pem file and install on your iOS device.

  • Launch SiriProxy on your RPi
    • siriproxy server -d ###.###.###.###
    • Press the Siri button and say Test Siri Proxy
    • If you don't see messages going by on the RPi or Siri does not respond with "SiriProxy is up and running!" head to the FAQ section of this page.

FAQ

Q. How frequently will you update the image?
A. I will update the image when there are a significant number of updates or improvements that make it easier for people to get started.


Q. Why did you install SiriProxy as root?
A. Having successfully installed SiriProxy on a number of Linux distributions and ARM embedded devices, I have found I get the least number or errors and permission problems installing and running everything as root.


Q. Can you create a custom SD Card image?
A. I wish I had enough free time and energy to help everyone, but my day job keeps me fairly busy, not to mention time with family and friends. If it is something you think will help make it easier for everyone, send me your suggestion and I will consider it for the next update.


Q. My RPi is not...
A. Check the RPi troubleshooting page: http://elinux.org/R-Pi_Troubleshooting


Q. SiriProxy is not...
A. Make sure you have completed the few steps to configure your RPi and iOS device, and read the following for possible solutions.


Q. How do I add plugins?
A. It depends on a number of factors: SP installed as root or user, SP installed as gem or cloned, and the instructions for the particular plugin. There are also a number of ways to add plugins. For this SD card image, everything is installed as root and SiriProxy is installed as a Ruby gem, thus you will need to do the following:

  1. For plugins which tell you to add git: 'git://github.com/... to the config.yml file, simply add the plugin specifics to the /root/.siriproxy/config.yml file.
  2. For plugins which tell you to add path: './plugins/... to the config.yml file, there are a couple of ways to do this:
    • The hard way is to add the plugin specifics to the /root/.siriproxy/config.yml file, clone/download the plugin repo, and copy to or create a symbolic link in the /usr/local/rvm/gems/ruby-2.0.0-p#/gems/siriproxy-0.5.#/plugins/ directory. Note: Replace #'s as appropriate, and make sure to name the plugin directory or symbolic link the same as specified in the config.yml file.
    • The easy way is to simply clone/download the plugin repo to a /root/plugins directory, optionally create symbolic links in the /root/plugins/ directory, then explicitly define the entire path in the config.yml file. Note: This may break some plugins that use a file path for other cached or configuration files. You may need to tweak those plugins to look for those files in the appropriate directory.
  3. Then, perform siriproxy bundle and launch SiriProxy again.
    Video

Q. My SiriProxy plugins are crashing! What do I do?
A. The image is tested with the example plugin included with SiriProxy. Google is a programmers best friend to find solutions to problems. If you have exhausted all other resources, you can always post your problem on any number of forums which specialize in Ruby programming.


Q. How do I make SiriProxy run upon boot?
A. You should only do this when you have a stable configuration, but you can add my init.d script to the /etc/init.d directory, run chmod a+x siriproxy to add execute permissions, run update-rc.d siriproxy defaults command, then reboot. Note: Type ps -ef | grep -i siriproxy to confirm the daemon is running. Use kill #### to stop the daemon and manually launch SiriProxy when you want to see the output messages when testing your plugins.
Video


Q. How do I access SiriProxy from outside my local WiFi network?
A. You need to setup a VPN server on your network and configure your device to route all traffic through the VPN connection.
Video


Export

SourgeForge is a U.S. based hosting company which hosted software using encryption is subject to US export controls. While I am not a lawyer, having followed the information and guides available from the U.S. Department of Commerce - Bureau of Industry and Security, SiriProxy on Raspberry Pi is self certified as ECCN 5D002 and License Exception TSU 740.13(e). Source code for SiriProxy and Linux in general are publicly available and open source software, therefore no license is required for export or re-export, but notification of this URL has been submitted to the Bureau of Industry and Security in accordance with License Exception TSU 740.13(e).

According to SourceForge Terms of Use access from users residing in countries on the United States Office of Foreign Assets Control sanction list, including Cuba, Iran, North Korea, Sudan and Syria is already blocked.


Licensing

All software and source code included in this image is publicly available and open source, that are protected by respective copyrights, trademarks, and license agreements.