Бокс на Dbox, или Даешь Linux! (1)

Все что касается Nokia DBOX II

Модераторы: Administrator, KOSTEY, boom, suen, Официальный представитель, Модераторы

Аватара пользователя
Administrator
Сообщения: 159991
Зарегистрирован: 27 июн 2011 19:11
Пол: Мужской
Зодиак:: Овен
Страна:: Украина
Имя: Роман
Мой телевизор :: BRAVIS LED-39G5000 + T2 , BRAVIS LED-1697 bleck, Liberton D-LED 3225 ABHDR,
Мой ресивер:: STRONG 4450, Gi HD Mini, Trimax TR-2012HD plus (Т2), Beelink W95 (2Гб/16Гб), X96 X4 (905X4/2GB/16GB)
Мои спутники:: 4°W,5°E,13°E - ( Два штука ) + 36°E KУ
Благодарил (а): 1832 раза
Поблагодарили: 6462 раза

Бокс на Dbox, или Даешь Linux! (1)

Введение
Кто такой Dbox
Dbox — приёмник программ цифрового телевидения. Существует как для кабельных сетей, так и для спутникового вещания. Подключается к телевизору через кабель SCART. Я сам ещё ни разу не сталкивался со спутниковыми боксами, но говорят, что они существуют. Просто для спутникового телевидения есть масса других хороших приёмников. "Наш" народ знаком с Dboxами в первую очередь благодаря платному каналу НТВi (теперь RTVi) в сетях от Deutsche Telekom.

Существуют две модели Dboxа — первая и вторая. Так вот, речь в этой статье пойдёт именно о второй модели, так как она и перешивается под Linux. У всех соотечественников, кого я знаю, именно эти модели Dboxа, так как они шли в своё время вместе с контрактом на НТВi. Распознать, какая модель перед вами, очень легко: у второй модели — два слота для карточек, у первой же — один.

Внутреннее устройство Dboxа очень хорошо, на мой взгляд, описано в статье "Tux-Tv" в журнале "c't", номер 26 от 2002 года. Вообще, статья очень занимательная, советую почитать.

Кто такой Linux
Linux — операционная система на базе UNIX, разработанная финном Линусом Торвальдсом около 13-ти лет тому назад. Основным преимуществом перед другими ОС является свободный доступ к файлам источника, что позволяет разработчикам составлять ОС, которая подходила бы под данное железо. [Например, у меня на работе — микросистема из процессора StrongARM, 64 мегабайта памяти и 16 мегабайт памяти flash. Поэтому ни о какой дистрибуции SuSe на семи КД и речи быть не может. Зато можно самому подогнать конфигурацию под имеющуюся аппаратуру и создать свой кёрнел Linux. То же самое сделали и создатели проекта Dboxа.] В настоящее время, помимо ПК, используется в карманных органайзерах. Стабильность, гибкость и открытый код побудили разработчиков создать ОС специально для Dboxа на базе Linux.

А зачем?
Сразу оговорюсь, что это вопрос, на который тяжело дать однозначный ответ. Пусть каждый решает для себя сам, нужно ему это или нет. Для меня лично был важен сам процесс, так как я на работе, кроме всего прочего, занимаюсь составлением и заменой Linux kernel для интегрированных микроэлектронных систем. Просто было очень интересно сделать это самому. Результат как таковой интересовал меня чисто технически. Хотя, не скрою, сейчас всё удобнее, быстрее и комфортнее. Перечислю вкратце то, что понравилось лично мне (речь идёт о прошивке 1.1.6 от 30 октября 2002 года):

Быстрый "холодный старт" (35 секунд, специально замерял)
Наличие видеотекста (очень быстрый поиск страниц)
Возможность настраивать цвета панелей и размеры шрифтов
Подстройка яркости и контраста жидкокристаллического дисплея
Возможность записывать видео и аудиопоток через сеть на жёсткий диск ПК
Возможность просмотра каналов на экране ПК (очень удобно, если телевизор занят)
Возможность менять загрузочную картинку как для экрана, так и для жидкокристаллического дисплея
Самое главное для меня лично: возможность иметь дело с нормальной ОС, которая открывает пользователю всю свою файловую систему и допускает беспроблемную переинсталляцию
Множество других, ещё мною не опробованных, возможностей
Говорят, что на боксах от Sagem и Philips, где установлены более современные чипы демультиплексоров, чем на Nokia, можно заставить меню плавно выплывать, а также выставлять степень прозрачности панелей меню.

Что мне НЕ понравилось:

