Полный root в часах Samsung Gear S3, проблема с gps и вечно падающая служба crash-stack

Начну свою историю с того откуда и почему у меня появились Samsung Gear S3 frontier.
31 декабря 2018 года я праздновал новый год, ничего не предвещало беды, у меня тогда были AMAZFIT Stratos, вполне нормальные часы, почти все устраивало.

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



Буквально за пару дней нашел на авито продавца в моем регионе, купил их за 12.500 рублей. Дома обнаружил, что у часов US зарядка(с переходником на евро), и часы совсем не ростест, позже прогуглил этот вопрос, часы оказались из Эмиратов, собранные во Вьетнаме, авито был наполнен подобными Gear S3 ценой от 8к до 15к, чем они отличаются от ростест часов из магазина за 20к так и не понял, серийный номер на официальном сайте пробивался, я даже при помощи них делал и подписывал циферблаты(у самсунга сложная схема создания циферблата, нужно устройство для подписи). Я конечно немного расстроился, но часы прекрасно работали и даже работал Samsung Pay после смены региона на SER(РОССИЯ).

Радость моя длилась недолго, примерно через полгода, 12 июня часы пошли по елде, а именно начали быстро разряжаться, греться, тормозить и никакие перезагрузки, переподключения, прошивки через NetOdin эту проблему решить не могли.

Кстати на часах установлена ОС Tizen, как оказалось это почти полноценный Linux от Samsung, запуском служб управляет обычный systemd, он то мне и помог, в выявлении проблемы и решении ее.

Сейчас опишу симптомы проблемы: После загрузки часы работают нормально, но через 20-30 секунд начинаются лаги, тормоза анимации и чем дальше тем сильнее, самый верный признак это из шторки запустить настройки, и в настройках тапом выбрать какой нибудь пункт, если переход дольше одной секунды то добро пожаловать в мой клуб вы поймали crash-stack loop(сам придумал).

Что бы точно в этом убедиться, включите на часах отладку, подключитесь при помощи sdb, используя аргумент sdb shell и в shell выполните команду systemctl нажимайте пробел для листинга, если увидите кучу crash-stack@service с пометкой failed у вас беда.


Я очень много мучал данные часы чтобы решить проблему, снимал дампы изучал их, отправлял их в Samsung, а они меня отправили в сервисный-центр, но ничего не помогало.
Из дампов я выяснил, что проблема в 2х службах
-gpsd4774.service
-crash-stack@.service
Первая падает и порождает вторую, вторая тоже падает и порождает себе же подобную и так в вечном цикле, в интернете нет ни одного руководства как получить root на часах, и у меня не было времени со всем этим разбираться.

В итоге я забил, включил на часах энергосберегающий режим и положил на зарядку, ВНЕЗАПНО через ~3 часа они стали работать как обычно, не тормозят, аккумулятор не жрется, все службы, датчики работали в штатном режиме, я зашел в shell часов, и там была куча проваленных запусков crash-stack@.service, но новые при этом не появлялись, потом я выяснил, что за ~3 часа там достигался лимит открытых файлов и все приходило в “норму”.

Шло время, я ходил в часах боясь перезагрузиться, в октябре прилетело обновление, я понадеялся, что самсунг устранил этот crash bug, но не тут то было, после установки обновления все началось заново и мне чудом удалось их загнать в рабочее состояние.

Прошло еще 2 месяца и у часов стал сдавать аккумулятор, раньше мне хватало почти на 4 полноценных дня, а стало хватать только на 3, и я решился на перезагрузку, как вы помните часы перезагружать нельзя… больше в нормальное рабочее состояние загнать у меня их не получилось, постоянно отваливался датчик сердцебиения, шагомер, акселерометр.

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

Первое, что я сделал это выяснил какое ядро, оказался linux 3.14.18, начал искать эксплойты под него, но нашел лишь под Android. Случайно еще наткнулся на заметку как получить root в Tizen, в ней было сказано просто закиньте в каталог /bin/ файл su, тут то во мне и зародилась надежда. На следующий день, я занялся поиском последней прошивки для часов, нашел на 4pda Тizen 4 без последнего патча.

