Apple has officially supported the customized carrier bundles since 1.1.3 (check This Article). However I’ve got a weird problem after upgrading to 1.1.3, the problem happened ever since days ago when I first tried to upgrade to 1.1.3 using leaked method, later I noticed same problem happened on dev team’s upgrade as well, and it still exists in real jailbreak 1.1.3.
The problem is: iPhone can’t detect my local operator, and it happened in the following combinations:
Natetrue Jailbreak 1.1.3 + Baseband 04.02.13_G
Dev Team Jailbreak 1.1.3 + Baseband 04.02.13_G
Dev Team Jailbreak 1.1.3 + Baseband 04.03.13_G
Zibri Jailbreak/Activation 1.1.3 + Baseband 04.03.13_G
I know this is abnormal and I have received success report that other operators don’t have this issue, but I do have this problem. I noticed this because I couldn’t let iPhone use my customized carrier logo by feeding it a new carrier bundle. So I fired up the following script to check what was wrong:
#!/bin/bash -x Framework AppSupport CPPhoneNumberCopyActiveCountryCode Framework AppSupport CPPhoneNumberCopyNetworkCountryCode Framework CoreTelephony CTRegistrationCopyOperatorName Framework CoreTelephony CTRegistrationCopyServiceProviderName Framework CoreTelephony CTRegistrationGetStatus Framework CoreTelephony CTSIMSupportCopyMobileSubscriberNetworkCode Framework CoreTelephony CTSIMSupportCopyMobileSubscriberCountryCode
The returned information revealed that my iPhone couldn’t detect my local operator (CTRegistrationCopyServiceProviderName returns NULL) for some unknown reason:
root@n000b ~ # ./CheckCarrier.sh + Framework AppSupport CPPhoneNumberCopyActiveCountryCode cn + Framework AppSupport CPPhoneNumberCopyNetworkCountryCode cn + Framework CoreTelephony CTRegistrationCopyOperatorName CHINA MOBILE + Framework CoreTelephony CTRegistrationCopyServiceProviderName <-- Here's the problem + Framework CoreTelephony CTRegistrationGetStatus kCTRegistrationStatusRegisteredHome + Framework CoreTelephony CTSIMSupportCopyMobileSubscriberNetworkCode 00 + Framework CoreTelephony CTSIMSupportCopyMobileSubscriberCountryCode 460
Then I checked the /var/mobile/Library and the /var/mobile/Library/Preferences folders, there was only 1 symbolic link created in each folder while there should be 2 in normal cases, one is for carrier and the other is for operator:
/var/mobile/Library/Carrier Bundle.bundle /var/mobile/Library/Operator Bundle.bundle <-- this was missing /var/mobile/Library/Preferences/com.apple.carrier.plist /var/mobile/Library/Preferences/com.apple.operator.plist <-- this was missing
UPDATE: I’ve repeated the above test on 1.0.2, 1.1.1, 1.1.2, and 1.1.3, none of which could detect my operator.
I’ve been fighting with this problem for days, my friend Arnaldo (Thank you!) is also trying to locate this for me, we still didn’t find out where the problem is.
A Temporary Workaround
Before the real reason which caused this weird operator detection failure is found, there’s a temporary workaround. This workaround is introduced by Arnaldo (known as aviegas at Hackint0sh forum) Thank you, you are a genius! The basic idea is:
If you feed SpringBoard the correct symbolic links, it’ll display the correct carrier logo.
Okay, here’s the workaround.
Step 1: Prepare bundle
1. Create the carrier bundle for your local carrier/operator. I’m using China Mobile, so I creat the following bundle:
/System/Library/Carrier Bundles/CHINA_MOBILE.bundle
The contents of the bundle is here: China Mobile Carrier/Operator Bundle
In the bundle, I used two customized logo: Default_CARRIER_MobileOSX.png and FSO_CARRIER_MobileOSX.png.
2. Create a symbolic link for MCC/MNC:
cd /System/Library/Carrier\ Bundles ln -s CHINA_MOBILE.bundle 46000
Step 2: Trigger SIM-based reconfiguration
1. Put the AT&T SIM into iPhone and reboot
2. Put local SIM into iPhone and reboot
Now check your /var/mobile/Library and /var/mobile/Library/Preferences, there will be one symbolic link in each folder:
Carrier Bundle.bundle -> /System/Library/Carrier Bundles/46000 com.apple.carrier.plist -> /System/Library/Carrier Bundles/46000/carrier.plist
Step 3: Add missing symbolic links
Now add the missing symbolic links for operator:
cd /var/mobile/Library ln -s /System/Library/Carrier\ Bundles/46000 Operator\ Bundle.bundle cd Preferences ln -s /System/Library/Carrier\ Bundles/46000/carrier.plist com.apple.operator.plist
Reboot, voila! Customized logo! The following is my customized carrier logo:

NOTICE: This customized logo will stay effective after reboot. It’ll stay unless you switch SIM.

17 Comments
I have seen a similar problem in 1.1.2 caused by a bug in Apple’s code. I don’t know if it was fixed in 1.1.3 so will have to check it.
I was speculating it might be a bug in code but didn’t take time to check it yet. If you could report what you have found, I’d be more than happy to hear. Thank you.
I just checked and unfortunately for you the bug was fixed :(
Then there might be another bug out there, or maybe it’s just my local mobile carrier’s problem (they might not send some needed info).
I’m having this problem, I did the jailbreak and unlock successfully but I’m getting the “No Service” message.
Any idea on how to fix this problem?
Thanks
I am also having the problem i have tried every unlock method but still acting odd.
I am also having this problem. It’s strange while first unlock it did detect the correct operator, and I can browse internet with edge gprs, but never after a phone restart. No operator was found. Checked the file system and yes the 2 operator symbolic links missing. Mine is 1.02 -> 1.1.3 with baseband upgrade to 04.03.13_G
I finally fix the problem. Simply reset the settings in Settings->General->Reset. I did a network reset and now it works. I referred to hackintosh forum:
http://www.hackint0sh.org/forum/showthread.php?t=29166&page=2
That will work once but after a reboot it will stop working.
um…actually I did a boss root clean before resetting (I saw < 2Mb left in /), dunno if it’s related. My “/” partition now got 7x Mb
You modified the carrier.plist for making use of your custom logo, right? In the section defining that, there in one more instance of CarrierName (one more on top). The one in here is not allowed to have a space, if so, the logo wont pop up and the bescribed behavior happens. I am playing with the files since 1.1.3 came up…
So while you may enter China Mobile with space on top of the plist file, try ChinaMobile down in the StatusBarImages section.
best
volkspost
@volkspost, I think you didnt get the point, the upper most CarrierName is only for display, it has nothing to do with carrier detection and logo display, I did use the CHINAMOBILE (btw, all uppercases) in the StatusBarImages if you check the attached bundle. It’s nothing about the bundle, it’s something else becase Framework didn’t return provider name.
I’m having the opposite issue - I reliably get the Operator to point to the correct bundle, but my Carrier points to “Unknown”. Any idea what logic controls how the carrier gets identified?
Yes, CSL in Hong Kong has a similar problem
and it cannot detect operator and no logo as a result
The temporary workaround can fix it
BTW
Where can I get the Framework binary as per your shell script ?
It is a convenient debug tool.
Hey,
I’ve the same problem in Germany with 1.1.4 and T-Mobile network but ‘callmobile.de’ as operator/reseller. I’d setup all the symlinks and my own operator logos but it didn’t work. When I put my SIM into an SE K750i I can see that I’m logged in at callmobile. I also know about other user who have the same behaviour with e-plus network and ‘base’ as operator/reseller. How could I get the CheckCarrier.sh to check out what’s going on?
Hi George,
Thank you very much for your information. I did successfully install an updated carrierbundle generated by (www.volkspost.de/carrierbundle/ -Thanks volkspost) for Vodafone in Egypt on my 3G (pwnage 2.1, ismartphone unlock sim). After using your recommendation to generate the missing symbolic links I finally got the modified carrier logo name and and everything works fine except, the APN, username and password are not present after reboot although they are listed in the carrier.plist file. So I have to enter them manually everytime I need 3G service. Is there a way to work around this? Best regards, Joe
Hi George,
must have done something wrong in the process. Started from scratch with a fresh 2.1 jailbrake and your instructions. Now everything works as it should. Thanks again for posting your very useful sites, Joe