Иногда "виснет"; правда, как правило, при определённых — одних и тех же — обстоятельствах. У меня это случается в среднем один раз в неделю. Kак правило, помогает отключение и повторное включение (а ля Windows, но намного реже). Может быть, более поздние версии прошивок стабильнее, не пробовал. При отсутствии карточки в слоте на экране — просто чёрная пустота, никаких сообщений типа "вставьте карточку" не выводится. Карточка при "холодной" загрузке системы должна находиться в слоте для её распознавания. Я как-то раз наблюдал bootlog (комментарии процесса загрузки) через порт COM1, так при пустых слотах в процессе загрузки появлялись два сообщения о том, что слот карточки пуст (соответственно, слот 1 и слот 2).
Подведём итоги. Итак, если человек смотрит только 1-2 канала (если это "наш" человек, то я даже могу сказать, какие два канала), практически никогда не выключает свой Dbox полностью, то ему, наверное, вся морока с линуксом ни к чему. Для тех же, кто, несмотря на все сложности установки, всё-таки решился на перепрошивку своими силами, эта статья и написана. В конце концов, залить обратно Бетанову не представляет большого труда…
Что мне понадобилось из железа или без чего нельзя обойтись
Сетевая плата (она же Netzwerkkarte). В каждой инструкции пишут, что очень желательно использовать "настоящие" платы на 10 Мегабит, а не комбинационные 10/100. Именно такая комбинационная карта у меня на работе в шкафу без дела и валялась. Если вы хотите и дальше использовать многочисленные сетевые возможности Linux, то без сетевой платы вам не обойтись. То есть — имеет смысл купить. Я купил сетевую плату на аукционе ebay за баснословную сумму в 1 EUR. Ещё три с полтиной заплатил за пересылку и остался вполне доволен. Саму же перешивку я делал с помощью платы 3COM 905CX-TX-M, которую каждый вечер приносил с работы и каждое утро уносил обратно, пока не получил по почте свою купленную. Проблеме локальной сети во второй части этой статьи планируется посвятить целую главу.
Перекрёстный сетевой кабель (Crossover-Kabel). На начальной стадии моих экспериментов я пользовался самодельно спаянными крест-накрест разъёмами ethernet, которые выпаял из выброшенной на свалку платы. Но, опять же, если вы намереваетесь, скажем, смотреть на мониторе фильмы через сеть, то лучше не мучиться и купить сразу же нормальный цельный перекрёстный кабель. Пятиметровый кабель стоит в сетях магазинов ARLT 9 EUR, 10-метровый — 10 EUR. Если же у вас есть Hub, попробуйте с ним: может, получится, может, и нет. Я всё делал через перекрёстный кабель.
Нульмодемный кабель с разъёмами COM типа "мама". Просто неотъемлемая деталь для всех трёх методов включения режима отладки. И его я одолжил на работе, но купить его тоже проблем не составляет. Те, кто умеет обращаться с паяльником, могут сделать его сами. Например, перепаяв ненужный обычный последовательный кабель. Или взяв старую, никому не нужную компьютерную мышь с разъёмом COM и вытащив второй разъём из какой-нибудь платы старого компьютера.
Различные приспособления для отключения защиты записи памяти flash. Этот пункт сильно зависит от типа Dboxа и от того, что каждый для этого приспособит, поэтому ничего конкретного сюда не пишу.
Что мне понадобилось из программ
DboxIIBoot, он же Dbox2 Boot Manager. На эту программу даются ссылки на всех страницах, которые посвящены перешивке Dboxа под Linux. Эта программа предоставляет все нужные серверы и управляет загрузкой Dboxа.
Minflsh для метода "Debug enable ohne Kurzschluss".
Ppcboot для выкачивания image Betanova и заливки Linuxа. Можно скачать, например, у Берлиоза, называется "dbox2.rar".
Сам image Linux'a; я взял пресловутый AlexW2*BaseimageV1.6
Моральная подготовка
Тут я бы сформулировал два основных тезиса, которыми можно описать всю моральную подготовку:

Надо себе чётко представлять, что вы делаете.
Не надо чрезмерно уважать технику.
Отсюда можно сделать следующие выводы: требуется довольно серьёзная теоретическая подготовка. Во всяком случае, мне понадобилась. Я прочитал штук пять различных инструкций (они друг друга в некоторых вопросах дополняют), пока не решился на практическую часть. Тут, как нигде, важно семь раз отмерить, прежде чем один раз отрезать. Если вы себе не доверяете, существует достаточно обширное предложение перепрошивки от различных фирм и частных лиц. Да и весь ebay завален уже готовыми перепрошитыми боксами, если вы хотите себе новый Dbox.

Сам процесс
Откроем чёрный ящик…
Каждый, кто пытался открыть корпус Dboxа, сталкивался с "проблемой боковых шурупов". Шурупы на задней панели откручиваются обычной насадкой типа Torx (в форме звезды). А вот боковые шурупы были сделаны явно для того, чтобы усложнить "неавторизированному персоналу" доступ к внутренностям чёрного ящика. Согласен, насадки с таким вырезом можно без проблем купить по каталогам, но они продаются очень часто набором, да и зачем покупать инструмент, который понадобится один раз (если вы, конечно, не занимаетесь перешивкой Dboxов профессионально)? Я взял самые обычные кусачки среднего размера, которые, как правило, есть в любом хозяйстве. Главное, чтобы они были не слишком маленькими, иначе тяжело будет захватить шляпку. Так вот, я просто укусил шляпку шурупа, подведя кусачки перпендикулярно к боковой стенке корпуса. Таким образом, я слегка вогнал зубы кусачек в шляпку шурупа. Потом просто поворачивал кусачки, работая ими как отвёрткой. Где-то после трёх оборотов кусачками уже можно выкрутить шуруп, используя обычные плоскогубцы. Шурупы после таких манипуляций имеют не очень привлекательный вид, но на их место потом можно без проблем вкрутить самые обычные винты с такой же резьбой. Когда Dbox будет переведён в режим отладки, вскрывать его больше не понадобится. Но об этом — следующая глава.

Режим отладки — немного теории
Согласно различным инструкциям, включение режима отладки — самая важная и одновременно самая рискованная процедура во всём процессе. Не могу не согласиться. Если случайно повредить загрузчик, то, по словам многих авторов инструкций, Dbox превращается в "экстравагантную подставку для цветов". Это не совсем так. На форуме у Берлиоза можно найти ссылки на адрес фирмы, которая берётся — за соответствующую плату — заново прошить загрузчик и заодно и линукс тоже (правда, для этого надо выпаять микросхемы flash). Так что риск есть… Но если этот неприступный режим уже включён, то Dbox перестаёт быть загадочным чёрным ящиком и становится обычной электронной вычислительной машиной, пусть и с очень своеобразной областью применения. Те из читателей, кто часто имеет дело с системами UNIX, наверняка встречали обычные рабочие станции на аналогичных процессорах PowerPc.

Но вернёмся к режиму отладки. Если этот режим не активен, то загрузчик (Bootloader, по своим функциям ничем не отличающийся от BIOSа в персональном компьютере) беспрекословно загружает находящуюся в памяти flash оригинальную операционную систему, в данном случае Betaresearch. Именно это его поведение и мешает залить в Dbox ту операционную систему, которую мы хотим.

На момент написания мною этой статьи во всемирной паутине обитают три известных метода. Да, да, три, а не два, описанные в большинстве инструкций.

