LINUX.ORG.RU

Как «закрепить» используемую мобильную станцию?

 ,


0

1

Здравствуйте. Если вопросы по Android на этом форуме неуместны, пожалуйста направьте меня к более подходящему ресурсу.

Решение

Наберите на телефоне *#*#4636#*#* и укажите только LTE.

– Jullyfish

Спасибо.

Дано:

  • Android 15 (LineageOS 22.2) с root доступом;
  • SIM-карта.

Проблема:

В текущем местоположении доступно 2 станции от одного мобильного оператора («Сеть и интернет»→«SIM-карты»→ моя карта →«Выбрать сеть»):

  • Станция «G» (EDGE);
  • Станция «LTE».

2-я станция иногда пропадает минут на 5 и телефон переключается на 1ю станцию, из-за чего соединения на оконечных устройствах «тупят» вместо того, чтобы разорваться и соединиться позже.

Мне бы хотелось «закрепить» 2ю станцию, чтобы когда соединение с ней обрывалось, Android продолжал искать 2ю станцию вместо переключения на 1ю.

Что я пытался сделать:

Насколько я знаю, в Android такой функции нет. Модулей magisk или чего-то схожего мной не было найдено.

У меня была идея попытаться самостоятельно реализовать данную функцию, однако я недостаточно понимаю как работает Android.

Далее я изъясню как, по моему мнению, это работает в Android. Если я ошибаюсь, пожалуйста поправьте меня.

На плате телефона располагается модем с проприетарной прошивкой. Есть проприетарный драйвер (распространяемый как BLOB?) для Linux.

Проприетарный загрузчик (первичный) либо загружает DTB+Linux, либо загружает вторичный загрузчик (условно, u-boot), который загружает DTB+Linux.

В DTB хранится адрес и ID модема, благодаря чему Linux соотносит адрес и проприетарный драйвер модема.

Init Android’а запускает обычного демона, который исполняет системные вызовы в ответ на команды, получаемые через UNIX socket. В ART, API к данному демону выступает сервис TelephonyManager, получающий доступ к сокету через Binder.

В исходниках приложения настроек LineageOS есть метод NetworkSelectSettings.onPreferenceTreeClick, в котором и выбирается станция.

Меня, как я понимаю, интересуют методы TelephonyManager.requestNetworkScan, TelephonyManager.disableDataConnectivity, TelephonyManager.setDataEnabledForReason, TelephonyManager.setNetworkSelectionModeManual - посредством него выбирается станция, верно?

Приложение провайдера с SIM-карты, насколько я понимаю, только заполняет данные APN и выполняет звонки и посылку СМС, то есть не отвечает за соединение со станцией.

У меня, однако, так и не появилось понимания, какая часть кода ответственна за подключение к 1-й станции после разрыва соединения со 2-й. Демон?



Последнее исправление: maroonsybille (всего исправлений: 1)