We need to go deeper

Приключения с прошивкой мотороллы достигают невиданного размаха.

— Перекомпилирован dosbox с поддержкой отладочного вывода последовательно порта. Увидел, какие байты пытается отослать программа. С тем, что я вижу на логическом анализаторе, не соотносится никак. Следовательно проблема в нестандартном битрейте.

— Изучены внутренности досбокса, на предмет того как он инициализирует порты. Стало понятно, что досбокс инициализирует порты используя только стандартные битрейты, используя классические функции tc*. В недрах интернета я нашел упоминание что нестандартный битрейт может быть применен классическими функциями лишь для FTDI чипов. Что конечно странно. Ибо нестандартная скорость не применяется даже для аппаратного RS-232. Плюс у людей шьется через аппаратный последовательный порт, а у меня нет. По итогу я принял решение переписать код досбокса, на использование расширенного интерфейса конфигурации порта, используя ioctl запросы TCGETS2 и TCSETS2 для termios2.

В процессе переписывания натолкнулся на дичь. Запрашиваю конфигурацию порта с помощью TCGETS2 в dosbox — получаю в ответ ошибку. Делаю то же запрос в своем приложении — все отлично читается. По итогу ковыряния с gdb, выяснилось что при запросах из досбокс и моего приложения, адреса регистра TCGETS2 разные! Что это за ересь я пока не понимаю.

Прошивка Motorola GM300. Групповое фото фейлов.

Вот так выглядят попытки прошить две мои мотороллы.

  • Прошивалка для COM порта на транзисторах.
  • Прошивалка на буферной микросхеме на COM.
  • USB to UART TTL на китайской (судя по цене) FT232RL
  • Переходник USB to UART TTL на соплях, и оригинальной FT232RL
  • Моя отладочная плата для Atmega8, с оригинальной FT232RL
  • USB to TTL на CH430 c диодиком. Чисто по-приколу

Судя по тому, что я нарыл, те записи в консоль, которые выводил dosbox, имеют смысл. Вот тут пишут что для прошивки была выбрана оригинальная микросхема от FTDI, по причине того что старые рации требуют нестандартных скоростей, таких как 952 bps или 7680 bps. И что большая часть переходников, включая оригинальные PL2303 не работают. И лишь FTDI FT232RL аккуратно эмулирует все возможности чипа последовательного порта компьютера.

Попытки прошивки я выполнил и под Linux, и под Windows. Без результата.
Я даже попробовал виндовую бесплатную утилиту Radio Doctor. Но и она не смогла обнаружить рацию.

Значимые отличия были при попытке прошивки через железный COM под виндой. Досбокс потоком ругался на «framing error». При использовании оригинальной FT232RL под виндой, жалоб dosbox на частоту 952 bps замечено небыло, но было единичное ругание на невозможность установить скорость 9600.
Под линуксом даже с оригинальной FT232RL досбокс писал ошибку установки скорости в 952 bps.
Так же пытался принудить железный COM под линуксом задействовать частоту 952 bps принудительно выставив делитель частоты в 121 при помощи утилиты setserial

$ setserial -a /dev/ttyS0
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
Baud_base: 115200, close_delay: 50, divisor: 0
closing_wait: 3000
Flags: spd_normal skip_test

$ setserial /dev/ttyS0 divisor 121

Увы это тоже эффекта не возымело. Често говоря у меня заканчиваются идеи, что можно еще можно проверить. Боюсь придется вылезать и своей берлоги, и связываться с нижегородским обществом радиолюбителей, ибо я более чем уверен что там точно есть владельцы таких моторолл 🙂


Новая Motorola GM300

Сегодня забрал еще одну рацию в состоянии «все работает».

В комплекте и тангента была, и родные заглушки/перемычки сзади были. Но! Она тоже не шьется!!!

Отрицательный результат, тоже результат. И теоретически у меня на руках 2 рабочие рации. И очень вероятно, где-то с прошивкой косячу я. Осталось только понять где. Меня очень сильно смущают сообщения при старте dosbox «Desired serial mode not supported (952,7,e,1)». Они означают что идет попытка инициализировать последовательный порт на скорости 952 бод/с. Что вообще выглядит нестандартной скоростью, на грани глюка. В мануалах под винду, народ руками выставляет порту скорость 2400 бод/с, и я рискну предположить, что это и должна быть скорость порта, на которой идет общение с MCU рации.

Очень сильно бы помог дамп работы при помощи логического анализатора, дабы понять, какая там актуальная скорость. Но чего нет, того нет. Копание продолжается.

Насилуем труп. Продолжение

Распотрошил топленую Мотороллу GM300 опять. По схеме дошел от разъема тангенты до ноги микроконтроллера. На ноге контроллера передаваемые данные от компьютера присутсвуют. Ответа нет. Печалька. Причем станция включается, пиликает и даже вроде работает. Т.е. микроконтроллер жив. Но не отвечает.
Буду ждать вторую станцию.

Итоги на начало года

Хрен его знает зачем, но захотелось зафиксировать некую контрольную точку в своем бложике (ибо нахрена он нужен?)

На «Мешке» за тысячу рублей куплена рация Motorola GM300 в состоянии «как есть, не проверял, вроде включается».
Рация ко мне приехала. Не включается. Просто отлично. Но слава богу это GM300, что ремонтопригодна аки Форд Т. Схемы есть, мануалы есть, чини вдоволь.

Вскрытие показало что рация была когда-то подтоплена в каком-то болоте.

Но, в целом кроме ржавины на разных экранах и кварцах, платы не пострадали. Рации была прописана ванна в Трилоне-Б, затем в безводном изопропиловом спирте. Ижанит внутри был истреблен, рация собрана. И вновь не включилась. Наступило время чтения сервис-мануалов и разглядывания схем. Закончилось это тем, что на batlabs.com было найдено описание типичных проблем. Одно из которых было «рация не включается вообще». И предложением «проверьте ручку включения питания/громкости. Питание проходит через нее, и идет на logic unit». Не веря, что мне может так повезти, проверяю выход питания с ручки… И да! Сдох выключатель. Прополоскал в изопропопиле, покрутил ручку… Станция ожила!

Наступило время прошить ее.
Собрал программатор на транзисторах.

Подключаю, запускаю RSS в DosBox — не работает.
ОК. Собираю на MAX232 c буфером.

Не работает. Офигеваю, достаю шнурок USB to UART-TTL, и на обломке макетки леплю тупейший адаптер.

Не работает. Причем логический анализатор показывает, что сервисная утилита пытается отправлять данные, но ответа не получает. Загадки во тьме…
Что же по итогу этих игр? Я пошел на Авито, и купил еще одну такую рацию за 1500 рублей, но точно рабочую 🙂 Придет — буду ставить эксперименты далее.