Метод первый, именуемый в народе "Kurzschlussmethode". При этом методе в нужный момент отключается питание микросхемы flash. [Это моё личное предположение, так как ни в одной инструкции я не нашёл, на каких потенциалах находятся в данный момент ножки микросхем, которые надо замкнуть, но из фотографии следует, что замкнуть надо пин номер 37, а в схемах Intel это пин питания схемы. Он, судя по всему, замыкается на массу и просто отключает "энергоснабжение" всей микросхемы. Естественно, получается короткое замыкание, что влечёт за собой довольно высокую силу тока на весь период замыкания. Отсюда и название метода. Повторяю, это моё личное предположение, просьба не критиковать, если я заблуждаюсь, поправьте меня, буду только благодарен.] То есть загружается только часть той ОС, которую "хочет" видеть загрузчик. Дальше в дело вступает файловая система локальной сети (то есть находящейся на ПК). Потом надо вручную выключить защиту от записи в flash и изменить тот единственный бит в загрузчике, который заставляет его загружать только определённую ОС. Это задание берёт на себя нужный скрипт (что-то типа bat-файла, но под UNIX/Linux).

Метод второй, известный как "Debug enablen ohne Kurzschluss". За инструкцию этого метода некоторые продавцы на ebay хотят целый евро, хотя один раз я видел, как одна такая инструкция ушла за 5,50 EUR. При этом всё это можно достать абсолютно бесплатно в сетях Интернета. Но я отвлёкся. Использование этого метода не подразумевает такого издевательства над блоком питания Dboxа, как при первом методе, но требуется хорошо известный в кругах "начинающих линуксоидов" файл minflsh. Под ним скрывается облегчённая и более ранняя версия Betanov'ы, естественно, снабжённая нужной "надписью" и, следовательно, запускаемая загрузчиком без ворчания. Разве что никто толком в Интернете не пишет, где этот файл взять. Тут два решения: где-нибудь скачать (если найдёте) или сделать самому. Но для этого, опять же, надо иметь уже выкачанную из Dboxа оригинальную версию Betanov'ы. Для этого, в свою очередь, сперва надо попасть в режим отладки... и мы — в заколдованном кругу. Но ведь оригинальную ОС можно взять и у кого-то другого, если этого другого, конечно, сперва отыскать. Но я опять отвлёкся. Итак, при использовании второго метода надо заставить Dbox загружать ОС не из микросхем(ы) flash, а из ПК по локальной сети (так называемый network boot). После загрузки, опять же, надо выключить защиту от записи микросхем flash. А с загрузчиком говорит по душам соответствующий скрипт, выключающий его негативное отношение к альтернативным ОС. Но и тут нельзя обойтись без отключения защиты записи микросхем(ы) памяти.

Если у вас в этом месте возникнут проблемы с локальной сетью, дождитесь второй части статьи: там я это очень подробно опишу.

Метод третий. Самый молодой и самый "не накатанный", но именно с ним я свой Dbox в режим отладки и зафутболил. Впрочем, не будем забегать вперёд. К сожалению, пока что существуют только два типа ресиверов, для которых этот метод описан и опробован (во всяком случае, так написано в инструкции). И оба этих ресивера принадлежат производителю Nokia. Этот метод, как и первый, требует хирургических вмешательств во внутренности Dboxа, но он более безопасный, так как не нуждается в коротком замыкании и, самое главное, опять же — не требует пресловутого minflsh. Тут картина ещё банальнее. Загрузчику даётся время только на то, чтобы запуститься самому и инициализировать и протестировать железо, а вот ядро ОС ему уже никто загрузить не разрешает, посылая сигнал RESET на микросхему памяти в нужный момент времени. Далее надо вручную через терминал COM набором нужных команд в окне терминала включить этот злосчастный режим отладки. Набор команд тоже зависит от модели ресивера. Согласно инструкции, для ресиверов Nokia с двумя микросхемами Intel действует один набор команд, для всех остальных — другой. Но, как бонус, именно для Nokia с двумя микросхемами Intel не надо потом снимать защиту от записи, так как это также делается с помощью команд.

Режим отладки — как это делал я
Так как мне случайно удалось достать minflsh, вопрос о выборе метода не стоял. Кроме того, для начала, согласно инструкции, надо было заставить ресивер загружать ОС не из памяти flash, а по локальной сети через разъём ethernet. И вот тут я и сделал свою первую ошибку.

Ошибка первая: мне надо было сначала проверить, будет ли загрузчик посылать запрос на ОС по локальной сети (BootP-Request). Если да, то я бы сэкономил часа два. Я же сразу начал заставлять Dbox актуализировать ОС. Если верить статье из журнала "c't", то для ресиверов с двумя микросхемами flash загрузка по сети должна была функционировать и без предварительных процедур.

Для этого (актуализации системы), опять же согласно инструкции, во время появления на жидкокристаллическом дисплее надписи "STARTE BN 2.01" следует нажать и держать несколько секунд кнопку "вниз" на самом Dboxе. Я так и сделал — и, увидев на дисплее надпись "flash erase", просто отпустил кнопку "вниз". После этого подождал секунды две, ничего не делая, в то время как Dbox сам начал перезагрузку системы. Она продолжалась раза в два дольше, чем обычно. При появлении надписи "STARTE BN 2.01" я опять повторил всю манипуляцию. И уже после очередной перезагрузки система вежливо попросила меня нажать "ОК", чтобы начать актуализацию системы. Как и пишет инструкция, на четвёртом квадратике визуализирования прогресса обновления системы я выдернул вилку из розетки и заодно отключил антенный кабель и кабель SCART. Дальше в игру вступал компьютер.

Скажу сразу, что все эксперименты над Dboxом я проводил под русскоязычной версией Windows 98. Под XP у меня не было вообще никаких признаков сетевой связи. Вернее, в правом нижнем углу экрана добросовестно загорался символ двух соединённых компьютеров, но Dbox Boot Manager не подавал признаков жизни.

Тут я, ещё сам того не ведая, сделал вторую ошибку.

Вторая ошибка. Все мои попытки заставить Dbox загружаться по сети не привели ни к чему. В окне протоколирования Boot Mananager появлялась надпись "H?chstwahrscheinlich 10/100-Problem, Lest das Readme!" После пяти неудачных попыток я разозлился окончательно и решил воспользоваться третьим методом. Причину неудачи я узнал лишь потом, но не будем забегать вперёд. Сама ошибка состояла в том, что мне надо было выяснить причины "несостоявшейся связи", а не переходить в ярости к третьему методу.

