Android [teei_switch_thr] high CPU usage - Trusted Execution Environment (TEE)

archive view archive save

android-logo_1.jpg Android процесс [teei_switch_thr] постоянно нагружает процессор на 90-100%. [teei_switch_thr] - это вирус? Как отключить (удалить) teei_switch_thr или снизить его нагрузку на CPU?

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

  1. Описание проблемы
  2. Что такое teei_switch_thr
  3. Причина и решение
    1. Биометрическая кнопка
    2. Filesystem state: not clean
    3. Сервисы Google Play
    4. Парадокс
  4. Итого

Описание проблемы

Постоянная нагрузка на CPU процессом [teei_switch_thr] была подмечена на одном из подопытных смартфонов Cubot, но это не обязательно может быть Cubot, - встречается и на других моделях.

В Интернетах есть несколько тем с вопросами про teei_switch_thr, которые так и остались без ответа, - например:

Что такое teei_switch_thr

Техподдержка смартфонов Cubot заявила, что это у нас вирусняк завёлся и нам крайне необходимо перепрошить смартфон.., - но, по-факту вирусняк завёлся в головах техподдержки и перепрошивать мозги нужно им. Самое печальное, что все сферы жизнедеятельности человеков кишат такими экспертами, которые всё и всех вокруг (ка)лечат и уму разуму учат, а в конечном итоге всему наступает полная жопа.., - подробнее читайте в предыдущем материале с названием support - Trash (техподдержка Говно).

teei_switch_thr - это:

Проще говоря, teei_switch_thr - это часть аппаратно-программной фичи МТК процессоров для виртуализации/изоляции/шифрования выполняемых инструкций.

Если чуть точнее, то [teei_switch_thr] является дочерним (потоковым) процессом Mediatek Trusted Execution Environment (M-TEE) - всего их было замечено 4 (3 потоковых, 1 родительский):

$ sudo ps aux|grep -i teei
[teei_switch_thr]
[teei_bdrv_threa]
[teei_log_thread]
teei_daemon

Потоковые процессы обрамлены в квадратные скобки:

[teei_switch_thr] - это потоковый процесс всегда с фиксированным ИД (263), порождён он, как и другие потоки [teei_*], - потоком ядра [kthreadd]

Найти предка [teei_switch_thr] можно выполнив ps -o ppid= 263

teei_switch_thr - используется не только при управлении биометрией (паролями, пин-кодами), и судя из названия процесса он является переключателем (switch) потоков (thr[ead]).

Более подробную информацию о деятельности teei_switch_thr можно получить выполнив dmesg | grep -i tee | less

Всё это безобразие включено в само ядро:

# zcat /proc/config.gz|grep -i tee
...
CONFIG_MTK_TEE_SANITY=y
# CONFIG_HID_STEELSERIES is not set
CONFIG_TEE=y
# TEE drivers
# CONFIG_OPTEE is not set
# CONFIG_TRUSTONIC_TEE_SUPPORT is not set
CONFIG_MICROTRUST_TEE_SUPPORT=y
CONFIG_MICROTRUST_TEE_VERSION="400"
# CONFIG_TRUSTKERNEL_TEE_SUPPORT is not set

Дать исчерпывающее описание всего функционала teei_switch_thr и остальных процессов, - я не берусь.

Причина и решение

Под пристальным надзором CPU Usage, sudo top, процесс teei_switch_thr наблюдался длительное время в различных условиях использования:

  • после перезагрузки с минимальным числом активных приложений;
  • в течении длительного использования без перезагрузки;
  • в разных положениях смартфона;
  • и всё такое прочее...

Биометрическая кнопка

Короче говоря.., оказалось, что подопытный смартфон имеет мега-крутую фичу, - биометрическая кнопка вкл/выкл питания, прикосновения к которой активировали загадочный процесс teei_switch_thr:

На видео должно быть как-то видно, что прикосновение пальца к биометрической кнопке включения/выключения питания смартфона вызывает бурную активность teei_switch_thr, вслед за которым подтягивается [email protected] - полный путь /vendor/bin/hw/[email protected].

И вот, получается, когда мы пользуемся смартфоном и незаметно для самих себя касаемся биометрической кнопки, то сразу же активируется teei_switch_thr и начинает активно выжирать заряд аккумулятора, - это поведение может быть не на всех моделях смартфонов, но в нашем случае с Cubot именно так и происходит.

