Edit: Re-added iPod Touch 2G support. Also added model number to the detection label at the bottom of the window so iPod Touch users can better tell if they need to save their SHSH or not (MC ipot touch 2g MUST)
Edit: I've gotten it working now with all versions of iTunes > 9.0. Windows x86 and 64 bit are supported, OSX is supported. (Vista, XP and Windows 7 are all confirmed working).
This is RC1. I'm going to work on any bugs you guys find and RC2 will have linux support. Final will fix any linux bugs and should be fully functional.
As a note I *MAY* support 64bit java on windows through a bridge or using libimobiledevice. We'll see...
Edit: I've been working on bug fixing and currently all I have left is getting iTunes 9.1.x working. Windows 64 will not work until I write some form of bridging code. And after this initial release I'll get right to work on the linux version... which I promised @posixninja :P
I've finished implementing the device detection logic for Umbrella. I've kept the codebase in java simply because I'm lazy and don't feel like porting all of that code to c AND maintaining 4+ versions for each operating system.
The first thing you'll notice in the zip is that the source and supporting files are not in there. The fact is that the support files are huge. The zip file was over 10mb with them in it. So I've stripped it down to just the umbrella.exe and umbrella.dmg (and tinytss.exe which is unchanged for now).
This beta will only support windows and mac (linux is in the works). Even further, it only supports 32 bit java. I've gotten some nasty errors on 64 bit java in windows and before I do a full release I want to make sure those are ironed out. I'm not 100% sure this will work on windows 64 with a 32 bit java JVM but by all means give it a try.
This new version is very simple. Here's a screenshot:
As you can see it doesn't get much easier. When you start the app it will tell you to connect a device.
Once the device is connected you will be able to get your shsh for 3.1.3/3.2 depending on your device.
That's it (for most users).
For the rest of you there are 'Advanced Options' which is nothing more than the options you used to have.
If a device is connected, the ECID field will be populated for your convenience. Or if you want to get the SHSH for another device, enter it like you did in the old version.
Please remember this is beta. I'm only realeasing it because I think it works "OK" not perfect but definitely well enough that most people will be able to work just fine. In fact I've personally tested it on OSX, Windows 7 (32 bit) and Windows XP (32 bit) and have had no problems.
There are some requirements in order to get the detection to work.
- You must have iTunes > 9.0 installed and (I've received at least one report that win 7 64bit with 9.1.1.11 iTunes works)
- You must have java jdk 1.5 or higher.
- For the Windows version you need to be able to run it as administrator because I read the registry for the native library locations.
- You must not be using 64 bit java (Windows only)
- 64 bit windows is OK as long as you are using 32 bit java.
I think that about sums it up. Save those SHSH files!



Thanks for all
ReplyDeleteFrench traduction here ;)
http://forum.frenchiphone.com/index.php/topic,48576.0.html
i get something
ReplyDeletejava.lang.UnsatisfiedLinkError: Unable to load library 'C:\Program Files\Common Files\Apple\Mobile Device Support\iTunesMobileDevice.dll': Määritettyä osaa ei löydy.
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:164)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:237)
at com.sun.jna.Library$Handler.(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:375)
at com.sun.jna.Native.loadLibrary(Native.java:360)
at com.semaphore.fw.md.MDLib.(MDLib.java:16)
at com.semaphore.fw.JMobDevHelper.(JMobDevHelper.java:16)
at com.semaphore.TinyUmbrella.(TinyUmbrella.java:90)
at com.semaphore.TinyUmbrella.main(TinyUmbrella.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.exe4j.runtime.WinLauncher.main(Unknown Source)
could you help me? i have java installed and im running windows 7 and i also have tryed to run with admistrator
I get same error as Janne. Win7, 32bit. I manually verified that the iTunesMobileDevice.dll file DOES exist at the specified location.
ReplyDeleteTry the newest download. I've fixed a couple issues with it.
ReplyDeleteWorks nicely on Mac OS X 10.6.3. It was able to grab my iPhone 3GS's SHSH. ~Rondhi
ReplyDeleteget same error as Janne ,Vista home,run as admin
ReplyDeletetried java 1.5 & java 1.6
itunes installed in /Program not Program Files (swedish vista has installtions in /Program)
I could NOT get it work on windows 7 64bit.
ReplyDeleteHowever, it does work perfectly on windows 7 32bit.
Thanks!
OK.. so where did it save SHSH to?
ReplyDeleteI'me getting the same error as Janne.
ReplyDeleteOS is Windows 7 32bit, and I've installed the latest java version (java6 jdk update20), but the error still keep coming.
I'm not sure wether this error is related to the the new version of iTunes? But it worked perfectly on my macbook pro, witch is running the same version of iTunes with my windows 7. Weird...
This comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteis there confirmation of the save? mine looked like it saved.. it went dark on the "save my shsh file" button.. then it lit back up. how do i check to see if it worked?
ReplyDeleteI get the error on as Janne on version 223 but works I don't have a problem in version 222. Also I use S ECID Grabber to get my ECID, USBView wasn't working for me.
ReplyDeletei get also the errors like the them :(
ReplyDeleteSame error here. O/S: Windows XP Pro. x32.
ReplyDeleteThis comment has been removed by the author.
ReplyDeletebeta-d will not work with iTunes 9.1 or above. You must use a version below 9.1. Also the device detection will not work with 64 bit java. 64 bit windows is fine if you are using 32 bit java.
ReplyDeleteWell, I'm running Windows 7 64-bit AND iTunes 9.1.1.11 and 223d works 100% here - no problems.
ReplyDeleteHardware: iMac running Windows under BootCamp.
Glad to see you continuing to develop this program! I'll make a new tutorial for this shortly.
ReplyDeleteI just fired up Cydia today and see that Jay's TSS server is down because of all the Spirit requests.
This is why this program is CRITICAL to have and know how to use: for times like this when Cydia can't help you get your ECID SHSH blob.
@gericito - really? Thank you. I've gotten reports that there are no versions (besides mac) working with 9.1. I'll install win 7 64 under bootcamp and give it a try
ReplyDeleteThank you all for your feedback!
But with the same configuration (Windows 7 64-bit under BootCamp) on my MacBook Pro I get the same errors as the others.
ReplyDeleteBut, on my iMac (running Windows 7 64-bit) it works without errors and I can save my SHSH.
Worked a treat on my MacBook Pro running 10.6.3. Thanks man
ReplyDeleteStill can't run TinyTss though :(
Well with Windows 7 64Bit it worked like a charm..
ReplyDeleteSo it works with 64bit systems
another data point
ReplyDeleteXP, itunes 9.1.0.79, ipad 3g 3.2
fw-umbrella-semaphore-03.13.08 umbrella failed through saurik, succeeded through apple
Hello
ReplyDeleteWhat is the difference between choosing Apple and Cydia on the location dropdown?
They both created a 64kb shsh file, are they the same or are they different?
Is there a way to check that they work without having to restore the whole phone?
Thank you in advance
I'm trying to run with my iPhone 3G - noting seems to happen where ever I point the save location to. When I select the device type, the 3G is not one I can select. Is the 3g unsupported?
ReplyDelete@duncan - iphone 3g has no need for shsh as the signatures are not checked on your device - you can upgrade and downgrade your firmware (NOT your baseband) at will.
ReplyDelete@christos - selecting cydia will send the request through cydia thus saving the response on cydia as well as locally. You don't need to worry. If you selected the right device it'll work fine.
@runeethesquirrel - if it failed through cydia but succeeded through apple it's because cydia probably timed out. (overloaded)
Sorry if this a newbie question! Using OSX. Ran program, plugged in iphone 3gs, recognized, clicked 'save my shsh', goes grey, comes back up. Where does it save the shsh blob?
ReplyDeleteThanks
Where is TinyTSS??
ReplyDeleteI've searched all over the internet, and nothing.
@jason - you need to take it out of the dmg before running it - just like any other application. If you put it on, say, your desktop, and then run the application, the shsh file will be on your desktop. Incidentally, when the file is saved theres a status text that says that the path is saved to your clipboard. This means that I've put the full file path in your clipboard ready to paste.
ReplyDelete@blogfoda - You didn't look all over the internet. :) There are tutorials all over. Simply googling "tutorial tinytss" results in an immediate first hit.
TinyTSS is the app I wrote for using the shsh file that umbrella creates. It runs a small webserver on your machine that you point itunes to in order to trick itunes into restoring the firmware you have the SHSH file for (even though apple has stopped signing that firmware). This is only relevant for iPhone 3GS, ipod touch 3g and ipod touch 2g with model numbers beginning with MC.
Seconded... Where does it save the shsh blob?
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteTo be short, it says segmentation failed.
ReplyDeletewhy don't u put the download links like the post under urs? (spiritjb)?
ReplyDeletegoogling is hard in my country!
dear! plz put all the requirement links like tinytss n shsh for download pal!
Get Error "Could not get you ECID SHSH for that model/version" ?! Copied ECID out of System-Profiler.
ReplyDeleteI get this error when trying to launch Umbrella:
ReplyDeleteCannot launch Java application
Uncaught exception in main method:
java.lang.NoSuchMethodError:
com.semaphore/TinyUmbrella.seticonimages(Ljava/
util/List;)V
I get this error when trying to launch Umbrella:
ReplyDeleteCannot launch Java application
Uncaught exception in main method:
java.lang.NoSuchMethodError:
com.semaphore/TinyUmbrella.seticonimages(Ljava/
util/List;)V
Same as MonaLaura. Mac 10.5.8
ReplyDeletesame erros as monalaura and tom.
ReplyDeletetrying on windows XP SP2, Java 1.5.0-03, Itunes 9.1.1.12
java.lang.NoSuchMethodError: com.semaphore.TinyUmbrella.setIconImages(Ljava/util/List;)V
at com.semaphore.TinyUmbrella.(TinyUmbrella.java:106)
at com.semaphore.TinyUmbrella.main(TinyUmbrella.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.exe4j.runtime.WinLauncher.main(Unknown Source)
well, now it works.
ReplyDeleteI updated my java to Version 6 Update 20.
now i get the umbrella window. Let´s go.
target: 3GS - 3.1.3
ah, thanks mister for this program.
Hi. I think my problem is with tiny umbrellas pc server. I want to upgrade my 3gs on 3.0 to the newest firmware and can't. I ran TSS and probably shouldn't have. Now iTunes keeps saying it can't reach update server. How do I change the ports back so iTunes can operate like normal since right now I have no need to downgrade cause of the spirit jailbreak. Thanks
ReplyDeleteI connected my iphone 3g and gave Save SH
ReplyDeleteit shows iPad 3.2 (7B367)-1003614535156 saved. How strange is that. I took this phone before ipad got released
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
ReplyDeleteat javax.swing.text.BoxView.getOffset(Unknown Source)
at javax.swing.text.BoxView.childAllocation(Unknown Source)
at javax.swing.text.CompositeView.getChildAllocation(Unknown Source)
at javax.swing.text.BoxView.getChildAllocation(Unknown Source)
at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.calculateViewPosition(Unknown Source)
at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at javax.swing.RepaintManager.validateInvalidComponents(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
at javax.swing.text.BoxView.getOffset(Unknown Source)
at javax.swing.text.BoxView.childAllocation(Unknown Source)
at javax.swing.text.CompositeView.getChildAllocation(Unknown Source)
at javax.swing.text.BoxView.getChildAllocation(Unknown Source)
at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.calculateViewPosition(Unknown Source)
at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at javax.swing.RepaintManager.validateInvalidComponents(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)