Итак, мне предстояло в нужный момент замкнуть нужный контакт на массу. В моём случае это был пин #RESET микросхемы AMD [скачать документацию к этой микросхеме можно здесь]. Все инструкции советуют припаять к какому-нибудь выключателю два проводка, всё это припаять к нужным местам на плате Dboxа и в нужный момент просто привести выключатель в положение "ВКЛ". У меня никакого выключателя на примете не было, пришлось импровизировать. На работе для этих целей мной был позаимствован мостик джампера (не колпачок, а именно ножки); к каждой ножке я припаял по куску тефлонового кабеля длиной сантиметров по 30 каждый и диаметром 0,25 мм в оголённом состоянии. Кабель НЕПРЕМЕННО должен быть изолированным!!! Потом всё это я залил на месте пайки жидкой пластмассой для изоляции и для стабильности конструкции. Один из проводов я оголил сантиметра на 2-3. Второй же провод — всего на 2 миллиметра. Этот второй провод я аккуратно согнул щипцами в месте конца изоляции. Получилось что-то вроде буквы "Г" с 30-сантимеровой изолированной ножкой и 2-миллиметровым козырьком. Этот козырёк я аккуратно вставил в лужёную контактную площадку (L?tauge), которая была указана на фотографии в инструкции. Поскольку диаметр отверстия тоже был примерно 0,25 миллиметра, то проводок вошёл туда практически вплотную, что позволило мне избежать пайки. Соскребать лак с лужёной контактной площадки я не стал, так как она сквозная, а внутри лака нет. Тем более, можно неосторожно запросто соскрести не только лак, но и саму контактную площадку.

Первый провод, оголённый сантиметра на три, нужно было замкнуть на массу. Я не стал изобретать велосипед и решил последовать совету инструкции: прикрутил его к корпусу тюнера в месте шва крепления корпуса тюнера. Главное, чтобы оба кабеля не висели в воздухе и не отсоединялись при малейшем движении. Пайку в данном случае я считаю нецелесообразной, так как речь идёт не о сигнальном и не о силовом кабеле, а о способе замкнуть одноразово на одну секунду два контакта. Да и паяльника на тот момент у меня тоже под рукой не было. А как же тогда я отключал защиту от записи микросхемы flash?, спросите вы. У меня, по счастливой случайности, на месте "отсутствующего" (согласно инструкциям) джампера XH3 действительно был джампер, а не место для него. Но вернёмся к процедуре.

Перед включением розетки Dboxа питания в сеть надо нажать и держать на передней панели Dboxа кнопки "ВКЛ" и "ВВЕРХ" одновременно. Это можно сделать двумя пальцами одной руки, другой же рукой вставить вилку в розетку. (Из чего следует, что Dbox должен стоять стабильно, а розетка, например, от тройника, тоже должна быть в радиусе вытянутой руки.) А так как во время прохождения Dboxом теста POST [Power On Self Test — тест важнейших компонентов системы, таких, как динамическая память, таймер Watchdog и т. п.] как раз замыкать контакты и надо, получается, что требуется ещё одна пара рук (во всяком случае, я бы без неё не обошёлся). И поэтому я попросил жену мне помочь. Она потренировалась надевать колпачок джампера — и, как говорится, "поехали!".

Итак, наши действия подробно (исходя из того, что Dbox уже подключен через нульмодемный кабель).

Запускаю программу "DboxIIBootmanager", выставляю всё как в инструкции. Нажимаю "START". Хотя перед этим настоятельно советую проверить, правильно ли выставлены установки порта COM. (Например, у меня COM1 под Win98 воспринимается как COM3.) Для проверки нужно просто-напросто нажать "START" включить Dbox в сеть. Если на экране терминала COM появится значок тильды "~" — значит, всё в порядке. Если нет, попробуйте выставить другой порт.
Нажимаю одной рукой кнопки "ВКЛ" и "ВВЕРХ", жена стоит наготове с джампером и колпачком.
Не отпуская кнопок, вставляю вилку в розетку.
На дисплее на полсекунды загорается стандартная надпись "BETARESEARCH", и дисплей снова затухает. В этот момент я отпускаю кнопку "ВКЛ", а кнопку "ВЕРХ" оставляю нажатой.
На дисплее появляется строка с цифрами — в этот момент и надо замыкать контакты, о чём я жене громко кричу. Она надевает колпачок джампера на конструкцию и таким образом замыкает контакты.
Если Dbox продолжает загружаться (а на дисплее это выражается надписью "PREMIERE einen Moment bitte"), значит, вам не повезло, надо пробовать опять. У нас лишь со второго раза получилось.
При удачном исходе дела в первую очередь надо опять разомкнуть контакты и убрать сигнал #RESET с микросхемы.
Затем в окне терминала COM я набираю "icache" и нажимаю ENTER.
Сообщение "icache is on" говорит мне, что всё ОК, можно продолжать.
Настало время выключить защиту от записи микросхем flash, и я надеваю колпак джампера на джампер XH3.
Ввожу "setenv product? 0" [Enter]. В моём собственном понимании это означает не что иное, как "set environment variable product= 0", или "присвоить значение 0 тому биту, который отвечает за режим отладки". Этот путь подходит, согласно инструкции, ко всем ресиверам, кроме Nokia с двумя микросхемами Intel и соответствующей версией Bmon, смотрите ссылку на Дитмара. У меня он заработал на Nokia c двумя AMD. Для Intel инструкция даёт более объёмистый набор команд, зато там уже не надо выключать защиту от записи, так это делается программно.

Ошибка третья, которой я не совершил. К сожалению, следующим шагом в инструкции указано "Sie k?nnen nun die Box reseten". Но вообще не указано, а когда, собственно, надо опять включить защиту от записи. По логике вещей, именно после последней команды (той самой, которая setenv), что я и сделал. Dbox при этом оставался включённым в сеть.

