Комментарии 69
Друзья, наработки по бинлоадеру доступны здесь:
https://github.com/monobogdan/spreadtrum-binloader
Если у вас есть B240 и вы хотите прошить уже готовую прошивку с лоадером, в папке есть файл patched.bin - это уже пропатченный фуллфлэш. Библиотека функций пока что статически линкуется с бинлоадером (из-за чего ограниченя в размерах), но позже должна переехать в конец фуллфлэша. Помимо этого, в прошивке есть еще пару полезных патчей (на пропуск анимации включения например).
Если кому-то нужна будет база в IDA Pro - пишите в ЛС, поделюсь.
Также мне читатели и зрители надонатили денюжку, а я решил заказать на них НОВЫЕ бюджетные кнопочники с интересным, по моему мнению, дизайном. Все они работают на базе SC6531DA и конечно мы с @ILYA_ZX будем ковырять. Илья написал распаковщик сжатых LZMA областей в прошивке, а я мечтаю систематизировать паттерны самых необходимых функций и написать УНИВЕРСАЛЬНЫЙ патчер, которому на вход поступает прошивку от любого бюджетного кнопочника из DNS и на выходе будет уже готовая, пропатченная прошивка, способная запускать произвольные эльфы!
Скрытый текст

А скоро мы с вами в рамках статьи вскроем коробочку, которая с 2004 года лежит запечатанная.. Кто догадается что в ней? :)

