Ещё немного про телефоны Xiaomi и борьбу с ними. Updated +80


image
Честно признаться, у меня не было планов писать и публиковать эту статью, но, после того, как за два месяца увидел в ближнем кругу коллег 5 штук свежеприобретённых телефонов от Xiaomi, и недавнюю статью на Geektimes, рекламирующую управление умным домом от Xiaomi, ко мне пришла совесть и, сцуко, потребовала поделиться знанием с остальными.

Для начала небольшая вводная часть для тех кто не в теме. Есть такая компания Xiaomi, которая делает неплохие по начинке телефоны и заливает в них кастомизированный Android. Бизнес модель, как недавно официально было заявлено — «По сути мы раздаём наши смартфоны, не зарабатывая на этом денег. Нас больше заботят долгосрочные источники дохода. Мы могли бы продать 10 миллиардов смартфонов и не заработать на них ни цента». Источник раз и два.

Заглянув в сентябрьскую статью на Security lab и ещё вот в эту жалобу, у меня лично возникло ощущение, что телефон Xiaomi это что-то типа поводка на котором владельца водит Большой брат (утрирую, конечно же).

Это и стало основным мотивом проведения исследования поведения телефона Xiaomi redmi 3S
с прошивкой MIUI Global 8.1 Стабильная 8.1.1.0 (MALMIDI)

Исследование подопытного кролика и обнаружение проблемы
Беру новенький телефон из коробки. Включаю его и прохожу через мастера начальной настройки, предварительно включив запись трафика на Wi-Fi роутере. Ровно через две секунды, после того как телефон подключился к точке доступа, началось скачивание файла размером около 8Мбайт с одного из серверов Xiaomi. Это был обычный zip архив, внутри которого лежала куча всего и, в том числе, файл AnalyticsCore.apk, упомянутый в статье на SecurityLab.

Дальше — больше. В общей сложности, за всё время наблюдения, я насчитал чуть меньше восьми десятков имён серверов в разных доменах. Сразу оговорюсь, что в этом числе нет серверов Google и Facebook, приложения которых также предустановлены. Просто потому что я их считал отдельно. С ними тоже всё «весело».

Большая часть коннектов к серверам Xiaomi шла через HTTPS, поэтому разобраться в деталях ЧТО именно передаётся напрямую возможности не было. Отключение всевозможных логинов, синхронизаций и т.п. к исчезновению этого трафика не привело.

Дополнительно смущало то, что большей частью запросы были небольшими (объём принятого переданного трафика TCP сессий не превышал 1-2Кб), но, т.к. наши сотовые операторы округляют объём трафика вверх (Например, Tele2 до 150Кб), то, при неудачном совпадении, можно «накачать» таким образом существенные объёмы трафика, а в роуминге неожиданно попасть на деньги.

Тех, кого сей факт не смущает могут дальше не читать, т.к. дальше будет описание конкретики изоляции трафика от приложений, вшитых в заводскую прошивку.

Предварительные условия


Первое что необходимо — это рутовать телефон. Как это делается в случае Xiaomi я здесь описывать не буду, отсылаю желающих пройти этот путь к полной версии этой статьи (ссылка в конце).
Второе — это влить в телефон прошивку через кабель и стереть ВСЕ пользовательские данные.
Третье — телефон НЕ ДОЛЖЕН иметь доступа в интернет после залива свежей прошивки.
Update. До момента установки нижеописываемых ограничений, разумеется.

Disclamier. Все дальнейшие манипуляции над телефоном Вы делаете на свой страх и риск.
Ответственность за любой результат лежит на том, кто именно делал описываемые ниже действия.


Небольшая техническая вводная часть


Серверы, к которым обращается телефон, в большинстве своём расположены в облаке Amazon, поэтому обращения к ним происходит по именам, которые ресолвятся через round-robin DNS в разные IP адреса из разных подсетей /16. Блокировать их все по подсетям смысла особого нет — так можно половину интернета отфильтровать, что не есть хорошо. Блокировать по именам — хорошо, но не факт, что имена хостов из L3 доменов не генерируются динамически. Идеально было бы прибить все приложения, которые обращаются к серверам Xiaomi, но, как показала практика, глубина их интеграции в Android такова, что после удаления некоторых из них телефон может просто отказаться загружаться.

Далее. К внешним серверам обращается не один процесс, а многие, при этом задачу усложняет наличие в Android UID sharing, когда под одним UID могут генерировать сетевой трафик разные процессы (приложения). Более того, один из полезных процессов (отвечающий за GPS) надо выпускать во внешний мир, чтобы скачивать небольшие обновления, но при этом он сидел под тем же UID, что и восемь штук процессов, рвущихся к серверам Xiaomi.

Также надо упомянуть про ограниченность инструментария, доступного для решения вышеописанных задач, т.к. большая часть приложений имеющих в названии firewall доступных на Play Market работают через т.н. VPN, т.е. от сливов информации до запуска приложения они не защищают.

Большая часть того, что будет рассказано дальше для профессиональных разработчиков Android есть банальная истина, но всем остальным это позволит понять почему фильтрация построена именно таким образом.

В отличие от обычного Linux, где есть файлы конфигурации и стартовые скрипты, лежащие в /etc, в Android всё сделано несколько иначе. Общее управление сетью осуществляет Connection Manager, который дёргает системный демон netd, который, в свою очередь, вызывает iptables с определёнными параметрами командной строки. Соответственно, вызывать IPtables из скрипта начальной загрузки (init и прочих) особого смысла нет — netd при старте всё равно вызовет iptables, очистит правила и зальёт свои.

Единственный выход оставленный Google — писать необходимые команды конфигурации iptables в скрипте /system/bin/oem-iptables-init.sh. Путь к этому скрипту и его имя жёстко прописаны внутри исходного кода демона netd.

Для фильтрации статических имён хостов можно редактировать файл /etc/hosts, но при этом надо помнить про их количество и возможность их динамической генерации.
Дальше будет рассказ как это всё делалось.

Удаление и заморозка (если нет уверенности) ненужных программ


При помощи бесплатной версии Titanium Backup можно посмотреть соответствие между именем программы, показываемое в системе (Play Market), её кодовым именем (com.google.vending) и, при необходимости, удалить то, что явно не нужно.

Недостаток бесплатной версии — не умеет делать заморозку программ, посему заморозку делаем через ADB shell при помощи package manager. Пример:

root@land:/ # pm disable com.miui.analytics
pm disable com.miui.analytics
Package com.miui.analytics new state: disabled
root@land:/ # pm disable com.miui.systemAdSolution
pm disable com.miui.systemAdSolution
Package com.miui.systemAdSolution new state: disabled
root@land:/ # reboot
reboot

Фильтрация сетевых запросов


Disclamier 2.В данной статье описано КАК можно фильтровать «левую» сетевую активность телефона. Что конкретно фильтровать — каждый волен решать сам.

Как это можно делать.

1. Cамое простое — заполнение файла /etc/hosts записями имён серверов c IP адресом 127.0.0.1. Мой набор серверов лежит на Google Drive в папке Files.
Недостаток варианта — невозможность блокировки неизвестных и динамически генерируемых имён хостов и доменов L3/L4.

2. пишем команды фильтрация отправки пакетов на подсети /16 и /24 стандартными правилами Netfilter/IPtables в файл oem-iptables-init.sh. Здесь их не описываю, желающие напишут их сами, либо найдут в полной версии статьи.
Update. Недостаток варианта — большая часть серверов расположена в облаке Amazon и имеет переменные (round-robin DNS) IP адреса. Для гарантированной их фильтрации придётся закрыть не один десяток подсетей /16, что не есть хорошо. Можно ненароком забанить и полезные сайты. Но для статичных хостов (если их немного) это решение вполне подходит.

3. Фильтруем DNS запросы к ненужным нам доменам. Это несколько сложнее, поэтому опишу подробнее.

В составе IPtables, штатно идущем в Android есть модули расширения функционала, которыми мы дальше и воспользуемся. Помня, что DNS запросы отправляет система (UID 0) пишем правило:

$IPTABLES -A oem_out --protocol udp --dport 53 -m owner --uid-owner 0 -m string --algo bm --hex-string '|<b>04</b>6d697569<b>03</b>636f6d|' -m comment --comment "Deny UID 0 DNS queries for miui.com domain" -j DROP
#
$IPTABLES -A oem_out --protocol udp --dport 53 -m owner --uid-owner 0 -j ACCEPT