После этого набрал на панели терминала COM "go 10000100", так как это было написано в инструкции [набрав boot net, можно заставить Dbox грузиться по сети, но это уже вторая часть статьи]. Тогда я ещё не знал, что Dbox уже в режиме отладки. Для этого мне надо было ещё раз перегрузиться, вынув и вставив вилку в розетку. Из этого следует, что не стоит разочаровываться, не увидев результата непосредственно после окончания процедуры. Пресловутые значки на дисплее появятся только после полной перезагрузки системы, так как они относятся к загрузчику. Если ничего не делать, система попросит вас нажать "OK", чтобы её актуализировать. Если хотите, можете подключать антенный кабель, и делать это смело — режим отладки уже включён и, пока его не выключить, он таковым и будет. С этого момента загрузчику можно подсовывать любую подходящую ОС, например, ppcboot (PowerPC boot), которая поможет нам выкачать из памяти flash бинарный файл ОС Бетанова, но это уже часть вторая.
Эти строки я добавляю уже спустя 2 месяца после публикации статьи — просто появился дополнительный опыт, которым я, естественно, хочу поделиться.

Во-первых, за это время я "перешил" еще несколько приемников, все они были от Nokia. Занимателен тот факт, что приборы с двумя чипами AMD не удавалось привлечь в режим отладки методом minflsh. При этом актуализацию системы БН отключали, как и написано, на 3-4 квадратике. Может быть, надо было попробовать на 5-9; не пробовал, поэтому не хочу распространять дезинформацию.

Во-вторых, один раз меня попросил об информационной помощи воротчанин, который столкнулся с Nokia 2*АМД, но без наличия луженой контактной площадки от пина #RESET. Для таких случаев к нужным контактам можно подобраться с обратной стороны материнской платы дбокса. Опять же — не хочу распространять дезу, советую посмотреть на форуме, проблема обсуждается довольно часто.

В-третьих, опять — НЕ на личном опыте, сталкивался с тем, что на контактах XH3 отсутствовало необходимое для вскрывания защиты от записи напряжение 9 вольт. И тут я вынужден переправить читателя на форум...

Считаю своим долгом извиниться перед читателем за такое частое перенаправление на форум, но я все равно решил написать об этих случаях: даже если и не могу дать (пока что) конкретных путей решения проблем, зато читатель будет иметь информацию о том, что такие случаи имеют место. Как только у меня появится опыт, я им поделюсь.

В-четвертых, ни один из перешитых боксов с двумя чипами INTEL не приходилось открывать, minflsh работал безукоризненно и с первой попытки. Может, просто такие дбоксы попадались... В любом случае посоветовал бы читателю сначала попробовать метод minflsh и лишь затем браться за вскрытие.
Режим отладки включён. Что дальше?
"Wenn man es geschafft hat, seine Dbox in Debug-Modus zu bringen, kann selbst ein Laie den Softwaretausch vornehmen", — такую фразу я вычитал в одной из инструкций. Это верно только в том случае, если этот самый "Laie" предварительно всё правильно выставил в установках локальной сети. Именно этому и посвящена бОльшая часть сегодняшнего повествования.

Итак, осталось, в принципе, всего ничего: выкачать из памяти flash старое ПО, извлечь из него микрокоды слотов чтения карточек и залить в память flash "главного виновника" — ОС Linux. Именно в этом же хронологическом порядке.

Загрузка по локальной сети — немного теории
Загрузка по локальной сети практически ничем не отличается от загрузки с жёсткого диска или из памяти flash. Единственное большое отличие — это то, что надо как-то указать Dbox'у, откуда он будет грузить ОС. Для общего случая загрузки по сети требуются три основных компонента:

идентификатор системы
ядро ОС
работающая файловая система
Так как Dbox уже в режиме отладки, то системная идентичность загрузчику относительно безразлична (напомню, что именно этого мы и добивались, включая режим отладки).

Начальную и самую важную часть загрузки по сети для нашего конкретного примера можно упрощённо описать так:

После короткого теста компонентов системы Dbox посылает по сети запрос "общего характера". Этот запрос посылается всем абонентам локальной сети. Так как наша локальная сеть состоит всего из двух абонентов, то запрос обязан "приземлиться" только на ПК. На терминале COM это видно в виде сообщения "transmitting BootP request via Broadcast".
Сервер BootP, реализованный и запущенный программой DboxIIBoot (если установки сети на ПК правильные), отвечает на запрос и сообщает Dbox его (или её, как вам больше нравится) адрес IP, а также и свой собственный адрес IP. Помимо этого, сервер BootP сообщает Dbox'у, какой файл Dbox должен загружать в качестве системного ядра. Весь этот процесс отображается в окне терминала сообщением "Got BOOT reply from server".
Обрадованный успеху в шаге номер 2, Dbox посылает уже конкретный запрос на загрузку файла ядра ОС. Этот запрос уже посылается серверу TFTP (trivial file transfer protocol). Под сервером в данном случае подразумеваются программы, реализующие соответствующую службу сети. Сервер TFTP отвечает на запрос и начинает посылать Dbox'у загрузочный файл, используя UDP — user datagram protocol. Если используется minflsh, то файл загрузки — это ядро Chorus OS, используемое для Betanov'ы. Если это уже Linux, то сначала загружается загрузчик Линукса PPCBoot. Если провести для упрощения аналогию с DOS/Windows, то это были бы файлы io.sys и msdos.sys.
Собственно, на этом самое главное уже проделано. PPCBoot распаковывает ядро ОС Линукс и запускает его. С это момента весь контроль над системой передаётся системному ядру (kernel).
После удачной загрузки система находит и распаковывает сжатый файл файловой системы, необходимой для дальнейшей загрузки. Все драйвера и все скрипты инициализации (в мире Windows мы бы их назвали config.sys и autoexec.bat) реализованы в виде файлов. [Линукс изначально был так устроен, что практически всё, включая системные ресурсы, реализовано в виде файлов, что и придаёт ОС Линукс очень большую степень прозрачности.] Так как загрузка всё ещё идёт по локальной сети, то и файловая система тоже черпается по сети из ПК. Всё дерево каталогов представлено в виде одного-единственного файла. Ядро ОС подсоединяет (по-немецки это красиво называют "wird gemountet") этот самый файл, используя так называемую NFS — network file system.
В правой половине окна установок DboxIIBoot как раз и выставляются файл загрузки ядра ОС (в верхнем правом углу) и файловая система (соответственно, в правом нижнем углу).