Добрый день, Богдан.
А если взять более древний арм - типа TI Calipso, ARM4TDMI?
Осмоком - есть, но может другие есть исходники?
моторолок было много упрощенных.
Я все жду статьи, когда можно будет не только на любом кнопочнике запускать эльфы, но и использовать его как одноплатник.
С разработкой бинлоадера такая возможность уже есть. Найти функции прошивки для отправки данных в UART не не составит труда, а через UART можно общаться с микроконтроллером, который будет выполнять мост между процессором и GPIO :)
И похожая статья уже выходила, там мы рассматривали готовые рантаймы:
https://habr.com/ru/companies/timeweb/articles/791072/
Ну вообще бурное развитие электроники нас сильно разбаловало, поэтому сейчас не только лишь все вас поймут... И эти люди в целом будут даже по своему правы, а зачем собственно? Причем это даже по цене не имеет смысла уже, какой нить esp32-s3 все равно стоит меньше и под него есть удобные и понятные средства для разработки, ну если не брать варианта что вы телефон на помойке нашли или ещё как получили, например по наследству. :)
Когда прочитал про то что недавно наконец-то сделали возможность запускать эльфы на с380, с650 - всплакнул даже, но потом вспомнил какой сейчас год на календаре... Как говорится - дорога ложка к обеду! Хотя может и откопаю свою с380, если она заведется и у меня будет подходящее настроение, может и вспомню как это было 20 лет назад...
В есп32 не будет дисплея и такого количества памяти)
На алике есть куча готовых полуфабрикатов с экранами, разъемом для сд карты и даже ОЗУ целых 8мб! :) А ещё с гпс, лорой и так далее. Даже практически готовые устройства есть с е-инк и тачскрином, есть с кнопками. Ну или б.у. смартфон за копейки можно взять, короче вариантов тьма, не то что было 20 лет назад конечно. Так что в общем и целом это ковыряние сейчас имеет очень мало какого то прям практического смысла. Ни разу пытаюсь принизить саму проведенную работу, это реально круто.
Недостаток б/у смартфона в том, что их сложно найти даже десяток одинаковых, а тем более больше, а значить мелкосерийное изделие на них не сделать. А полуфабрикаты с экранами и 8мб ОЗУ стоят заметно дороже кнопочных телефонов. И в них как правило нет GSM, а он тоже может быть полезен.
Найти десяток смартфонов одного производителя и одной модели для вашего мелкосерийного изделия, вполне посильная задача, но тут даже это не нужно, достаточно брать +/- одного поколения, с относительно схожим железом и с +/- одной версией андроида, причем все это в довольно широких пределах. А наличие унифицированной ос, апи - гарантирует работу одного и того же приложения на всем этом разнообразии устройств. В том то и прелесть унифицированной ос в отличии от написания кода на голом железе, там да шаг в право, шаг в лево и все уже все поплыло или вообще окирпичило железку.
Вот сейчас взять и найти 10-к каких нить айфонов 4-5-6 даже в хорошем состоянии не проблема совсем, так же в принципе с достаточно популярными самсунгами к примеру и так далее это если надо вообще полностью идентичное железо и ос конечно, но скорее всего это и не нужно в большинстве случаев.
У этих решений плюс в том, что десяток таких телефонов можно найти дешевле, чем вот такой набор на ESP. Можно, например, сделать какой-нибудь пульт управления с расчётом на то, что если разобьют или потеряют - не особо жалко.
И если взять армейское применение, США в 00-е приняли, ибо могли такое соорудить, для своих систем тактического звена C4ISR - ниже роты шли обычные тогда лопатники самсунги, только не с типовой прошивкой. Массовое железо, дешевле некуда.
Сломал, пролюбил - выдали новую, ключ ид пользователя зашили, старый - бан в сети.
Как на такое решение облизывались разработчики в СНГ.
Айфоны это супермассовая модель, потому что в один год все любители яблока покупают какой-то условный айфон 6/7/8 .. и они расходятся миллионами. А с китайскими девайсами не так. Их меньше было выпущено раз, после старения к ним относятся как к мусору два, и третье, самое главное - несколько устройств с одинаковым названием от производителя могут иметь сильно разные аппаратные ревизии и разные запчасти.
Ну поэтому я и вспомнил про айфоны, полностью идентичное железо и софт, а цена на устаревшие модели очень низкая. Даже если использовать чисто по прямому назначению, как звонилку, то лучше уж взять какой нить старенький айфон в хорошем состоянии чем новенький китайский кнопочник. А уж для всяких самоделок и подавно.
Мелкосерийное изделие - это не только электроника, но и корпус. А корпус для разной электронной начинки или разных моделей телефонов, которые в него будут встраиваться, нужен разный. Десяток может и можно найти, а 50, 100? Кнопочные телефоны на Spreadtrum можно купить от $12, хоть сотню, хоть две.
На готовых поделках с esp32 своих подводных камней как грязи...
Но в целом да - сейчас есть какой-нибудь luckfox, milk-v duo или hi-link, делающие очень мелкие, но паябельные дома SoM, не надо морочить голову разводкой сложных многослоек. Причем там есть полный sdk c с линуксом. Есть Simcom, у коорого навалом сотовых модулей, 2G по баксу на али лежат, 4G пятнаху стоят. Экранов ваще навалом, и хороших, и плохих, и даже круглых. Корпуса на фотополимернике самого днищевого уровня получаются как заводские. Бери и запиливай свой кнопочный телефон с блекджеком и змейкой... Всё есть в модулях, причем если раньше это были корявые оргомные поделки для ардуино, то сейчас полно и приличных мелких SoM, которые не стыдно в прод ставить.
Единственное, ради чего стоит ломать старые телефоны - спортивный интерес. Это реально занимательно, пусть и не очень-то полезно в глазах окружающих.
Единственное, ради чего стоит ломать старые телефоны - спортивный интерес. Это реально занимательно, пусть и не очень-то полезно в глазах окружающих.
Иногда в процессе такого ковыряния обнаруживается кое-что интересное...
Я никому ничего не советую, я говорю, что доступность серийно выпускаемых до сих пор кнопочных телефонов для запуска своих бинарных программ даёт новые возможности. А пользоваться ими или нет - каждый решает сам. Если опасаетесь бэкдоров и троянов - не вставляйте SIM-карту и не используйте сотовую связь. Или найдите и удалите их из системы. Или используйте проверенный кем-то на отсутствие троянов и бэкдоров телефон - есть разные возможности.
Подскажите волшебное слово, как найти на алике эти полуфабрикаты.
И эти люди в целом будут даже по своему правы, а зачем собственно?
Возможно, кого-то привлечёт наличие уже готового корпуса с кнопками, дисплеем, а иногда и какой-то периферией. С учётом того, что эти телефоны зачастую можно заполучить почти бесплатно или купить в состоянии, не сильно далёком от нового, по цене буквально в триста-пятьсот рублей (зачастую в составе целого лота в духе "Пять старых телефонов и три зарядки, всё работает, но давно не используется"), ничего так вариант.
Именно в этом и прикол) А еще есть GSM, так что можно намутить что-нибудь полезное сигнализационное)
Сразу вспомнилось вот такое:

