Переключение между EDGE/3G/LTE в iPhone 5S/5C (jailbreak)

    Наконец-то свершилось, Apple включила возможность пользоваться LTE для всех Российских абонентов операторов Мегафон, МТС, Билайн на iPhone 5S/5C (http://www.iphones.ru/iNotes/346250). Ранее официально пользоваться LTE на iPhone могли только абоненты Билайн (http://www.iphones.ru/iNotes/336762).

    Новые технологии — это, конечно, хорошо, но есть нюанс. Как известно, Российские реалии таковы, что покрытие 3G и LTE желают лучшего и многим (как и мне) важнее длительность работы iPhone и стабильность сети, чем скорости LTE, которые могут в перспективе быть когда-нибудь, а в некоторых местах вовсе LTE в ближайшей перспективе даже не пахнет.

    Image #2084919, 262 KB

    Нюанс в том, что при обновлении настроек оператора, становится невозможным отключить 3G. Даже выключение передачи данных полностью, телефон всё равно скачет между 2G и 3G при новых настройках. У меня дома, например, 3G очень плохо ловится и постоянно скачет между 3G и EDGE. Если включен 3G, начинаются проблемы с голосовыми вызовами, люди перестают дозваниваться ко мне с первого раза и прочее. Так же это сильно сказывается на батарее, поскольку постоянно происходит переключение между 2G/3G. Я думаю многие понимают, о чём я говорю.

    Я лично решил эту проблему для себя и хочу поделиться решением со всеми.

    Я покупал свой iPhone 5S модели A1530 с целью возможного пользования LTE от МТС, но я не подозревал о подставе невозможности отключения 3G. С выходом Jailbreak для iOS 7 стал исследовать возможности во-первых включения LTE, не дожидаясь официального анонса, во-вторых возможности переключения между 2G/3G/LTE. К сожалению, как показало гугление, на текущий момент нет стабильного твика, который позволил бы быстро и просто переключаться между 2G/3G/LTE. Я же начал придумывать свой способ.

    Итак, мой способ переключения достаточно брутален и требует некоторых минимальных знаний и умений, связанных с jailbreak.
    Способ заключается в том, что я создал скрипт, который переключает Carrier Bundle (грубо говоря настройки операторов) со старой версии, которая включает только 3G на новую и обратно.

    Сразу хочу сказать, что способ обкатывался на iPhone 5S A1530 на операторе МТС. Я не знаю, как это будет работать на 5C и на других операторах, однако постарался сделать максимально защищённый и стабильный универсальный скрипт

    Для реализации понадобится:
    1. Jailbreak iPhone 5S/5C
    2. Средство для взаимодействия с консолью (на выбор)
      • MobileTerminal из сидии. Из плюсов — проще всего поставить и пользоваться. Но из минусов — нужно будет каждый раз вводить команду вручную.
      • OpenSSH + SSH клиент, который умеет сохранять настройки и при соединении сразу запускать команду (я выбрал и купил iSSH, поскольку он достаточно идеален для работы с консолью и имеет нужные функции)

    3. Bash и команды dirname, echo, cat, grep, killall, cp, rm — по идее они должны ставиться автоматически при установке Cydia, но я не уверен
    4. Пакет afc2add из Cydia для доступа к полной файловой системе iOS (для работы по идее не нужен, но на момент установки может понадобиться хотя бы для бекапа)
    5. iFunBox или что-то похожее для доступа к ФС iOS для ручной установки скрипта


    После реализации пункта 1 и 4, обязательно сделайте backup настроек оператора средством из пункта 5 или своим способом папок (в зависимости от своего оператора):
    /System/Library/Carrier Bundles/iPhone/MTS_ru.bundle
    /System/Library/Carrier Bundles/iPhone/MegaFon_ru.bundle
    /System/Library/Carrier Bundles/iPhone/VimpelCom_ru.bundle
    и
    /private/var/mobile/Library/Carrier Bundles/iPhone/MTS_ru.bundle
    /private/var/mobile/Library/Carrier Bundles/iPhone/MegaFon_ru.bundle
    /private/var/mobile/Library/Carrier Bundles/iPhone/VimpelCom_ru.bundle
    Последних папок может не быть или они могут появиться после обновления настроек оператора.
    Если что-то пойдёт не так, то нужно будет вернуть содержимое этих папок обратно.

    Далее файлы для реализации:
    1. www.mafet.ru/lte/lteswitch.zip
      Данный архив содержит скрипт с автооопределением текущего оператора, а так же набор Carrier Bundle для тройки операторов для режима 2G/3G only и для LTE
    2. www.mafet.ru/lte/services
      После перехода по ссылке, нужно данный файл просто сохранить на диске без изменений. Это нужно будет для нового инстанса SSH (подробности далее)
    3. www.mafet.ru/lte/com.openssh.sshd2.plist
      Это файл для реализации запуска второго инстанса SSH (подробнее далее)
    4. www.mafet.ru/lte/lteswitch_all.zip
      Все файлы одним архивом


    Мой способ предполагает относительно удобное управление через интерфейс iOS функциями переключения, поэтому я лично пользуюсь iSSH для переключателя. Интерфейс переключения у меня выглядит так:
    Image #2084891, 65.4 KB

    Приступим к установке скрипта.
    • Необходимо распаковать архив из пункта 1 и поместить в папку /var/root (или любую другую папку, это не сильно важно) с помощью упомянотого мной iFunBox, но может быть что угодно — главное результат. Должно получиться что-то типа:
      Image #2084888, 31.5 KB
    • Поскольку архив zip и скопированные файлы вряд-ли сохранят атрибут исполняемости файла, на всякий случай нужно зайти в папку lteswitch через терминал и присвоить флаг исполняемости.
      Небольшой ликбез: Перемещение по папкам в unix системах делается с помощью cd разделители пути — обычный слэш /, в отличии от виндового обратного \. Т.е. путь пишется, как /var/root…
      Итак. Переходите в папку, например cd /private/var/root/lteswitch/ и вводите chmod +x lteswitch.sh
    • В принципе всё готово для работы переключателя, но не совсем удобно. Для проверки можно выполнить команды (путь может быть иной, в зависимости от того, куда вы скопируете скрипт)
      Переключение в режим 2G/3G only: /private/var/root/lteswitch/lteswitch.sh 3G
      результатом будет что-то типа:
      Image #2084910, 25.8 KB
      Переключение в режим LTE: /private/var/root/lteswitch/lteswitch.sh LTE
      результатом будет что-то типа:
      Image #2084906, 24.5 KB
    • Нужно бы сделать, чтоб всё было удобно. К сожалению я так и не нашёл работающий способ запускать скрипты с помощи иконки SpringBoard и по этому делаю это через iSSH, как софтину, которая умеет запускать команды при соединении по SSH, но для этого нужно подготовить SSHd. Если кто-то знает способ запускать скрипты с иконки SpringBoard — очень жду в комментах. Перепишу статью и будет гораздо меньше гемороя с SSH.
      • Файл services необходимо поместить в папку /etc или же вручную добавить в данный файл строку:
        sshalt 8022/tcp # SSH Remote Login Protocol
        Данной строчкой мы добавляем описание порта 8022 для нового инстанса SSH
        Это нужно для того, чтоб с localhost можно было подключаться к SSH. Я не знаю зачем, но Apple с 7 прошивки запретила возможность коннектиться к портам ниже 1024 локально. Если кто знает, как это поправить — опять же очень жду в комментах.
      • Опять же в рамках поднятия SSH на порту 8022, нужно скопировать файл com.openssh.sshd2.plist в папку /Library/LaunchDaemons/ и перезапустить iPhone, чтоб сервис запустился.

    • Финальный этап, нужно настроить iSSH (или аналогичное ПО) для удобного запуска скрипта. Для этого нужно добавить две конфигурации с такими параметрами:
      Для переключения на 2G/3G
      Description: Switch to 3G (название может быть любое)
      Host: 127.0.0.1
      Port: 8022
      Login: root
      Command: /private/var/root/lteswitch/lteswitch.sh 3G
      Password: пароль для root (по-умолчанию alpine)

      Для переключения на LTE
      Description: Switch to LTE (название может быть любое)
      Host: 127.0.0.1
      Port: 8022
      Login: root
      Command: /private/var/root/lteswitch/lteswitch.sh LTE
      Password: пароль для root (по-умолчанию alpine)



    Вот в принципе и всё, что нужно для переключения между профилями.
    Продублирую вопросы, на которые, возможно, кто-нибудь ответит (если нет профиля на хабре, пишите mafet@mafet.ru):
    1. Как создавать иконки на SpringBoard на iOS7 для запуска скриптов? Возможно есть какой-то генератор?
    2. Как отключить ограничение на коннект к портам <1024 на iOS7?
    3. Существует ли более лайтовый способ переинициализации Carrier Bundle, кроме как killall CommCenter?

    p.s. 0 Как ни странно, SSH никак не ест батарею, поскольку сам демон по сути не запущен. Слушает порт аналог inetd. Сам sshd запускается, только при установлении соединения от клиента.
    p.s. 1 После установки OpenSSH обязательно поменяйте пароль со стандартного alpine на свой с помощью команды в консоли: passwd <новый пароль>.
    p.s. 2 Если нужно выпилить LTE для операторов других стран или других операторов России, то методика та же самая, но нужно найти настройки оператора без функций LTE и подменить текущие. Хотя по логике, чтоб выпилить LTE для произвольного оператора, достаточно выполнить команду rm /private/var/mobile/Library/Carrier\ Bundle.bundle/overrides_* и перезагрузить телефон, но это на свой страх и риск и желательно забекапить перед этим содержимое /private/var/mobile/Library/Carrier Bundle.bundle.
    p.s. 3 Если нужно выключить 3G и LTE и нет jailbreak, можно воспользоваться утилитой iRoseTool.
    Поделиться публикацией

    Похожие публикации

    Комментарии 89

      0
      Как-то все сложно в iphone. На андроид для этого достаточно скачать виджет из google play. А здесь jailbrake, командная строка и потраченный вечер.
      • НЛО прилетело и опубликовало эту надпись здесь
          +13
          У этой логики есть опасная обратная сторона. Буквально несколько топиков назад в комментариях примерно такой диалог произошел.

          "
          -У вас сайт в Опере 12 не работает.
          -Ух ты, действительно… Ну да ладно, у нас всего 2% посетителей с оперой 12.
          -А может у вас их всего два процента, потому что у вас сайт в ней не работает?
          -Об этом я не подумал…
          "
            –14
            Вот вот! Именно по этому у меня андроид телефон
              +6
              Что касается оперы 12, то это давно устаревшая и неподдерживаемая версия. И если люди ее установили, то и обновлять умеют, ситуация отличается от ситуации с IE6.
              Поэтому чем меньше людей ее поддерживают, тем лучше для всех.
                –4
                Это единственная версия под линуксы, например. Более новых на хромиуме пока нет, не готовы.
                  +11
                  Тем хуже для Opera Software.
                    +11
                    Не единственная: она заброшена и уязвима.
                    Оперы под линукс больше нет никакой.
                      +1
                      Кстати, раз уж зашел диалог, подскажите, пожалуйста, каких уязвимостей стоит опасаться при использовании Opera 12 в Linux?
                      0
                      ruckus@Ruckus ~ $ eix -e opera
                      [I] www-client/opera
                      Available versions: 12.16_p1860 (~)12.16_p1860-r1 {...}

                      При этом версия 12.16_p1860 является стабильной и «поддерживаемой» сообществом Gentoo. Поправьте если я неправильно что-то понял.
                        0
                        Неправильно: ее не могут поддерживать — ее исходные коды закрыты. Не могут исправить ошибки. Не могут добавить функции. Не могут исправить проблемы с производительностью. Могут только пакетик собрать.
                    +7
                    Я пользуюсь Оперой 12, т.к. это единственный браузер который устраивает по функционалу.
                      0
                      Не ради холивара, просто интересно, какие функции есть в опере, но нет в ff например?
                          0
                          хм, да, не оспоримые аргументы. с копированием текста в фф беда, вечно приходится ухищряться чтоб текст скопировать. и то, что свойства картинки нельзя посмотреть — тоже печально.
                            0
                            Вы таки хотите устроить холивар, или хотите чтобы я ради вас сейчас установил firefox и несколько дней им пользовался, чтобы сделать вам отчет о моих неудобствах при его использовании?
                            Я пользуюсь Оперой с 7-ой версии, привык ней и к функционалу из коробки, так что вы всё равно вряд ли меня поймете :)
                            А преимущества уже давно перетёрли в топиках по Опере.
                              0
                              Не, просто сказал, что в фф этого нет и всё. Холивар бессмыслен.
                      0
                      12-ую некуда обновлять
                        0
                        Chrome? Firefox?
                          0
                          нет
                            0
                            А какой у вас еще выбор? Будете на 12 сидеть, пока x86 не вымрет?
                              0
                              я сижу на 12 и ни в чем себе не отказываю, когда появятся проблемы с совместимостью, буду выбирать.
                    –4
                    … решил кто-то в Apple за них.

                    В чём, интересно, для компании сложность сделать тумблеры для отключения поиска тех или иных сетей?
                      0
                      С такими вопросами вы к Microsoft обратитесь, вот кто явно злоупотребляет упрощением конфигураций. В настройках iOS много всяких полезных тумблеров и тумблер для LTE — один из них. Раньше там был тумблер для 3G, то есть проблема в том, что в Apple заменили один тумблер на другой, когда оба по-идее нужны.
                        0
                        Я сейчас не сравниваю. Меня, как пользователя iPad, сия перемена вместо дополнения не очень радует. Это проблема на пустом месте, и оглядываться на других не стоит.
                          0
                          Да я не столько о сравнении, сколько о вашем же вопросе «в чём, интересно, для компании сложность сделать тумблеры». Сложность определённо есть, только с нашей позиции мы её не видим.
                            0
                            да никакой сложности однозначно, даже если я смог побороть это. в данном случае, я думаю, это их желание решить за пользователя, что ему нужно. Была история, когда пропала возможность отключать 3G в настройках — на Apple был шквал жалоб по этому поводу и они всё таки исправили. С LTE похоже не всё так радужно, т.к. LTE уже давно у Apple и видимо исправлять они невозможность отключения 3G не собираются
                          0
                          А что Microsoft-то? В Windows Phone выбор режима мобильной сети делается в один тап, насколько я знаю.

                          image
                            0
                            О, появилось. Два года назад у меня был WP 7.5, там нельзя было выключить 3G. Бесило страшно.
                            • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            А Microsoft то при чём? В WP8 такие настройки меняются легко и непринуждённо.

                            UPD: уже ответили. :)
                              0
                              Я последний раз щупал 7.5, признаюсь. Ну хрен с этим режимом сети, а вот перемотка песен теперь нормальная? ;)
                                0
                                А что не так с перемоткой? Перемотка как перемотка.
                        –3
                        При желании можно написать красивое приложение для этого, но в аппстор его никогда не пустят, само собой.
                          +1
                          Для этого так-то Cydia Store есть.
                            0
                            Для тех, кто осилил cydia store и по ssh переключать нормально.
                              +1
                              Что значит «осилил»? Это же просто альтернативный магазин приложений, ничего сверхъестественного.
                                0
                                Джейлбрэйк надо делать и понимать, что это и зачем оно надо.
                                  +1
                                  Ну так без него и «красивое приложение» написать, выложить куда-либо и т.д. не получится, ибо без джейла софт не имеет полного доступа к ФС. Так же как и без рута на Андроиде. И да, джейл делается в один клик, Cydia устанавливается автоматически. Ничего «осваивать» не надо.
                        0
                        Здорово! Только вот слишком сложно для просто пользователя, даже у кого jailbreak есть. В виде нормального приложения с переключателем в Настройках надо. Кстати, говорят, что переключатель такой в iOS есть, а его наличие зависит от настроек оператора. В эту бы сторону посмотреть.

                        И, вашим способом, наверное, что-то типа iUsers (несколько профилей пользователей на одном iPad) для iOS 7 можно сделать. Известно ли кому-нибудь какие папки надо копировать?
                          0
                          Ну эта статья для тех, кому реально мешает навыключающийся 3G и кто не готов с этим мириться.
                          Насчёт iUsers — без понятия, что это.
                          +2
                          iPhone 5s (A1457), Мегафон. В настройках есть переключатель Enable LTE, если выключить — будет 3G или EDGE. Другое дело, что 3G выключить и пользоваться EDGE уже нельзя.
                          Так что все-таки все зависит от оператора. Может, стоит написать в техподдержку оператора?
                            0
                            Так в топике и написано, что есть возможность выключить LTE, но нельзя отрубить 3G.

                            Писал билайну тут на хабре. Ответ неутешительный.

                            Там же ответ про оператора:
                            Два переключателя (и 3G, и LTE) сделать не получится — это ограничение iOS. Я специально выяснял это в Apple у технического менеджера, который отвечает за «Билайн». Но, я убеждён, смысла в этом большого и нет.


                            0
                            Ваш скрипт исправляет соответствующий .plist? Можно узнать, что именно он делает?
                              0
                              Он не правит ничего, просто подменяет профили. В архиве профили для LTE есть и для 3G/2G only
                              +2
                              Странно что никто не упомянул у подводных камнях, собственно почему apple не даёт пользоваться LTE.
                              Наши операторы не выдерживают некоторые стандарты, из-за этого есть шанс пропустить входящие звонки. Поэтому если вам приходится много общаться, то лучше подождать.
                                0
                                Насколько я понимаю, Apple требует, чтобы при входящем звонке телефон переключался в 3G/EDGE, а без этого вообще не разрешает включать LTE. Так что пропускаться ничего не должно, если LTE включается штатным способом, без джейлбрейка.
                                  0
                                  Это изначально было в наших лте сетях. Но работает косячно.
                                  Мне примерно 45% входящих только со 2 раза дозваниваються, не успевает тело в 3g/2g переключиться
                                  0
                                  Apple ждал внедрения возможности переключаться. Либо дождался, либо устал ждать.
                                    0
                                    Вообще уже даёт, буквально вчера-позавчера включили, в связи с чем появилась эта статья
                                    0
                                    > Нюанс в том, что при обновлении настроек оператора, становится невозможным отключить 3G. Даже выключение передачи данных полностью, телефон всё равно скачет между 2G и 3G при новых настройках

                                    Не совсем понятна эта фраза. Без твика что, мобильный интернет всегда будет включен теперь? То есть без твика мобильный инет вообще никак не отключить? Поясните пожалуйста.
                                      0
                                      Интернет и 2G/3G не одно и то же, это частоты сети, т.е. разные сети.
                                        0
                                        Имеется ввилу отключить 3G и оставить только 2G (wap, gprs, edge)
                                          0
                                          то есть отключить мобильный инет полностью (чтобы ни байта ни ушло через симку) можно и без установки этого твика, верно?
                                            0
                                            Насколько я помню, в настройках есть опция. Проверить не могу, нет под рукой подходящего девайса.
                                              0
                                              да, но 3G всё равно будет работать
                                                0
                                                то есть если без твика выключить мобильный инет, то ни байта не будет уходить через симку.
                                                Но телефон будет в режиме 3G, что приведет к ухудшению голосовой связи — верно я понимаю?
                                                  0
                                                  да
                                                    0
                                                    Может быть ухудшение голосовой связи из-за того, что покрытие 3G может быть хуже, чем 2G.
                                                      0
                                                      Разумеется, я же писал в статье в самом начале. У меня дома просто плохо ловит 3G и звонки постоянно срываются.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                              –2
                                              Без твика нельзя выключить 3g, передача данных на отдельном переключателе
                                                +5
                                                Это костыль, «ненормальным программированием» он стал бы, если бы был написан на Brainfuck.
                                                0
                                                да, вы правы. не причём)
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                  –2
                                                  «скорости LTE, которые могут в перспективе быть когда-нибудь, а в некоторых местах вовсе LTE в ближайшей перспективе даже не пахнет.» — знаю, что много где LTE у Мегафона уже работатет, а остальные места, я думаю, будут покрыты в скором будущем.
                                                    +1
                                                    Я имел ввиду места, где даже 3G почти нет, а не крупные города. Таких мест достаточно много — трассы, удаленные малонаселенные деревни, всякие места летнего отдыха на природе.
                                                      0
                                                      Согласен с вашей точкой зрения. Но во-первых, насколько я знаю, операторы стараются покрыть основные магистрали, а во-вторых «глухие места» всегда будут у нас имхо из-за специфики нашей страны. Стараюсь смотреть на это философски)
                                                    0
                                                    А в Питере у кого-нибудь к lte iPhone то подключается? У меня МТС настройки пришли сегодня, но пока не видел чтоб телефон подключался.
                                                      0
                                                      Симка не резаная? Если резаная, то может быть не USIM — надо в офисе менять. Ещё услуга нужна что-то типа «Доступ в сеть 4G». По идее через оператора можно подключить.
                                                      0
                                                      Симка нано сим заводская свежая, услугу надо посмотреть.
                                                        0
                                                        Пообщался с саппортом МТС — сказали, что услуга еще не включена. Скоро будет. Никаких доп опций и тарифов не нужно.
                                                          0
                                                          Зная МТС, предполагалась как раз услуга для тех, кому нужно. Иначе ёмкости HSS не хватит и надо будет закупать расширение, но ладно, ибо тех, у кого телефон поддерживает LTE очень мало, относительно тех, у кого телефон поддерживает и есть желание подключить эту услугу. Но я технарь, а маркетологам видимо видней.
                                                            0
                                                            А вы правы посмотрел в интернет-помощнике — есть услуга «Доступ в сеть 4G», но она у меня подключена.
                                                          0
                                                          Я правильно понял, что скрипт lteswitch.sh просто копирует новый профиль взаместо старого? Тоесть это можно сделать с помощью того же iFunBox? Я просто попытался сделать через консоль, но уже на этапе присвоение разрешения запуска получил Operation not permited. Ну и сам скрипт не запускается из-за недостатка прав
                                                            0
                                                            да. просто это не так удобно. а прав может не хватать из-за того, что вы не из под рута запускаете его.
                                                              0
                                                              для того чтобы запустить из под рута нужен пароль, какой пароль он имеет ввиду даже не представляю
                                                                +1
                                                                alpine же
                                                                  0
                                                                  Действительно. Я просто не в теме, никогда консоль под айфоном не запускал. Спасибо
                                                                    0
                                                                    мне реально стыдно об этом писать, но я получаю Unexpected end of file на строчке 31 (которая и является последней). Причем никакие echo не выводятся (хотя команда эта есть, я проверил)
                                                                      0
                                                                      Я не знаю с чем это может быть связано, но периодически такая проблема у многих возникает. Мне не удалось найти точную причину, но возможно дело в каком-то кривом bash. Я перезалил архивы с возможным решением проблемы, там теперь 3 версии скрипта. lteswitch.sh — старая версия, lteswitch1.sh и lteswitch2.sh чуть подправленные версии. Попробуйте, скажите какая версия сработала. У меня лично работают все 3 версии.
                                                                        0
                                                                        У меня теперь дилема, я вручную заменил через iFile настройки из вашего архива и всё прекрасно работает (у меня американец, мне LTE вообще не нужен, пофиг на неудобство, всего один раз скопировать). Теперь если тестировать ваши новые архивы не сломаю ли я что-нибудь раз всё работает?
                                                                          0
                                                                          Ну достаточно просто запустить скрипт без указания аргументов, тогда он просто ничего не будет делать, но можно просто убедиться всё ли в порядке с синтаксисом или нет.
                                                                            0
                                                                            Проверил. Оба выдают ту же ошибку о неожиданном конце файла на 31-ой строке
                                                                              0
                                                                              Хм, там же 3 файла. Все 3 выдают ту же ошибку? Я так понимаю, проблема в строчке:
                                                                              if [ "$mode" == "LTE" ] || [ "$mode" == "3G" ]; then
                                                                              Что-то с ней не то, и я не пойму, что именно. А можете поменять на
                                                                              if [ ! "$(echo -n "$mode"|grep -E "^(LTE|3G)$")" == "" ]; then
                                                                              и попробовать с ней?
                                                                                0
                                                                                ничего не поменялось
                                                              0
                                                              слава богу на 8.1 все проще делается
                                                                0
                                                                У меня 8.1 и у меня не появился пункт с возможностью переключения режимов работы сети.

                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                              Самое читаемое