May 5, 2010

Umbrella with device detection is now in beta

Edit: Fixed a few random exceptions that would cause the app to be unable to detect devices. (VERY rare but still possible)

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.

  1. 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)
  2. You must have java jdk 1.5 or higher.
  3. For the Windows version you need to be able to run it as administrator because I read the registry for the native library locations.
  4. You must not be using 64 bit java (Windows only)
  5. 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!

44 comments:

  1. Thanks for all
    French traduction here ;)
    http://forum.frenchiphone.com/index.php/topic,48576.0.html

    ReplyDelete
  2. i get something

    java.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

    ReplyDelete
  3. I get same error as Janne. Win7, 32bit. I manually verified that the iTunesMobileDevice.dll file DOES exist at the specified location.

    ReplyDelete
  4. Try the newest download. I've fixed a couple issues with it.

    ReplyDelete
  5. Works nicely on Mac OS X 10.6.3. It was able to grab my iPhone 3GS's SHSH. ~Rondhi

    ReplyDelete
  6. get same error as Janne ,Vista home,run as admin
    tried java 1.5 & java 1.6
    itunes installed in /Program not Program Files (swedish vista has installtions in /Program)

    ReplyDelete
  7. I could NOT get it work on windows 7 64bit.

    However, it does work perfectly on windows 7 32bit.

    Thanks!

    ReplyDelete
  8. OK.. so where did it save SHSH to?

    ReplyDelete
  9. I'me getting the same error as Janne.
    OS 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...

    ReplyDelete
  10. This comment has been removed by the author.

    ReplyDelete
  11. This comment has been removed by the author.

    ReplyDelete
  12. This comment has been removed by the author.

    ReplyDelete
  13. is 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?

    ReplyDelete
  14. I 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.

    ReplyDelete
  15. i get also the errors like the them :(

    ReplyDelete
  16. Same error here. O/S: Windows XP Pro. x32.

    ReplyDelete
  17. This comment has been removed by the author.

    ReplyDelete
  18. beta-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.

    ReplyDelete
  19. Well, I'm running Windows 7 64-bit AND iTunes 9.1.1.11 and 223d works 100% here - no problems.

    Hardware: iMac running Windows under BootCamp.

    ReplyDelete
  20. Glad to see you continuing to develop this program! I'll make a new tutorial for this shortly.

    I 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.

    ReplyDelete
  21. @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

    Thank you all for your feedback!

    ReplyDelete
  22. But with the same configuration (Windows 7 64-bit under BootCamp) on my MacBook Pro I get the same errors as the others.

    But, on my iMac (running Windows 7 64-bit) it works without errors and I can save my SHSH.

    ReplyDelete
  23. Worked a treat on my MacBook Pro running 10.6.3. Thanks man

    Still can't run TinyTss though :(

    ReplyDelete
  24. Well with Windows 7 64Bit it worked like a charm..

    So it works with 64bit systems

    ReplyDelete
  25. another data point
    XP, itunes 9.1.0.79, ipad 3g 3.2
    fw-umbrella-semaphore-03.13.08 umbrella failed through saurik, succeeded through apple

    ReplyDelete
  26. Hello
    What 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

    ReplyDelete
  27. 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
  28. @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.

    @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)

    ReplyDelete
  29. 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?

    Thanks

    ReplyDelete
  30. Where is TinyTSS??
    I've searched all over the internet, and nothing.

    ReplyDelete
  31. @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.

    @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.

    ReplyDelete
  32. Seconded... Where does it save the shsh blob?

    ReplyDelete
  33. This comment has been removed by the author.

    ReplyDelete
  34. To be short, it says segmentation failed.

    ReplyDelete
  35. why don't u put the download links like the post under urs? (spiritjb)?
    googling is hard in my country!
    dear! plz put all the requirement links like tinytss n shsh for download pal!

    ReplyDelete
  36. Get Error "Could not get you ECID SHSH for that model/version" ?! Copied ECID out of System-Profiler.

    ReplyDelete
  37. I get this error when trying to launch Umbrella:

    Cannot launch Java application

    Uncaught exception in main method:
    java.lang.NoSuchMethodError:
    com.semaphore/TinyUmbrella.seticonimages(Ljava/
    util/List;)V

    ReplyDelete
  38. I get this error when trying to launch Umbrella:

    Cannot launch Java application

    Uncaught exception in main method:
    java.lang.NoSuchMethodError:
    com.semaphore/TinyUmbrella.seticonimages(Ljava/
    util/List;)V

    ReplyDelete
  39. Same as MonaLaura. Mac 10.5.8

    ReplyDelete
  40. same erros as monalaura and tom.

    trying 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)

    ReplyDelete
  41. well, now it works.
    I 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.

    ReplyDelete
  42. 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

    ReplyDelete
  43. I connected my iphone 3g and gave Save SH

    it shows iPad 3.2 (7B367)-1003614535156 saved. How strange is that. I took this phone before ipad got released

    ReplyDelete
  44. 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.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)

    ReplyDelete