Mein Kampf c локальной сетью
Итак, как я уже писал в предыдущей части, первые попытки заставить Dbox грузиться по сети ни к чему ни привели. Я выставил вроде бы всё так, как было указано в инструкции: сетевую плату на 10 Мегабит в режим Half-duplex. Итак, мои действия в том порядке, в котором я их совершал:

Запустил DboxIIBoot. Выполнил все необходимые установки для выкачивания image Betanova.
Нажал на кнопку "Start" и включил Dbox в сеть. В окне протокола DboxIIBoot (в самом верху) увидел сообщения: "… H?chstwahrscheinlich 10/100-Problem...".
Пошёл на страничку к Дитмару и посмотрел, что там, собственно, пишут по этому поводу. По этому поводу там писали, что если я использую комбинационную сетевую плату, то она зачастую не успевает "сориентироваться", в каком режиме она работает. К тому моменту, когда она, наконец, это делает, Dbox'у уже "надоедает ждать" ответа на запрос BootP и он начинает грузить систему из памяти flash — а там у нас что? Правильно, пока что всё ещё Betanova. Несмотря на то, что после включения режима отладки Dbox при запуске требует "ОК dr?cken, um das System zu aktualisieren", система Betanova всё ещё крепко сидит в памяти flash. Даже если вам упорно доказывается, что "es wurde kein System gefunden", она там есть. У меня именно так и было, но в результате я всё равно преспокойно выкачал image Betanova.
Итак, Дитмар советовал при включении Dbox в сеть нажимать одновременно кнопки "ВКЛ" и "ВВЕРХ", втыкать вилку в розетку, ждать, пока дисплей потухнет, отпускать кнопку "ВКЛ", ждать, пока дисплей опять засветится, и отжимать "ВВЕРХ". Эта процедура побуждает Dbox выполнять полный системный тест. За это время сетевая плата успевает "сориентироваться". В окне терминала COM после теста системы появляется командная строка загрузчика. Для загрузки по сети надо набрать boot net, что я и сделал.
В окне терминала появилось следующее:


Transmitting BOOTP request via broadcast...

Got BOOT reply from server 192.168.5.1, My IP 192.168.5.2

Sending TFTP-request for file C/………… (путь и имя файла)

Sending TFTP-request for file C/…………

Sending TFTP-request for file C/…………

Sending TFTP-request for file C/…………

Sending TFTP-request for file C/…………

Sending TFTP-request for file C/…………

TFTP request not answered

Boot net failed



Далее Dbox начинал загрузку из памяти flash, что меня ни в коем случае не устраивало.

Итак, ПК отвечал на запрос BootP, но наотрез отказывался отвечать на запрос TFTP. Решение этой проблемы отняло у меня три вечера подряд. Каждый вечер я упорно садился за компьютер и пытался выяснить причины неудач. А на следующий день я задавал этот вопрос на форуме у Берлиоза. Там мне советовали отключить антивирус, VPN и Firewall. Антивирус я вообще деинсталлировал, Firewall был выключен изначально, VPN не нашёл, как ни искал. Когда я уже совсем отчаялся в положительном результате, я попробовал удалить все лишние привязки сетевой платы. Так как я имел дело с очень "крутой" дорогой (в настоящий момент — 55 EUR в сетях Arlt) платой, она при инсталляции драйвера сделала ещё целую кучу лишних привязок к ненужным протоколам. Я просто-напросто взял и отключил все привязки сетевой платы, кроме TCP/IP (TCP/IP-Anbindung). Только после этого конструкция стала подавать признаки жизни.

И лишь тогда я понял причину всех моих прежних неудач. В первую очередь для меня был важен ответ на вопрос, а почему, собственно, ПК отвечал на запрос BootP, но не отвечал на запрос TFTP. Слегка пораскинув мозгами, я вспомнил, что до этого по незнанию выставил адрес IP вручную не только в привязке TCP/IP, но и ещё в других привязках. Причём во всех — один и тот же адрес. Таки образом, BootP сообщал Dbox'у его адрес IP, а вот когда Dbox обращался уже к конкретному host по конкретному адресу, то "натыкался" на несколько разных привязок под одним и тем же адресом. Вероятность, что Dbox'у ответит именно нужный ресурс, существует, но она невелика. Кстати, один-единственный раз у меня действительно так и получилось. В одну из моих неудачных попыток ПК неожиданно ответил на запрос. Я тут же воспользовался случаем и выкачал оригинальную прошивку Betanov'ы. Факт одноразовой удачи ещё больше поверг меня тогда в замешательство. Лишь теперь я понимаю, что это была обычная вероятность 1/x, причём икс значительно больше единицы.

Итак, краткий обзор ошибок и способы их решения:

Если вообще нет никакой реакции (никакого ответа на запрос BootP) и в правом нижнем углу экрана (там, где часы) не появляется значок соединения по сети, значит, что-то не соответствует в установках сетевой платы. Её надо выставить на 10 Мбит Half Duplex.
Если соединение якобы есть, но BootP-запрос остаётся без ответа, значит, что-то не так с установкой адреса IP. Проверьте в установках привязки TCP/IP, чтобы адрес был установлен вручную и начинался на 192.168….. Я себе выставил 192.168.5.1, а для Dbox'а — 192.168.5.2. Маска subnet должна быть 255.255.255.0. DNS (Domain Name Server) тоже можно включить, но ничего не выставлять.
Если есть ответ на запрос BootP, но нет ответа на запрос TFTP — отключите все привязки, кроме привязки TCP/IP.
И вот ещё что: я использовал для всего процесса русскоязычную версию Win98. Тут меня могла бы поджидать ещё одна западня, до которой я просто не дошёл. Немецкие версии Windows для программ создают папку "Programme", в то время как русскоязычные версии папку для этих же целей называют "Program Files". Разница огромная — во втором варианте присутствует пробел в пути к файлам. Зачем я всё это рассказываю? А затем, что при инсталляции программы Dbox II Boot Manager путь инсталляции по умолчанию будет предложен именно в Program Files. Практически все инструкции настоятельно рекомендуют размещать папки с minflsh и ppcboot в корневом каталоге в директориях, в именах которых не присутствует пробелов. Правда, ни одна инструкция не пишет, почему. Ответ прост. Попробуйте запустить Linux и, открыв Shell, набрать "mkdir Programm Files" (mkdir — создать папку под Linux). Потом наберите "ll" (те, кто ещё помнит, что такое командная строка DOS, наверняка знают команду dir). Вашему взору представятся две разных папки для "Program" и для "Files". Команду "mkdir Program Files" Linux понимает НЕ как "создать папку Program Files", а как "создать папку Program и затем независимо от неё — папку Files".

