Check'нутый RX200
, 09.04.2016 в 06:51 (1380 Просмотров)
ВНЕЗАПНО оказалось, что вместо "Check Atomizer" мод писал "No Atomizer", найти который в коде вообще не проблема! Учитывайте это, читая дальше.
камрадам! Небольшой отчёт по ковырянию прошивки для RX200 на предмет "Check Battery". Наши с Haradreamer'ом эксперименты окончились ещё несколько дней назад (общались в личке, дабы не флудить тут), но добрался опубликовать их только сейчас. Итак, обо всём по-порядку.
- Пациент: Wismec Reuleaux RX200 с прошивкой 3.00.
- Симптомы: некорректное отображение напряжений АКБ (что-то вроде 0.34/0.00/0.00) и как следствие перманентный "Check Battery" на экране.
- Цель: заставить мод жарить...
Сначала пытались отключить вывод самой надписи "Check Battery". После пары неудачных попыток
это удалось, и дальше мод сменил "пластинку" на "Battery Low". По аналогии с Эвиком нашёл в коде "магические" числа, отвечающие за минимально допустимое напряжение АКБ. Меняем условия со стандартных "меньше или равно 3.10 В" на "строго меньше 0.00 В" (т.е. никогда)вот таким кривым способом
Код:## "Check Battery" status bypass ## # CMP.W R11, #2 -> CMP.W R11, #5 # 365C: 02 365C: 05
и в итоге получаем... очередную, но уже новую надпись "Check Atomizer". Долгие копания в коде в поисках этой надписи успехом не увенчались (кто найдёт, получит плюс в репутаким патчем
Код:## Set "Battery Low" voltage to 0.00 ## # CMP.W R2, #0x136 -> CMP.W R2, #0 # 36C0: 9B 36C0: 00 # BLS loc_37A2 -> BCC loc_37A2 # 36C3: D9 36C3: D3), зато было найдено и закомментировано очень много других надписей. Но самое главное, что в процессе рысканья наткнулся на адреса, откуда читаются напряжения каждого аккума.
заставили мод написать 4.20/4.20/4.20 при проверке напряжений в выключенном состоянии. АТаким патчем
Код:## Bat 4.20 4.20 4.20 ## # 1-st battery voltage address 5898: 48 5899: 87 589A: 00 589B: 00 # 2-nd battery voltage address 589C: 48 589D: 87 589E: 00 589F: 00 # 3-rd battery voltage address 58A0: 48 58A1: 87 58A2: 00 58A3: 00 # 4.20 (0x01A4) 8748: A4 8749: 01 874A: 00 874B: 00
заставили уже включённый мод думать, что все аккумы полностью заряжены. Девайс показал полный индикатор батареи, и при нажатии Fire... написал "Check Atomizer". Дежавю.вот таким образом
Код:## Set battery voltage to 4.20 ## # 1-st battery voltage address 0CD4: 48 0CD5: 87 0CD6: 00 0CD7: 00 # 2-nd battery voltage address 0CD8: 48 0CD9: 87 0CDA: 00 0CDB: 00 # 3-rd battery voltage address 0CDC: 48 0CDD: 87 0CDE: 00 0CDF: 00 # 4.20 (0x01A4) 8748: A4 8749: 01 874A: 00 874B: 00
Вообще, НИ РАЗУ по ходу тестов мод не определил сопротивление атома - оно всегда оставалось по нулям. Возможные аппаратные причины этого уже обсуждали раньше в этой теме, начиная отсюда.
Хотел бы я сказать, что продолжение следует, но видимо, на этом всё. Похоже, не удастся решить эту проблему только прошивкой. Хотя надежды особой и не было, попробовать всё-же стоило.
Надеюсь, что данная информация так или иначе будет полезна. Вполне возможно, энтузиасты найдут в коде кусок, связанный с "Check Atomizer" и смогут сделать больше, чем я. Для помощи им (да и вообще для всех интересующихся) поделюсь листингом прошивки с адресами, авто-комментариями IDA и своими комментариями (помечены "#i").
Хочется выразить особую благодарность Haradreamer'у за идеи (изначальную и последующие), настойчивость (таки уговорил меня на ковыряние прошивки), предприимчивость (раздобыл мод для тестов), тестирование и смелость (а вдруг бабахнет). Также, спасибо камраду JAW за предоставление листинга прошивки. И конечно же, респекты maelstrom2001, MicroSur и ReikoKitsune за их тулзы, без них никуда.
PS: у меня RX200 нет, поэтому всё происходило долго, вслепую и только на основе отзывов камрада Haradreamer.
PPS: для получения "Check Atomizer" вместо "Check Battery" достаточно только последнего патча. Второй патч можно использовать для изменения отсечки "Battery Low" на исправном моде в том числе (толком не тестировалось!).
- Категории
- Без категории