Xcode iPhone OS 3.0.1 Error in Organizer

Comments (28)
so on the flight home from the 11day intensive iPhone development course hosted by About Objects i finally figured out why i could not see my iphone with release 3.0.1 in the Xcode organizer.

the problem:
the iPhone SDK 3.0 does not recognize your development iPhone when
connected to Xcode in the Organizer that has been upgraded to 3.0.1
via your normal iTunes sync process.

Organizer shows you the following error:

"The version of iPhone OS on iPhoneXYZ does not match
any of the versions of iPhone OS supported for development with this
copy of Xcode. Please restore the device to a version of the OS listed
below. If necessary, the latest version of Xcode is available here.

OS Installed on iPhoneXYZ is
3.0.1 (7A400)
or
3.1 (7C144)

Xcode Supported iPhone OS Versions
3.0 (7A312g)
2.2.1
2.2
2.1.1
2.1
2.0.2 (5C1)
2.0.1 (5B108)
2.0 (5A347)"

the reason:

apparently any version of the SDK (even 3.1 beta) must have the
version of the OS installed on the iPhone in question defined within
the directory /Developer/Platforms/
iPhoneOS.platform/DeviceSupport/

a simple directory listing (ls-l) shows the contents of the
/DeviceSupport directory so we can investigate:

lrwxr-xr-x  1 root        admin   11 Jun 18 14:06 2.0 (5A345)
-> 2.0 (5A347)
drwxrwxr-x  5 root        admin  170 Jun 18 14:06 2.0 (5A347)
lrwxr-xr-x  1 root        admin   11 Jun 18 14:06 2.0.1 (5B108) -> 2.0 (5A347)
lrwxr-xr-x  1 root        admin   11 Jun 18 14:06 2.0.2 (5C1) -> 2.0 (5A347)
drwxrwxr-x  5 root        admin  170 Jun 18 14:06 2.1
lrwxr-xr-x  1 root        admin    3 Jun 18 14:06 2.1.1 -> 2.1
drwxrwxr-x  5 root        admin  170 Jun 18 14:06 2.2
drwxrwxr-x  5 root        admin  170 Jun 18 14:06 2.2.1
drwxrwxr-x  5 root        admin  170 Jun 18 14:06 3.0 (7A341)
(7A341)


what is of interest here is that each iterations of OS 2.0 "link" back
to its root OS release 2.0:

2.0.1 (5B108) -> 2.0 (5A347)
2.0.2 (5C1) -> 2.0 (5A347)


(note the -> symbol represents a file link on OSX and UNIX in
general). the same goes for 2.1.1 -> 2.1, 2.1 being the
root OS in this case. so, by this logic if we create a 'link" from OS
3.0.1 to its root release 3.0 (7A341), Xcode should know which
properties 3.0.1 needs to inherit and hence not throw an exception
in the organizer and allow us to use 3.0.1 on our iPhones without
errors.

the solution:
1) open a terminal window as administrator.

2) change to the directory in question to minimize errors when typing long paths in commands:

cd /Developer/Platforms/iPhoneOS.platform/DeviceSupport/

3) once in the directory /DeviceSupport check for a
pre-existing link for 3.0.1.

type ls -l to list the contents of /DeviceSupport.

if a link for 3.0.1 is present and you're still getting the error in
Xcode/Organizer then the 3.0.1 link was not correctly created and must be
removed and recreated.

example of incorrect 3.0.1 link:

lrwxr-xr-x  1 user  admin date 5 11:27 3.0.1 -> 3.0

remove the incorrect link:
rm 3.0.1

ls -l to double check that you really removed 3.0.1.

4) now we need to create the link for the new OS 3.0.1 to
point back to the root OS 3.0 (7A341).

ln is the link command, so type:

ln -s 3.0\ \(7A341\) 3.0.1

after you hit return the command line prompt should show no message. simply list the directory contents onece more to ensure that we created the link properly. you should see the following entry in the directory listing when you enter ls -l:

lrwxr-xr-x  1 user admin date time 3.0.1 -> 3.0 (7A341)

5) restart Xcode and *BANG* your iPhone will appear as normal sans error and is
ready to install your provisioning apps.

more on how a "link" works within OSX can be found by typing man
ln
at the command prompt.