Это такая приблуда, Spy-Tel называется. Туда втыкается Nokia 3310, которая может контролировать несколько шлейфов сигнализации.
А со своей прошивкой можно сделать что-то подобное, только компактное и дешёвое...
Например некто Sabodyn сделал для Siemens C45 и C55 патч Simpage который превращает телефон в охранную сигнализацию. Патч был в бесплатном варианте на один шлейф и в платном на два. Архитектурно патч построен на отправке AT команд из кода патча в обработчик команд в телефоне. Подробнее тут: https://web.archive.org/web/20070128001333/http://www.webcenter.ru/~kat/SimPage.html
Если что у меня сохранился патч и pdf к нему.
А вот использовать отправку AT на S/ME45i не полкчилось, там обработчик не работал пока кабель не подключишь. Я покопался немного но так обход и не нашел.
Хобби. Купил телефон, BQ3587, телефон понравился, основной минус - на мои bluetooth наушники заикается. Пришлось расковырять прошивку, поправил. Хотел отпуск провести на связи, без интернета. В итоге из 28 дней отпуска 3 провел на берегу озера, с допиленным телефоном) Телефон на Spreadtrum. Разбираться было интересно, отпуск не прошел даром, это к вопросу зачем. Электроника действительно нас разбаловала в плане выбора, я набрал кучу модулей/микросхем/FPGA, которые лежат и я более чем моргание диодом не сделал. ESP32 там же, руки не доходят проверить возможности и производительность.
Круто. Фикс BT кажется нетривиальной задачей, даже если иметь исходники. Возможно потому что у меня поверхностное представление о BT и A2DP.
Электроника действительно нас разбаловала в плане выбора, я набрал кучу модулей/микросхем/FPGA, которые лежат и я более чем моргание диодом не сделал.
Нужно иметь внятную цель чтобы что-то сделать. Вот есть у тебя плата с МК или FPGA и можешь ты на ней что-то сделать, на одной, на второй, на третьей - на любой. И если надо что-то делать делаешь на привычной. А вот если есть конкретный девайс и в него надо что-то добавить, то тогда прийдется его изучить, возможно что-то отреверсить и добавить то, что тебе нужно.
Откопайте обязательно, даже прошивка новая с эльфпаком для Motorola C380, C650, V180, V220 есть. Носталгия на пару вечеров обеспечена (:

Или использовать как пульт управления старшим братом-одноплатником без экрана и клавиатуры.
Огонь статья, прочитала на 1 дыхании
В процессе реверса функций для открытия окон в прошивке я нашел скрытое меню... с дополнительной игрой, которая есть в прошивке, но штатными способами до неё невозможно добраться!
Прямо напомнило восьмибитные картриджи. Когда-то пару раз перемычками тоже находил "скрытые" игры.
Интересно, много ли людей встаривали в картриджи переключатели, чтобы получить бесплатно еще пару игр?)
Точно помню, как кто-то рассказывал, что проделывал такой трюк с тетрисом (Brick game из девяностых). Там в какой-то из бесчисленных модификаций при замыкании перемычек помимо тетриса появлялись гонки и ещё какая-то игра.
Стрелялка наверное. У меня было несколько таких игрушек, но в основном позже, а в той что в студенческие годы купил, уже сразу было 96 или 99 игр. Вскрыл на 3 или 4 день, т.к. при включении оно орало мелодию, лекторов пугало ) пришлось доработать. Там уже без всяких перемычек и намеков на какие-то настройки.
Вот ещё вспомнил (к телефонам никак не относится, но раз уж упомянули..). Аналогичные опыты проводил в детстве и на шестнадцатибитных картриджах - там тоже были какие-то контакты, очень похожие на какие-то перемычки или тестовые пины. Они никаких секретов не раскрыли, но зато узнал, что, оказывается, на Sega есть свой BSOD - такой же синий экран с белым текстом.