Скачав и распаковав файл AP_R760XXU2ESE3_usr.tar.md5 я обнаружил в нем 5 образов
ramdisk.img
ramdisk-recovery.img
rootfs.img
system-data.img
user.img
Мне был интересен образ rootfs.img, я его примонтировал командой mount -o loop rootfs.img /mnt и начал изучать, там было обычное строение ФС linux, первое, что я сделал это закинул туда su, упаковал обратно в AP_R760XXU2ESE3_usr.tar.md5 и прошил часы, прошивка длится 15+ минут. В итоге я словил разочарование, страх, боль и bootloop(перезагрузка после появления логотипа), потом еще много пытался модифицировать rootfs.img, но каждый раз получал bootloop.

Потом я попробовал закинуть su в user.img и часы успешно загрузились, при попытке запустить команду ./su запрашивал пароль… Пароль который находится в/etc/shadow я расшифровать не смог, забегу вперед, я туда прописал свой уже зашифрованный пароль и все равно не получилось войти под root'ом.

Потом попробовал прошить Tizen 3, она сильно отличалась от 4, но зато там не было мерзкой службы crash-stack@.service.. После прошивки часы вроде работали, ничего не падало, но только они все равно как то подлагивали, и пользоваться ими было некомфортно. Я попробовал обновиться с 3 на 4, при помощи Galaxy Wearable, тоже не помогло, вернулся к тому от чего ушел.
В Tizen 3 я тоже пытался запихать su и опять же bootloop.

Ну а теперь давайте перейдем к делу, к тому как я решил проблему и как можно получить root.

Надо было сразу обратить внимание на образ system-data.img
data
dbspace
etc
gnss
home
lost+found
media
share
smack
system
usr
var
С rootfs.img/etc ведет много ссылок на system-data.img/etc, а самый главным ссылающимся для системы каталогом является rootfs.img/etc/systemd, если вы знакомы с Linux то должны знать про монстра systemd, он не так давно начал управлять запуском служб, таймерами, сетью Linux, если мы можем править содержимое служб то можно сказать у нас полный root.

Для начала я попробовал закинуть заглушки(пустые файлы) в system-data.img/etc/systemd/system crash-stack@.service и gpsd4774.service.
Собрал образ, прошил часы и вуаля они стали как новые, не тормозят, интерфейс плавный, все работает как часы.
Ну после этого я попробовал получить root, изменил пароль в system-data.img/etc/shadow закинул файлик su дал ему права 4755, снова собрал образ, прошил часы, но пароль так и не подошел, на этом я и забил, часы работают, потратил на все вышеописанное почти целый день, прошивал часы раз 15, знатно произносил nand.

Но на следующий день до меня дошло — root можно получить при помощи изменения службы, допустим берем gpsd4774.service(свою службу врядли получится добавить, там есть жесткий список, но можно попробовать) и в самом запуске службы прописываем копирование файла su в /usr/bin, пробуем при помощи sdb переключить учетную запись owner на root, там есть команда sdb root on, вроде как вызывает /usr/bin/su, не проверял. Ну или попробовать задать пароль через chpasswd.
echo -e «root:password'» | chpasswd

Хватит теории сейчас будет тупо how-to как решить такую же проблему как у меня.
!!! Если вы в этом ничего не понимаете лучше даже не пытайтесь, сделаете только хуже!!!!


Для начала нам нужно устройство с Windows и wifi, нужно будет подключиться к часам, прошивка идет по воздуху.
УЖЕ модифицированная прошивкаhttps://yadi.sk/d/naR6dWmwmAI3gQ
1. Скачиваем образ предпоследний прошивки которую я нашел на текущий момент 05.12.2019
http://4pda.ru/forum/index.php?showtopic=787414&view=findpost&p=85850208 — 4pda
https://yadi.sk/d/fawShgvcmhrriA — yandex
Скачиваем NetOdin
https://yadi.sk/d/KqQ4-jI3dIA1ZA — NetOdin
Для сборки и распаковки архива прошивки в windows есть скрипт TAR_MD5_PACKAGER
https://yadi.sk/d/sef52WhklqPLMw — TAR_MD5_PACKAGER