При всём этом, блокировка/разблокировка по-отпечатку пальца отключена в настройках смартфона, - Настройки -> Безопасность -> Фейсконтроль и отпечаток пальца, а сама биометрическая кнопка не работает и отпечатки пальцев не снимает!

Решение проблемы здесь очевидно и требует комплексного подхода:

  1. конченному конечному пользователю не следует лишний раз прикасаться к биометрической кнопке в процессе использования смартфона, а иначе аккумулятор будет очень быстро разряжаться;
  2. разработчикам нужно внести изменения в код teei_switch_thr (добавить конструкцию if(..){..}else{..}), чтобы перед активацией процесса проверялись Настройки -> Безопасность -> Фейсконтроль и отпечаток пальца - если отключено, то процесс teei_switch_thr НЕ ЗАПУСКАТЬ;
  3. выше изложенное донести до всех упоротых сотрудников техподдержки смартфонов.

Но, это не точно..! Реализация teei_* в различных смартфонах может иметь разный исходный код в сочетании с различным оборудованием и прикладным ПО, а следовательно поведение teei_switch_thr может радикально отличатся!

Filesystem state: not clean

Ещё одной причиной бурной активности teei_switch_thr может быть сломанная файловая система (ФС), из-за чего выполнение процесса может зациклиться (попасть в петлю, за-loop[питься]).

Например, после аварийных отключений питания на серверах БД происходит сбой в файловой системе, который обычно исправляется при следующей перезагрузке при условии если ФС журналируема. Но, несмотря на исправленную ФС, некоторые таблицы самой БД могут остаться сломанными и после старта сервер БД начнёт очень сильно нагружать ЦП до тех пор пока вручную не выполнишь mysqlcheck -Aa --auto-repair -u root -p.

Так и здесь, если потоки переключаемые процессом teei_switch_thr не могут получить доступ к повреждённым участкам ФС, то непрекращающиеся попытки приведут к большой активности teei_switch_thr и большой нагрузке на ЦП соответственно.

Узнать, сломана файловая система или нет, можно только имея root доступ выполнив:

cat /proc/mounts
/dev/block/dm-6 / ext4 ro,seclabel,relatime 0 0
...
 
tune2fs -l /dev/block/dm-6
...
Filesystem state: not clean
 
e2fsck -n /dev/block/dm-6
https://pastebin.com/4RRqkEwg

Если ФС оказалась сломана, то возникает следующая проблема - android /system read-only file system, от которой не поможет даже рут доступ потому, что начиная с андроид 10 ФС представлена в обрезанном варианте и восстановлению (magisk remount /system) никак не подлежит:

*** Паскуды всё пообрезали (900 г вместо 1 кг и тд)...

Это означает, что если корневая (/) файловая система оказалась сломана, то сломана она была либо на самом производстве либо в процессе автоматического обновления прошивки выполняемого при перезагрузке.

В таком случае restore the factory settings здесь не поможет, - нужно только flash firmware first.

Находим и устанавливаем оригинальную прошивку для гаджета, рутируем, устанавливаем те же приложения - проверяем...

После установки оригинальной прошивки, все 4 teei_* процесса по-прежнему остались в системе:

[teei_switch_thr]
[teei_bdrv_threa]
[teei_log_thread]
teei_daemon

Результат - Filesystem state: clean, teei_switch_thr прекратил зависать и постоянно нагружать ЦП, но сохранив при этом повышенную активность при прикосновении к биометрической кнопке.

