Хакаем цифровую мыльницу с ROM-DOS и x86-процессором
Приветствую всех!
Помните компактные цифровые фотоаппараты‑«мыльницы» из нулевых? Уверен, такие девайсы были у многих, а у кого‑то есть до сих пор. Так вот. Задумывались ли вы когда‑нибудь, на каком процессоре и на какой ОС работают все эти штуки? Как оказалось, иногда всё не ограничивается проприетарными решениями, а то, что находится внутри такой железки, может, очень сильно удивить.
Итак, сегодня поговорим о том, как запускать свои приложения на, казалось бы, ничем не примечательном фотоаппарате. Узнаем, что для этого требуется и какой софт для него бывает. Как водится, будет много интересного.
Написано специально для облачного провайдера ▶️Timeweb Cloud и читателей Pikabu.
❯ Суть такова
Наверное, многие из вас испытывали это ощущение: стоило услышать про какой‑то артефакт, как немедленно захотелось его себе. Так и случилось у меня. В комментариях к статье @monobogdan про КПК Blackberry на 386EX упомянули, что существовали древние цифровые фотики Canon, работающие на базе Datalight ROM‑DOS и некоего процессора с архитектурой X86. Да, даже сама оболочка этой мыльницы вместе с пользовательским интерфейсом и всей логикой обработки изображений и управления камерой на деле всего лишь экзешник CAMERA.EXE, запускающийся из Flash. А ещё это значит, что для такого девайса можно писать свой софт и запускать его на нём. Конечно, не стоит ожидать, что можно взять абсолютно любую программу для DOS, как‑то закинуть её на фотоаппарат и надеяться на успех. На самом деле не всё так просто, из‑за некоторых отличий в организации памяти приложения для ПК не заработают на мыльнице, и наоборот. Тем не менее, потенциал у всего этого довольно крутой, в лучшие годы даже было написано несколько интересных прог.
Вообще, я не особо интересуюсь фототехникой, разве что временами подумываю купить зеркальник и пойти пытаться побивать топы всем известного сайта, но это так, не самые приоритетные мечты, так что на данный комментарий я не обратил особого внимания. Но вот, пообщавшись с товарищем @dlinyj я узнал, что, оказывается, штука эта намного более крутая, чем может сходу показаться. В общем, в коллекции того, кого очень интересуют разные девайсы на базе X86, артефакт просто незаменимый. Поэтому я решил приобщиться и раздобыл себе на опыты экземпляр.
❯ Откуда X86 в фотоаппарате?
В начале двухтысячных Canon выпустил чипсет для своих цифровых камер — DIGIC (Digital Imaging Integrated Circuit). Камеры на базе него выпускаются и в наши дни, но сейчас нас интересует самая первая версия: DIGIC I (или просто DIGIC без всяких маркировок). Помимо цифрового сигнального процессора и АЦП данный комплект включает в себя и процессор на ядре 80186.
Если разобрать такой фотик, то на плате можно увидеть тот самый чип DIGIC, а также заказной процессор NEC.
Само собой, всё это не прошло мимо исследователей, поэтому вскоре после выхода на этих фотоаппаратах научились запускать самописный софт: от простых примеров типа индикатора заряда батареи или пищалки до тетриса или анализатора цвета.
В последующих версиях (DIGIC II и позднее) всё уместилось внутри одного чипа. Впрочем, это уже совсем другая история...
❯ Про запуск своего софта на фотоаппарате
Теперь перейдём к самому интересному: к тому, как же заставить какие-то сторонние проги запускаться на фотике. Посмотрев этот ролик, подумал, что всё довольно просто:
Наиболее информативной из материалов на просторах оказалась вот эта страница (к слову, как раз упомянутая в видео). Помимо инструкции для запуска там был и небольшой архив софта.
Несмотря на то, что мыльница работает на ROM-DOS, просто так запустить софт с ПК не выйдет из-за несколько другой организации памяти.
Вот карта памяти у фотоаппарата.
А вот — у обычного компа.
Поэтому, к сожалению, запуска Doom или каких‑то других игр с ПК сегодня не будет: для запуска их придётся серьёзно переписывать под архитектуру фотика. Так что будем довольствоваться более простым софтом.
❯ Обзор оборудования
Для опытов понадобится всего‑ничего — сам фотик, карта памяти Compact Flash и комп с картридером. Подойдут следующие модели:
Серия PowerShot A: A60, A70, A75, A80, A85, A95, A300, A310, A400.
Серия PowerShot G: G3, G5, G6.
Серия PowerShot S: S45, S50, S60, S70 (включая S1 IS).
Серия Digital IXUS / IXY / SD: v2, v3, 400, 430, 500, SD10, SD20.
Премиум-компакт: PowerShot Pro1.
Зеркальные камеры (DSLR): EOS 10D, EOS 300D (Digital Rebel).
Более поздние камеры (на чипсетах DIGIC II, III, 4, 4+, 5...) нас сейчас не интересуют, поскольку построены на ARM, а не X86, а работают на RTOS, а не DOS.
Сколько же стоит самый дешёвый подходящий экземпляр? Поиск на вторичке показал, что урвать самую простую модель можно буквально за пару‑тройку тысяч. «Пару‑тройку тысяч? Дайте две!» — подумал я и раздобыл сразу два экземпляра.
Первым ко мне попал PowerShot A85.
Экземпляр неисправен, у него какие-то проблемы с механикой объектива. Прикупил его чисто ради опытов с DOS (и потому что будет не жалко случайно закосячить). Для экспериментов подойдёт даже фотик с разбитой оптикой или дохлой матрицей, главное, чтобы он загружался и пускал в меню.
Внешне это типичный фотик первой половины нулевых: довольно внушительные для мыльницы габариты, маленький экран, оптический видоискатель (окуляр его виден над дисплеем), запись на Compact Flash (мыльницы с привычными нам SD появились заметно позже), довольно узнаваемая компоновка элементов управления.
Про управление рассказывать особого смысла нет: думаю, всякий, у кого был подобный девайс, и так представляет себе, что для чего нужно и как на него снимать.
Сверху переключатель режимов, динамик и кнопка спуска затвора. Обожаю подобные элементы управления: всё очень приятно щёлкает, крутится и нажимается.
Ест девайс немало: для работы требуются аж четыре батарейки.
Эти самые батарейки в своё время у кого-то потекли, сильно загадив контакты.
Есть тут и USB для передачи данных на ПК.
Затычка разъёма отвалилась сразу же. Питать девайс можно и от внешнего БП.
Сбоку дверца отсека карты памяти.
Кроме отсека под Compact Flash там ничего нет.
А это Canon PowerShot A70, тот самый фотик из статьи того чеха.
Он очень похож на предыдущий, но, как по мне, у A85 дизайн чуть более удобный.
Помимо разъёмов сбоку разместился лоток для батарейки часов.
Сверху всё идентично.
А снизу их и вовсе почти не отличить.
❯ Внутренности
Проблемный фотик я решил разобрать и заглянуть внутрь.
Откручиваем всё, что откручивается, и снимаем переднюю панель.
Слева видим большой конденсатор вспышки, который надо разрядить, дабы не спалить электронику и не получить удар током. Лучше всего это сделать, поднеся к его ножкам мощный резистор номиналом около 1К. Закорачивать контакты нельзя: будет большой бабах, а сам конденсатор может выйти из строя. Помните, что разряжать его надо обязательно, заряд он держит несколько дней.
На шлейфе видим подтверждение того, что работает фотик на DOS.
Конструкция программного переключателя.
А это мой любимый элемент управления в подобных фотоаппаратах: двойная кнопка. Когда-то давно такая встречалась и в некоторых телефонах, но сейчас таких уже не делают.
Плата питания.
Электролит из батареек проник очень глубоко. Никогда не забывайте элементы питания в устройствах, иначе рискуете однажды увидеть примерно то, что на фото.
На этом я понял, что дальше разбирать не готов, так как опыта препарирования подобного железа у меня нет, а случайно доломать не хотелось. Поэтому максимально отчистил все окислы и следы соли и скрутил всё обратно. К моему удивлению, девайс после сборки ожил. Скорее всего, проблема была в банальном плохом контакте или каком-то попавшем в механизм мелком мусоре, который при разборке выпал.
А вот с A70 не повезло. Продавец заверял, что аппарат рабочий, но то ли он отправил дохлый экземпляр, то ли постаралась доставка (артефакт был отправлен замотанным в пару слоёв плёнки), но ничего кроме того, что выше, фотик не снимает и не реагирует ни на нажатие кнопок, ни на постукивание об стену.
Вот видео, где более детально демонстрируются внутренности.
❯ Как он в плане съёмки?
Разумеется, не мог не попробовать его по основному назначению.
Конечно, сейчас такие мыльницы давно устарели, однако всё ещё могут использоваться для попытки передать дух двухтысячных (и, если подобрать подходящую обстановку, это вполне получится) или для антуражных хипстерских фотографий в ретро-стиле.
❯ Запускаем софт
Ну что же, перейдём к опытам.
Первым делом понадобится карта памяти Compact Flash любого поддерживаемого объёма. Её надо отформатировать в ФС FAT32.
Теперь в корне карты создаём папку DC97, а в ней папку MISC. Туда-то мы и будем записывать наши приложения.
Каждое приложение состоит из экзешника и одноимённого *.ini-файла. Он нужен для того, чтобы фотик опознал этот файл как исполняемый и отобразил его в меню. Содержимое его примерно следующее:
Canon DigitalEye executable:VERSION=0001:Battery 0.4L
Объяснить с
Размер этого файла должен составлять строго 57 байт, иначе приложение не запустится. Если ещё остаётся место, лишние байты добиваем пробелами.
Никакой модификации прошивки для запуска софта не требуется. Просто закидываем проги на карту, втыкаем её в фотоаппарат, включаем его и в режиме просмотра медиа заходим в меню.
И, если всё было сделано правильно, готовые к запуску программы отобразятся среди других пунктов.
Всего можно закинуть до четырёх приложений, если загрузить больше, другие просто не будут отображаться.
❯ Что тут есть из ПО?
Как оказалось, приложений для данных фотоаппаратов существовало много.
Вот, к примеру, индикатор заряда батареи.
А вот электронная читалка *.txt.
Для этой платформы даже были свои демки.
Из игр здесь есть тетрис и пятнашки.
❯ Память
Если открыть приложение просмотра файлов, то можно увидеть и структуру папок.
На диске A единственный экзешник CAMERA.EXE — это и есть вся локика фотоаппарата.
На диске B единственная папка DATA, где хранятся ресурсные файлы типа звуков и иконок.
Диск C не используется.
И, наконец, диск D — сама карта памяти.
❯ Сборка своего софта
На прощание немного затронем то, как и каким инструментарием были сделаны все эти проги.
Как уже упоминалось, фотик работает под управлением ROM-DOS. Так что процесс сборки мало отличается от такового для DOS на обычном ПК. Так что попробуем собрать из исходников какое-нибудь простое приложение и посмотрим, что оно вообще из себя представляет.
Первым делом качаем Borland C. В данном случае по ссылке лежит готовый архив, так что установка максимально простая: распаковываем его в папку BORLANDC на системном диске, в PATH дописываем C:\BORLANDC\BIN.
Далее запускаем BC, выбираем Options\Directories и указываем пути к папкам. Всё, со средой разработки разобрались.
Теперь очередь самой программы. Для примера взял прогу, которая выводит на экран скан-коды клавиш:
/****************************************************************************/
/* Keys flag view Canon PowerShot A70 */
/****************************************************************************/
/* Created: 1.5.2005 [BORLAND C 3.1] */
/* Last modified: 1.5.2005 [BORLAND C 3.1] */
/* Copyright (C) 2004-2005 by RayeR */
/* Contact: http://www.volny.cz/rayer */
/* Compiler: Borland C++ 3.1, disable Word Alignment, set 80186 code gen. */
/****************************************************************************/
#include "psiolib.c" // PowerShot I/O library 2.0+
DWord key;
int main(void)
{
ps_init();
ps_cls(0,0);
ps_set_pal(ps_default_palette,0);
do {
key=ps_get_key_state();
ps_gotoxy(0,0);
ps_clr_line(0,15);
ps_printf(0,14,0,"KEYFLAG: %08X h\n",key);
ps_gotoxy(0,9);
ps_printf(1,14,0,"Press [MENU] key to exit",key);
if (key!=0)
ps_delay(1000);
} while ((key&PS_KEY_MENU)==0);
return(0);
}
Для её сборки понадобится библиотека PSIOLIB (PowerShot I/O), которую надо скачать на всё той же странице чеха и закинуть в папку с исходником.
Собираем эту прогу, получаем готовый к закидыванию на флешку экзешник.
Теперь создаём одноимённый *.ini-файл, куда пишем примерно следующее:
Canon DigitalEye executable:VERSION=0001:Hello app
То, что написано после двоеточия, и есть название нашей проги в меню. Не забываем про ранее упомянутый размер файла, если его не соблюсти, то приложение запускаться не будет.
Теперь закидываем экзешник на карту памяти, втыкаем её в фотик и смотрим, что будет. Приложение должно появиться в меню.
Отлично, всё работает!
❯ Что же в итоге?
Разумеется, это далеко не всё, что можно делать с данным девайсом. Программ для него было написано намного больше. Ну и, конечно же, никто не отменял использование аппарата непосредственно для съёмки, тем более, что фотографии на него получаются весьма антуражными.
Теперь есть интерес попробовать портировать на него какую-нибудь игру с ПК. Doom запустить получится вряд ли: ресурсов у фотика маловато. Тем не менее, будет интересно поэкспериментировать с запуском какой-нибудь игры времён XT.
Такие дела.
Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.
Подключаемся к UART теперь уже Азбука N516
Сегодня забрал 12-пиновый 0.5 мм шлейф (длина 300 мм) и 4-пиновый межплатный кабель питания BLS 2.54 мм (тоже длина 300 мм). Кабель питания разрезал пополам - он идеально сел на три контакта USB-to-UART переходника, зачистил отрезанные концы, нарастил красный провод (это земля). Аккуратно надрезал шлейф на двух последних контактах, подцепился к получившимся двум полоскам двумя черными проводами - это Rx и Tx контакты.
Открыл в Putty подключение по последовательному порту (у меня COM6).
Перезагрузился в окно Putty полетели логи:
Обратите внимание на последние четыре строчки лога:
Появляется приглашение пользователя root, можно ввести и выполнить команду, но через несколько секунд консоль блокируется и ввод тоже.
Например, успел выполнить команду для вывода всех установленных в системе пакетов:
Сама система дебианоподобная с deb-пакетами (Установлен apt и dpkg).
Пользовательские приложения (CoolReader - почему-то не понял как запускать и FBReader для чтения fb2 и epub - пробовал, открываются; LoCoPDF для открытия pdf и djvu, а так же ряд других приложений) :
ii cr3 3.0.19-5+b1 e-book reader
ii fbreader 0.10.7-14 e-book reader
ii fbreader-setti 0.10.7-14 n516 specific settings
ii locopdf 0.1-20 PDF reader for e-Ink devices
ii locopdf-settin 0.1-20 PDF reader for e-Ink devices -- N516 keymap
ii madaudio 0.2-11 Audioplayer application
ii madeye 0.1-15 Image viewer for e-Ink devices
ii madeye-setting 0.1-15 Image viewer for e-Ink devices -- N516 keyma
ii madshelf 0.2.41 Bookshelf application
ii madshelf-setti 0.2.41 Bookshelf application -- N516-specific confi
Модули ядра:
ii linux-modules- 2.6.29-32 Linux kernel modules for Hanvon N516
Иксы:
ii nulldm 0.1-6 trivial X display manager
ii uuwm 0.1-10 micro-micro window manager
ii x11-common 1:7.3+14 X Window System (X.Org) infrastructure
ii xinit 1.1.1-1.ip1 X server initialisation tool
ii xkm-data-v3 1.5-4 (XKB) configuration data, compiled (Hanlin V
ii xserver-xfbdev 2:1.6.0-6 Linux framebuffer device tiny X server
Сеть:
ii dropbear 0.51-1.ip3 lightweight SSH2 server and client
ii ifupdown-scrip 0.6.7.zz.ip1 scriptss to configure network interfaces
ii netbase 4.34.ip.2 Basic TCP/IP networking system
Неожиданно, что внутри есть Dropbear - единственный вариант подключиться по ssh - это через usb -кабель (WiFi в этой книге нет).
Автозагрузку можно отключить нажав любую клавишу в окне Putty.
Появилось приглашение загрузчика и можно выполнять команды:
Просмотр переменных окружения:
Устанавливаем и сохраняем новое значение:
Продолжить загрузку можно командой boot.
Но консоль блокируется из-за засыпания процессора:
Что сейчас нужно сделать:
Разобраться с тем как отключить отключение консоли (через no_console_suspend).Посмотреть настройки сети (помнится ip был прописан в bootargs). В переменных среды указаны два адреса ipadr=192.168.111.1 и serverip=192.168.111.2. Но конкретно эти адреса могут быть использованы, насколько я понял, для сетевой загрузки. В процессе же загрузки в логе появляются ошибки связанные с сетью.Теперь консоль отключается из-за засыпания процессора - нужно разобраться с этим, но вывод команды find . был записан в лог putty - собственно из-за чего все затевалось. можно теперь пробывать подключаться к Hanvon N516.
Попробовать подключиться по ssh (по Ethernet over Usb).
Первый пункт, как мне кажется самый сложный - дальше разберемся.
Шлейф мне еще пригодится для подключения к Hanvon N516.
Жду советов и комментариев.
Донор для Hanvon N516
9 сентября пришел донор для китайца без экрана.
После подключения шлейфа и аккумулятора плата стартанула. В итоге плата и кнопки переехали в белый корпус Hanvon-а. Первая причина то, что прошивка Азбуки более функциональная (есть fbreader, coolreader для fb2 и epub, а также locopdf для pdf и djvu), ну и будет поближе к российскому пользователю, а кнопки более легко нажимаются, чем родные белые.
Версия прошивки OpenInkpot 20110625 (n516-azbooka) не обнаружилась в архиве прошивок на яндекс диске с 4pda. Было решено сделать сделать дамп.
USB_Boot.exe, который идет с прошивкой, не умеет писать данные с флешки в файл, а только в стандартный вывод, причем может выполнять чтение довольно небольших объемов данных (1-4Мб), причем пишет 16-тиричное представление, которое потом еще придется обрабатывать. Перенаправление в файл тоже не заработало - писало всего около 20 Мб.
Помогла утилита доработка USB_Boot.exe пользователя tronix286 с хабра (https://habr.com/ru/users/tronix286/) с названием Test_jz4770_usb.exe, который любезно ее предоставил в виде архива на 4.2Гб с кучей всего по процессору Ingenic JZ4740. (Ссылки из статьи 2010 года https://habr.com/ru/articles/109265/ уже не работали).
Полный дамп NAND занял порядка 50 минут.
Нужна помощь с прошивкой на Erisson
Добрый день. Нужна помощь в скачивании прошивки. Какая-то хитрая сборка в телеке Erisson (50fle17t2 TP.MS3663S.PB801 pt500gt01-3). Я уже писал, что пытался его прошить, оказалось, что прошивал не той ревизией. А как у меня, так вообще пишут, что это невозможно. Нужна учетка на сайте kenotrontv. Они денег хотят немало, я не жмот, но 5 тысяч я уже потратил на платы для него. Подходит вроде от Polar. https://kenotrontv.ru/files/file/7771-polar-usb-firmware-sof...
Вопрос: жив катализатор или мертв, реально ли определить по видео с эндоскопа и показаниям лямб?
Собственно его наличие уже вызвало удивление, так как машине уже 17 лет Fiat Albea 1,4 77 л.с. родной пробег 228т. Зачем туда вообще полезли написано в предыдущем посту, но поясню по диагностике увидели коррекцию топлива кратковременную и долговременную от - 100% до +100%, та и по машине видно, что жёстко идёт перелив топлива при начале движени, оно просто уходит в трубу, оставляя черный след на асфальте в моменте.
Поехали к диагносту с вопросом удаления катализатора и прошивкой, он не сразу подключившись обнаружил, что опережение зажигания в - 59-60%, сообщил, что нужно копать в сторону меток ГРМ, даже не стал смотреть дальше.
Поехали домой, погуглили и пришли к выводу, что нужно читать диагностику в программе совершенно другой, а именно АльфаОБД.
И о чудо, действительно, там показания по опережению стали похожими на правду +6-7%, что впринципе нормально.
Вернусь к показаниям лямд
Видим, что лямда первая, скорое всего сдохла, а вторая показывает, как будто катализатор сдох. Но по эндоскопу я совершенно не понимаю почему, может забит? Либо просто первая лямда слишком врет и из-за этого смесь такая? Куплена сегодня новая лямда, правда от ваза, но идеально встанет, если фишку переделать. Но есть ли смысл?
Видео прикрепленное выше тот самый катализатор, который делает мозг. Так вот вопрос, стоит ли подкинуть другую первую лямду, либо же искать того, кто вырежет катализатор и прошьет на евро2? Хотя... Тут блок магнети марелли, уже некоторые товарищи сказали, что его лучше не трогать, есть вероятность превратить в кирпич, типа просто ставьте обманку и всё. Но почитав форумы, такое на альбеа не прокатит, будет жесткий перелив. Я не знаю, что скажите?
Как откатить прошивку Яндекс телевизора на примере HYUNDAI H-LED55EU1311
Все привет. Компания Яндекс окончательно сделала невозможным использование моего телевизора в развлекательных целях.
Проблема:
Уже с первыми обновлениями Яндекс телевизора:
Исчезла важная функция телевизора (не лаунчера), а именно смена формата изображения. (4:3, 16:9 и так далее). Мне было полезно при подключении старых игровых консолей.
Далее последовательно Яндекс:
- напихал кучу значков приложений (нажав на которое начинается установка) в раздел "приложения" в целях рекламы различных видеосервисов. Их убрать нельзя.
- напихал часть значков на главный экран. Теперь на экране всегда висят VK, IVI и прочее барахло. Их убрать или скрыть нельзя.
- включил баннер с рекламой на главном экране. Его убрать нельзя.
- в ежедневном режиме стал предлагать обновиться, даже если в данный момент работает какое-нибудь приложение поверх него вылезет окно от Яндекса.
Если обновился, то уже завтра снова появится окно с предложением обновиться
- в последних обновлениях намеренно отключил возможность отключать обновления Яндекса (тут я уже задумался том, как перепрошить телевизор)
- после включения нельзя сразу же запустить приложения, жди пока не появится окно с предложением обновиться.
- дикие тормоза из-за бесполезных функций.
Решение:
Сброс настроек до заводских не помогает, лишь удаляются мной установленные приложения.
В интернете я не нашел отдельного гайда как перепрошить телевизор.
Вот шаги, по которым я сегодня прошёлся чтобы вернуть телевизор к заводской прошивке.
1. Поиск прошивки.
На 4pda, к сожалению, я не нашел. Однако в интернете есть несколько сайтов. Есть платные и бесплатные. Я нашел на forum-monitor.net.ru
Там я нашел две прошивки:
Для LCD Panel: LSC550FN11
Для LCD Panel: HV550QUBF12
2. Как узнать какая у меня LCD Panel
Узнать можно через запуск инженерного меню телевизора
3. Как запустить инженерное меню
gimini не дало верного ответа
youtube дал такой ответ: Тут в конце видео есть последовательность нажатия кнопок на пульте управления:
"меню" 1 сек., затем стрелка "влево", затем стрелка "вверх", затем стрелка "влево", затем стрелка "вверх", затем кнопка "назад".
В разделе screen model есть название lcd панели.
4. Как прошивать
Теперь уже сама последовательность действий при прошивке. Тут в интернете уже много информации и gemini не ошибается.
Вот его инструкция:
Подготовить флешку:
Нужен накопитель небольшого объема (желательно до 4–8 ГБ), отформатированный в файловую систему FAT32.
Файл прошивки копируется строго в корень флешки.
Как запускается процесс прошивки (отката):
Полностью отключите телевизор от розетки. Вставьте подготовленную USB-флешку в разъем ТВ.
Нажмите и удерживайте физическую кнопку включения на корпусе телевизора (не на пульте).
Не отпуская кнопку, воткните вилку телевизора обратно в розетку.
Держите кнопку нажатой около 10–15 секунд, пока на экране не начнется автоматический процесс обновления (обычно появляется шкала прогресса или надпись «Upgrading...» на синем/сером фоне).
После этого кнопку можно отпускать.
У меня все получилось. Теперь я избавился от значков и рекламы Яндекса и вернул функции телевизора, пропавшие после обновлений.
5. Как отключить обновления Яндекса
Меню > Настройки устройства > Приложения > все приложения > Листаем в самый низ списка > Жмем "Показывать системные приложения" > Ищем в списке приложение "Updater" > Жмем на него > Жмем кнопку "Выключить"
































