2. Распаковываем 7z x R760XXU2ESE3_Tizen.7z — Это прошивка для 760 Frontier будьте внимательны
3. Распаковываем tar xf AP_R760XXU2ESE3_usr.tar.md5 или
используем TAR_MD5_PACKAGER для windows
Кладем файл AP_R760XXU2ESE3_usr.tar.md5 в каталог вместе с TAR.MD5_PACKAGER.bat, запускаем TAR.MD5_PACKAGER.bat и выбираем extract, в каталоге parts появятся образы.

4. Надеюсь у вас есть Linux, если нет то используйте какую нибудь виртуалку, лично я не знаю как редактировать образы ext4 под windows.
Монитруем образ system-data.img в /mnt командой
mount -o loop system-data.img /mnt
Если вы все сделали правильно то в /mnt у вас должен появиться список каталогов образа system-data.img.
Переходим в /mnt/etc/systemd/system и создаем две наши заглушки
touch crash-stack@.service
touch gpsd4774.service
5. Отмонтируем umount /mnt
6. Собираем образ из под linux
tar cf AP_R760XXU2ESE3_usr.tar.md5 *.img
md5sum AP_R760XXU2ESE3_usr.tar >> AP_R760XXU2ESE3_usr.tar
mv AP_R760XXU2ESE3_usr.tar AP_R760XXU2ESE3_usr.tar.md5
Или при помощи TAR_MD5_PACKAGER, выбираем сначала Make TAR, а потом Add MD5 to TAR, надеюсь разберетесь

7. Вгоняем часы в режим прошивки и прошиваем.
http://4pda.ru/forum/index.php?showtopic=787414&st=1380#entry56130942 — Инструкция
1. На вашем S3 нажмите и удерживайте кнопку Home несколько секунд, до тех пор, пока на экране не появится надпись «Rebooting ...»
2. Отпустите кнопку HOME, а затем быстро нажмите ее еще 3 раза. В результате этих коротких нажатий кнопки Home вы перейдёте к пункту «Download (wireless)».
3. Сразу нажмите и удерживайте кнопку Home для выбора (если не успели, часы перезагрузятся, начинайте ещё раз с п.1).
4. Нажмите коротко кнопку Home два раза, чтобы изменить [WPS Mode] на [AP Mode].
5. Выберите длинным нажатием предложенную точку доступа. На экране появится сообщение, что часы связались с IP вашего компьютера.
6. Откройте NetOdin, убедитесь что S3 отображается в подключении.
7. Выберите правильный файл для каждого из полей BL, AP(УКАЗЫВАЕМ НАШ МОДИФИЦИРОВАННЫЙ) и CSC из файлов прошивки.
8. Нажмите кнопку Пуск и ждите. Процесс займёт примерно 15-20 минут. По окончании часы перезагрузятся.

Если ваши часы загрузились вы все сделали правильно, проверьте перестали ли они тормозить, включите отладку и посмотрите есть ли бесконечно плодящаяся служба crash-stack@.service
Надеюсь это кому-нибудь поможет и человек сэкономит 10к за замену платы, ведь в этих часах как таковой GPS нафиг не нужен, если только для бега, в остальных случаях они все тянут с мобилы.

Если что-то непонятно всегда можете написать в telegram.

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

    Есть вопрос или предложение пиши в Telegram @cloudsv

    MTProto прokси для Telegram

    Прямой эфир

    cloudsv 01 октября 2019, 11:00
    Arch Linux Локальный редирект порта в Linux 0
    cloudsv 25 августа 2019, 19:14
    О жизни Социальная сеть от Яндекса Aura 0
    cloudsv 31 июля 2019, 00:34
    О жизни 33 year old 0
    cloudsv 25 июня 2019, 21:29
    Telegram Полезные боты в Telegram 0
    cloudsv 24 октября 2018, 00:27
    О жизни Обновление Scala Rider G4 11