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
    27.01.2017 15:00
    +3

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


    1. ElForastero
      27.01.2017 15:09
      +4

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


      1. nikitasius
        27.01.2017 17:22
        +3

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


        1. nicelight_nsk
          01.02.2017 05:42

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


          1. emusic
            02.02.2017 13:24

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


            1. vconst
              03.02.2017 16:32

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


              1. emusic
                03.02.2017 16:51

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

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


                1. vconst
                  03.02.2017 16:55

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


                  1. emusic
                    03.02.2017 17:18

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

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

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

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


                    1. vconst
                      03.02.2017 17:21

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


                      1. emusic
                        03.02.2017 18:05

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

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

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


                        1. vconst
                          03.02.2017 18:08

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


                          1. emusic
                            03.02.2017 18:28

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


                            1. vconst
                              06.02.2017 17:41

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


                              1. emusic
                                06.02.2017 18:33

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

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


                                1. vconst
                                  06.02.2017 18:39

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

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


                                  1. emusic
                                    06.02.2017 19:09

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

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


                        1. LexS007
                          03.02.2017 19:05

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

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


                          1. emusic
                            03.02.2017 20:03

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

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

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


            1. nicelight_nsk
              04.02.2017 19:25

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


              1. nicelight_nsk
                04.02.2017 19:35

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


                1. emusic
                  04.02.2017 20:07

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

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


                  1. nicelight_nsk
                    05.02.2017 11:05

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


                    1. emusic
                      05.02.2017 18:21

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

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

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

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



      1. betrachtung
        28.01.2017 18:43
        +1

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


        1. Namolem
          31.01.2017 15:23

          OnePlus?


        1. LexS007
          03.02.2017 17:29

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


    1. TargetSan
      27.01.2017 15:11
      +7

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


      1. Namolem
        31.01.2017 15:26

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


    1. karabox
      27.01.2017 15:12
      +6

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


      1. S1lay
        27.01.2017 15:15

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


    1. Heinhain
      27.01.2017 15:29

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


      1. Find_the_truth
        31.01.2017 13:13

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


    1. andrei4
      27.01.2017 15:38

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


      1. S1lay
        27.01.2017 15:39
        +4

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


      1. EvilsInterrupt
        27.01.2017 15:48

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


        1. andrei4
          27.01.2017 15:59
          +1

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


          1. aborche
            27.01.2017 16:00

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


            1. autuna
              27.01.2017 16:07

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


              1. BigD
                28.01.2017 08:27

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


                1. autuna
                  28.01.2017 16:34

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


                  1. rfvnhy
                    31.01.2017 14:41

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

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

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


          1. ilyuxa
            27.01.2017 16:54

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


        1. emusic
          02.02.2017 13:27

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


          1. EvilsInterrupt
            02.02.2017 18:03

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


            1. emusic
              02.02.2017 18:44

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


    1. autuna
      27.01.2017 15:46

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


      1. betrachtung
        28.01.2017 18:46

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


        1. autuna
          29.01.2017 23:47

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


          1. dimm_ddr
            30.01.2017 18:56
            +1

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


            1. autuna
              30.01.2017 23:14

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

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


          1. emusic
            02.02.2017 13:28

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


            1. avost
              02.02.2017 20:26

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


              1. emusic
                03.02.2017 05:39

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

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

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


                1. avost
                  03.02.2017 12:06

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


                  1. emusic
                    03.02.2017 13:35

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

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

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

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


                    1. dimm_ddr
                      06.02.2017 10:28

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


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


                      1. emusic
                        06.02.2017 14:13

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

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

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

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

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

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

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


    1. LexS007
      27.01.2017 15:49
      -1

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


      1. NickKolok
        31.01.2017 14:09

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


  1. VladimirKochetkov
    27.01.2017 15:12
    +3

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

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


    1. autuna
      27.01.2017 15:25
      +1

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


  1. Lerg
    27.01.2017 15:18
    +1

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


    1. Greyboy
      27.01.2017 16:06
      +1

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


  1. At0m1Cal
    27.01.2017 15:26
    +2

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


    1. autuna
      27.01.2017 15:31

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


    1. notffirk
      31.01.2017 12:32

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


  1. Terranz
    27.01.2017 15:29

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


  1. sexyhippo
    27.01.2017 15:31

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


  1. av0000
    27.01.2017 15:53

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

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

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


    1. autuna
      27.01.2017 16:10
      +2

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


    1. Reason89
      27.01.2017 16:39

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


      1. av0000
        27.01.2017 17:15

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

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


        1. Reason89
          27.01.2017 17:19

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


          1. LexS007
            27.01.2017 17:22

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


    1. barbedAK
      27.01.2017 23:27

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


      1. autuna
        27.01.2017 23:40
        +1

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

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


  1. Ugrum
    27.01.2017 15:57
    +1

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

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


  1. smarkelov
    27.01.2017 16:00

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


    1. ErshoFF
      30.01.2017 15:53

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


  1. vconst
    27.01.2017 16:19

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


    1. autuna
      27.01.2017 16:43

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

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


      1. vconst
        27.01.2017 16:57
        +1

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


        1. Ugrum
          27.01.2017 17:29

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


          1. vconst
            27.01.2017 17:31

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


            1. Ugrum
              27.01.2017 17:39

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

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


              1. vconst
                27.01.2017 17:43

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


        1. autuna
          28.01.2017 00:39
          +1

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


      1. LexS007
        27.01.2017 16:59

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


        1. LexS007
          27.01.2017 17:06

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


      1. areht
        28.01.2017 04:05
        +1

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


        1. autuna
          28.01.2017 04:40

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

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

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


          1. areht
            28.01.2017 06:35
            +1

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


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


            1. keydon2
              28.01.2017 07:42

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


              1. areht
                28.01.2017 08:30

                И? )


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


            1. autuna
              28.01.2017 17:15

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

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

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


              1. areht
                28.01.2017 23:42

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

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


                1. autuna
                  29.01.2017 00:15

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


                  1. areht
                    29.01.2017 02:24
                    +1

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


  1. BupycNet
    27.01.2017 17:12
    +3

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

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


    1. av0000
      27.01.2017 17:18
      +1

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


      1. Ugrum
        27.01.2017 17:43
        +1

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


      1. autuna
        28.01.2017 00:46
        +1

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


    1. vconst
      27.01.2017 17:33
      +2

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


      1. av0000
        27.01.2017 18:09

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


        1. vconst
          27.01.2017 19:02

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


      1. BupycNet
        27.01.2017 23:22
        +1

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


    1. Terras
      27.01.2017 17:43
      +1

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

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


      1. Ugrum
        27.01.2017 17:50

        Согласен.


      1. IGR2014
        28.01.2017 05:14
        +1

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

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


        1. autuna
          28.01.2017 05:18
          -1

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


          1. Bringoff
            28.01.2017 10:58
            +1

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


            1. autuna
              28.01.2017 17:18

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


              1. IGR2014
                01.02.2017 10:30

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


                1. autuna
                  01.02.2017 16:15

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


                  1. IGR2014
                    01.02.2017 17:21

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


    1. lany
      28.01.2017 05:04

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


      1. BupycNet
        28.01.2017 16:37

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


    1. motomac
      28.01.2017 16:01

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

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


    1. andd3dfx
      28.01.2017 22:27

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

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


    1. dobriykot
      30.01.2017 19:37

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


  1. denis_g
    28.01.2017 03:17
    -1

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


    1. autuna
      28.01.2017 04:17

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

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


  1. Merkat0r
    28.01.2017 15:15
    -1

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

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


    1. Merkat0r
      28.01.2017 15:20

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


    1. aborche
      28.01.2017 15:31
      +1

      8.1.1.0 уже месяца 2 как stable
      http://en.miui.com/download-303.html


    1. autuna
      28.01.2017 17:31

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

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


    1. betrachtung
      28.01.2017 18:52
      +1

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


      1. Merkat0r
        29.01.2017 16:02

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


  1. dmitry_dvm
    28.01.2017 19:58

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


  1. iperov
    30.01.2017 10:27
    -3

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


  1. unwrecker
    31.01.2017 11:20

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


    1. jetexe
      31.01.2017 12:33

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


      1. Akr0n
        04.02.2017 08:48

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


        1. jetexe
          06.02.2017 08:40

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


  1. ksil
    31.01.2017 13:30

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


    1. autuna
      31.01.2017 15:22

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


      1. ksil
        31.01.2017 15:47

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


        1. autuna
          31.01.2017 18:37

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


  1. AdeptMedia
    31.01.2017 17:12

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


    1. autuna
      31.01.2017 18:42

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


  1. emusic
    02.02.2017 13:23
    +1

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

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

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

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


  1. BigEl
    02.02.2017 18:11

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


    1. autuna
      02.02.2017 18:15

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


      1. BigEl
        03.02.2017 06:59

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


  1. SOM4
    02.02.2017 18:15

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

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

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

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


    1. emusic
      02.02.2017 18:47

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


  1. kajidooto
    02.02.2017 18:15

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

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


    1. autuna
      02.02.2017 18:19

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

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


      1. kajidooto
        03.02.2017 13:05

        да, благодарю.


  1. babayota
    03.02.2017 14:27

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

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


    1. autuna
      03.02.2017 14:32

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