A legal port to older devices has been completed by @stroughtonsmith with the help of chpwn, and is available in Cydia as Spire. Spire is only compatible with iOS 5.0.1. There are other ports which are compatible with more iOS versions (iOS 5.1.1 through 7.x), but not all of them are reliable. Ports are not needed as of iOS 8 though as all compatible devices support Siri.
|/Applications/Preferences.app/*.lproj/*Assistant.strings||Localization file||Localization for Siri preferences.||Yes||No|
|/Applications/Preferences.app/5.0~General Assistant.plist||PList File Format||Siri settings injection file.||Yes||No|
|/Applications/Preferences.app/5.0~Passcode Lock Assistant.plist||PList File Format||Siri Lockscreen settings injection file.||Yes||No|
|/Applications/Preferences.app/5.0~Restriction-Assistant.plist||PList File Format||Siri Restriction settings injection file.||Yes||No|
|/System/Library/AccessibilityBundles/AssistantUI.axbundle||Bundle||Siri Accessibility plugin.||Yes||No||Yes|
|/System/Library/AccessibilityBundles/Assistant-SBPlugin.axbundle||Bundle||Siri Accessibility plugin.||No||Yes|
|/System/Library/AccessibilityBundles/AXExtraExtras.axbundle||Bundle||Siri Accessibility plugin.||Yes||No|
|/System/Library/AccessibilityBundles/*-Assistant.axbundle||Bundle||Siri Accessibility plugins.||Yes||No|
|/System/Library/Assistant||System Folder||Contains most Siri plugins or functionality resources.||Yes|
|/System/Library/CoreServices/SpringBoard.app/Assistant*||PNG or ARTWORK file||Siri images and ARTWORK file for iOS 5||Yes||No|
|/System/Library/DataClassMigrators/Siri.migrator||Migrator bundle||Siri preferences after upgrading iOS/restoring an older backup.||No||Yes|
|/System/Library/Frameworks/CoreMotion.framework/Support/EarGesture_Prototypes_Siri_X.dat||System File||Some resources for Apple EarPod with Remote and Mic used with Siri activation.||No||Yes|
|/System/Library/LaunchDaemons/com.apple.assistantd.plist||Daemon||Handling communication between Siri (also Dictation) and Apple Server.||Yes|
|/System/Library/LaunchDaemons/com.apple.assistant_service.plist||Daemon||Handling Siri plugins or trivial stuffs.||Yes|
|/System/Library/PrivateFrameworks/AssistantServices.framework||Framework||Resources for Mic sound, Location settings icon and the daemons.||Yes|
|/System/Library/PrivateFrameworks/AssistantUI.framework||Framework||Resources for Siri UI.||Yes|
|/System/Library/PrivateFrameworks/Preferences.framework/*.lproj/AssistantShared.strings||Localization file||Localization for "About Siri And Privacy" section.||Yes|
|/System/Library/PrivateFrameworks/PreferencesUI.framework/5.0~Passcode Lock Assistant.plist||PList File Format||Siri Lockscreen settings injection file.||No||Yes|
|/System/Library/PrivateFrameworks/PreferencesUI.framework/5.0~Restrictions-Assistant.plist||PList File Format||Siri Restriction settings injection file.||No||Yes||No|
|/System/Library/PrivateFrameworks/PreferencesUI.framework/*.lproj/*Assistant.strings||Localization file||Localization for Siri preferences.||Yes||No||Yes||No|
|/System/Library/PrivateFrameworks/SAObjects.framework||Framework||Resources for Siri objects.||Yes|
|/System/Library/PrivateFrameworks/SiriClientFlow.framework||Framework||Siri client flow framework.||No||Yes|
|/System/Library/PrivateFrameworks/SiriCore.framework||Framework||Siri core framework.||No||Yes|
|/System/Library/PrivateFrameworks/SiriTasks.framework||Framework||Resources for Siri's operations.||No||8.2+||Yes|
|/System/Library/PrivateFrameworks/SiriUI.framework||Framework||Resources for Siri UI/Artwork for iOS 7+||No||Yes|
|/System/Library/PrivateFrameworks/SiriUICore.framework||Framework||Core resources for Siri UI||No||8.2+||Yes|
|/System/Library/PrivateFrameworks/VoiceTrigger.framework||Framework||Resources for "Hey Siri" feature||No||Yes|
|/System/Library/PrivateFrameworks/VoiceTriggerUI.framework||Framework||UI-based Resources for "Hey Siri" feature||No||Yes|
|/System/Library/PreferenceBundles/Assistant.bundle||Preference Bundle||Siri settings.||Yes|
|/System/Library/SpringBoardPlugins/Assistant.uibundle||SpringBoard Plugin||Mainly handling Siri UI in iOS 6, unusual for iOS 7+||No||Yes|
|/System/Library/UserEventPlugins/AssistantUEA.plugin||System Plugin||Siri logging.||Yes||No|
In iOS 5 and 6, additional keys in the capabilities section of /System/Library/CoreServices/SpringBoard.app/XXXAP.plist would be added to enable Siri:
<key>assistant</key> <true/> <key>siri-gesture</key> // Raise to speak, activate Siri when you raise your phone to ear (iOS 6) <true/>
Since the Model definition file is move along in iOS 7, in a DeviceTree instead. MobileSubstrate Hooking is required in order to inject these capabilities. (MGGetBoolAnswer(CFSTR("assistant")) for example)
The installation of Siri (its filesystems) on other devices requires access to the iPhone 4S or supported devices filesystem, to copy over the files above to a jailbroken device running the same iOS version, with correct files permissions.
For iOS 5, the stock assistant images from the iPhone 4S are only available in Retina size. On non-Retina devices (iPad, iPad 2 and iPhone 3GS), interface features may look different and the theme Siri Graphics for iPhone 3GS and iPad in Cydia needs to be installed.
Installing on iPad models running iOS 5 causes buggy interface, because the system usually forces the assistant window as full-screen. In this case, you have to manually edit the images to fix. Differently on iOS 6, assistant images are available both in Retina and non-Retina devices (for iPad mini), so you could copy the non-Retina images or artwork file from the non-Retina jailbroken devices.
/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armv7from Siri-capable devices.
- Placing it in some directory in your target devices, take note for the location.
/System/Library/LaunchDaemons/com.apple.SpringBoard.plistusing some good text editor, by adding these section:
<key>EnvironmentVariables</key> <dict> <key>DYLD_SHARED_REGION</key> <string>private</string> <key>DYLD_SHARED_CACHE_DIR</key> <string>THE FULL LOCATION OF YOUR DYLD SHARED CACHE HERE (FOR EXAMPLE: /var/mobile/folder_with_dyld_shared_cache_inside)</string> <key>DYLD_SHARED_CACHE_DONT_VALIDATE</key> <string>1</string> </dict>
For iOS 6 and 7, both com.apple.backboardd and com.apple.assistant_service deamons must be injected the code too.
- The cache we inject is commonly from Apple A5 devices, so the system won't be able to find the compatible graphics driver binary for Apple A4 devices and causes massive slowdown and animation lag if the target devices aren't iPad 2 or iPad (3rd generation) (A5 devices) as they use the same driver. You can find the A4 Graphics driver named "IMGSGX535GLDriver" from Xcode-inside location:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS[THE iOS VERSION NUMBER].sdk/System/Library/Extensions/IMGSGX535GLDriver.bundle/IMGSGX535GLDriverand place into your target devices at
/System/Library/Extensions/IMGSGX535GLDriver.bundledirectory. This method seems to be impossible for iOS 7 however, as the SDK no longer included the graphic binary.
- Save it and reboot the devices to take effect. Wrong cache location causes infinite SpringBoard crashing.
Purpose for iOS 5 devices
- Add missing binary at /System/Library/Assistant/UIPlugins/SpringBoard.assistantUIBundle/SpringBoard
Purpose for iOS 6 devices
- Add missing framework binary at /System/Library/PrivateFrameworks/AssistantUI.framework/AssistantUI
Purpose for iOS 7 devices
- Add missing framework binary at /System/Library/PrivateFrameworks/AssistantUI.framework/AssistantUI (Applied to SiriViewService.app and SpringBoard)
Connecting to Server
Holding down the home button for a second should activate the Siri tray at the bottom of the screen (iPhone, iPod and iPad running iOS 5), or at the area close to home button on screen (iPad running iOS 6+), but saying anything will make it say it can't connect because the server rejects any query from these unsupported devices. This is due to the device requiring an identifier that the Siri servers generate every 24 hours for Siri-capable iDevices.
SiriProxy can overcome the server connection issue if you have access to Siri capable iDevices. The server that Siri sends its data through can be changed in a number of ways.
The most reliable method is to use a DNS server, as demonstrated by plamoni.
An easier approach is to edit the com.apple.assistant.plist file in the device's /var/mobile/Library/Preferences folder. It can be changed either on a jailbroken device with iFile, or via an iPhone backup reading utility. The hostname string simply needs to be replaced with the URL of your SiriProxy (i.e. your computer's IP address). This method could also allow for your SiriProxy to work outside of your Wi-Fi network, if you set up forwarding for port 443 to your computer in your router, and use your external IP address. However, some routers don't do port forwarding inside of their network, so you would need to change this setting yourself when you arrive or leave home. A static IP or dynamic DNS address (such as one from Dyn) is recommended.
The /etc/hosts file on a jailbroken device can also be modified. This can also be used externally, like the above method, though domain redirects are disallowed in host files, so a static IP is required. For instance, if you have a server which has the IP 192.168.1.5, enter this on a new line:
Make sure there is at least one blank line at the very end of the file, or this will fail.
Alternative to dealing with SiriProxy, it's also possible to trick the Apple server that you are using a Siri-capable device by simply faking device model that the system would include as a "header" to send to the Apple server (method
-[ADAceConnection _startConnection] does that). It could be achieved this way: SiriAuthFix.