Но, это не точно! teei_switch_thr - паскуда.., временами всё же залипает и биометрическая кнопка снова перестаёт работать и отпечатки не снимает ;(

По-этому, flash firmware first всех проблем с teei_switch_thr не решает!

Сервисы Google Play

Значит,

  1. прикосновение к биометрической кнопке несомненно вызывает бурную активность teei_switch_thr - ЭТО ФАКТ;
  2. установка оригинальной прошивки проблему не решает, число teei_* процессов = 4, спустя 2 дня после прошивки teei_switch_thr снова сошел с ума.

После прошивки смартфона всё было хорошо в течении 24 часов, а проблема с teei_switch_thr возобновилась после обновления системы с Google Play - Настройки -> Безопасность -> Обновление системы через Google Play. Обновление предлагалось размером 84 МБ, с последующей перезагрузкой системы.

Именно после установки обновления системы с Google Play и перезагрузки снова начались проблемы с teei_switch_thr. Ещё перекосило неудаляемый поисковый виджет на главном экране, пропал логотип адового гугла и в строке виджета надпись "Виджет загружается..." ;(

Все дополнительно установленные сторонние приложения исключительно OpenSource, из репозитория F-Droid! Никаких радикальных изменений (отключение системных приложений, и т.д.) в настройках системы не выполнялось!

Значит, возник вопрос: как удалить установленное Обновление системы через Google Play?

How to Uninstall a Update on Android? (App & System Update) - https://www.airdroid.com/mdm/how-to-uninstall-an-android-update/
...
Uninstalling Updates for Google Play Services

Google Play Services is a framework for many apps integral to the Android system. However, there might be cases where reverting to an older version is necessary, such as bugs, data consumption, or personal preference.

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

Обновление системы с Google Play становится доступным после того, как в системе заводится аккаунт гугла.

До обновления стояла версия Сервисы Google Play 22.хх, после обновления Версия 25.19.32 (190400-758260096).

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

  • Android System SafetyCore
  • Android System Key Verifier

Про Android System SafetyCore можно почитать по ссылке:

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

Полностью удалить Обновление системы через Google Play можно только через восстановление заводских настроек (ака factory reset), а это значит нужно будет заново всё перенастраивать и переустанавливать все приложения! Ещё как вариант можно попробовать Wiping cache partition из Recover mode - если такой пункт там будет.

Но, все эти перепрошивки и перенастройки с переустановками ИЗРЯДНО подЗАколЕБАЛИ, а потому для начала сначала попробуем накуй снести (удалить) обновления для Google Play Services.

Чтобы удалить обновления Google Play Services, открываем Настройки -> Приложения -> Все приложения, где находим и открываем Сервисы Google Play, после в верхнем правом углу нажимаем на троеточие (ака гамбургер) и нажимаем Удалить обновления.

После удаления обновлений будут запущены адовы гугловы демоны (процессы), которые пару минут что-то там будут пилить - их невидно, но они ееесть..! Выжидаем 3-5 мин, перезагружаем и проверяем грЁБАННУЮ биометрическую кнопку.

УРА! Заработало! Биометрическая кнопка заработала и начала снимать пальчики. Но, появилось сообщение: Чтобы использовать Сообщения ...(ещё какие-то там приложения) обновите Сервисы Google Play.

Тоесть, удалив обновления для Сервисы Google Play, нужно удалять обновления для некоторых других предустановленных приложений, но имея рут доступ или компьютер под руками - это можно попробовать сделать для всех приложений гугла с помощью небольшого скрипта:

#!/usr/bin/env bash
 
# adb uninstall app updates at DuckDuckGo - https://duckduckgo.com/?q=adb+uninstall+app+updates&t=fpas&ia=web
 
# To uninstall app updates using ADB, you can use the command adb shell pm uninstall --user 0 <PACKAGE_NAME> where <PACKAGE_NAME> is the app's package name. This will remove the updates and revert the app to its factory version.
 
# installation - How to reinstall an uninstalled system app through ADB? - Android Enthusiasts Stack Exchange - https://android.stackexchange.com/questions/215313/how-to-reinstall-an-uninstalled-system-app-through-adb
 
for i in $(pm list packages -a|grep google | awk -F':' '{print $2}'); do
 #
 # get pkg path
 pkgpath=$(pm path $i | awk -F':' '{print $2}')
 #
 # echo pkg name and path
 echo $i $pkgpath
 #
 # uninstall google pkg
 #pm uninstall $i
 #
 # or remove "grep google" by user id
 #pm uninstall --user 0 $i
 #
 # backup apk
 #adb pull $pkgpath
 #mv base.apk $i.apk &> /dev/null 
done

Как-то так...

Но, лёгких путей мы не ищем и попробуем заново обновить Сервисы Google Play с того же Google Play - обновляем, перезагружаем...

УРА! УРА! УРА! Пэрэмога :) Грёбанная биометрия снова заработала и начала снимать пальчики, а teei_switch_thr мозги процессор пока нам не ..ёт не грызёт.

Геморрой с виджетом (Виджет загружается...) лечится удалением обновлений для приложения Google - до обновления была Версия 13.25.10.26.arm64, после Версия 16.хх, откатываемся до версии 13 и перезагружаемся.

Два виджета (поиск, дата/погода) на домашнем экране с какого-то хрена сделаны неудаляемыми и вероятно жёстко закодированы (hard coded) в прошивке, а как мы уже знаем кастрированная ФС корневого раздела всегда в состоянии только чтения (ro, read only) и по-этому выпилить предустановленные виджеты с главного экрана мы не в силах.

Парадокс

Недолго музыка играла, недолго фраер танцевал.

После сноса обновлений Сервисы Google Play и Google Play, спустя пару дней работы гаджета teei_switch_thr снова дал о себе знать, а обновления снова вернулись на своё место при том, что авообновление было отключено в Google Play -> Настройки -> Настройки подключения -> Автообновление приложений = Отключить, а также в андроид Настройки -> Система -> Для разработчиков -> Автоматические обновления системы = Выкл ;(

Получается, что гуглу по-хрену все те настройки, а Сервисы Google Play и Google Play оно падлюка обновляет тупо автоматически как только унюхает подключение к сети.

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

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

# or remove "grep google" by user id
#pm uninstall --user 0 $i

Решено данный вариант попробовать и понимая всю опасность флага --user 0 сразу же приготовился к худшему (повторной перепрошивке и переустановке приложений).

Сделав резервные копии, подправил скрипт и запустил его:

  • спустя пару минут всё пропало, потухло-погасло, экран побелел и не выключался минут 3-5, после чего система ушла в перезагрузку;
  • с первой попытки система не запустилась и ЗАбутЛУПИЛАСЬ;
    на третей попытке вошло в рекавери режим выдав меню с пунктом restore factory settings;
  • после restore factory settings система успешно загрузилась, биометрия напрочь отвалилась и teei_switch_thr перестало быть видно, чему я был несказанно рад;
  • однако, девайс перестал видеть скрытые вай-вай сети, настройки которых по 10 раз добавлялись/удалялись/проверялись.

Девайс снова был перепрошит.., и не раз..!

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

На сайте производителя было три версии прошивки:

  • поставил предпоследнюю, на версию ниже;
  • при первом старте пин-коды/пароли/блокировки/отпечатки/вай-фай не добавлялись;
  • после старта проверил Настройки-> Безопасность, где был пункт Фейсконтроль и отпечаток пальца - всё работало;
  • что-то не понравилось, Настройки -> Система -> Сброс настроек -> Удалить все данные, перезагрузилось, проверяю Настройки-> Безопасность, где теперь остался только Фейсконтроль, без отпечатка пальца !?! ;(
  • перешил заново самой последней версией прошивки практически с тем же алгоритмом первого старта - пин-коды/пароли/блокировки/отпечатки/вай-фай не добавлялись;
  • история повторилась, в Настройки-> Безопасность остался только Фейсконтроль, без отпечатка пальца !?! ;(

Так его перешивал раз 10 точно и примечательно, что если после перепрошивки не использовать сеть и/или не добавить пальцы, то в Настройки-> Безопасность остаётся только Фейсконтроль, без отпечатка пальца и даже после сброса к заводским настройкам (Настройки -> Система -> Сброс настроек -> Удалить все данные) на старте и после остаётся только Фейсконтроль!

ЭТОТ ГЛЮКОДРОМ НА ГОЛОЙ ПРОШИВКЕ БЕЗ РУТИРОВАНИЯ И ДОПОЛНИТЕЛЬНЫХ ПРИЛОЖЕНИЙ - с той разницей, что на этот раз при начальных настройках неиспользовалась сеть!

НЕСМОТРЯ НА ОТСУТСТВИЕ ИНТЕРНЕТА оно выдоло сообщение: Обновления готовы к установке. Чтобы продолжить, подключитесь к интернету. - ЭТО КАПУТ, как весело :))

Обновления готовы к установке - а ОТКУДОВА Ж ОНИ СЦУКО ВЗАЛИСЯ КОГДА НЕТ ИНТЕРНЕТА???!!! Откудова!?

Это всё мне чертовски надоело, -

  • в Настройки-> Безопасность остался только Фейсконтроль, без отпечатка пальца, чего и требовалось достичь ибо этой фигнёй пользоваться изначально никто непланировал;
  • teei_* процессы в наличии, но они никакой активности вовсе не проявляют и о них нет никаких упоминаний в выводе dmesg -T|grep -i tee - полнейший ноль;
  • прикосновения к биометрической кнопке никакой активности в системе не вызывает, на том и порешили.

Так я нихрена и не понял,

  • то ли биометрия отвалилась из-за её ненадобности и в этом не последнюю роль сыграло отсутствие сети при первом старте;
  • то ли это такой глюк андроида обусловленный отсутствием сети;
    то ли удаляя всё подряд pm uninstall --user 0 $i повредилось оборудование, что мало вероятно ведь девайс перепрошит и после первого старта вся биометрия рабочая и пальцы снимает...

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

Аллилуйя!

Итого

  1. Прошивку таки пришлось переустанавливать заново из-за повреждённого корневого раздела от большей части;
  2. Не все обновления системы с Google Play одинаково полезны, из-за которых могут начаться проблемы с биометрическими фичами, повышенной активностью teei_switch_thr, виджетами и ещё х/з с чем;
  3. На данный момент никаких проблем с teei_switch_thr незамечено, аккумулятора теперь хватает без малого на два дня почти непрерывной работы, а в режиме ожидания без малого на неделю должно хватать по-идее.

Trusted Execution Environment (TEE) - это полезная фича, но как видим в некоторых случаях даже бага. Есть отзывы, что при сломанном TEE отказываются работать некоторые банковские приложения и электронные кошельки. Кроме того, TEE является низкоуровневой аппаратно-программной реализацией, которую полностью выпилить довольно сложно или даже невозможно, - это означает, что полное отключение teei_* процессов не имеет никакого практического смысла!

teei_switch_thr - это НЕ ВИРУС, а немного недоделанная (кривая) реализация Trusted Execution Environment (TEE) в некоторых моделях смартфонов, а может и во всех подряд имеющих биометрическую кнопку!

Большинство, среди которых и техподдержка Cubot, не помогло нам разобраться с ущербным Android процессом teei_switch_thr и в общем понять назначение teei_* процессов, а все их советы и рекомендации вели ещё в более глубокую и тёмную ... пропасть!

Практика же в очередной раз доказала, что большинство людей...

И, что ...ссылаться на большинство - это дурной признак...это нам нужно постоянно иметь ввиду, с кем мы имеем дело!

Лишний раз не прикасайтесь к биометрическим кнопкам своих смартфонов, неспешите с обновлениями, непокупайте биометрических смартфонов либо перепрошивайте девайсы кастомными ядрами (прошивками) с отключенным TEE и, - заряда аккумулятора будет хватать намного дольше!


Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии   

Олегатор
0 #4 Олегатор 29.06.2025 14:12
Цитирую АдМинь БагоИскатель:
Удалось победить проблему, не грузит больше?

Пэрэмога из раздела Парадокс, сначала:
Код:pm uninstall --user 0 $i
потом перепрошивка, запуск без сети, при запуске пальцы не добавляем, пин-кодов/паролей не ставим.., пару раз перезагружаем.., как-то так оно отпало и остался только Фейсконтроль.

Больше не грузит, акка дня на два хватает, а в режиме ожидания на неделю.

Пэрэмога пэрэможная :lol:

Это точняк глюк какой-то и на разных биометрических девайсах глючить оно магёт по-разному, а потому не факт, что рецепт унисекси
Цитировать
АдМинь БагоИскатель
0 #3 АдМинь БагоИскатель 29.06.2025 03:41
Удалось победить проблему, не грузит больше?
Цитировать
Олегатор
0 #2 Олегатор 11.05.2025 18:32
Цитирую АдМинь БагоИскатель:
Такое дерьмо я на самсунге нашел, но там teei_switch_thr пилит без остановки независимо от касания к биометрической кнопке :sad: и что с ним делать не понятно

биометрия грЁБННАЯ...То может означать, что ФС перекошена, - на серверах БД бывает такая хрень после аварийных отключений и перезапусков и пока таблы не починишь, то сервант будет вешаться - у моего подопытного кубота корневая / ака not clean, таки видать придётся сука перепрошивать бикос / включая /system там always aka read only (начиная с андрона 10) и восстановлению не подлежит

возможно было оно перекошено ещё с завода или перекосило при автообновлении фирмвары - биометрическая кнопка пальцы не снимает

грЁБННАЯ биометрия :actoy:
Цитировать
АдМинь БагоИскатель
+1 #1 АдМинь БагоИскатель 09.05.2025 12:58
Такое дерьмо я на самсунге нашел, но там teei_switch_thr пилит без остановки независимо от касания к биометрической кнопке :sad: и что с ним делать не понятно
Цитировать
Комментарии в блоге
Новое на форуме