Вывод из всего вышеописанного: при использовании русскоязычных Windows инсталлируйте программу DboxIIBoot (и всё остальное типа ppcboot и minflsh) в папки, путь к которым не содержит пробелов. То же касается самих прошивок.

Итак, ошибки устранены, идём дальше.

После удачной загрузки по сети я (вернее, DboxIIBoot) выгрузил прошивку Бетанова. Я сразу сохранил файл прошивки в нескольких разных партишинах разных жёстких дисков, так как файл надо хранить как зеницу ока. [Немного о выкачивании. Сам процесс запускается в действие командой cat /dev/mtd/5 > flash.img. Команда cat в Линуксе выводит содержимое файла на стандартный вывод. В большинстве случаев стандартный вывод — это консоль. Значок ">" указывает на перенаправление вывода в файл flash.img в корневой каталог. Так как этот самый корневой каталог находится на жёстком диске ПК (см. "Теория загрузки по сети"), то и перенаправление осуществляется в тот каталог, который выставлен в установках сервера NFS.] Понадобится ли он ещё для чего-нибудь, кроме извлекания микрокодов слотов чтения карточек и чипа декодера, пока сказать сложно, но сохранить его надо обязательно. 8 Мегабайт (а в сжатом виде — и того меньше) для сегодняшних дней — мелочь.
Далее, согласно инструкции, извлёк микрокоды слотов (4 файла).
Сохранил их по всем углам HDD. Это не обязательно, ведь их всегда можно извлечь из файла ОС Бетанова.
Запустил DboxIIBoot на "image flashen", выбрал файл "alexW2xBaseimageV1.6.3", нажал кнопку "Старт".
Включил Dbox методом включения вилки в розетку.
На экране выскочило окошко, предупреждающее о том, что я ещё могу одуматься и не делать всего этого — "dies ist die absolut letzte Warnung!..". Я не внял "взываниям сверху" и нажал "ОК".
Dbox загрузил по сети прошивку Linux в динамическую оперативную память DRAM. Эта процедура очень быстрая и заняла пару секунд. На экране процесс визуализировался значками "#". Затем Dbox принялся стирать память flash по секторам. У меня это были просто точки на экране. У друга с Nokia 2*Intel номер сектора отображался десятичным числом. Насчитали всего 63 сектора. Затем Dbox принялся эту же память прописывать, что заняло где-то минуту пятьдесят. Во время этой процедуры на экране просто моргает курсор. Никакой визуализации прогресса нет. Создаётся впечатление, что Dbox "висит". Но если присмотреться внимательно, видно, что на нижней панели окна есть надпись, которая гласит "Schreibe flash seit 0:23 (отсчитывает время)".
После завершения "шитья по flashу" мне было предложено перезапустить Dbox, что я и сделал.
После загрузки ядра Linux на жидкокристаллическом дисплее надо было выставить с помощью пульта дистанционного управления адрес IP Dbox'а. Я просто нажал "ОК", оставив таким образом неизменённым 192.168.5.2.
Следующим шагом было интимное предложение загрузить "per ftp cdk.cramfs nach /var/tmp und ucodes nach /var/ucodes". В качестве программы FTP я использовал Windows Commander, потому что он у меня уже был. Вот установки для соединения, которые у меня работают (пароль стандартный — dbox2):
Изображение
В поле "Titel" можно писать всё, что угодно, это только для Windows Commander. Соединение получилось не с первого раза — не знаю, почему. Пробуйте. С тех пор все FTP-соединения работают "с пол-оборота".
При удачном соединении вы всегда оказываетесь в папке /var. Поэтому достаточно зайти в папку /tmp. Перетащил туда файл сdk.crams, микрокоды (на всякий случай — все четыре файла) — в /var/ucodes.
Нажал "ОК" на дистанционке. На дисплее на секунду высветилась надпись "verifying checksum", затем "l?sсhe flash", за которой последовал "schreibe flash".
После этого мне был предложен очередной рестарт.
Первое свидание с Linux
В качестве "затравки" мне предстоял мучительный выбор между тремя имеющимися графическими оболочками — Neutrino, Enigma и Lcars. Так как я практически везде в связи с Linux непременно натыкался и на неотъемлемый термин "Neutrino", его я и решил использовать. Кроме того, про Lcars я вообще читал не очень лестные отзывы. Чтобы каждый раз не подтверждать загрузку Нейтрино, надо выставить его по умолчанию. Для этого надо нажать кнопку "dbox" на пульте, затем в меню "Einstellungen" "Diverse Einstellungen" "Neutrino automatisch starten: ein".

Думаю, нет никакой надобности писать здесь подробнейшую инструкцию о пользовании Нейтрино, тем более, что она есть в Интернете. Если вы уже дошли в своих действиях до этого места, то наверняка сумеете разобраться с управлением Нейтрино. Туда, правда, всё больше и больше добавляется новых возможностей, большинствo которых я НЕ испробовал из-за отсутствия технических предпосылок. (Например, у меня нет DSL, и, соответственно, использование Dbox в качестве прокладчика DSL-маршрута {DSL-Router} я протестировать не смог.)

Дополнительные возможности
Под дополнительными возможностями хочу кратко представить те функции, которые в систему не интегрированы по различным причинам и поэтому запускаются "извне".