Вот этот экран "Address error" я помню хорошо. Тогда, правда, не знал, что это всё такое.
Эх, мне не новые игры не попадались. Список изменялся от 100 в одном к 10000 в одном, и появлялись интересные вариации игр)
Отличный детектив с хэппи-эндом!
Отличная статья, настоящая хабрагоднота! Отдельное спасибо за то, что был найден Spreadtrum SC6500L в полноценном (не монохромном) кнопочнике. Я-то думал, этот проц ни на что не годится.
я вот думаю что чуть побольше смысла было бы покопаться в платформах которые умеют 4g в них потенциала досточно чтобы реализовать несколько более актуальную времени годноту. сименсы и моторолы то ломали когда они были в широкой продаже? помню как давным давно мне показали чб simens на котором запустили че то wolfenstein подобное
и отдельный момент - GSM ядро и протоколы, любопытно как это реализовано с точки зрения многопроцессорности и ОС
и отдельный момент - GSM ядро и протоколы, любопытно как это реализовано с точки зрения многопроцессорности и ОС
Насколько я понял, это почти всегда отдельная вселенная с своим процессором и максимально огражденная от основного процессора и прошивки. Есть некоторые модели от Моторола, где получали доступ непосредственно к ПО модуля GSM, но там их если мне по изменяет память целых две штуки они весьма старые и их ещё надо поискать на вторичке. Зато при помощи этих телефонов и одноплатного компьютера можно реализовать к примеру свою GSM базовую станцию в режиме 2G.
Статья интересная, ждем продолжение. Одна поправка - thumb включается нулевым битом а не первым.
Процессорный модуль для IDA взяли готовый или сами написали?
Спасибо за статью! Это именно то зачем я захожу на Хабр
Интересная статья. Мало что мне понятно, как неспециалисту. Но такая тема может быть актуальна для распространенных mp3 плееров. Прошивка у которых та ещё китайская недоделанная. А вот хорошая функциональность востребована, например, при изучении языков. Я уже думал, что может самому с помощью ИИ прошивку переписать.
Решил сказать о своем (куда более локальном) патче для более свежего Spreadtrum кнопочника на платформе MOCOR12: DIGMA LINX A106 (монохромный). Это - подражание NOKIA 1202. Есть даже USSD команда, которая переключает картинку при запуске и остановке телефона с DIGMA на NOKIA и обратно. Побудительным мотивом стало то, что в минималистичном телефонном меню этого аппарата нет гибкой регулировки длительности и яркости подсветки, а дефолтные яркости слишком велики для темноты и не нужны при хорошем освещении (рефлективный STN дисплей). Яркость можно менять из инженерного меню (в интервале 1-95), но только до выхода из этого меню, при котором она сбрасывается к прежнему значению. Кроме того, в наиболее рабочей версии прошивки не предусмотрено выключение подсветки.
В итоге сделал гибкую регулировку И яркости И длительности подсветки через инженерное меню регулировки яркости. Патч перехватывает выдаваемое им значение и при величине кратной 5 выставляет соответствующую длительность подсветки в сек, а при иных значениях - яркость. Для максимального значения (95) выставляется не 95 сек, а бесконечная длительность. Аналогично, для минимального значения (1) хочу сделать выключение подсветки, но, копаясь в дизассемблированных кодах, не нашел, как она выключается. Возможно, вы сможете что-то подсказать на основе своего опыта. Можно в ЛС.
Рецепт фасолей: как я отреверсил бюджетный кнопочный телефон, хакнул его и научил запускать нативные программы на C