hope that helps everyone, who like me, struggled with this one.

28 Comments

Phew, worked for me. Thank you!

bluesman99 on August 25, 2009 4:30 PM

It worked! Thank you so much. If you try this at home, note that there ar spaces in the command...
lnSPACE-sSPACE3.0\SPACE\(7A341\)SPACE3.0.1

Steve Pucelik on August 26, 2009 6:49 AM

This worked great...thank you!!

Thanks Marcos, that works a treat.

Yeah, this one vexed me for several days and I was shocked there was no real answer out there. Thanks for commenting.

bluesman99: if you cut and paste it from the body text the command is perfect. i tested it. if you are typing it out manually, then yes the spaces are critical.

ln -s 3.0\ \(7A341\) 3.0.1
lnSPACE-sSPACE3.0\SPACE\(7A341\)SPACE3.0.1

Awesome - thanks for the help on this. I just upgraded my SDK and encountered this problem, so your post helped me a lot. Thank you!!

John Louis Swaine on August 31, 2009 9:04 AM

Thank you. I didn't bother to ls -l to see whether the 3.0.1 file was correct. All this because Apple sent out an advisory with a hard line break to screw up one little terminal operation and I couldn't be bothered to proofread the command first.

John Louis: yeah, all that house keeping is for educational purposes. that whole "teach a man to fish" thing. it is how i was taught to admin.

to be fair the unusual usage of the link command really tripped me up too. i had never seen the \ \(123ABC\) syntax before.

thanks for the comment.

thank you! i restored my phone and reinstalled the sdk before seeing your link.

Thanks so much! Worked perfect!

I followed this step by step ensuring all the spaces were in place in the terminal. I doesn't work for me. I even logged in as the root user and tried it.

Afterwards I noticed in the /Developer/Platforms/iPhoneOS.platform/DeviceSupport/ directory, the 3.0.1 file that was created via the Terminal is just an alias file while everything else in there are folders.

Thoughts? Thanks in advance for any replies!

an "alias" is call a "link" in Unix. and yes "3.0.1" is only a "link" to the "3.0 (7A341)" folder. go to the top of the instructions and start over. it works.

hope that helps.

sergio Caplan on September 9, 2009 12:31 AM

I have followed these steps bit by bit. Nothing.

I still get the error msg that led us all here.

The only difference I see is that, as you can see below, my modified file lists my name, not "root". But as I only have one ID here, not sure how to chaneg that, or of that's even the problem.

Can someone help out someone who's so new to the Mac that he's beyond frustrated????? Argh. Many thanks


lrwxr-xr-x 1 root admin 11 Sep 7 18:58 2.0 (5A345) -> 2.0 (5A347)
drwxrwxr-x 5 root admin 170 Sep 7 18:58 2.0 (5A347)
lrwxr-xr-x 1 root admin 11 Sep 7 18:58 2.0.1 (5B108) -> 2.0 (5A347)
lrwxr-xr-x 1 root admin 11 Sep 7 18:58 2.0.2 (5C1) -> 2.0 (5A347)
drwxrwxr-x 5 root admin 170 Sep 7 18:58 2.1
lrwxr-xr-x 1 root admin 3 Sep 7 18:58 2.1.1 -> 2.1
drwxrwxr-x 5 root admin 170 Sep 7 18:58 2.2
drwxrwxr-x 5 root admin 170 Sep 7 18:58 2.2.1
drwxrwxr-x 5 root admin 170 Sep 7 18:58 3.0
lrwxr-xr-x 1 sergiocaplan admin 11 Sep 8 21:17 3.0.1 -> 3.0 (7A341)
drwxrwxr-x 5 root admin 170 Sep 7 18:58 3.1 (7C116a)

Sergio Caplan on September 9, 2009 1:43 AM

It's me, the guy from above (who is also unable to log in using Movable Type). I was curious if my above ongoing problem could be because I was using the 3.1 beta SDK?

Anyway, I am uninstalling it and installing just 3.0, not sure if it will work. This is tiring.

sergio Caplan on September 9, 2009 3:45 AM

ATTN: Todd.

Perhaps you and I are in the same boat? I am using the 3.1 SDK (beta). If that is the case....may I suggest to you to do what I did?