Запись цифрового потока на жёсткий диск ПК. Я для этого использую WingrabZ. Файлы, конечно, получаются здоровенные (90 минут, 3,6 ГБ), но якобы их можно сжимать в другие форматы.
Вызов "домашней странички" Нейтрино. Для этого надо открыть стандартный браузер и в окне адреса набрать адрес IP Dbox'а.
Просмотр потока на мониторе ПК. Нужна программа TuxVision и Trex. Вторую я откопал только в виде шаровар на 60 дней. Не понравилось то, что нельзя увеличить экран на весь монитор. Оно и понятно — ведь поток framebuffer имеет строго фиксированный размер и в режиме онлайн его можно смотреть в том же фиксированном соотношении.
Возможность заходить в систему Dbox через соединение telnet. Я соединяюсь через программу puttytel, которая свободно распространяется в сетях WWW и довольно проста в обращении. Как и для соединения FTP, для telnet надо задать адрес IP, логин и пароль.
Возможность проигрывать всякие анимации для жидкокристаллического дисплея. Нужна программа aniplay. Для запуска нужно закачать aniplay и сами анимации, например, в /var/tmp, затем соединиться с Dbox'ом по telnet. Чтобы программы были запускаемыми, надо их таковыми объявить. Опять же — ни одна инструкция не пишет, почему. А всё потому, что при транспортировке файлов по FTP свойства запускаемых файлов "теряются по дороге" (это как-то связано с протоколом). В Линуксе свойства файлов изменяются командой "chmod +x file_name". Запускается файл тоже не как в DOS, а вот так: "./file_name". Анимации, следовательно, надо запускать "./aniplay animation.ani". После холодной перезагрузки Dbox'а все файлы из /var/tmp/ не сохраняются, так как эта директория чисто виртуальная и создаётся в динамической памяти Dbox'а, а эта память после выключения питания своего содержимого не сохраняет.
И последнее. Логотипы загрузки на телевизоре и жидкокристаллическом дисплее меняются простым копированием файлов logo-fb и logo-lcd в директорию /var/tuxbox/boot. Заменить же логотип режима радио совсем не так просто. Я недавно задал этот вопрос на форуме у Берлиоза и получил ответ, что для этого надо взять файловую систему cdk.cramfs и, используя программу Tuxbox Flash Tolls (не путать с Dbox Boot Manager), заменить нужный файл, запаковать всё обратно и опять загнать в Dbox. Этого я пока что не опробовал.
Полезные советы по Neutrino (из собственного опыта)
Очень хороший способ "образумить" Dbox, если он вдруг начинает сходить с ума, я обнаружил в одном из многочисленных FAQ'ов. Первое, что приходит на ум в таком случае, — это просто заново залить Linux. Правда, при этом невозвратимо теряются списки каналов, установки графической оболочки, логотипы загрузки и т. п. Автор идеи предлагает сохранить полностью всё содержимое памяти flash на жёсткий диск ПК. Если вдруг у Dbox'а по каким-либо причинам начинается "приступ висячества", можно просто заново залить image. Заливается всё содержимое flash без загрузчика, то есть и само ядро ОС, и файловая система со всеми установками. И вы получаете систему в том состоянии, в котором вы её выкачали. У меня такое было один раз, когда у нас выбило пробки. Dbox после этого прямо с цепи сорвался — виснул после третьего переключения канала и вообще не хотел выключаться. Многократное отключение питания ни к чему не приводило. [Тот, кто работал с Linux и по каким-то причинам сталкивался с непроизвольным выключением или сбросом ПК, знает, что при запуске процесса инициализации init система делает то, что в Windows делает Scandisk при тех же условиях, — проверяет файловую систему на наличие ошибок. В Dbox'е такого я пока что не наблюдал, поэтому подозреваю, что при этом нежелательном сбросе системы процессы закрываются неправильным образом и файлы как бы тоже не закрываются должным образом. Последующая перезагрузка не помогает, поскольку файл или системный ресурс, представленный в виде файла, остаётся повреждённым.] Поэтому, если вас устраивают все установки и система работает хорошо, сделайте "резервную копию" содержимого flash, она может ещё ой как пригодиться. Я сам уже этот метод опробовал — действительно, в результате даже поиск каналов заново делать не пришлось, система была идентична своему образу двухнедельной давности.
Самая частая причина "зависаемости" Dbox'а у меня была в пересечении внешнего и внутреннего управления системой. То есть при управлении через веб-сервер или ТuxVision и т. п.
Так как ОС Linux намного интенсивнее использует процессор, то и нагревается он, соответственно, больше. При Betanov'e Dbox, в принципе, тоже льдом не покрывался, но заваливать его со всех сторон книгами или чем-нибудь ещё я бы не стал. У моего друга Dbox стоял в относительно узкой нише и регулярно "подвисал". Теперь у него другая подставка под телевизор, там места ощутимо больше — и проблемы как не бывало.
Если почитать постинги на форуме у Берлиоза (кстати, с Булгаковым тут нет ничего общего, просто "Берилоз" подразумевает проект BerliOS), то видно, что каждый Dbox ведёт себя немножечко по-другому. Тем не менее — надеюсь, что мои советы действительно окажутся полезными.

Послесловие
Сам я результатом операции остался очень доволен. Я заполучил не только удобную ОС, но и дополнительные знания и опыт, которые, я убеждён, — самое ценное приобретение из всего процесса.

Хотелось бы высказать нескрываемое восхищение в адрес тех, кто на голом энтузиазме воплотил в жизнь проект TuxBox и продолжает над ним работать, а также тех, кто разработал методы включения режима отладки, наверняка поплатившись на начальной стадии сосбтвенными Dbox'ами за опыт, который они сделали достоянием общественности. (Хотя навязчиво напрашивается подозрение: при всей смекалке некоторые моменты нужно было просто знать. Например, команды загрузчика и содержимое его памяти для третьего метода включения режима отладки. Отсюда вывод, что без помощи работников Betaresearch, пожелавших остаться неизвестными, тут не обошлось.)

Хочется понадеяться, что проект TuxBox будет и дальше развиваться, а перепрошивка Dbox'ов будет становиться всё проще и проще. Также очень хочется верить, что планируемый Premiere World переход на другую систему кодировки не "перекроет подачу кислорода" легальным подписчикам пакета, которые используют ОС Linux на своих приёмниках. Поживём — увидим.

P.S. Надеюсь, эта статья хоть кому-то оказалась полезной...

Вернуться в «Nokia DBOX»

  • Информация