Первая строчка отфильтрует все UDP пакеты, отправленные системой (UID 0) на 53 UDP порт любого IP адреса и содержащие в себе байты 046d69756903636f6d (запросы к DNS серверу содержащие в себе .miui.com). Код формируется из названия домена, но с заменой кода точки-разделителя (2e) на шестнадцатиричную цифру количества байт, следующих за данным разделителем до следующего разделителя.

Вторая строчка пропустит все остальные DNS запросы. Комментарии я указал для удобства, чтобы команда iptables -L -v показывала результаты блокировок нагляднее.

4. Для работы Assited GPS необходимо дать возможность доступа к серверам QualComm процессу с UID 1000. Здесь всё сложнее, т.к. простая фильтрация пакетов по содержимому, как в случае DNS серверов, не сработает — начальные пакеты установления TCP соединения c флагами SYN, ACK ещё НЕ содержат в себе имя хоста, которое обязательно присутствует в HTTP запросе, а пакеты идущие после заголовка HTTP запроса уже могут не содержать в себе имя хоста. В результате фильтр пропустит из всей TCP сессии только часть пакетов, что равносильно её запрету или обрыву.
Поэтому рисуем вот такой костыль для фильтрации запросов седьмого уровня средствами 3-4 уровня:

# разрешаем инициировать установление TCP соединений на 80 порт всем процессам работающим под UID 1000.
$IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
#проверяем наличие слова xtrapath в пакетах TCP соединений установленных  на 80 порт процессами с UID 1000  и помечаем эти соединения шестнадцатиричным числом 5555.
$IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m string --algo bm --string 'xtrapath' -j CONNMARK --set-xmark 0x5555
# убиваем пакеты всех установленных процессами с UID 1000 TCP соединений не имеющих нашей пометки число 5555
$IPTABLES -A oem_out -m owner --uid-owner 1000 --protocol tcp --dport 80 -m conntrack --ctstate ESTABLISHED -m connmark ! --mark 0x5555 -j DROP

5. Фильтруем доступ в интернет по приложениям (у меня Google Chrome имел UID 10060). Разрешаем выход в интернет Google Chrome и запрещаем всем остальным приложениям.

$IPTABLES -A oem_out -m owner --uid-owner 10060 -m comment --comment "Permit Google Chrome internet access" -j ACCEPT
#
# Block all other processes
#
$IPTABLES -A oem_out -m owner --uid-owner 0-9999 -m comment --comment "Block all other system processes internet access" -j DROP
$IPTABLES -A oem_out -m owner --uid-owner 10000-99999 -m comment --comment "Block all other user processes internet access" -j DROP

Слабым местом этого способа фильтрации является его опора на наличие отметки UID на каждом конкретном пакете при прохождении его через Netfilter/IPtables. Обнаружилось это по непонятным TCP соединениям к серверам Google, пакеты которых не содержали UID. Исследование показало, что эти пакеты инициированы процессом Google Captive portal login. Я решил эту проблему обходным путём — просто выключив эти запросы командами в ADB shell:

root@land:/ # settings put global captive_portal_detection_enabled 0
root@land:/ # reboot

Радует, что (судя по накопленной статистике за несколько суток перехвата Wi-Fi трафика), никаких иных системных процессов отсылающих пакеты без UID в исследовавшемся телефоне нет.

Update. Дальнейшее наблюдение показало как я ошибался. Такие «тихие» процессы есть, но часть из них невинно общается друг с другом через адрес 127.0.0.1, что ненаказуемо.
Всё остальное надо банить.
Поэтому, для их правильной фильтрации, надо добавить в самое начало скрипта ещё две строчки:
$IPTABLES -A oem_out --protocol all --source 127.0.0.0/8 --destination 127.0.0.0/8 -m comment --comment "Accept internal traffic" --jump ACCEPT
$IPTABLES -A oem_out --protocol all -m owner ! --uid-owner 0-99999 -m comment --comment "Drop any traffic which does not have UID." --jump DROP

Update. Уже после опубликования статьи для меня окончательно стало ясно, что UID приложений, задаваемый системой при установке приложения, при обновлении и/или переустановке приложений может непредсказуемым образомменяться. Следовательно, доступ в интернет для приложения тоже отвалится и надо будет переписывать правило Netfilter/IPtables заново.
Для решения этой проблемы набросал небольшой кусок скрипта, который читает из хвоста файла наименования приложений, проверяет их наличие в системной базе приложений, и, при наличии, берёт оттуда же UID приложения и динамически (в процессе работы скрипта) формирует правило Netfilter/IPtables.
Текст специально сделал максимально подробным, для лучшего понимания.

# Permit intenet access for the packages listed at the end of this file. White list mode. 
#
SU=`/system/bin/which su`
# changing reading file behavior (read whole file with \r\n into variable)
IFS=""
# reading first and second fields of every line of the system packages database into variable PACKAGESDB. 
# Escalating privileges via su because of filesystem packages database file access limitations.
PACKAGESDB=`$SU -c "/system/bin/cut -d' ' -f 1,2 /data/system/packages.list"`
#
# Reading last lines of current script form the end till "exit 0" line
# Filtering empty lines, lines started with # and all symbols after # (comments) in every line.
# 
# 's/#.*//' - remove all in every line after #
# '/^#/d' - remove lines staring with #
# '/./!d' - remove empty lines
# '/exit 0/,$ d' - remove all lines starting line with "exit 0"
# 's/ //g' - remove spaces from line
#
/system/bin/tac $0 | /system/bin/sed -e '/^#/d' -e 's/#.*//' -e '/exit 0/,$ d' -e '/./!d' -e 's/ //g'| while read line;
do
# Just in case 8-)
OUR_PACKAGE_NAME=$line
# Strict checking for existence of our package name in the system packages database. Checking first field.
PACKAGE_NAME_IN_DB=`echo $PACKAGESDB | /system/bin/cut -f 1 -d' ' | /system/bin/grep -Fx "$line"`
if
# Checking grep utility exit code. "0" means pattern found
test "$?" == "0"
then
#
# Looking for package UID in database. Checking second field. VERY important space after $line!!!
#
PACKAGE_UID=`echo $PACKAGESDB |  /system/bin/grep "$line " | /system/bin/cut -f 2 -d' '`
else
# All other exit codes return us to the beginning of the cycle.
# echo "Package $OUR_PACKAGE_NAME not found"
$IPTABLES -A $CHAIN -m comment --comment "Package name $OUR_PACKAGE_NAME not found. Check package name." --jump LOG
continue
fi
#
# Set the package right for Internet access
# 
$IPTABLES -A $CHAIN -m owner --uid-owner $PACKAGE_UID -m comment --comment "Permit $OUR_PACKAGE_NAME Internet access" -j ACCEPT
#
done
######
... skipped...
####
exit 0
#### 
####### Do NOT edit before this line #########
# Please add package names and comments after this line for granting them internet access.
#####
# Google Play Store and its companion processes
# 
com.google.android.gms # Google Services Framework Internet access
com.android.vending # Google Play Market internet access
com.android.providers.downloads # Download manager service internet access
#
# Other Google apps
com.google.android.youtube # Youtube application internet access
com.google.android.apps.maps # Google Maps application internet access
com.google.android.googlequicksearchbox # Google Assistant internet access
#
#
com.android.chrome # Google Chrome browser internet access


После переустановки/обновления приложения нужно всего лишь перезагрузить телефон.

6. Для целей мониторинга работы правил Netfilter/IPtables можно добавить ещё вот такую строчку:

$IPTABLES -A oem_out --source 10.1.30.42 --protocol tcp --jump LOG --log-prefix "IPtables log:" --log-uid

Параметр IP адрес отправителя (--source 10.1.30.42) можно опустить, но в этом случае лог будет завален записями сетевой активности процессов, завёрнутых на адрес 127.0.0.1 файлом hosts. Лог можно читать через команду dmesg (dmesg | grep IPtables) в ADB Shell.

Версию статьи, которая писалась как полная инструкция по решению этой проблемы с Xioami Redmi 3S я выложил на Google Drive. Сюда её выкладывать не рискнул именно из-за объёма.

P.S. Я не разработчик Android-приложений, просто жизнь заставила два месяца поразбираться с сабжевым телефоном. Посему, господа профи, если я где ошибаюсь — поправляйте. Буду признателен.

P.P.S. В качестве средства перехвата использовался Zyxel Keenetic Extra. У него есть возможность перехватывать Wi-Fi трафик и сливать его на флэшку для последующего анализа.


