[l] В большинстве DVD плееров "китайского” производства используется протокол IR – NEC (подробнее - Описание протокола NEC ) , но некоторые брэнды могут использовать модифицированный протокол NEC или свой стандарт протокола. Вот к примеру брэнд LG в своих DVD плеерах использует свою модификацию протокола NEC – Описание протокола NEC-LG и уже к плеерам LG обычный пульт с обычным протоколам NEC не подойдет. Как мы уже знаем такие замечательные программы как MTK-Tool ( читает и пишет флэш память ) и MTKReMaker (показывает нам блоки из которых состоит прошивка и позволяет сохранять и вставлять измененные блоки) по работе с прошивками для чипов MTK[/l][l]Для работы еще нам понадобится такие программы как - MTKRemote , RCExplorer, WinHex [/l]
Расскажу все на конкретном примере. Принес знакомый домашний кинотеатр HYNDAI H-HT5108 с неисправным пультом, пульт отремонтировать не получилось ( капля внутри умерла ) , можно было купить такой же пульт, но решил приучить плеер к пульту который был у меня в наличии - ВВК модель пульта: RC019-01R ( пульт обязан иметь стандартный протокол NEC ) и заодно рассказать Вам все.
Первым делом нам нужно узнать код адреса , коды кнопок нашего пульта RC019-01R , для этого качаем программу RCExplorer - перейти на сайт программы и собираем приемник ИК ( на RCExplorer я остановился, так-так для чтения кодов достаточно и бесплатной версии ) . Запускаем её , нажимаем на кнопку Enable Record
и нажимаем кнопку на пульте ( направив пульт на фотоприемник ) . Программа нам покажет посылку –
Код адреса устройства, передаваемый нашим пультом – 0xB649 , код кнопки, которую мы нажали – 0x1A .
!!! Хочу чуть остановится на адресе устройства в программе RCExplorer . Если посмотреть на импульсы кода адреса ( 2 байта по 8 бит ) и посчитаем, то у нас получается код 0x49B6 ( начало байта считаем с младшего бита каждого , так как - Описание протокола NEC ) и так правильно будет, но программа нам показывает 0xB649 и это не правильно , программа не делит адрес на два байта , а показывает все одним по 16 бит, вот и считает она начало с младшего бита шестнадцатиразрядного значения, а это по моемому не правильно. Так что имейте в виду, если программа RCExplorer показала код адреса 0xFF00 или 0xF708, то правильнее будет представить в виде – 0x00FF или 0x08F7 И составляем таблицу каждой кнопки , вот что получилось у меня – Коды команд пульта BBK RC019-01R
Теперь читаем прошивку из нашего DVD плеера, открываем прошивку с помощью MTKReMaker и находим блок отвечающий за дистанционное управление – RC_Remote Tab
Самое первое значение - 00FB это ни что иное как адрес устройства, а все остальное это коды команд ( функции ) выполнения DVD плеера, а адрес в котором расположен данный код ни что иное как код кнопки посылаемый ПДУ. Что бы разобраться с этим подробнее , сохраним блок RC_Remote Tab и вставим его в любой HEX редактор, допустим WinHex
Временно вырезаем значение адреса устройства 00h, FBh расположенный по адресу 0x00 и 0x01. Выделяем это значение и через Edit делаем Cut и получаем –
особенность протокола NEC такова, что у него нет адресов 0x2… и 0x3… , а есть только 0x0… ,0x1... , 0x4… , 0x5… это особенность протокола NEC , так-что в WinHex представляем себе, что строка 0x20 = 0x40 , а 0x30 = 0x50 –
Рис1
Теперь подробнее. При нажатии на кнопку нашего пульта , допустим STANDBY где код кнопки = 0x1A - Коды команд пульта BBK RC019-01R, то эта кнопка обращается к адресу 0x1A ( код команды кнопки пульта = адресу блока RC_Remote Tab представленный в виде как на Рис1 ) и значение в этой ячейки 5Dh – это код выполнения функции DVD плеерам. При нажатии на кнопку MENU нашего пульта, пульт подает код - 0x53 , который обращается к адресу 0x53 и выполняет функцию в плеере , которая обозначается под кодам 3Dh.
Что бы не путаться, адрес в прошивки я буду обозначать 0x… , а данные по адресу ( в ячейках ) …h , хотя, и то и другое обозначает одно – числа в шестнадцатеричной системе счисления.
С обращением к адресам разобрались, теперь нужно разобраться какой код в ячейке соответствует кокой функции в DVD плеере. В этом нам поможет программа MTKRemote . Вставляем в нее блок RC_Remote Tab от нашей прошивки -
Index – это наши адреса к которым обращается пульт, но в десятичной системе 00d - 65d = 0x0… - 0x1... , 0x4… - 0x5
Code – это коды функции которые выполняет плеер
Name – это имя, назначение кнопки
Вот теперь мы видим и знаем, какой код в ячейке соответствует выполняемой функции в DVD. Допустим, нажимаем кнопку AUDIO на нашем пульте, пульт передает код 0x51 который обращается к адресу 0x51 на (Рис1 ) у нас стоит там 2Сh , значит при нажатии кнопки AUDIO , DVD плеер выполнит функцию DISPLEY – вывод информации о времени, в этот адрес вписываем код 28h , который и соответствует функции AUDIO и кнопка на нашем пульте AUDIO - 0x51 будет выполнять функцию 28h – AUDIO.
Хочу сказать, что коды команд функций DVD плеера из программы MTKRemote , совпадают только на дешевые плеера китайского производства, к примеру у ВВК коды функций не совпадают из этой программы. Правильные коды функций для BBK в этой таблице - Соответствие кодов блока RC_Remote Tab и функций DVD фирмы BBK
Теперь зная что к чему и для чего мы берем то что на Рис1 , старый блок RC_Remote Tab и чистим его – FF
И начинаем добавлять кнопки и функции – Кнопка на ПДУ- STANDBY = 0x1A , смотрим в таблицу и находим что STANDBY (POWER) = 5Bh – код функции. Вот по адресу 0x1A прописываем 5Bh
Кнопка на ПДУ - EJECT = 0x1B, смотрим в таблицу и находим что EJECT = 5Сh. По адресу 0x1B прописываем 5Ch
... и т.д
В конце получится
Это и есть наш практически готовый RC_Remote Tab , где коды ( адреса ) кнопок ПДУ соответствуют кодам команд функций DVD плеера.
Осталось вставить, когда-то вырезанный адрес устройства - 0x00FB и заменить его на адрес устройства нашего ПДУ = 0x49B6 , вот теперь готовый блок RC_Remote Tab под наш пульт –
Увю LG-savikdvd по какой-то причине при переходе на таблицы соответствия кодов в Вашей статье открывается нечитабельная кодировка. Возможно такое только у меня.
Попался DVD Elenberg DVDP-2445. Пульт сломан пополам, купили другой - не реботает. Посмотрел RC tab плеера, там код устройства 00FB, а пульт передаёт 00FF. Изменил FB на FF и всё заработало - коды команд совпадают. Спасибо за статью!
Спасибо!Многое стало понятно,но по какой-то причине все ссылки,ведущие на REMONT-AUD.NET,открываются просто чистыми страницами с заголовками ,а коды команд пульта ВВК-просто фото и всё
все изложенное выше относится только к DVD плеерам? Дело в том что я пытаюсь "подружить" пульт с CRT телевизором, споткнулся на том что MTKReMaker не хочет принимать прошивку и выдает сообщение "ERROR: Wrong file tipe. Not MTK Firmware .bin file." Что посоветуете?
Конечно, у ТВ совсем другая структура прошивки и конечно Ремаркер не откроет ее.
Пока я не знаю ни одной программы , которая бы умела открывать прошивку MICOM ТВ и расшифровывать для людей без специальных навыков ( знание языков программирования ).
Хочу чуть остановится на адресе устройства в программе RCExplorer . Если посмотреть на импульсы кода адреса ( 2 байта по 8 бит ) и посчитаем, то у нас получается код 0x49B6 ( начало байта считаем с младшего бита каждого , так как - Описание протокола NEC ) и так правильно будет, но программа нам показывает 0xB649 и это не правильно , программа не делит адрес на два байта , а показывает все одним по 16 бит, вот и считает она начало с младшего бита шестнадцатиразрядного значения, а это по моемому не правильно. Так что имейте в виду, если программа RCExplorer показала код адреса 0xFF00 или 0xF708, то правильнее будет представить в виде – 0x00FF или 0x08F7
LG-savikdvd, софт считает так как его научили.. и считает правильно. Т.е. от старшего бита к младшему.. Адрес на рисунке - 0xB649. Также как команда - 1A. Другое дело, что визуально адресное "слово" NEC code принято делить на Сustom code Low и Сustom code Нigh. Которые в виде байтов СUSL и СUSН забиты в некторых дампах CRT-процессоров.. Cоответственно, -младший (Low) и -старший (High), где младший байт ставится первым.. Есть ещё интересный ньюанс в кодировке адресного "слова". Если жклаешь - могу озвучить
key-s, я как бы и хотел донести , правильно , что нужно делить адрес на два бита ... Да и написал про это, что бы участникам проще было и понятнее, ведь программа Ремаркер понимает последовательность адреса именно Low , а следом High.
Quote (key-s)
Есть ещё интересный ньюанс в кодировке адресного "слова". Если жклаешь - могу озвучить
LG-savikdvd, RCExplorer считает адресное слово и слово данных - одинаково, от старшего бита к младшему. Старший - справа, младший слева. Поэтому и пишет потом адресное слово также как и датаслово, в той же последовательности байтов. Другими словами, RCExplorer декодирует данные в том виде в каком они были кодированы и переданы.. А то, -в каком виде принято представлять адресное слово и -как оно лежит в прошивке - за то и пишу..
Это просто наблюдение. Адресное слово, как ты уже говорил, состоит из 16 бит. Причем и датаслово - тоже.. Но датаслово, в NEC code, никогда не представляется двумя байтами. Потому что старшее полуслово всегда инверсно младшему. Датаслово состоит из двух полуслов, по восемь бит, которые всегда инверсны в значениях, по отношению друг к другу. В адресном слове, в полусловах - также может быть инверсия, что видно на твоих примерах: Адрес 0x49B6h столбиком в bin: 49 - 01001001 B6 - 10110110 Адрес 0x08F7h столбиком в bin: 08 - 00001000 F7 - 11110111 Или тот же 0x00FF ... -Значения полуслов инверсны. Но, в адресном слове - не всегда.. Полуслова могут быть тождественными, как 0x0E0E, или разыми 0x03AA. Поэтому и представляют адресное слово двумя байтами
Отредактировать можно так, жмем на - , а после Я в этой статье не описывал сам протокол, дал ссылку, а там уже читайте каму интересно. По поводу инверсного адреса тут есть http://wheelremote.ru/useful.shtml?ir_nec , а если адрес не инвертируется, то это уже расширенный протокол NEC. С этим протоколам как бы вопросов не возникает, вот мне однажды пришлось с протоколом от Sony_а разбираться ( симулировать ) вот там я помучился пол дня. Тут темы http://monitor.net.ru/forum/viewtopic.php?t=348404 , правда тема где мне помогли решить проблему в технофлейме сократилась ...
LG-savikdvd, благодарю. Я ссылки твои не читал. Вернее браузер мой прежний, видимо, не корректно дружил с твоим сайтом. NEC code юзал по даташитам шифраторов. Однажды встала необходимость найти сервис-команду для LG Мulтiрlех, без родного пульта.. Шифратор и команду нашел.. NEC code. Интересно просто стало за протокол. Оттуда домозговал до байтов СUSL, СUSН и их аббревиатур.. Этого нет в сети. Это байты адресного слова для процев ТМРА88хх. Т.е. слово можно подобрать под нужный пульт NEC code, прямо в сервисе.. Спасибо
Мне однажды пришлось искать кнопку , которая на PDP LG выключает режим теста ( белый экран с версией прошивки, был у них в свое время такой глюк ) , сервисного пульта не было. Помог модуль от Din для Омега-Remo - http://remont-aud.net/_fr/213/8502429.jpg где вставляешь значение адреса, а дальше пошел нажимать на кнопочки, программа выдает посылки с одним адресом и разными кодами команд. Данные кнопки были быстро найдены
подскажите, mk tools работает под 7 виндой? (если уже где-то писали, то поиск не дал результат.) говориТ устройство не подключено. если не работает, то работает ли из-под лив сд?
кажется разобрался , но почему-то когда кидаешь блок RC_Remote Tab из родной прошивки в программу MTKRemote она не определяет коды команд ( ДВД Rolsen rdv-4004 )