Switch between EDGE / 3G / LTE on iPhone 5S / 5C (jailbreak)
Finally, Apple turned on the ability to use LTE for all Russian subscribers of Megafon, MTS, Beeline operators on iPhone 5S / 5C ( http://www.iphones.ru/iNotes/346250 ). Previously, only Beeline subscribers could officially use LTE on iPhone ( http://www.iphones.ru/iNotes/336762 ).
New technologies are, of course, good, but there is a nuance. As you know, Russian realities are such that 3G and LTE coverage are better and much more (like me) iPhone durability and network stability than LTE speeds, which may someday be in the future, and in some places even LTE in the nearest run doesn't even smell.

The nuance is that when updating the settings of the operator, it becomes impossible to disable 3G. Even turning off the data transfer completely, the phone still jumps between 2G and 3G with the new settings. At my place, for example, 3G is very poorly caught and constantly jumps between 3G and EDGE. If 3G is turned on, problems with voice calls begin, people stop calling me the first time, and more. This also greatly affects the battery, as it constantly switches between 2G / 3G. I think many people understand what I'm talking about.
I personally solved this problem for myself and I want to share the solution with everyone.
I bought my iPhone 5S model A1530 for the possible use of LTE from MTS, but I did not suspect about the setup of the impossibility of disconnecting 3G. With the release of Jailbreakfor iOS 7 began to explore the possibilities of firstly turning on LTE, without waiting for the official announcement, and secondly, the possibility of switching between 2G / 3G / LTE. Unfortunately, as Google showed, at the moment there is no stable tweak that would allow you to quickly and easily switch between 2G / 3G / LTE. I began to come up with my own way.
So, my switching method is quite brutal and requires some minimal knowledge and skills related to jailbreak.
The method is that I created a script that switches the Carrier Bundle (roughly speaking the settings of the operators) from the old version, which includes only 3G to the new one and vice versa.
I want to say right away that the method was rolled on to the iPhone 5S A1530 on the MTS operator. I don’t know how this will work on 5C and other operators, however I tried to make the most secure and stable universal script.
For implementation, you will need:
After implementing paragraphs 1 and 4, be sure to backup the operator’s settings using the tool from paragraph 5 or the folders in your own way (depending on your operator):
/ System / Library / Carrier Bundles / iPhone / MTS_en.bundle
/ System / Library / Carrier Bundles / iPhone /MegaFon_ru.bundle
/ System / Library / Carrier Bundles / iPhone / VimpelCom_ru.bundle
and
/ private / var / mobile / Library / Carrier Bundles / iPhone / MTS_en.bundle
/ private / var / mobile / Library / Carrier Bundles / iPhone / MegaFon_ru .bundle
/ private / var / mobile / Library / Carrier Bundles / iPhone / VimpelCom_en.bundle There
may be no last folders or they may appear after updating operator settings.
If something goes wrong, you will need to return the contents of these folders back.
Further files for implementation:
My method involves relatively convenient control of the switching functions through the iOS interface, so I personally use iSSH for the switch. The switching interface for me looks like this: Let's start the installation of the script.

That's basically all you need to switch between profiles.
I will duplicate questions that perhaps someone will answer (if there is no profile on the hub, write to mafet@mafet.ru ):
ps 0 Oddly enough, SSH does not eat the battery in any way, since the daemon itself is essentially not running. The inetd analog is listening on the port. Sshd itself starts only when a connection is established from the client.
ps 1 After installing OpenSSH, be sure to change the password from the standard alpine to your own using the command in the console: passwd <new password> .
ps 2 If you need to cut out LTE for operators of other countries or other operators of Russia, then the procedure is the same, but you need to find the operator settings without LTE functions and replace the current ones. Although logically, to cut LTE for an arbitrary operator, it is enough to run the command rm / private / var / mobile / Library / Carrier \ Bundle.bundle / overrides_ *and restart the phone, but this is at your own peril and risk and it is advisable to backup the contents of / private / var / mobile / Library / Carrier Bundle.bundle before this .
ps 3 If you need to turn off 3G and LTE and there is no jailbreak, you can use the iRoseTool utility.
New technologies are, of course, good, but there is a nuance. As you know, Russian realities are such that 3G and LTE coverage are better and much more (like me) iPhone durability and network stability than LTE speeds, which may someday be in the future, and in some places even LTE in the nearest run doesn't even smell.

The nuance is that when updating the settings of the operator, it becomes impossible to disable 3G. Even turning off the data transfer completely, the phone still jumps between 2G and 3G with the new settings. At my place, for example, 3G is very poorly caught and constantly jumps between 3G and EDGE. If 3G is turned on, problems with voice calls begin, people stop calling me the first time, and more. This also greatly affects the battery, as it constantly switches between 2G / 3G. I think many people understand what I'm talking about.
I personally solved this problem for myself and I want to share the solution with everyone.
I bought my iPhone 5S model A1530 for the possible use of LTE from MTS, but I did not suspect about the setup of the impossibility of disconnecting 3G. With the release of Jailbreakfor iOS 7 began to explore the possibilities of firstly turning on LTE, without waiting for the official announcement, and secondly, the possibility of switching between 2G / 3G / LTE. Unfortunately, as Google showed, at the moment there is no stable tweak that would allow you to quickly and easily switch between 2G / 3G / LTE. I began to come up with my own way.
So, my switching method is quite brutal and requires some minimal knowledge and skills related to jailbreak.
The method is that I created a script that switches the Carrier Bundle (roughly speaking the settings of the operators) from the old version, which includes only 3G to the new one and vice versa.
I want to say right away that the method was rolled on to the iPhone 5S A1530 on the MTS operator. I don’t know how this will work on 5C and other operators, however I tried to make the most secure and stable universal script.
For implementation, you will need:
- Jailbreak iPhone 5S / 5C
- Console Interaction Tool (optional)
- MobileTerminal from Sidia. From the pros - the easiest way to put and use. But of the minuses - you will need to enter the command manually each time.
- OpenSSH + SSH client that knows how to save settings and immediately start a command when connecting (I selected and bought iSSH, because it is ideal enough to work with the console and has the necessary functions)
- Bash and the commands dirname, echo, cat, grep, killall, cp, rm - in theory they should be installed automatically when installing Cydia, but I'm not sure
- The afc2add package from Cydia for access to the full iOS file system (it’s not necessary for work, but at the time of installation it may be necessary at least for backup)
- iFunBox or something similar for accessing the iOS FS for manual installation of the script
After implementing paragraphs 1 and 4, be sure to backup the operator’s settings using the tool from paragraph 5 or the folders in your own way (depending on your operator):
/ System / Library / Carrier Bundles / iPhone / MTS_en.bundle
/ System / Library / Carrier Bundles / iPhone /MegaFon_ru.bundle
/ System / Library / Carrier Bundles / iPhone / VimpelCom_ru.bundle
and
/ private / var / mobile / Library / Carrier Bundles / iPhone / MTS_en.bundle
/ private / var / mobile / Library / Carrier Bundles / iPhone / MegaFon_ru .bundle
/ private / var / mobile / Library / Carrier Bundles / iPhone / VimpelCom_en.bundle There
may be no last folders or they may appear after updating operator settings.
If something goes wrong, you will need to return the contents of these folders back.
Further files for implementation:
- www.mafet.ru/lte/lteswitch.zip
This archive contains a script with auto-detection of the current operator, as well as a Carrier Bundle set for the three operators for 2G / 3G only mode and for LTE - www.mafet.ru/lte/services
After clicking on the link, you just need to save this file to disk without changes. This will be needed for the new SSH instance (details below) - www.mafet.ru/lte/com.openssh.sshd2.plist
This is the file for implementing the launch of the second SSH instance (more details below) - www.mafet.ru/lte/lteswitch_all.zip
All files in one archive
My method involves relatively convenient control of the switching functions through the iOS interface, so I personally use iSSH for the switch. The switching interface for me looks like this: Let's start the installation of the script.

- It is necessary to unzip the archive from point 1 and put it in the / var / root folder (or any other folder, this is not very important) using the iFunBox I mentioned, but maybe anything is the main result. You should get something like:
- Since the zip archive and copied files are unlikely to preserve the file executable attribute, just in case you need to go to the lteswitch folder through the terminal and assign the executable flag.
A small educational program: Moving through folders on unix systems is done using cd path separators - the usual slash /, unlike the Windows reverse \. Those. the path is written as / var / root ...
So. Go to the folder, for example cd / private / var / root / lteswitch / and type chmod + x lteswitch.sh - In principle, everything is ready for the switch to work, but not very convenient. To check, you can execute commands (the path may be different, depending on where you copy the script)
Switching to 2G / 3G only mode: /private/var/root/lteswitch/lteswitch.sh 3G the
result will be something like: Switching to LTE mode: /private/var/root/lteswitch/lteswitch.sh LTE the result will be something like: - It would be necessary to make everything comfortable. Unfortunately, I still did not find a working way to run scripts using the SpringBoard icon and therefore do it through iSSH, as a software that can run commands when connecting via SSH, but for this you need to prepare SSHd. If someone knows a way to run scripts from the SpringBoard icon, I really look forward to the comments. I will rewrite the article and there will be much less hemorrhoids with SSH.
- You must place the services file in the / etc folder or manually add the line to this file:
sshalt 8022/tcp # SSH Remote Login Protocol
With this line we add the description of port 8022 for the new SSH instance.
This is necessary so that localhost can connect to SSH. I don’t know why, but Apple with 7 firmware has banned the ability to connect to ports below 1024 locally. If anyone knows how to fix this, then again I really look forward to the comments. - Again, as part of raising SSH on port 8022, you need to copy the file com.openssh.sshd2.plist to the folder / Library / LaunchDaemons / and restart the iPhone to start the service.
- You must place the services file in the / etc folder or manually add the line to this file:
- The final stage, you need to configure iSSH (or similar software) to conveniently run the script. To do this, add two configurations with the following parameters:
To switch to 2G / 3GDescription: Switch to 3G (the name can be any)
Host: 127.0.0.1
Port: 8022
Login: root
Command: /private/var/root/lteswitch/lteswitch.sh 3G
Password: password for root (default alpine)
To switch to LTEDescription: Switch to LTE (the name can be anything)
Host: 127.0.0.1
Port: 8022
Login: root
Command: /private/var/root/lteswitch/lteswitch.sh LTE
Password: password for root (default alpine)
That's basically all you need to switch between profiles.
I will duplicate questions that perhaps someone will answer (if there is no profile on the hub, write to mafet@mafet.ru ):
- How to create icons on SpringBoard on iOS7 to run scripts? Perhaps there is some kind of generator?
- How to disable connection restriction on ports <1024 on iOS7?
- Is there a better way to reinitialize the Carrier Bundle than killall CommCenter ?
ps 0 Oddly enough, SSH does not eat the battery in any way, since the daemon itself is essentially not running. The inetd analog is listening on the port. Sshd itself starts only when a connection is established from the client.
ps 1 After installing OpenSSH, be sure to change the password from the standard alpine to your own using the command in the console: passwd <new password> .
ps 2 If you need to cut out LTE for operators of other countries or other operators of Russia, then the procedure is the same, but you need to find the operator settings without LTE functions and replace the current ones. Although logically, to cut LTE for an arbitrary operator, it is enough to run the command rm / private / var / mobile / Library / Carrier \ Bundle.bundle / overrides_ *and restart the phone, but this is at your own peril and risk and it is advisable to backup the contents of / private / var / mobile / Library / Carrier Bundle.bundle before this .
ps 3 If you need to turn off 3G and LTE and there is no jailbreak, you can use the iRoseTool utility.