Комментарии (153):

  1. S1lay
    /#10038090 / +3

    Статья интересная, как раз собираюсь брать Xiaomi, но в чем проблема поставить чистый андроид? Никогда не любил сборки с ПО производителя, там вечно всплывает нечто подобное.

    • ElForastero
      /#10038118 / +4

      Xiaomi скорее покупают как раз ради ПО. Мне нравится MIUI, и менять на что-то другое совсем не хочется.

      • nikitasius
        /#10038636 / +3

        Я буду брать ради железа.

        • nicelight_nsk
          /#10046772

          Miu действительно удобная ось. Мало лишнего в интерфейсе. Позаимствованы некоторые юзабилити айфона. Работает довольно стабильно, внешне не хамит никак. Родной браузер miui меня уже 4 года не подводит.
          Имею привычку не позволять автообновления, проблем в стабильности работы из года в год не наблюдаю.
          P.s. старые версии Miui были более теплыми, ламповыми)

          • emusic
            /#10049454

            Очевидно, Вы пользуетесь только самыми основными функциями, не влезая глубоко. Как только начинаешь погружаться в функции системы, так сразу вылезает столько косяков, что оторопь берет.

            • vconst
              /#10051762

              Всегда настраиваю телефон максимально под себя, влезая в самые клюбокие настроки и делая рут-доступ. Можете конкретно перечислить, что не так в MIUI? У меня Mi5 128

              • emusic
                /#10051800

                Можете конкретно перечислить, что не так в MIUI?

                Посмотрите здесь и здесь.

                • vconst
                  /#10051810

                  Локальнй бекап глючный, правда я очень давно не обновлялся и по привычке пользуюсь Титаниумом — не зря же покупал. Что касается изменения разрешения — это уже не штатная работа

                  • emusic
                    /#10051872

                    пользуюсь Титаниумом

                    Я тоже, но и он глючный. И автор тоже не отвечает на багрепорты и не исправляет глюков.

                    это уже не штатная работа

                    Это почему же?

                    • vconst
                      /#10051874

                      У меня Титаниум используется довольно просто и глюков не замечал.
                      Разве штатными средствами в MIUI меняется разрешение экрана?
                      Вы пользуетесь этой прошивкой на оригинальном девайсе, или поставили на смарт не поддерживающийся официально?

                      • emusic
                        /#10051996

                        Titanium бэкапит не все «внешние» данные приложений. Еще у него какие-то косяки с восстановлением данных из базы TWRP, но за давностью не упомню точно.

                        Для смены разрешения имеются штатные команды Android — wm (в относительно новых) и am (в старых).

                        У меня телефон Xiaomi Redmi Note 3 Pro, и прошивка официальная — Global Stable.

                        • vconst
                          /#10052008

                          Если изменение разрешение делается не штатным софтом прошивки — значит она на это не рассчитана и никто не обещает безглючной работы. С Титаниумом проблем не помню, но и бэкапы из рекавери тоже не делаю на Ми5

                          • emusic
                            /#10052044

                            Еще раз: утилиты wm/am — это штатные утилиты Android. Если MIUI не умеет корректно брать разрешение, установленное средствами Android — значит, она не полностью совместима с Android, а следовательно — крива по определению.

                            • vconst
                              /#10055170

                              Под «штатным утилитами» я имею в виду — функции реализованные в системных предустановленных программах или в настройках системы и телефона. Это если мы понимаем под словом «утилита» — одно и то же. Можно что угодно накостылять на коленке и потом удивляться, почему оно не работает. Был у меня один спор с человеком, который наставил в свой браузер тонну плагинов и потом жаловался6 что сайт, который я сверстал — у него ломается и выглядит криво.

                              • emusic
                                /#10055242

                                Почему Вы не сужаете круг «штатных средств» до, например, значков на главной странице рабочего стола, или не спрятанных в папки, или пунктов меню настроек не ниже второго уровня? А настройки в меню разработчика — они «штатные», или уже нет? :)

                                Вообще, под словом «штатная утилита» традиционно понимаются все утилиты, входящие в стандартную поставку системы, независимо от способа их запуска. Например, в Windows утилиты format.com, regsvr32.exe или sc.exe — стопроцентно штатные, правила их использования описаны в соответствующих разделах документации. В Android утилиты am и wm — столь же штатные, и тоже описаны в документации. Каких-либо ограничений на их применение в конкретных прошивках не предусмотрено.

                                • vconst
                                  /#10055260

                                  «Штатный»: внутренний, свойственный, принадлежащий чему-либо, встроенный во что-либо. В моей коробочке Mi5 128 не было флешки с дистрибутивом Android studio и программ для работы с ADB, в настройках и в приложениях на телефоне — тоже ничего такого не было.

                                  Если команды вводимые с персоналки через интерфейс ADB — вызывают на телефоне глюки — я не удивлен, что им не придается никакого значения. Если пользователь установил себе Xpose, а телефон при этом заглючил — виноват пользователь, а не производитель телефона.

                                  • emusic
                                    /#10055306

                                    Эк Вы вертитесь, как уж на сковороде. Еще раз повторю: утилиты am и wm — именно «внутренние, свойственные, принадлежащие, встроенные». Они столь же штатны, сколь и Android API, и могут быть вызваны любым приложением — хоть встроенным, хоть сторонним.

                                    Давайте зайдем с другой стороны. Предположите, что Вы — разработчик приложения для Android. В своем приложении Вы вызываете функцию из Android API или запускаете встроенную документированную утилиту (например, pm). После выпуска приложения некоторые пользователи, купившие лицензию, жалуются на то, что в их устройствах эти функции не работают. Кто будет виноват в этой ситуации — пользователь, производитель устройства, Вы или Google? И почему.

                        • LexS007
                          /#10052138

                          Titanium бэкапит не все «внешние» данные приложений. Еще у него какие-то косяки с восстановлением данных из базы TWRP, но за давностью не упомню точно.

                          Проблему с внешними данными сложно решить. Некоторые приложения создают на карте папки с названиями которые сложно отнести к приложению. Вот если бы были жестко ограничены места, если бы приложения могли писать только в /data и Android/data на карте, тогда такой проблемы бы не было.

                          • emusic
                            /#10052282

                            Некоторые приложения создают на карте папки с названиями которые сложно отнести к приложению

                            Тут и пытаться не нужно — я исключительно про стандартные каталоги (Android/data и Android/obb). Насколько я помню, Titanium берет их только с основного хранилища, а могут быть и другие.

                            Кстати, мне неизвестно о существовании нормального, «взрослого» бэкапера под Android, который давал бы возможность указать набор данных как включением, так и исключением. Приложений под названием «backup» полно, но все какие-то детсадовские.

            • nicelight_nsk
              /#10053206

              Да, пользуюсь как типичный юзер. Ничего под ось не кодю, (за исключения скриптов поверх установленных программ) в меню для разработчика не роюсь. Был период, рутовал телефон, чтобы проверить как легко покемонов сломать можно. Ставил кучу нестандартных программ, все хорошо было, аппарат не подводил, не заикался…
              Хотелось бы услышать самые животрепещущие косяки на Ваш взгляд?

              • nicelight_nsk
                /#10053208

                Почитал типичные проблемы с 4pda. чего то серьезного там не увидел, по сравнению с тем как у меня глючили и выпендривались другие версии ПО ( стандартная ось андроид или цианоген мод), MIUI просто ангел. Нам следует не забывать, что сама по себе ось android не самое удачное решение, и добиться от нее идеальной стабильной работы всех реализованных функций в комплексе — задача сомнительно исполнимая.
                Кстати, не все заявленные проблемы у меня проявляются… некоторые не доводилось тестить, типа архивирования, потому что банально нет нужды, все и так работает стабильно, некоторые некоторые уже исправлены. Как давно у Вас был опыт взаимодействия с оболочкой?

                • emusic
                  /#10053228

                  С MIUI я взаимодействую с апреля 2016-го по сей день.

                  Что там уже исправлено из перечисленного?

                  • nicelight_nsk
                    /#10053538

                    Как минимум, яркость экрана по глазам не бьет в темноте, часто перед сном читаю)
                    Никаких проблем с изменением разрешения не было, я даже не знаю, где его менять. Разве что размер шрифта можно стандартными настройками покрутить.
                    Кстати у моего соседа Redmi 3s у меня Mi4… может дейтсивтельно по разному себя ведут оси на разном железе. Если укажете последовательность действий, могу сравнить какие то особенности поведения апаратов в одинаковых условиях…

                    • emusic
                      /#10053748

                      Из всех косяков, что я обнаружил в MIUI, на RN3P и Max отличалась только яркость — это явно платформозависимо. Все остальное в точности повторялось.

                      Подайте через ADB Shell команду «wm density N», где N существенно меньше стандартного DPI (например, для 5.5 можно попробовать 350), и посмотрите, как будут выглядеть значки экрана и област сканирования штрих-кодов.

                      С размером шрифта у них тоже была веселуха — в одном из выпусков 2015-го года они удумали вообще убрать размер «XS». Народ поднял шум, что не фиг считать всех слепыми, и в следующих выпусках размер вернули. А по мне, так надо бы еще на пару пунктов минимальный шрифт уменьшить.

                      Последовательности действий по воспроизведению косяков описаны в багрепортах.

      • betrachtung
        /#10040248 / +1

        Их как раз обычно берут ради железа. Я даже не знаю другого производителя, для которого это утверждение было бы настолько актуально.

        • LexS007
          /#10051894

          Кроме Xiaomi, ради железа берут ZUK, LeEco. И как уже сказали OnePlus.

    • TargetSan
      /#10038128 / +7

      Не автор, но отвечу. Как правило — поддержка железа. Xiaomi Mi 3. На вендорской прошивке датчик "приближения к уху" работает нормально, на цианогене — глючит безбожно. Решения найти не смог.

      • Namolem
        /#10045686

        У меня было такое пару лет назад (samsung i9300), что интересно, проблема решилась заменой прошивки модуля связи

    • karabox
      /#10038132 / +6

      В «чистых» сборках как правило что то да не работает полноситью или частично… приходится ждать когда пофиксят конкретно под данное железо.

      • S1lay
        /#10038158

        Возможно я некорректно выразился, я имел ввиду чистый андроид как MIUI со сносом ненужного ПО. С самим MIUI лично, я мало сталкивался, видел у некоторых коллег, система мне очень понравилась.

    • Heinhain
      /#10038222

      Тоже раздумываю над покупкой Xiaomi аппарата, но одной из причиной не брать становится как раз отсутствие стабильных чистых (голый андроид) прошивок. Судя по всему, приходится адаптировать под каждый аппарат отдельно и не всегда получается.

      • Find_the_truth
        /#10045290

        На XDA прошивок выше крыши, если есть желание разбираться, можно найти то, что душе угодно. На Redmi 2 выбрал Resurrection Remix. OTA и проч. фарш есть, что еще нужно, не знаю. Ни один из датчиков не барахлит, как работало на MIUI, также работает и на этой проше, только батареи еще дольше хватать стало.

    • andrei4
      /#10038258

      Загрузчик заблокирован.

      • S1lay
        /#10038264 / +4

        Загрузчик можно разблокировать, это не проблема.

      • EvilsInterrupt
        /#10038292

        Так разблокировать можно и на будущее сделать бэкап aboot-а с помощью TWRP. Какие сложности с блокировкой?

        • andrei4
          /#10038326 / +1

          Не знаю как сегодня, год назад нужно было просить китайцев о разблокировке. Без гарантированного одобрения.

          • aborche
            /#10038334

            на 4pda.ru есть 2 инструкции по разблокировке. одна через портал, вторая через европейскую поддержку. многие говорят, что приходит в течении суток.

            • autuna
              /#10038372

              Там тонкость есть с СМСками при регистрации. Мне на перенесённый номер (MNP) не прилетали совсем. А так в течение трёх суток одобрили, если память не изменяет.

              • BigD
                /#10039584

                Оффтопик: такие проблемы часто бывают с перенесенными номерами?

                • autuna
                  /#10040120

                  Затрудняюсь ответить. Возможно это связано с тем, что оператор-донор (Скайлинк) сейчас прекратил сущестование.

                  • rfvnhy
                    /#10045540

                    Ну у нас Кодотел полностью закрыли. Все его номера ушли к Теле2.
                    У меня городской номер был — перенесся нормально, проблем ни со звонками ни с SMS не замечал…
                    Хотя незадолго перед закрытием они (Кодотел) перевели всех абонентов с CDMA 900 на GSM.

                    PS Попробуйте связаться со своим оператором, возможно где-то что-то не штатно отработало при авто конвертации.

                    У меня например на одном номере Теле2 не работала услуга «я в сети».
                    Пока оператор вручную ее не выключил и не включил снова.
                    Сейчас все нормально уже.

          • ilyuxa
            /#10038562

            Сейчас тоже нужно. Благо, теперь это можно сделать на английском, а не на китайском, как раньше.

        • emusic
          /#10049460

          Какой смысл делать бэкап aboot, когда он есть в каждом прошивочном пакете? Бэкапить нужно разделы, которые не прошиваются при обновлении.

          • EvilsInterrupt
            /#10050182

            aboot после разблокировки и тот что в прошивочном могут отличаться. Были случаи. Поэтому лучше сделать. Благо эта операция не такая сложная.

            • emusic
              /#10050296

              Если разблокировка штатная — они не будут отличаться. А если самопальная — наоборот, не «могут», а гарантированно будут, ибо для разблокировки как раз используется патченый aboot. Но он опять-таки общий для всех, а не индивидуальный для каждого аппарата, поэтому никакого смысла его бэкапить нет.

    • autuna
      /#10038290

      Соглашусь с коллегами — свободные прошивки для новых устройств достаточно сырые.
      Поэтому статья писалась как раз с прицелом на минимальную модификацию родного ПО телефона.
      Можно вообще ничего не удалять и не замораживать из приложений. Главное — не дать всем «левым» процессам ходить в интернет, если хозяин телефона этого не хочет.

      • betrachtung
        /#10040254

        Сегодня как раз перепрошил свой Xiaomi Mi 5s на Lineage OS. Работает как минимум не хуже родной прошивки, но при этом удобней, лучше выглядит и не конфликтует со сторонним ПО.
        А это свежий флагман, продаётся с октября. Думаю, на более старых моделях со Snapdragon ситуация должна быть не хуже как минимум.

        • autuna
          /#10042244

          Рад за Вас. А я заглянул в раздел прошивок для Redmi 3s на 4PDA и практически против каждого из вариантов висела пометка про известные баги, либо (против относительно недавних по дате) комментарий — «Баги пока не обнаружены. Если найдёте — пишите.».
          Это лотерея, согласитесь. Просто (ИМХО) Вам повезло и вы вытащили счастливый билетик.

          • dimm_ddr
            /#10043906 / +1

            Ну так-то вообще любая прошивка либо уже содержит известные баги, либо «Баги пока не обнаружены.» Прошивок, как и вообще программ хоть сколько-то сложных гарантировано без багов не бывает.

            • autuna
              /#10044364

              Это да. Но если дата прошивки недавняя, то такая пометка а коммьюнити прошивке означает, что её, скорее всего, толком не тестировали. Вывод — использование этой прошивки = её бета тестирование. Я честно говоря, не готов этим заниматься.
              Хотя я понимаю, что в официальных продакшешен версиях тоже ляпы есть, но там хотя бы есть надежда, что их тестировали и ошибки выловили. В случае коммьюнити прошивок — этой надежды нет, либо она минимальна. Просто потому, что её делает не профессиональная команда, а энтузиаст. Скорее всего один.
              Всё ИМХО, конечно же.

              P.S. Под термином «прошивка» я подразумеваю законченный образ. Cyanogenomod и его аналоги изначально, согласитесь, это всё-таки некое полено, из которого надо вытачивать Буратино (допиливать под конкретную конфигурацию железа).

          • emusic
            /#10049464

            Если кто-то не смог обнаружить багов в MIUI — это означает, что он их не искал совсем, а стиль использования телефона у него «хомячковый». :) Она ж одинаковая для всех устройств — значит, и баги практически везде одни и те же.

            • avost
              /#10050442

              ви так загадочно постоянно выражаетесь, — все хомячки, а вы — д'Артаньян! Но ни об одном баге так и не рассказали. Ну, не томите уже, ознакомьте хомячков и посрамите их невероятными багами! Я слово волшебное знаю — пожалуйста!

              • emusic
                /#10050836

                ни об одном баге так и не рассказали

                Это ви просто нетщательно читаете. Читайте сюда.

                Еще можете почитать мои багрепорты, и попытаться найти в них комментарии от разработчиков.

                • avost
                  /#10051238

                  Ах, это. Я думал там правда ужос-ужос. Могу навскидку сказать, что "баг" с минимальной подсветкой отсутствует. А баг с невозможностью уменьшить громкость до нуля, таки да, присутствуют. Остальные проверять лень, слишком много нетривиальных действий надо совершать, причём таких, которые кроме как для проверки этого бага мне в голову не придёт совершить. Ну, тут дело хозяйское, если ваш способ использования подразумевает такие действия, значит, видимо, это не ваш вариант.
                  Я, впрочем, тоже один баг нашёл. Если выставить коррекцию часов по телефонной сети, а пояс сети не совпадает с фактическим, то можно насильно установить свой часовой пояс и всё хорошо, но эта настройка не сохраняется после перезагрузки. Баг раздражал, но сейчас сменил место пребывания и лично мне он стал неактуален.

                  • emusic
                    /#10051382

                    «Ужос-ужос», чтоб прямо нельзя было пользоваться, там действительно нет. Но позиция производителя, который озабочен лишь продвижением своих продуктов, откровенно кладя на поддержку уже окученных пользователей, выглядит очень некрасиво. Никакой Microsoft и рядом не стоял.

                    Еще, кстати, в копилку системных глюков: у меня магнитный чехол, при закрывании которого система уходит в спячку. Но при закрытом чехле она продолжает обрабатывать какие-то сигналы от тачскрина, потому как при открывании створки я регулярно вижу экран не в том состоянии, в котором створка закрывалась. Если, например, оставить экран на странице истории звонков — он при закрытой створке может позвонить на один из отображенных там номеров. Это совершенно точно глюк не тачскрина или его драйвера, поскольку система в спячке обязана блокировать сообщения от тачскрина, и в целом она это делает.

                    Еще она не сразу добавляет звонки (в том числе пропущенные) в историю. Не успел ответить на звонок, открываешь историю — а там ничего нового. Я поначалу думал, что это какие-то фантомные звонки, пока не догадался через несколько минут посмотреть еще раз.

                    При указании для звонка или будильника мелодии из файла список мелодий сортируется как попало. Видно, что какая-то сортировка есть, но она кусочная — за последними буквами снова идут первые, и так несколько раз.

                    • dimm_ddr
                      /#10054140

                      Но позиция производителя, который озабочен лишь продвижением своих продуктов, откровенно кладя на поддержку уже окученных пользователей, выглядит очень некрасиво.


                      Мне кажется вы сильно преувеличиваете важность ваших багов. У производителя ограничены ресурсы — это однозначно, неограниченных ресурсов не бывает. Так насколько важно править что-то, что используется меньше чем 1% пользователей? А то, что не ответили в баг репорте: ну вот вам стало бы легче, если бы они написали стандартное «спасибо за ваш отзыв, нам очень важно ваше мнение» и точно так же забили бы исправлять?
                      Я не копал все багрепорты по MIUI, давайте возьмем те два, что здесь обсуждались: бэкапы и разрешение. Вам даже на техническом ресурсе говорят что этим никто не пользуется — следовательно процент общих пользователей наверняка крайне мал. Точных данных у меня нет, но признак достаточно сильный на мой взгляд. Бэкапы — да, проблема. Но, по вашим же словам, нормального приложения для этого так и нет — значит сложность решения этой проблемы почему-то велика. А значит ресурсов требует много и тут мы опять приходим к количеству пользователей, которым оно надо. Их наверно побольше, чем в проблеме с разрешением, но сильно ли больше?
                      Я не пытаюсь защищать xiaomi, это китайцы со своим менталитетом и мне они тоже не всегда нравятся, но ваши претензии тоже достаточно хлипкие же.

                      • emusic
                        /#10054664

                        Разумеется, ресурсы ограничены. Но сравните, например, ресурсы той же Apple и ассортимент их продукции, с ресурсами и ассортиментом Xiaomi. С ходу видно, что соотношение будет многократно в пользу первой. Я не поклонник айгаджетов, но большинство из них реально вылизано, в то время как большинство гаджетов Xiaomi никто гарантированно не будет вылизывать — напротив, они будут клепать все новые и новые сырые модели, лишь бы склонить как можно большее количество людей к покупке под влиянием массовых восторгов.

                        Если нечто используется очень малым процентом пользователей и не предполагается к правке — значит, нечего предусматривать эти функции вообще. Но в рекламных-то материалах (в том числе пользовательских обзорах) они фигурируют — а значит, вносят свой вклад в продвижение продукта. То есть, налицо этакая рекламная курортная открытка с красивым белым пароходом, на котором вроде бы можно покататься, при ближайшем рассмотрении пароход оказывается фанерной декорацией.

                        Реакция разработчиков/тестеров на багрепорты показывает, занимается ли ими вообще хоть кто-нибудь. В разделе багрепортов MIUI я такой активности не заметил, а вот на соответствующих сайтах вменяемых компаний она есть.

                        Даже если некий баг замечен исчезающе малым количеством пользователей, он должен быть зарегистрирован и поставлен в очередь. Малое количество недовольных — не повод игнорировать наличие бага вообще.

                        Сложность решения «проблемы бэкапа» на уровне разработчиков ничтожна — там достаточно поправить от силы пару десятков строк кода. Такого же порядка, кстати, и сложность организации реально полного бэкапа в TWRP/CWM, но их разработчики слишком горды для того, чтобы корректировать свою концепцию в сторону адекватности.

                        И с разрешением экрана, по сути, никакой проблемы нет — нужно лишь изначально правильно вычислять все координаты, а не вбивать удобные константы. В системах вроде андроида, изначально ориентированных на экраны самых разных размеров и разрешений, это обязано было устояться еще много лет назад. Однако, судя по поведению прошивок, большинство разработчиков до сих пор предпочитает каждый раз отдельно натягивать очередную копию совы на каждый из новых глобусов.

                        Вообще, кстати, знакомство с Android очень помогает пореже ругать Microsoft. :)

    • LexS007
      /#10038296 / -1

      Если брать Redmi с процессором mediatek, не найдете вы полностью рабочую прошивку с чистым андройдом, исходники ядра не выкладывали и не собираются. Под устройства с Qualcomm часто собирают нормальные версии.

      • NickKolok
        /#10045468

        Не невыкладывание исходников ядра, кхм, бывает. Это прямое нарушение GPL и, если Вы с ним столкнулись, надо обращаться в FSF.

  2. VladimirKochetkov
    /#10038134 / +3

    Большая часть коннектов к серверам Xiaomi шла через HTTPS, поэтому разобраться в деталях ЧТО именно передаётся напрямую возможности не было.

    А если не напрямую посмотреть?

    • autuna
      /#10038198 / +1

      Спасибо за ссылку, Попробую.

  3. Lerg
    /#10038170 / +1

    Интересно отличается ли в этом плане сборка от https://xiaomi.eu — неофициального сообщества MIUI?

    • Greyboy
      /#10038366 / +1

      В прошивке от xiaomi_eu гугловскому софту разрешено всё, в отличие от китайких сборо. Вот и думайте что для вас более приемлимо.

  4. At0m1Cal
    /#10038202 / +2

    Замечательная инструкция. Я признаюсь честно, сначала ожидал статейку с разоблачением слежения со стороны термостата и увлажнителя воздуха, но так тоже хорошо).
    Вопрос правда появился, описанная проблема встречается только у Xiaomi или другие тоже ей болеют (Meizu там, Samsung)?

    • autuna
      /#10038236

      Телефоны других вендоров не исследовал — просто не попадались в руки. Вы можете попробовать это сделать сами, если есть роутер с возможностью перехвата трафика. Я для просмотра использовал обычный Wireshark, он неплохо всё декодирует и вся активность телефона видна как на ладони.

    • notffirk
      /#10045178

      Учитывая то, что некоторое время назад была статья по поводу того, что телевизоры Samsung или LG, если подключены к сети, сливают данные о просмотрах программ, то я совсем не удивлюсь.

  5. Terranz
    /#10038228

    когда купил мобилу от сяоми — первым делом поставил цианоген — начитался статей типа этой
    но пришлось откатываться назад на официальную т.к. в левых прошивках нету mtk engineering программы, а без неё не откалибровать уезжающие параметры гироскопа

  6. sexyhippo
    /#10038234

    На рутованном Mi5 программы com.miui.analytics не обнаружил. Всегда были странны такие статьи, когда «всех xiaomi взломало», а на деле оказывается, что не всех…

  7. av0000
    /#10038308

    За статью плюс и в избранные.

    То, что xiaomi много куда и чего шлёт замечал не раз.

    Вопрос: а у меня (Redmi 2S, MIUI 8/7.1.20) нет сервисов из примера и, навскидку, ничего похожего в списке. Не может статься так, что у автора была «левая/китайце-переведённая» прошивка? Или это ребята из miui.su почистили рекламный мусор?

    • autuna
      /#10038384 / +2

      В статье есть название прошивки. Самая что ни на есть официальная глобальная прошивка.
      «MIUI Global 8.1 Стабильная 8.1.1.0 (MALMIDI)» С левой я бы принципиально не стал возиться.

    • Reason89
      /#10038494

      Столкнулся с miui.su недели 3 назад(перешел на MIUI 8). В некоторых разделах меню несколько раз набрел на китайские иероглифы. Плюс проблемы с смс от Сбербанка. Пришлось отказаться и перейти на другую прошивку.

      • av0000
        /#10038620

        Там много, где остались иероглифы.

        Miuipro в это отношении была гораздо «чище». Но, после пары окирпичиваний при обновлении по воздуху (да и крайняя версия для моего телефона продолжает его кирпичить) пришлось отказаться. Пару месяцев, вроде, терпимо, хоть и не всё устраивает

        • Reason89
          /#10038632

          Я по совету поставил от xiaomi.eu. В плане стабильности и перевода все отлично. Единственное что, не смог воспользоваться «Mi Remote».

          • LexS007
            /#10038638

            От multirom еще хвалят сборки.

    • barbedAK
      /#10039270

      А гугль чистый ничего не шлет?
      Ставишь голый андроид и начинаются загрузки всего подряд. Ставишь miui — загрузки по необходимости.
      да и интерфейс у китайцев реально удобнее.

      • autuna
        /#10039288 / +1

        Чистого Google, как Вы говорите, у меня в руках не было, хотя, подозреваю, там тоже много любопытного может найтись.
        В моём случае коннектов к сайтам Google тоже было более чем достаточно (просто я не стал об этом писать в статье), даже если телефон не зарегистрован в Google. Ну а после регистрации до смешного доходило, судя перехвату трафика. В одну из ночей телефеон многократно пытался выкачать с сайта https://redirector.gvt1.com библиотеку libAppDataSearchExt_arm64_v8a.v7.so, весом без малого 6Мб, внутри которой полным-полно строчек «Copyright © IBM Corp».

        Телефон от Xiaomi, сайт от Google (судя по Whois), копирайт от IBM… Заговор? ;-)

  8. Ugrum
    /#10038324 / +1

    Или это ребята из miui.su почистили рекламный мусор?

    Скорее всего.

  9. smarkelov
    /#10038336

    По умолчанию включена работа с аккаунтом xiaomi, он синхронизирует все что только можно — отсюда и трафик может быть в начале. Плюс сервис обнаружения телефона тоже включен обычно сразу.

    • ErshoFF
      /#10043402

      Сервис обнаружения требует подтверждения через смс при любой смене симкарты, даже если не менять номер, но заменить симкарту.

  10. vconst
    /#10038414

    А какие именно программы генерят этот трафик?
    Потому что MIUI синхронизирует контакты, СМС и заметки, записи телефонных разговоров, настройки систему, пароли ВайФай и тд тп. Если это все не будет работать, это будет плохо.

    • autuna
      /#10038504

      Если Вы всеми перечисленными сервисами пользуетесь — пользуйтесь на здоровье. Согласитесь, что это вопрос доверия производителю телефона.
      Моя статья адресована тем, кто сервисами Xiaomi не пользуется и не хочет делится с Xiaomi своими данными и оплачивать трафик на их передачу.

      P.S. Программ(процессов) в списке предустановленных — больше 200. Имён серверов — чуть меньше восьмидесяти. Это отдельная и очень объёмная работа выяснение, кто из них куда ходит. Насколько это нужно?

      • vconst
        /#10038580 / +1

        Ну наверняка не все программы ломятся в инет, для первоначального анализа вполне достаточно понять, какие именно туда лезут, при отключении всех синхронизаций — это и будет «пятая колонна».

        • Ugrum
          /#10038656

          В первом приближении это можно посмотреть и средствами MIUI, безопасность-трафик.
          Там же подозрительным/нежелательным жрунам трафика вполне можно зарубить доступ к передаче данных через мобильную сеть и wi-fi, в т.ч. и в фоновом режиме.

          • vconst
            /#10038666

            Системные программы, особенно типа тех, что описываются в статье — там не отражаются. И если трафика у них очень мало, они тоже не входят в статистику.

            • Ugrum
              /#10038702

              В первом приближении это можно посмотреть

              Кстати, Analytics (вышеупомянутый AnalyticsCore.apk) и прочие MSA, на которые жалуются-видны и чудно там душатся.
              Вы, кстати, сами давно заглядывали в этот раздел в своём MI5?
              Там на самом деле есть полезная информация.

              • vconst
                /#10038714

                Этого аналитика у меня никогда не было, а остальные прячутся за «службы сяоми» и «система андроид», точнее не пишут. Трафик от них копеечный, кстати

        • autuna
          /#10039354 / +1

          Простите, а зачем? Зачем тратить время на исследование поведения всех этих десятков и сотен процессов (которые совсем даже не одновременно все ломятся наружу. некоторые просыпались раз в сутки), когда можно составить «белый» список и выпускать в интернет программы/процессы только из него, а все остальные банить?
          Если после этого бана перестанет работать что-то важное и нужное, то можно анализировать сетевое поведение именно этого процесса/приложения и открывать доступ именно для него. Описанная мной методика это вполне позволяет, IMHO.

      • LexS007
        /#10038584

        Кстати проще наверно на самом телефоне сетевой трафик какое-то время пологировать, затем уже на десктопе анализировать.

        • LexS007
          /#10038596

          имел ввиду: можно денек пологировть без фильтров, затем по именам процессов уже сортировать, не такая уж объемная задача и не думаю, что вся флешка забъется за день)

      • areht
        /#10039478 / +1

        Если вы не доверяете производителю телефона — может не надо его брать? Вы уверены, что заблокировали действительно всё?

        • autuna
          /#10039494

          А кому доверять, простите? Посудите сами. Юридически Xiaomi передо мной ответственности никакой ни за за утрату, ни за утечку этих данных не несёт. А если я не собираюсь пользоваться их сервисами — то почему мой телефон должен сливать непонятную информацию на их серверы?

          Касательно блокировки — Вы здесь правы, уверенность на 100% здесь может быть только если сам написал код.всей прошивки.
          Но давайте будем логичны. Если, на протяжении нескольких суток, ни на маршрутизаторе, через который телефон ходит в интернет, ни в логах самого телефона, не зарегистровано никакой подозрительной активности, то, зная механизм выхода процессов в интернет, можно предположить с достаточной долей вероятности, что все «левые» процессы заблокированы? Я полагаю что да.

          Если Вы думаете иначе — приводите свои доводы.

          • areht
            /#10039544 / +1

            Самое простое — слив раз в неделю. Вы обновления ставите? Там новые analyticCore могут добавить.


            Кому доверять — дело Ваше личное, есть Apple, Sony, Google и Paranoid Android. А юридически никто и за работоспособность фаервола не отвечает. Доверие первично.

            • keydon2
              /#10039566

              Боюсь реальность такова, что
              1) де факто нет производителей, которым можно доверять
              2) даже если доверяешь производителю — нужно самим проверить, тк и производитель может не знать, что их китайский работник не изменил ром (например)

              • areht
                /#10039592

                И? )


                Параноикам можно Нокию 105, в интернет они всё равно не ходят

            • autuna
              /#10040168

              Любое доверие всегда на чём-то основывается.

              В случае работающего набора «белого списка» на выход в интернет ни один посторонний процесс через нормально работающий Netfilter/Iptables не вылезет. Связка Linux/IPtables проверена годами эксплуатации.

              Касательно ответственности конкретного вендора — изложу свои соображения.
              У вас стоит Linux сервер. На нем настроен Netfilter/Iptables. Вы этому сочетанию ( Linux/Iptables) доверяете? Скорее всего, Вы скажете, «ну я же исходников не видел», но ничто не мешает Вам их посмотреть. правильно?
              Аналогично, исходники демона netd и Iptables из Android могут посмотреть все желающие.
              Да, конечно, конкретный производитель телефона может модифицировать исходники, и вложить программную закладку (сделать дыру в firewall), но зачем? рано или поздно это вылезет и репутационные издержки и последующее падение продаж могут оказать неприемлемыми, согласитесь. Вывод — скорее всего никто из серьёзных производителей специально делать дыру не будет.

              • areht
                /#10040658

                рано или поздно это вылезет и репутационные издержки… никто из серьёзных производителей специально делать дыру не будет.

                Напомните, зачем вообще фильтры то настраивать на телефоне «серьезного производителя»?

                • autuna
                  /#10040694

                  Чтобы не отдавать ему свои данные, если это Вам не нужно, для получения от него каких-либо дополнительных услуг. Телефон куплен — все издержки и желаемый производителем доход должен быть заложен в продажную цену.

                  • areht
                    /#10040836 / +1

                    «Чтобы не отдавать ему свои данные» — это не самоцель

  11. BupycNet
    /#10038606 / +3

    У нас дикие проблемы с устройствами Xiaomi. Используем вход через гугл и пуши в fcm. Везде все работает хорошо — на Xiaomi постоянно пуши не приходят или при нажатии на вход падает фатал гугл сервисов мол не видит какой то компонент. То есть там похоже вообще в ОС много чего сломано. И эти телефоны сейчас многие берут

    Мы даже в описании приложения описали что есть баги с китайскими устройствами в частности с Xiaomi и прошивкой MIUI и что мы не гарантируем на них работу.
    Если и дальше пойдут плохие отзывы в маркете то просто на сайте повесим для них APK, а в гугл плей забркируем всю марку Xiaomi на скачивание приложения.

    • av0000
      /#10038630 / +1

      MIUI всегда этим страдала — не зря многие отдельно оговаривают не-/плохую- работу с miui, особенно в части нотификаций/смс и т.п.

      • Ugrum
        /#10038710 / +1

        Это скорее связано с некорректной настройкой нотификаций/уведомлений.
        На 4pda много воплей по этому поводу.

      • autuna
        /#10039364 / +1

        Выскажу предположение, что это ещё может быть связано и с очень строгой политикой MIUI в плане энергосбережения при дефолтных нстройках. Я однажды попробовал поставить антивирус DrWeb на телефон (и даже администратором его назначил), но MIUI при любом раскладе прибивала его не позже чем через 10 минут нахождения в фоне. 8-)
        С «неродными» приложениями/нотификаторами и т.п. может быть тоже самое.

    • vconst
      /#10038676 / +2

      Ни разу не видел проблем с обычными уведомлениями и пушем, MIUI пользуюсь лет 5. Какие именно программы плохо работают с этой прошивкой?

      • av0000
        /#10038768

        Так, навскидку, многие, желающие читать СМС. Ибо родной софт ставит себе макс. приоритет в подписке и не отдает события дальше. Заметил в первый раз на миуи 6 или даже 5, со всеми разрешениями, когда mofix не ловил смс от банков. Сейчас тот же WhatsApp не может считать ответ активации

        • vconst
          /#10038872

          Пользовался парсерами банковских СМС, Ватсап установлен и активирован. От других пользователей тоже не слышал о проблемах.
          Походу, это какая-то локальная проблема, раз другие приложения нормально работают.

      • BupycNet
        /#10039262 / +1

        Тут не у всех, на 100 пользователе MIUI у 20 бывают проблемы. Но у других на 1000 пользователей у 1 проблемы.

    • Terras
      /#10038716 / +1

      Плюсую. Тоже часто пишут о проблемах с мейзу. Чаще всего приходится дергать работу в фоне.

      на Meizu и других MIUI девайсах проверить — https://www.youtube.com/watch?v=nHjVRt8OYfk разрешение на работу в фоне для Сервисов Google (Google Play Services) и какого-то конкретного приложения

      • IGR2014
        /#10039518 / +1

        Мейзу и других MIUI девайсах

        Уважаемый, MIUI не имеет никакого отношения к Meizu. MIUI оболочка от Xiaomi и любое её появление на Meizu — дело рук любителей поизвращаться.

        • autuna
          /#10039522 / -1

          Я эту ссылку оставлю здесь, хорошо? ;-)

          • Bringoff
            /#10039676 / +1

            То, что на Meizu можно поставить MIUI, еще ничего не значит. "Родная" для них прошивка — это Flyme OS.

            • autuna
              /#10040172

              По поводу «родной» прошивки я не спорил. Но согласитесь, заносить официальную команду разработчиков MIUI в список «любителей поизвращаться» — это забавно. 8-)

              • IGR2014
                /#10047034

                Ну может я и погорячился с «любителями поизвращаться», признаю.
                Но это не отменяет того факта что MIUI уж никак не родная прошивка для Meizu и, следовательно, нельзя Meizu относить к MIUI девайсам. Или Apple Mac с «накатаной» на него Windows для вас уже продукт Microsoft?

                • autuna
                  /#10047776

                  Если быть совсем объективным, то давайте сначала разберёмся, что есть «родная прошивка».
                  Очень часть владелец торговой марки заказывает дизайн и внутренне устройство у других компаний. Железки Apple, например делает Foxconn (Hon Hai Precision Industry Co.).
                  От него же заказчик получает комплект низкоуровневых драйверов, (которые у него может заказать кто угодно, если в контракте нет явного запрета на это) и, используя их, создаёт законченное решение.
                  Согласитесь, что любой сторонней конторе, имея хорошие отношения с подобными производителями железа, ничто не помешает получить от них комплект драйверов и используя их создать прошивку, которая ляжет на тоже самое железо как «родная».

                  • IGR2014
                    /#10047890

                    Мы уже начали обсуждать непонятно что. Я просто сказал что относить Meizu к MIUI устройствам это как относить Mac к IBM-совместимым только по причине того что на него можно поставить Windows. Это всё что я имел ввиду

    • lany
      /#10039510

      Люди, которым приходилось запинывать веб-сайты под IE 6.0, посмеиваются над вашими проблемами. Тоже можно было в принципе запретить пользоваться сайтом из IE, потеряв энную долю клиентов.

      • BupycNet
        /#10040126

        Так по ie6 можно хоть как то верстать. Комментарий ниже говорит что даже телеграм не справился. А у них в софте есть встроенный пуш сервис на случай если гугловский убивается.

    • motomac
      /#10040054

      Такая же фигня на Xiaomi Redmi Note 3 Pro. Многочасовое гугление и инструкции с 4PDA так и не смогли заставить его получать пуши из телеграма в режиме ожидания. Не понимаю, как вообще можно продолжать продавать телефоны с такой важной неработающей функцией.

      На Meizu, кстати, аналогичная проблема.

    • andd3dfx
      /#10040566

      Работал в компании, где для подключения к WiFi надо было предварительно 2 сертификата поставить.
      У меня на Xiaomi не завелось, у соседей по столу с Galaxy S5 и Windows-фоном — нормально

      Видимо вы правы — сломано там всего порядком…

    • dobriykot
      /#10043996

      Проблемы с пушем скорее всего из-за того, что нет разрешения на работу в фоне. MIUI по умолчанию почти все запрещает и надо руками указать те программы, которым можно что-то делать.

  12. denis_g
    /#10039448 / -1

    Хоспаде, да снесите к половым органам дедушки сраную miui и накатите нормальную прошивку в соответствии с требуемым уровнем паранойи. Зачем там в ней колупаться вообще?

    • autuna
      /#10039482

      А вы замените, слово MIUI на любую другую Android-based прошивку, a слово Xiaomi на Sony, Samsung да кто угодно. Речь идёт о решении, которое можно реализовать на любой другой прошивке. Неужели я так плохо владею русским языком, что из текста статьи это не очевидно?

      Касательно поставить любую другую — вы видели (сами, лично) прошивки от коммьюнити, которые бы работали гарантированно хорошо на модели телефона анонсированой менее года назад? Если нет, то зачем менять прошивку и бороться с глюками, если можно штатными средствами ограничить сетевой трафик от «левых» процессов/приложений?

  13. Merkat0r
    /#10040010 / -1

    «MIUI Global 8.1 Стабильная 8.1.1.0 (MALMIDI)»

    эм… но как? Если последняя это -миюи 8 глобал 7.1.19 (еженедельный апдейт)!
    то что у вас — это тестовая, да еще походу не оригинально поставленная, а влитая китайцами и допиленая на не глобал версию самого смарта

    • Merkat0r
      /#10040020

      тут скрин
      https://www.dropbox.com/s/68k82mn52g9a2k9/Screenshot_2017-01-28-15-17-05-421_com.android.settings.png?dl=0

    • autuna
      /#10040192

      Образ брал отсюда.
      строчка «Redmi 3S/Prime Latest Global Stable Version Fastboot File Download»

      Вы по прежнему считаете, что я взял не ту прошивку?

    • betrachtung
      /#10040264 / +1

      Вы путаете.
      У стабильной и тестовой (еженедельной) разные системы нумерации.
      Стабильная нумеруется именно так, как указал автор.
      Тестовая, приведённая вами, нумеруется по дате. 7.1.19 — это прошивка, выпущенная 2017-01-19, только и всего.

      • Merkat0r
        /#10041568

        действительно, я походу все перепутал :) но однако — на, тогда получается, тестовой у меня не наблюдается ни единой проблемы, из описанных выше.

  14. dmitry_dvm
    /#10040372

    А еще что-то про винду с ее несчастной телеметрией говорят. Шпион в кармане. Мало того, что гуглу для продажи все сливается, так еще и китайцам.

  15. iperov
    /#10042674 / -3

    ничего лучше MIUI нет для андроида. Те кто хочет страдать как раньше — ставьте другой андроид.
    Траффик Xiaomi скорее всего статистика использования, именно благодаря ей MIUI так и вылизан.

  16. unwrecker
    /#10044946

    Имею redmi4 с прошивкой xiaomi.eu. Инет при первой загрузке был.
    Нет ни com.miui.analytics ни com.miui.systemAdSolution. Либо прошивка почищенная, либо они перенесли это в другие модули…
    Был, кстати, неприятно удивлён когда обнаружил в mi cloud все фотки с телефона. Похоже, синхронизация врубается сама. Наверное, стоит вообще деактивировать на телефоне mi-аккаунт сразу после разлочки, ибо вреда от него больше чем пользы.

    • jetexe
      /#10045184

      "mab" проверьте ещё

      • Akr0n
        /#10052722

        А это что за процесс?

        • jetexe
          /#10054052

          очередная следилка, имеет почти все права в системе, устанавливается по тихому с апдейтами MIUI

  17. ksil
    /#10045336

    После всех телодвижений обновление прошивки телефона не приведет к сбросу установок и заливке «шпионских» модулей?

    • autuna
      /#10045646

      Полагаю, что приведёт. С высокой долей вероятности будет перезаписан системный раздел, куда нужно класть скрипт с командами IPtables и, после перезагрузки, все правила фильтрации слетят.
      Поэтому, полагаю, что лучше обновляться через кабель готовыми образами. Брать их отсюда.

      • ksil
        /#10045764

        А через кабель обновлять, это все не сбрасывается?

        • autuna
          /#10046138

          Если обновляться через кабель, то можно перед обновлением принудительно погасить сеть (выключив Wi-FI и вынув симку) и, при необходимости, после обновления заново влить скрипт описанный в статье. С обновлением по воздуху это может не получится — телефон выкачивает и ставит обновление сам.

  18. AdeptMedia
    /#10046008

    А зачем эти пляски с бубном, если можно сразу при получении телефона залить человеческую прошивку, например, LineageOS?

    • autuna
      /#10046146

      LineageOS это, условно говоря, полено и которого надо делать Буратино (допиливать прошивку под конкретное оборудование). Насколько хорошо это сделает конкретный автор — вопрос.
      Я отвечал на схожий вопрос здесь

  19. emusic
    /#10049444 / +1

    А я уже много раз пожалел, что купил телефоны с заводской MIUI (Redmi Note 3 Pro, Mi Max). Ибо ничего, более глючного, чем MIUI 7/8, я из модификаций андроидов не знаю. Причем там почти нет случайных глюков, зависаний и т.п. — все глюки удивительно стабильны, почти стопроцентно воспроизводимы, и столь же стопроцентно игнорируемы поддержкой.

    У обоих моделей были совершенно одинаковые глюки MIUI (вот далеко не полный их список для Mi Max), из чего я сделал вывод, что и все остальные сборки MIUI должны работать так же.

    По результатам чтения профильных форумов и наблюдения за версиями прошивок, отчетливо вижу, что Xiaomi озабочена устранением лишь наиболее заметных, бросающихся в глаза глюков. То есть, если в очередной версии непорядок с изображением звонящего абонента, и на это жалуется множество пользователей — исправляют быстро. Если же кто-то обнаружил, что после бэкапа уничтожаются данные приложений, не попадая при этом и в бэкап, но на это не жалуются толпами (просто потому, что бэкапом мало кто пользуется) — не удосуживаются даже дать комментарий к багрепорту.

    На этом фоне «человеколюбивые» утверждения Xiaomi выглядят очень бледно. Ребята изо всех сил гребут под себя рынок, не стесняясь ничего. Это неприятно.

  20. BigEl
    /#10050206

    Статья интересная и познавательная. Признаю тот факт, что будучи удаленным от вопросов программирования далеко не все осилил с наскока, но общие моменты усвоил. Сам не так давно сравнивал два аппарата (отзывы пользователей, юзабилити поверхностное и т.д.) для предстоящей покупки — это собственно сабжевая звонилка и Meizu M3 Note с 3Gb рама на борту.
    Уважаемый автор статьи и участники сообщества, подобный разбор Миезу на FlyMe OS никто не проводил? Дабы для полноты картины сравнить еще в этом ключе.

    • autuna
      /#10050222

      Собственно тут особо разбирать ведь нечего, ИМХО.
      Достаточно просто подключить свежий телефон к роутеру, который умеет собирать трафик. Результаты сами о себе скажут. Вы можете это сделать сами.

      • BigEl
        /#10050866

        Да это понятно, свежий телефон к сбору трафика приобщить и т.д., для этого этот «свежий» еще купить надо. Я интересуюсь с целью предпокупного сравнения, дабы не спускать деньги на ветер, которых не у всех много на необдуманные приобретения.
        PS: Возможно оффтопик, но все же.

  21. SOM4
    /#10050228

    Очень интересная статья, спасибо автору autuna за исследование!

    Я как пользователь «Xiaomi RedRice» («RedMi 1W»), а теперь «Xiaomi RedMi 3», не могу сравнить MIUI с другими прошивками. Это мои первые смартфоны и мне нравится как аппаратная часть, так и программная.

    Как начинающий разработчик Android, могу сказать что описаний на "developer.android.com" было достаточно.

    Я стал блокировать сетевой трафик на «RedMi 3» с помощью приложения «Security». Но теперь будет интересно поэкспериментировать с «IPtables».

    • emusic
      /#10050298

      А у меня к аппаратной части Redmi Note 3 Pro и Mi Max 32GB нет никаких претензий, но MIUI — это ад и израиль. Не в плане внешнего вида, а по количеству грубых и очевидных ошибок, не исправляемых годами.

  22. kajidooto
    /#10050230

    >Третье — телефон НЕ ДОЛЖЕН иметь доступа в интернет после залива свежей прошивки.

    вообще что-ли? вообще не пользоваться интернетом? зачем тогда нужен такой телефон, чтобы только звонить?

    • autuna
      /#10050246

      Этот вопрос задают многие, отвечу ещё раз публично — телефон нельзя выпускать в интернет пока в него не влиты файл hosts и oem-iptables-init.sh с желаемыми правилами фильтрации трафика. В противном случае он за пару секунд закачает весь тот нежелательный мусор, о котором шла речь в начале статьи.
      Потом, естественно, в интернет ходить можно.

      Надеюсь, теперь я это понятно объяснил.

  23. babayota
    /#10051478

    Правильно ли я понял, что вы производили разблокировку загрузчика на

    Xiaomi redmi 3S
    с прошивкой MIUI Global 8.1 Стабильная 8.1.1.0 (MALMIDI)
    ? На 4pda утверждают, что сие возможно лишь на девелоперской прошивке типа 7.1.19.

    • autuna
      /#10051484

      На телефоне Redmi 3s, на котором я тестировался девелоперской прошивки не было.
      Я полагаю, что на момент написания поста на 4pda, о котором Вы говорите (9 января 2016 года), вполне возможно так оно и было, но я начал заниматься телефоном в декабре 2016. Xiaomi вполне могла поменять политику разблокировки.