Not sure it will work in the end, but XCode stopped giving me that stupid error in the organizer window.

I was doing what everyone said. And still nothing:
"ln -s 3.0\ \(7A341\) 3.0.1."

I was so busy worrying how little I knew of Mac or Unix that I forgot to go back to basics. I may not understand Unix commands, but I can read a freaking directory.

So I looked over my directory contents and realized that I had no folder named 3.0 (7A341). but I did have a 3.0 directory.

So I ran the command : ln -s 3.0 3.0.1 and that made the headache go away.

Tomorrow I will see if I can compile my app to my iPhone, still have to figure out how to properly install my certificate, etc.

p.s. XCode says my iPhone software ver is 3.0.1 (7A400). Am wondering if I should include that link.

i have not touched the 3.1 beta so i can't test this.

however, it looks like (from what has been posted above) in the 3.1 beta your root iPhone OS is NOT "3.0 (7A341)", but "3.0" instead (don't ask me why). so changing the command to: ln -s 3.0 3.0.1 is correct (good catch Sergio Caplan).

in the future, just ls -l the /DeviceSupport directory and see what the root iPhone OS release is and modify the ln command above correspondingly. and look out for the tricky \ \(123ABC\) syntax on some of the root OS names.

Sergio Caplan: you should not need to ln "3.0.1 (7A400)" if it is working. mine says the same thing in organizer.

You are a genius. Btw, confirming that it also works for v3.1.1 with the following little modification:

ln -s 3.0\ \(7A341\) 3.1.1

hi! is there a way to make it work for os 3.1.2? thanks

Thanks dude, this didnt work straight off but got me on the right track!!

For all the fun apple have given us they also like to make life hard sometimes huh?...

I followed these instructions and it solved the problem in the Organizer. However the frameworks I include cause the following warnings in the GDB console, and the app does not work correctly:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/PrivateFrameworks/MusicLibrary.framework/MusicLibrary
=uuid-mismatch-with-loaded-file,file="/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/PrivateFrameworks/MusicLibrary.framework/MusicLibrary"

etc


any idea on how to fix this?

Thanks in advance,
Vishay

@vishay sorry for the delay in getting back to you. the issue i see is the UUID is not correct with what xCode is expecting for that iPhone. did you mess with the UUID. the UUID is the phones "serial number" and how provisioning is tracked. try a different iphone and see if it is isolated to just that unit. was this iPhone ever jailbroken?

i just got 3.1.3 to work. here is the command. just use it in the above instructions instead of "ln -s 3.0\ \(7A341\) 3.1"

ln -s 3.1\ \(7C144\) 3.1.3

hope that helps,

Marcos

Great post -- many thanks, this has saved me hours of work.

i still have the problem, i tried ln -s 3.1\ \(7D11\) 3.1.2

i even tried ln -s 3.1\ \(7C144\) 3.1.3

i still get the same error...

OS Installed on Mac User’s iPhone
3.1.2 (7D11)

Xcode Supported iPhone OS Versions
3.0 (7A341)
2.2.1
2.2
2.1.1

PLZ HELP!!

I'm using XCode 3.1.3 and I have the dir 3.0 (7A341) in /Developer/Platforms/iPhoneOS.platform/DeviceSupport

I have created 2 links and neither one fixes the problem...


drwxrwxr-x 5 root admin 170 Mar 19 12:29 3.0 (7A341)
lrwxr-xr-x 1 root admin 11 Mar 19 12:15 3.0.1 -> 3.0 (7A341)
lrwxr-xr-x 1 root admin 11 Mar 19 12:15 3.0.1 (7A400) -> 3.0 (7A341)

Help!

@ Ganesh you need to update the command to reflect the OS installed on the iPhone that the organizer is rejecting. so if the iphones OS giving you trouble is 3.1.3 then the OS's root is 3.1, NOT 3.0. you can see this when you list the directory. the root OS are the files, the rest are links. so you will see 3.0 and 3.1 are actual files ~170k and the the rest are links only a few kb in size.

so try

ln -s 3.1\ \(7C144\) 3.1.3
or
ln -s 3.1 3.1.3

Leave a comment


Type the characters you see in the picture above.

Recent Entries