Timeweb.Cloud

Timeweb.Cloud

Блог компании
То самое облако Наш сайт: https://timeweb.cloud/ ТГ: https://t.me/timewebru Хабр: https://habr.com/ru/companies/timeweb/articles/
На Пикабу
- рейтинг 1902 подписчика 19 подписок 358 постов 304 в горячем
Награды:
более 1000 подписчиков5 лет на Пикабу
55

Медная фотография

  • Автор текста: dlinyj

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Стремление людей запечатлеть то, что они видят, кажется, было всегда. Сначала они рисовали углём на стенах пещеры, потом красками на холстах. А в последние пару столетий роль человека свелась лишь к нажатию на кнопку. Всю остальную работу делает свет, спроецированный на фоточувствительную поверхность.

В классической фотографии такая чувствительность к свету достигается благодаря замечательным свойствам солей серебра. В альтернативном фотопроцессе под названием цианотипия — используются соли железа. Но так ли уникальны эти металлы и их соли? Возможно ли сделать фотографию, например, на поверхности меди?

В детстве я замечал, как отполированная медная фольга, приклеенная к текстолиту, достаточно быстро темнела на солнечном свету, однако потемнение не происходило на необлучённых участках. Тогда я отметил, что какая-никакая фоточувствительность у меди имеется. Потом у меня долго витала идея получения фотографии на медной пластине. А ещё, мне очень хотелось понять, почему же такой фотографии нет повсеместно?

Как-то я рассказал об этой затее strain_pulse, и мы решили попробовать ответить на этот вопрос вместе.

❯ Начало пути


Светочувствительность меди я использовал ещё в радиолюбительской практике. Достаточно было зачистить стеклотекстолит до блеска мелкой наждачной бумагой, затем положить сверху трафарет, нарисованный тушью на кальке, и оставить всё это под очень яркой лампочкой (150-200 Вт) на сутки. После этого на плате появлялся рисунок, который можно было обводить цапон-лаком.

Этот метод этот был описан в книге О.Г. Верховцев К.П. Лютов «Практические советы мастеру-любителю: Электротехника. Электроника. Материалы и их обработка.» 1987 г.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Чтобы активировать поверхность меди и ускорить процесс её фотоокисления, нужно использовать хлорное железо… В 2015 году я с успехом повторил этот опыт и подробноописал у себя в ЖЖ. Приведу две фотографии оттуда.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Экспонирование

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Полученный результат

Невооружённым взглядом видно, что получился хорошо читаемый негатив. Да, есть разводы, не очень хорошая контрастность, но вполне можно увидеть буквы и даже следы скрепок.

Именно с этого момента я точно понял, что хочу сделать настоящую живую фотографию на медной пластине и стал предпринимать множество попыток. Одной из них была покупка фотоаппарата “Любитель” и закрепление медной пластины внутри него. Но, к сожалению, ничего не получилось.

Только после того, как я объединил усилия с strain_pulse, у нас начали появляться реальные результаты.

❯ Первые опыты


Первые планы были наполеоновские: сделать из коробки и линзы простейшую фотокамеру, и на неё заснять некоторый объект.

Идея такая: мы активируем медь в хлорном железе, размещаем её внутри импровизированной фотокамеры, закрываем коробку, включаем свет, и спустя десять минут радуемся результату.

В камере главное — это объектив. Его роль играла обычная собирающая линза. А главное, у линзы — это фокусное расстояние. Зная его и прикинув, во сколько раз хотим увеличить/уменьшить изображение относительно объекта, мы по формуле тонкой линзы легко сможем определить на каком расстоянии расположить объект, и где искать изображение.

Фокусное расстояние с достаточной для нас точностью измерить довольно легко. Нужно взять простую советскую… линзу и с её помощью получить на полу резкое изображение лампы, которая висит на потолке. Расстояние от линзы до пола будет с высокой точностью равно фокусному. Это следует из всё той же формулы тонкой линзы, если пренебречь слагаемым, содержащим расстояние от линзы до потолка.

Изображение мы решили делать уменьшенным примерно в два раза, чтобы собрать больше света и снизить время экспозиции. Рассчитав все расстояния, стали по линейке и экрану определять, не ошиблись ли мы в расчётах.

Увидеть сие действо можно на фотографии ниже. Для точности, в качестве экрана следует использовать инструкцию к фрезерному станку, ну или в крайнем случае — к токарному — это пункт обязательный ;)

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Настройка оптической схемы

После этого берём подходящую коробку, и открываем кружок умелые руки, а спустя 10 минут получаем готовую камеру. На вспененный полиэтилен наклеен двухсторонний скотч, куда будет крепиться медная пластина.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Получившаяся камера

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

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Экспозиция

Через десять минут открываем дрожащими руками коробку иииии… Ничего… Вообще, ничего, никакого эффекта. То есть медь даже цвет не поменяла. Это был провал…

Время было позднее, и я поехал домой, захватив этот активированный текстолит. А дома мне пришла другая интересная мысль.

❯ Удивительное открытие


Пока я ехал в метро, мы переписывались в телеге. Пришла идея, что стоит использовать что-то более коротковолновое. Судя по цвету меди, она должна хорошо поглощать ультрафиолет.

Придя домой, я взял эту активированную медную пластину, положил на неё десять рублей, и засунул на десять минут в лампу для ноготочков.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Фольгированный текстолит с монеткой

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

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Два главных вывода из этого опыта:

  1. Главным действующим лицом в чернении меди является ультрафиолет.

  2. Пластины после активации хлорным железом медь можно хранить некоторое время в тёмном месте.

Второй вывод полезен тем, что можно заранее заготовить медные пластины и потом ставить их в фотоаппарат.

Следующий вопрос: а есть ли возможность дезактивировать медь? Была попытка помыть с мылом и мочалкой плату и затем закинуть обратно под УФ лампу.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Купание

Выводы, увы, неутешительные. Всё равно темнеет, и нужно искать другие способы закрепления.

Мы попытались повторить опыт с импровизированным фотоаппаратом и мощным УФ-фонариком.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Фотографирование в лучах УФ

К сожалению, ничего не получилось. И дело не в линзе, которая может задерживать часть УФ (но для этого диапазона это никак не влияет), просто не хватает интенсивности света.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Вы видите изображение? Я тоже не вижу…

Но, явно мы на верном пути, и нужен другой подход.

❯ Контактная фотография


Мы решили отложить непосредственное получение фотографии, и сосредоточились на методике фактического получения читаемого снимка в меди. Для этого решили использовать негативный портрет на фотопластинке, который strain_pulse делал в своём кружке. Процесс получения такой фотографии называется контактная печать.

Взяв текстолит, мы просто натёрли его ваткой, смоченной в растворе хлорного железа, тем самым активировав медь. Способ хуже, чем погружной, но для подобных опытов годится. Затем взяли стеклянный негатив, положили сверху и начали светить ультрафиолетовым фонариком.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Засвечивание меди сквозь негатив

Светили таким образом минут 10, водя фонариком по всей плоскости негатива. После снятия стекла мы не ожидали увидеть никаких особых результатов, но каково же было наше удивлёние, когда всё получилось!

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Первая удачная фотография в меди!

Даже отсканировал её на память.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Скан полученного изображения

Нам стало интересно, а только ли ультрафиолет может нам помочь, может что-то ещё бытовое и доступное может быть полезно.

❯ Можно ли использовать вспышку?


Следующий вопрос — это можно ли использовать энергию фотовспышки для этих целей?

Поскольку в результате опытов медь таки растворилась в хлорном железе, в запасах был найден лист текстолита 2 мм толщиной, метр на метр размером, и, что удивительно, фольгированный. Резать его было жалко, поэтому просто 2500 наждачной бумагой на углу было всё сошлифовано и активировано ваткой, пропитанной хлоридом железа.

После поместили туда негатив и начали “пыхать” вспышкой над негативом, до момента пока “зайчики” не стали выпрыгивать из глаз. Примерно так же, минут 10-15, с интервалами на зарядку конденсатора.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Попытка получить позитив с помощью вспышки

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

❯ Обкатка технологии


Для того, чтобы добиться повторяемости, решил всё же выработать сносный алгоритм действий. Самое ценное — это выяснить время экспозиции. Для этого я вырезал из текстолита лист по размеру негатива и натёр его наждачной бумагой 2500 зернистости до блеска.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост
Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Активацию меди производил с помощью ватки. Скажу сразу, что способ плохой и не даёт равномерность покрытия. Плюс, время взаимодействия с раствором тоже важно. Лучше всего делать полное погружение в хлорное железа, а затем промывку в воде и сушку. Да, и делать это стоит при красной лампе, ибо обычный свет также темнит медь. Но, если быстро, то можно при обычном неярком свете.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Всё готово к активации

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Кладу всё под УФ-лампу

В процессе опытов с разными промежутками от одной минуты до 15, я установил время оптимальной экспозиции — это 10 минут. В принципе его достаточно.

Ниже приведена экспозиция, спустя 5 минут. Читаемо, но видно плохо.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Ещё, очень важно — чтобы текстолит был сухим и чистым! На нём не должно оставаться солей хлорного железа, иначе при попытке смыть их, смывается всё — вместе с изображением.

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

❯ Закрепление фото


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

Первое, что мне пришло на ум — это после промывки покрыть полученную фотографию лаком, чтобы ограничить доступ кислорода и тем самым предотвратить фотоокисление. К сожалению, это не помогло: под слоем автомобильного лака из баллончика медь темнела так же интенсивно, как и без лака. Требовались более жёсткие меры.

И такое решение было найдено — это вещество бензотриазол (далее БТА). В пору процитировать википедию:

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

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Чтобы приготовить закрепляющий раствор, нужно растворить 7 граммов вещества БТА в 100 граммах медицинского спирта.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Всё готово к экспериментам по закреплению фотографии

Активацию меди мы делали правильным способом — с погружением в раствор соли при красном свете. После была промывка в дистиллированной воде и экспонирование. Затем полученный позитивный отпечаток мы погружали в 7% раствор БТА в спирте.

Есть инструкция по применению, которую мы читали на банке этого вещества. Там рекомендуется погружать на несколько часов. Но в процессе экспериментов мы выяснили, что дольше пяти минут вещество полностью снимает фотографический отпечаток с меди.

Таким образом, первый отпечаток у нас не получился и полностью был смыт самим БТА. Второй отпечаток мы погружали буквально на минуту, но всё равно контрастность снимка ушла. А если учесть снимок и так не очень контрастен, то получается совсем грустно.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Отпечаток после закрепления в БТА. В растворе лежит контрольный кусок текстолита

Чтобы не дать дальше осветляться рисунку, БТА мы немного смывали спиртом. На мой взгляд это лишнее, можно было просто обтереть салфеткой. Тем не менее способ оказался рабочим.

❯ Выводы

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Фотография в меди, через неделю лежания на подоконнике

Возможно нам не удалось окончательно установить способ фиксации изображения. Сама технология ещё требует доработки. Но факт остаётся фактом: на медь можно фотографировать! Здесь куча места для подобных опытов.

Краткая инструкция по получению снимка:

  • Все действия после активации лучше всего производить при красном свете (как с классической ЧБ фотографией).

  • Медную пластину требуется именно окунать в раствор хлорного железа, и не допускается протирать.

  • Время выдержки в растворе не менее одной минуты.

  • После раствора следует промыть в воде от соли и высушить пластину.

  • Экспозиция в УФ свете (или солнечном) не менее 10 минут. После экспонирования снимок в темноте прекрасно хранится.

  • Фиксировать стоит в растворе БТА в течение одной минуты, а после — просто насухо протирать.

Мы будем благодарны химикам, если они дадут рекомендации по фиксированию изображения и лучшей активации меди. Возможно какие-то другие рекомендации.

❯ Благодарности


Эта статья реализована в соавторстве с strain_pulse. Именно ему принадлежат многие классные идеи, которые были опробованы на практике. Выражаю благодарность девушке Софии К. за разрешение использовать негатив с её изображением для этих экспериментов и в данной статье.

  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 24
201

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Приветствую всех!
Месяц с небольшим назад я рассказывал о таком девайсе как МС6205. Тема подобных экранов меня заинтересовала, и вот ко мне в руки попал другой экземпляр, однострочный и с более простым управлением. Тем не менее, несмотря на схожий вид, внутри он устроен совершенно иначе — если в МС6205 был матричный индикатор, то тут используется панель с самосканированием. Как же оно работает и как это запустить? Давайте разбираться.

Итак, в сегодняшней статье поговорим о семействе советских текстовых индикаторов ПИУ. Узнаем, как они устроены и как работают. Попутно поговорим о текстовых газоразрядных дисплеях с самосканированием. Традиционно будет много интересного.

❯ Суть такова

Началась эта история ещё в 2022 году, когда я услышал про существование такого устройства как ПИУ-2 и немедленно захотел себе такой экземпляр. Девайс был куплен без промедления, интереса ради. Далее последовали выпившие немало моей крови попытки его подключения, которыми я наконец и решил поделиться.

ПИУ-1 и ПИУ-2 — две модели индикаторных приборов, использовавшихся в неком оборудовании (мне так и не удалось выяснить, где именно, но, по слухам, стояли такие где-то на ЖД). Оба этих девайса имеют схожую конструкцию и отличаются лишь кодовой таблицей. Так что практически всё, что будет сказано тут, применимо и к ПИУ-1.

❯ Обзор оборудования

Так уж вышло, что в моих руках побывали два ПИУ — ранней и поздней версии.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Общий вид первого экземпляра. Здесь только индикаторный модуль. Также по бокам должны были располагаться два крепёжных ушка, но у моего прибора они замяты.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

На обратной стороне разъём, клемма заземления, крепёжные винты (один из которых под пломбой) и заводская табличка. Как и практически все интересные и необычные советские приборы индикации, выпускался девайс на ровненском «Газотроне».

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Снимем кожух. Внутри металлическая рама, к которой прикручены плата, панель и разъём.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

С обратной стороны ничего интересного.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Плата. На ней вся электроника — чипы логики, память, ПЗУшка с таблицей символов и импульсный преобразователь для питания панели.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Разъём, связывающий панель с внешним миром. Почему-то очень сложно было найти какую-то информацию на этот счёт, так что оставлю тут для потомков: ответная его часть называется 2РМ30КПН32Г5В1В.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Панель представляет собой законченный модуль, соединённый с платой разъёмом МРН. Состоит он из стеклянного индикатора, рамки и платы, к которой он подключается.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Интересно то, как подключается непосредственно стеклянная колба к плате — тоненькими проволочками-волосинками, которые легко сминаются и рвутся. Для защиты от жизненных ударов щели заклеены полоской липкой ленты.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

А вот более старая панель. Внешне отличия заметны не особо…

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

С обратной стороны отличие лишь в годе выпуска — 1983. Также видно, что изолятор в разъёме на этот раз карболитовый.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Вскрываем. Внутри это совершенно иное устройство, построенное уже на двух платах. Эти платы вставляются в слоты, позволяющие при необходимости вытащить какую-либо из них без паяльника.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Первая плата — низковольтная. На ней расположена управляющая логика и ПЗУшки.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Вторая — высоковольтная. Здесь преобразователь, выдающий все необходимые для питания панели напряжения, а также транзисторные сборки, призванные управлять анодами и катодами индикатора. Интересное схемотехническое решение в виде дорожки-спиральки — явно какая-то катушка низкой индуктивности.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Шасси со снятыми платами.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Оба модуля втыкаются в расположенную на боковой стенке кросс-плату. От неё же расходятся жгуты проводов к разъёму и индикатору. К слову, о разъёме. Вместо ОНЦ здесь стоит другой разъём — 2РМ30Б32Ш5В1В. Впрочем, ответная часть к нему та же самая.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Те самые слоты.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Разъём МРН, через который подключается индикатор.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Индикатор отдельно. От рассмотренного ранее он не отличается ничем.

❯ Как работает ПИУ

Вообще, по своей структуре ПИУ во многом схож с МС6205 — здесь тоже есть преобразователь питания, генератор импульсов, знакогенератор, блок интерфейса и подобная логика. Но вот индикаторы тут стоят совершенно иные. Это так называемые газоразрядные индикаторы с самосканированием.

Вообще, если вы никогда не интересовались подобным железом, то вид матричного индикатора, способного работать всего по двенадцати проводам, уже способен заинтересовать. А уж упоминание того, что прибор этот не содержит ни единого полупроводника, и вовсе поставит в ступор обывателя.

Наиболее доходчиво о работе таких ГРИ рассказывал товарищ radiolok. Я сам узнал об этих индикаторах, посмотрев этот ролик, после чего немедленно захотел себе какой-то законченный девайс на базе такой панели. Именно им и стал ПИУ.

Принцип работы таких панелей очень схож с декатронами, а также (немного) с газоразрядным индикатором ИН-33. Помимо обычных анодов и катодов девайс имеет вспомогательные аноды (аноды сканирования). Если последовательно подавать импульсы между группой анодов сканирования и одной из групп катодов, то можно получить разряд, последовательно проходящий все столбцы индикатора. Если в момент, когда разряд сканирования горит в некотором положении (которое можно однозначно отсчитать благодаря наличию отдельно выведенного катода сброса, с которого начинается прохождение разряда по столбцам), подать импульс на анод сканирования, то в выбранной строке этого столбца загорится точка. Таким образом, для работы индикатора необходима схема сканирования, которая постоянно будет проходить по всей панели, и схема индикации, которая, зная, где сейчас находится разряд (благодаря работе от того же тактового генератора) может включать и выключать аноды индикации.

❯ В чём разница между ПИУ-1 и ПИУ-2

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

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

У ПИУ-1 она такая.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

А у ПИУ-2 — вот такая.
По просторам гуляют две документации: одна называется «ПИУ-1: паспорт, техническое описание и руководство по эксплуатации», другая — «Приборы индикаторные универсальные ПИУ-1, ПИУ-2: паспорт, техническое описание и руководство по эксплуатации». При этом они описывают по сути два совершенно разных по схемотехнике устройства. Первая рассказывает про более старую версию, имеющую внутри два слотовых модуля и кросс-плату, вторая — про поздний вариант, собранный на одной плате. Помимо этого в первой инструкции детально описаны некоторые аспекты работы устройства в синхронном и асинхронном режимах (в документации к ПИУ-2 эти моменты скромно опущены). Чтобы вам не пришлось искать эти архивы среди кучи битых, ссылку на них я дам чуть позже.

❯ Первый запуск

Итак, самое время приступить к экспериментам.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Берём ответную часть разъёма и припаиваем провода. Распиновка есть в документации.
Но, увы, при попытке что-то вывести меня ждала неудача — на экране отображался один и тот же символ. Последующие проверки показали, что в индикаторе, судя по всему, вылетела ПЗушка, так как адресный счётчик работал исправно. Я понятия не имею, где взять такую же, чем её прошить и какой прошивкой, так что разбирательства с этим индикатором я забросил, а через полгода его лежания у меня и вовсе продал.

Также именно упомянутый экземпляр успел засветиться в ролике всё того же radiolok, где на 2:37 показаны внутренности моего ПИУ. Этими фотографиями я поделился в чатике давным-давно, и вот они наконец пригодились.

❯ Подключение

Так уж вышло, что детального описания работы ПИУ практически нигде нет. Есть, конечно, документация (причём сразу в двух версиях), но на этом всё. Поэтому сейчас я расскажу о том, как же вообще работает эта штука с точки зрения программиста микроконтроллеров.

Начнём, конечно же, с разъёма. Предыдущая ответная часть ушла вместе с неисправной панелью, пришлось намутить другой. Как оказалось, за минувший год такие разъёмы в местном магазине радиодеталей кончились, пришлось купить у сборщика металла. На этот раз он уже был частью какого-то жгута (если вдруг это условное обозначение вам о чём-то говорит, напишите в комментариях).

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Разбираем разъём и выпаиваем остатки проводов. Их, разумеется, не выкидываем — ещё пригодятся.
Теперь можно перейти к распиновке самого блока. Она здесь оказалась вот такая:

  1. X8

  2. Первая строка

  3. X7

  4. Вторая строка

  5. X6

  6. Третья строка

  7. X5

  8. Четвёртая строка

  9. X4

  10. Пятая строка

  11. X3

  12. Шестая строка

  13. X2

  14. Седьмая строка

  15. X1

  16. Ничего

  17. Гашение

  18. Синхросигнал

  19. Запись/индикация

  20. Импульсы сброса

  21. Строб

  22. Ничего

  23. Сброс

  24. 5 В

  25. Управление яркостью

  26. -12,6 В

  27. Ничего

  28. Ничего

  29. Ничего

  30. Земля

  31. Ничего

  32. Масса

Для питания требуется два напряжения — +5 и -12,6 В. Взять их можно, разумеется, в компьютерном БП. Как показала практика, от -12 В он девайс тоже отлично стартует.

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

❯ Синхронный и асинхронный режим

Индикатор может работать в двух режимах — синхронном и асинхронном.
В асинхронном режиме ПИУ находится в одном из двух состояний. Когда на контакте 19 разъёма присутствует высокий уровень, управляющая схема ожидает поступления на вход данных. Когда напряжение снимается, прибор переходит в режим индикации.
В синхронном режиме контакт 19 всегда заземлён, а отображаемая информация обновляется сразу при поступлении новых данных. Именно этот режим мы и задействуем.

❯ Пишем первую программу

Памятуя о жёстких глюках неясной природы при подключении МС6205 напрямую к выводам МК, я решил и тут использовать сдвиговый регистр. Подключение, таким образом, очень простое — строб и сброс к выводам МК, X1...X8 — к Q0...Q7 регистра. В качестве управляющего девайса была взята всё та же тестовая ардуино.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Саму микросхему удалось уместить внутри разъёма.
Теперь о программе. Для начала необходимо сбросить экран (после чего он погаснет), после чего последовательно загрузить в регистр каждый символ, не забывая после этого дёргать строб. У ПИУ нет шины адреса как у МС6205, он работает по сути как обычный дисплей 1602: выставляем на шине код, после чего даём высокий уровень на строб. Для программиста единственное отличие лишь в том, что у HD44780 строб по спаду сигнала, а также есть поддержка управляющих команд, тогда как единственная команда, которую знает ПИУ, — это считать код символа с восьмибитной шины и протолкнуть его в буфер.

Прибор работает в кодировке КОИ-7, что тоже надо учитывать.
Остаётся только залить её, и, если ПИУ живой, на экране должно будет появиться примерно следующее:

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Наконец-то оно работает!

❯ Немного про ГТИ и внешний знакогенератор

У индикатора имеется возможность управления полностью извне. Оно позволяет использовать ПИУ при отсутствии возможности подключить его по штатному интерфейсу, а также если встроенный знакогенератор сдох.

Для этого индикатор обладает выводами управления строками, ГТИ и импульсов сброса.
Контакты 2, 4, 6, 8, 10, 12, 14 служат для непосредственного включения или выключения пикселей в столбце. ГТИ — генератор тактовых импульсов, от которого работает схема сканирования. В момент смены уровня этого сигнала с высокого на низкий происходит считывание данных с выводов управления строками. Контакт импульсов сброса нужен для определения начала панели — на нём появляется низкий уровень в тот момент, когда сканирующий разряд проходит «нулевой» катод.

И при попытке запустить индикатор в таком режиме можно наглядно увидеть, насколько же всё-таки слабо работает Arduino! «Медленные» digitalWrite не справляются с таким переключением, отчего изображение размазывается.

Смена «медленных» pinMode и digitalWrite на «быструю» работу с портами резко меняет ситуацию к лучшему.

❯ Управление яркостью

25 контакт разъёма — ещё один генератор импульсов, служащий для управления яркостью панели. Если подать высокий уровень на контакт 17, то индикатор погаснет. Но, само собой, если подавать на него сигнал случайной частоты и фазы, то индикатор будет мерцать. Чтобы этого не происходило, существует контакт управления яркостью: импульсы на контакт гашения подаются синхронно с таковыми на 25 выводе, а их длительность позволяет регулировать время горения столбца панели.

❯ Неожиданные глюки

В процессе опытов столкнулся с проблемой, что после прогрева девайсу плохеет — при выводе появляются фантомные символы, сброс не приводит к полному гашению экрана. Предположительно, всему виной электролиты, которые следует поменять все и полностью.

❯ Библиотека для Arduino

Я прекрасно понимаю, что большинство из заинтерсовавшихся, скорее всего, будут использовать ПИУ для сборки часов или другого подобного устройства. Специально для них я привёл все тестовые проги в нормальный вид и написал библиотеку для работы с этим прибором при помощи Arduino. Также в репозитории лежат обе версии документации, упомянутые ранее.

❯ Вот как-то так

При кажущейся простоте ПИУ оказался прибором, не менее интересным, что и МС6205.

По сравнению с цифровыми ГРИ или ВЛИ, проектов на подобных девайсах немного, но они всё же есть. На просторах удалось найти вот такой вот шикарнейший девайс. Индикатор очень круто выглядит и разбавляет уже приевшиеся проекты типа привычных «ИН-12 с синей подсветкой».

Такие дела.

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

  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 25
17

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Дисклеймер ↓

Этот материал должен был выйти в декабре 2023, прямо перед Новым годом, — и это классический пример про «лучшее враг хорошего». Сначала нам не нравилось, что мало подробностей. Потом — что их излишне много. Была версия с цитатами, но без скринов. Со скринами, но без цитат. Мы записали столько интервью с сетевиками, что сами в них запутались.

Но в итоге сегодня наша статья наконец-то выходит в свет. Из цензуры — только внимательная рука корректора. Передаем слово Максу Яковлеву.

Привет, Пикабу. Меня зовут Максим, я руковожу отделом сетевых инженеров в Таймвебе. Как вы уже поняли из заголовка, речь пойдет про наш прошлогодний DDoS. Это не стандартный постмортем, а скорее история от первого лица. Расскажу и покажу, каково это было изнутри — жить на энергетиках и пересобрать ядро сети всего за пару месяцев.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

❯ Некоторое время до


Про Таймвеб вы, скорее всего, знаете. И скорее всего — как про хостинг, работающий по модели shared, с саб-сервисами вроде регистрации доменов, конструктора сайтов и пр. Еще есть облако, выросшее из хостинга, — о нем и пойдет речь.

В 2023 мы начали потихонечку распиливать легаси-сеть хостинга и делать ее похожей на сеть IaaS-провайдера. Но в целом архитектура на момент дня Х была довольно типичной для хостинга: несколько маршрутизаторов, стопка растянутых VLAN, три транзита и пара обменников.

В хостинговом бизнесе объем каналов рассчитывается от объема общего трафика на сеть, плюс запас на случай аварий и атак, обычно не превышающий 10х от трафика в ЧНН. Отсюда выстраивается защита инфраструктуры и клиентов: оценивается максимально ожидаемая совокупная мощность атак, берется небольшой запас и подбираются механизмы противодействия, чтобы и отдельного клиента защитить, и самим при этом не упасть.

Важно понимать, что любой типичный хостинг находится под DDoS-атакой практически 24/7: хоть одного клиента в каждый момент времени да атакуют. Поэтому DDoS для нас — это даже несколько банально. За 17 лет мы повидали много чего и в принципе знаем ключевые (и не только) паттерны, откуда, что, куда и как.

❯ Добрый вечер


14 сентября, ближе к 18:00, в нас влетел очередной DDoS, с которым известно что делать. Отбили — пошли отдыхать. И не успел я допить чай, как атака повторилась, потом опять, а потом еще раз. Каждый раз интервал уменьшался, а объем нарастал.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Скриншот от StormWall

Далее для любителей краткого изложения перечислю возникшую причинно-следственную связь по инфраструктуре.

В площадку наливается больше, чем та способна переварить → роутеры перегружаются вплоть до потери сигнализации → мы через OOB блокируем атаку через RTBH/FS или переключаем сеть на сторонний центр очистки трафика → цель атаки меняется в течение пяти минут.

Из дополнительных проблем в СПб: аплинки подключены через свитчи с переподпиской, QOS или не работает, или не хватает буфера → разваливается сигнализация. Дополнительно существуют громадные растянутые VLAN, из-за чего атака на одну подсеть затрагивает огромное количество клиентов. Мониторинг и контрмеры работают слишком медленно.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Иногда приходилось расставлять приоритеты

И в остальных локациях: нет своей сети, а ЦОДы нас блочат, защищая свою инфраструктуру. Когда сеть отдается напрямую с железок дата-центра, нет не то что возможности заблокировать атаку, затруднена даже идентификация паттерна: раз — и ноды отвалились. Из доступной информации только триггер в Заббиксе. Самые печальные моменты — когда у нас сутками лежало несколько локаций целиком и наглухо. Даже аплинки наших провайдеров в дата-центрах просто говорили, что мы не готовы это фильтровать, поэтому мы вас отключаем. Как атаки прекратятся, подключим обратно.

❯ Мы накидываем план


Первое: научиться блокировать хотя бы часть атаки на уровне маршрутизаторов провайдеров. Цель — снизить воздействие на клиентов, защитить инфраструктуру. Второе: научить нашу сеть переваривать всю аплинковую емкость без спецэффектов, параллельно ее расширяя.

По железу: разобрать кучу мелких маршрутизаторов и поставить шасси, расширить каналы или пересадить их напрямую на роутеры либо убрать переподписку. Параллельно: доработать DDoS-защиту до состояния, когда мы можем блокировать атаку быстрее, чем это заметят клиенты, на которых не идет паразитный трафик.

И стратегически: построить свои сети во всех локациях. И собственную защиту.

В первую очередь отказываемся от существующей системы подавления DDoS, потому что она приносит больше вреда, чем пользы. Сетевики начинают спать по очереди, текущий flow-мониторинг меняем на семплированный Inline IPFIX с payload-ом. Таким образом не ждем, пока соберется поток, и принимаем решения за секунды. Этот шаг помог уменьшить среднее время обнаружения каждой атаки: чтобы понять, что она началась и как нужно действовать, нам сначала нужна была пара минут, чуть позже — 15 секунд, а сейчас автоматика реагирует почти мгновенно.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Рабочая обстановка

Изначально управление было ручным, чуть позже принятие решений стало автоматизированным: мониторинг научился блокировать DDoS сразу же после обнаружения. В итоге за период с 14 по 20 сентября мы заблокировали более 20 тысяч отдельных паттернов.

В это время по всем каналам — в телеге, в соцсетях, в тикетах — клиенты переживали, ругались и задавали вопросы. И я их прекрасно понимаю. Кстати, о прекрасном:

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Дорабатываем защиту: делаем ее быстрее, технологичнее, чтобы принимала максимально правильные решения. Разбираем всю старую архитектуру и избыточные куски сети — все под нагрузкой и идущими атаками и так, чтобы воздействие на клиентов было минимальным.
Примерно в это же время атакующие понимают, что мы что-то сделали, поэтому меняют паттерны. Мы стали получать мощные краткосрочные волны трафика, на которые не успевала реагировать ни наша программа, ни большинство предлагаемых на рынке защит: заливало настолько разнообразно и быстро, что наши стыки и некоторые обменники начали складывать в нас сессии по prefix-limit. В эти периоды бывало и такое:

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

❯ Строим свою сеть


Начинаем с Питера. План включал в себя апгрейд маршрутизатора с установкой дополнительных плат и подключение к различным каналам и точкам обмена трафиком. Цель — увеличить пропускную способность: нам нужно было научиться принимать трафик атак и блокировать более точечно, а не просто кидаться блекхолами и снимать префиксы. Кроме того, стало понятно, что объемы атак могут расти и нам нужно будет научиться расширять емкость более оперативно, не проходя весь цикл «найти железо → найти емкость → собрать».

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Главный роутер в СПб. На скрине MX480 в составе 2xSCBE2, 2xRE-S-2X00x6, 4xMPC7E MRATE

Обычные маршрутизаторы не всегда эффективны для такой деятельности: они обладают слишком сложным и дорогим конвейером обработки трафика, предназначенным для других задач. Исходя из этого мы решили действовать комплексно: помимо расширения каналов и увеличения портовой емкости сервисных и пограничных маршрутизаторов начали внедрять пакетные платформы на базе Juniper PTX. Они хоть и попроще, но в них много дешевых 100G/400G-портов, как раз то, что нам нужно.

Благодаря хорошим отношениям с поставщиками мы смогли быстро найти сетевое оборудование: поставка заняла всего полтора месяца. Для техники такого класса это очень быстро.

В итоге в Питере мы добили емкость по основным направлениям до 500+ гбит, а по автономке у нас сейчас суммарно около терабита. Уже через две недели после этого ситуация в СПб стабилизировалась: емкости хватало, фильтры отрабатывали оперативно. В остальных локациях сеть была арендованная: и в Казахстане, и в Европе. По этой причине параллельно с выравниванием ситуации в Питере у нас появилась новая приоритетная задача: поставить в заграничные локации собственные маршрутизаторы и дотянуться до них из Питера — тянуться решили через M9.

Девятка до сих пор крупнейшая пиринговая точка и сосредоточение телеком-инфраструктуры РФ и СНГ. Кроме основных трасс для всей России, туда же заходят каналы от СНГ — зачастую единственные.

Магистральные каналы между площадками дают несколько преимуществ:

  1. Возможность отправлять и получать трафик через любые другие стыки Таймвеба во всех странах.

  2. Возможность предоставлять клиентам дополнительные сервисы в виде каналов связи.

  3. Наше управление не развалится никогда, даже если внешние стыки в локации будут забиты под полку.

Собственно, начинаем с Казахстана. Протянули канал до девятки и пустили трафик уже через свою сеть.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

MX204 на девятке, собирает магистрали и внешние линки. Скоро заменим его 960-м и будем забивать сотками

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

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

MX104 со склада — кусочек истории телекоммуникаций

Но из-за ее громоздкости отправили 204 — и теперь в казахстанском ЦОДе у нас стоит платформа, которой хватит на целый машинный зал облака, а не на наши несколько стоек. На память осталась только фотка со стикером из аэропорта Екб:

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

К декабрю дотянулись и в Европу: теперь у нас есть узлы во Франкфурте и Амстердаме с арендованной магистральной емкостью. Там появились выходы и в интернет — через Tier-1 операторов, и на европейские обменники.

Следующий логичный шаг — перевели площадки в Амстердаме и Польше на свою сеть. Теперь нас никто не отключит в случае атак, как бонус — интернета стало больше и появились выделенные каналы для клиентских выделенных серверов, скоро будут и во всем Клауде. В итоге вы сможете не только заказать себе сервер с 10G-интернетом, но и расширить локальную сеть до любой нашей точки присутствия — с гарантированной полосой и любыми удобными вам настройками.

Раз уж пошли по локациям, то добавлю, что в этом году запустились и в Москве, в IXcellerate. Это Tier-3 с уникальной системой охлаждения по типу «холодная стена». Я там был на экскурсии — наверное, самое интересное, что я видел в России и СНГ, а поездил я немало. Пиво еще вкусное у них было — тоже плюс 🙂

Москва, кстати, у нас сразу же запустилась с нормальной архитектурой: широкие линки на стойку, 200G до девятки, масштабируемый слой агрегации. По умолчанию даем на все виртуальные серверы по гигабиту в секунду вместо 200 мегабит, на всех дедиках доступно 10G/40G по запросу. В результате, если клиентам это необходимо, мы можем дать гораздо больше емкости, чем могли бы в Петербурге еще полгода назад.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

2xQFX5120-32C в IXcellerate

❯ Почему мы не спрятались за подрядчиками


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

Решения по комплексной защите от DDoS, по сути, делятся на два вида: это готовые решения, устанавливающиеся непосредственно на сети компании, и сторонние центры очистки трафика, через которые этот самый трафик нужно пропускать. На тот момент у нас существовали собственные чистилки и был опыт постройки подобных решений. Посоветовавшись с коллегами по цеху, решили двигаться именно по такому сценарию: принимать трафик → очищать большие потоки на уровне сети, привлекая центры очистки в отдельных случаях → заниматься тонкой очисткой с помощью вендорских решений.

Важно отметить, что при использовании внутренних решений для защиты от DDoS необходима сеть, способная обрабатывать и фильтровать трафик, не затрагивая других клиентов или локации. То, что отфильтровать не удалось, должно быть направлено на системы тонкой очистки с минимальной задержкой и воздействием на чистый трафик.

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

Такое положение дел было связано с характером самого трафика и с тем, что атаки были короткими и частыми: классифицировать «чистый» трафик в подсети, состав серверов которой меняется от недели к неделе, если не чаще, — малореально. А переключить маршрутизацию за время между атаками часто и вовсе не получается: цели меняются быстрее, чем BGP-апдейты распространяются по интернету.

❯ Что сейчас


Подобные атаки прилетают, но в целом мы научились их фильтровать: чистить на уровне сетевого оборудования или деприоритизировать/блокировать клиента, если объем превышает пороги.

Работы еще много: всю эту новообразовавшуюся сеть нужно резервировать и расширять. На М9 мы взяли целую стойку и собираемся ставить шасси MX960 — с большим запасом на будущее. Оно будет выполнять роль магистральной развязки, принимать внешние стыки и выступать ядром сети дата-центров по Москве, у нас там большие планы. Не забываем и про Северную столицу: платформа PTX10003 станет ядром нового узла на Кантемировской («Радуга»), где будет перемыкать магистрали и стыки с внешними сетями, выступая частью инфраструктуры очистки трафика в Санкт-Петербурге.

Находимся на этапе тестирования с Servicepipe: будем пробовать систему уже тонкой очистки трафика — если атака на клиента не угрожает инфраструктуре, не полностью все блокировать, а принимать трафик атак на себя и отдавать клиенту уже очищенный, вплоть до L7.

Много работы будет по пирингам: думаем, что скоро мы сделаем прямые подключения к Google, AWS, Azure и другим гиперскейлерам. Хотим организовывать серьезные продуктовые преимущества для наших клиентов: если ваш продукт требует очень хорошей связности с мировыми облаками или у вас мультиклауд — мы сможем обеспечить как хорошую связность по интернету, так и выделенные линии, если потребуется.

Для выделенных серверов по части сети у нас получилось очень интересное предложение. По запросу скорости мы даем вплоть до 100—200 гигабит на сервер, так мало кто умеет. Кроме простого интернета — широкий набор сетевых решений: тут и более-менее стандартные L2/L3 VPN на MPLS, и любые манипуляции с внешней маршрутизацией. Для владельцев своих AS соберем транзит, притянем любую популярную точку обмена трафиком. Для тех, кто хочет ими стать, — поможем выпустить ASN, арендовать или купить сети, анонсировать их в мир.

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

❯ И напоследок — неудобный вопрос от маркетинга

Почему не начали делать все это раньше, а триггером стало то, что на нас пришла атака?


Расширение в целом планировалось, Таймвеб всегда делал упор на качество сети, но процесс шел постепенно. Исторически мы сфокусировались на нашем центральном хабе в СПб, а стройка в остальных локациях планировалась по мере их расширения.

А почему атаки стали триггером? Все банально. Во-первых, мы поняли, что начали расти сильно быстрее, чем планировали. Стало понятно, что нужно больше емкости, больше сервисов — и не когда-то, а сейчас. Во-вторых, появились новые угрозы, которые не отражаются стандартными средствами. В какой-то момент мы переросли «стандартные» подходы, которые мог бы использовать игрок меньшего размера, — нужно было пилить какой-то кастом или средствами сторонней компании, или самостоятельно. Мы выбрали второе.

Присоединяйтесь к нашему комьюнити в Телеграме — здесь можно общаться с сообществом, задавать вопросы руководителям, гендиректорам и фаундерам, и предлагать идеи

Показать полностью 11
22

Apple M1 — разбор с точки зрения аппаратной безопасности

Давным-давно, в далёкой-далёкой яблочной компании зародилась идея создать собственный процессор для ноутбуков. И вот, спустя годы, Apple презентовала свой десктопный процессор M1.

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

В этой статье мы сосредоточимся на разборе безопасности процессора M1 от Apple. Компания всегда уделяла значительное внимание информационной безопасности своих устройств, особенно мобильных. Это не значит, что iPhone или iPad нельзя взломать. Нет, можно, конечно, вопрос лишь в цене. Просто цена взлома iOS существенно выше, чем взлома устройств на других ОС.

Но за всё приходится платить. И пользователи Apple платят сполна. Невозможно установить стороннее приложение, кроме как из AppStore, невозможно пользоваться NFC, кроме как через ApplePay, невозможно скачивать сторонние оформления иконок, шрифтов, клавиатур и т. д. Да даже бесполезный в большинстве случаев авиарежим и AirDrop нельзя убрать из панели быстрого доступа. Фактически — это непроницаемый железный занавес, который опустился от Штеттина на Балтике до Триеста на Адриатике.

Пользователи из России уже второй год живут на устройствах, функционал которых был искусственно обрезан. Не работает NFC, нельзя установить (или обновить установленные) основные банковские приложения, Apple даже телеграмм цензурирует. Фактически, телефоны яблочной марки лишились крайне важного для повседневности функционала.

Всё же, вернёмся к Apple M1. Что это такое? Фактически, это существенно улучшенный вариант 5-нм мобильного чипа A14 Bionic, который установлен в линейке смартфонов iPhone 12 и на двух iPad. Его мощность позволила Купертино поставить его в ноутбуки — сначала в MacBook Air, а затем в MacBook Pro — аж в 3-х версиях.

Apple M1 — это не только центральный процессор (CPU), это система из множества чипов, которые находятся под одним колпаком. То есть, система на чипе (system on the chip, SoC). Если в обычных процессорах от Intel и AMD стоит множество универсальных ядер, то в M1, как у наследника энергоэффективных мобильных чипов, сильно фрагментированы ядра и, соответственно, решаемые ими задачи.

Apple М1 — это:

  • Центральный процессор CPU — главный вычислительный центр, ответственный за большинство ежедневных задач. Выполняет большинство задач компьютера и программ.

  • Графический процессор GPU — работа с графикой, видео, изображениями и игры, конечно же.

  • Блок нейронной обработки (Neural processing unit, NPU) — машинное обучение и искусственный интеллект – зона ответственности данного чипа.

  • Обработчик цифровых сигналов (digital signal processor, DSP) — сложные математические вычисления. Выполняет более сложные математические функции, чем центральный процессор, включая декомпрессию музыкальных файлов.

  • Блок обработки изображений ISP — думаю, из расшифровки понятно, зачем он нужен.

  • Кодировщик видео (Video encoder/decoder) — аналогично.

  • Блок единой памяти (Unified memory) — позволяет модулям чипа взаимодействовать максимально быстро.

  • Блок безопасности (Secure Enclave) — самое интересное для нас место, скоро перейдём к нему.

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

Децентрализация позволяет подбирать под каждую задачу отдельное ядро, не задействуя другие части чипа. Помимо внушительной мощности (M1 кладёт на лопатки всех своих синих предков) такая система позволила существенно увеличить время работы того же мака. Показатели автономности выросли на 3-4 часа экрана, очень хороший результат. Также Air стали пассивно охлаждаться — единственный их кулер был убран.

Apple M1 и устройства на нём действительно открыли новую страницу в истории микроэлектроники, можно сказать — совершили революцию. Мощные, не требующие много энергии компьютерные процессоры стали новой фишкой компании. Но давайте чуть глубже зароемся в тот компонент M1 и устройства на его основе и узреем те технологии, которые обеспечивают мощную защиту яблочным устройствам.

❯ Secure Enclave — цитадель чипа M1

Secure Enclave — не новомодное изобретение. Его встраивают в чипы Apple уже давно — с 2013 года яблочные гаджеты постепенно обзаводились этим островком безопасности. Первыми устройствами с ним были iPhone 5S и iPad Air, а уже сейчас он находится на всех без исключения гаджетах Apple. Зачем он нужен и как он работает?

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

Secure Enclave это фактически компьютер в компьютере, а именно — выделенная защищенная подсистема. Она обеспечивает защиту вашим самым сокровенным тайнам (нет, не фоткам в iCloud) — код-паролю и биометрической информации, которая хранится в отдельном хранилище. Естественно, Secure Enclave шифрует и обычные данные на накопитель, но не так, как для код-пароля и биометрии. Работает он чуть менее, чем постоянно. Вы его используете каждый день, но не замечаете этого. Как он работает?

Приведу простой пример. Есть у нас приложение “Госуслуги”. В нём – куча разной полезной информации для вас и, что самое главное, о вас. Поэтому при настройке приложения оно вам крайне рекомендует задать пароль для входа. Но чтобы не вводить пароль каждый раз, его можно дополнить биометрией —Touch ID/Face ID.

Её регистрация осуществляется при первом включении и настройке устройства пользователем. Датчики считывают вашу биометрию и отправляют её в Secure Enclave. В нём происходит обработка, шифровка и сохранение данных в выделенном хранилище в качестве шаблона. Он, кстати, не является чем-то постоянным и постоянно совершенствуется, каждое новое прикосновение пальца или изменение внешности лица учитывается в существующем шаблоне, развивая его.

Когда вы запускаете приложение, то оно просит вас провести аутентификацию. Touch ID/Face ID её проводит (заменяя ввод пароля), и вы получаете доступ к Госуслугам.

Именно в момент проведения аутентификации Secure Enclave включается в работу — сенсоры отправляют ему считанную биометрию в зашифрованном виде. Secure Enclave дешифровывает её и сверяет с шаблоном, который находится в выделенном хранилище. Если обнаружено сходство — вы получаете доступ к Госуслугам. Если нет — вас просят ввести пароль и заново пройти аутентификацию.

Концептуально безопасность Secure Enсlave построена на двух основных принципах.

Первый— изоляция Secure Enclave от основного процессора телефона. Это две параллельные системы, которые связаны между собой только защищенными каналами связи.

Второй — на Secure Enclave не хранится никакой информации о пользователе (он просто не имеет собственного хранилища). Эта система лишь контролирует поступление и извлечение информации, которая хранится в защищенном энергозависимом хранилище.

А вот как и с помощью чего происходит этот контроль я и предлагаю поговорить ниже. За основу взят материал про Secure Enclave, опубликованный на сайте службы поддержки Apple.

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

Схема Secure Enclave

Начнём с самого главного — сопроцессора процессора процессора (хе-хе). Он обеспечивает основную вычислительную мощность Secure Enclave, занимаясь управлением всех функций системы.

Его тактовая частота ниже частоты основного чипа, что позволяет блокировать атаки, которые направлены на изменение тактовой частоты процессора и его питания. Также за счёт изоляции от процессора сопроцессору нельзя повредить тем же программным обеспечением, которое может взломать центральный процессор. За счёт этих мер шанс добраться до ваших данных становится практически ничтожным.

Модуль защиты памяти. Смотрите, сам Secure Enclave работает в выделенной области DRAM-памяти (т. е. оперативке). Когда вы запускаете устройство, загрузочное ПЗУ (постоянное запоминающее устройство — энергонезависимое хранилище, как CD-диск, грубо говоря, о нём ниже) генерирует случайный кратковременный ключ защиты памяти для модуля защиты памяти, с помощью которого происходит ваша аутентификация.

Когда Secure Enclave записывает информацию в отдельный блок памяти, модуль защиты зашифровывает выделенный блок. Чтобы получить доступ к зашифрованной информации, модуль защиты должен получить необходимый тег аутентификации, и тогда модуль производит расшифровку блока. Если же тег не совпадает, МЗП передаёт Secure Enclave сообщение об ошибке и дальнейшие операции останавливаются до перезагрузки системы.

Загрузочное ПЗУ. Постоянно запоминающее устройство, где находится постоянный код, задающий аппаратный корень доверия для всего Анклава. Когда устройство включается, ПЗУ генерирует случайный кратковременный ключ, защищающий модуль защиты памяти. Также он шифрует блоки памяти, которые записывает Анклав в свою выделенную область.

Генератор истинных случайных чисел. Его задача создавать случайные криптографические ключи, которые будут использоваться при передаче данных от модуля к модулю.

Ещё одним важным элементом защиты является корневой криптографический ключ уникального идентификатора (UID). Это значение является уникальным для каждого устройства и не связано ни с какими другими ID на устройстве. Они генерируются генератором случайных чисел Secure Enclave на этапе производства, при этом процесс происходит исключительно в Анклаве. Это означает, что никто ни на каком этапе производства и продажи техники не может получить доступ к UID.

Модуль AES Secure Enclave. Это аппаратный блок, который выполняет симметричное дополнительное шифрование на основе шифра AES (один блок данных шифруется в другой посредством ключа шифрования).

Эта разработка предотвращает утечку данных на основе анализа тактовой частоты, статического и динамического анализа питания. То есть, модуль шифрует данные о базовых параметрах работы процессора в данный конкретный момент.

Ключи, используемые AES SE, не видны даже загрузочному ПЗУ Secure Enclave, хоть он и может запрашивать операции по шифровке и дешифровке данных.

Модуль AES. Ага, кроме того, что выше, существует ещё и отдельный AES модуль. Как показано на схемке ниже, он не находится в составе Secure Enclave. Он заключен между энергонезависимой изолированной флеш-памятью NAND и основной системной памятью.

В момент загрузки sepOS (операционка Secure Enclave) создаёт с помощью генератора случайных чисел случайный кратковременный ключ. AES модуль передаёт этот ключ по выделенным проводам, что ограничивает доступ к модулю одним Secure Enclave.

Этот модуль выполняет роль таможни, которая запаковывает и распаковывает ключи для Secure Enclave. Он обладает ключами для расшифровки данных Secure Enclave, но при этом он никогда не предоставляет этот ключ какому бы то ни было программному обеспечению. Его работа, опять же, представлена на схеме.

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

Акселератор открытого ключа (PKA) — это ещё один аппаратный блок, но уже внутри Secure Enclave, который выполняет криптографические операции. В отличие от модуля AES выше его шифрование — асимметрично.

Также как и AES, он защищает информацию от отслеживания по тактовым частотам процессора. Ключи шифрования видны только РКА и никому более, по аналогии, опять же, с AES.

Чтобы было более понятно различие этих двух систем, разберём разницу между симметричным (AES) и асимметричным (PKA) шифрованием. Более подробно прочитайте в этой статье на Хабре.

Симметричное шифрование в своей работе всегда использует один-единственный ключ, который известен и отправителю, и получателю. Он расшифровывает и шифрует информацию во всех сценариях работы.

Принцип простой как дверь, что даёт ему два плюса — он быстро работает и его создание не является чем-то сложным. Минус также лежит на поверхности — если ключ будет скомпрометирован, то вся информация будет известна обладателю ключа.

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

Асимметричное шифрование использует другой, более сложный принцип. Отправитель кодирует сообщение при помощи открытого ключа, который был заранее известен от получателя. Закодированное таким образом сообщение принимает адресат, но какую-то информацию он может получить, используя закрытый ключ шифрования, известный только ему.

Самый главный плюс этой системы — максимальная защищенность. Жертвуя временем, мы получаем крайне тяжелую для взлома структуру передачи информации.

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

В Secure Enclave используется оба этих принципах в схожих по своей сути задачах, но в разных модулях. Причина дублирования, в целом, очевидна — если ключ от модуля AES в Secure Enclave будет скомпрометирован, то им не получится воспользоваться для дальнейшего продвижения через модуль РКА.

Переходим к последним модулям Secure Enclave — шина I2C, защищенное энергонезависимое хранилище и защищенный нейронный модуль, который не представлен на схемах Анклава, так как его, с недавних пор, там тупо нет.

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

Шина I2C обеспечивает физическое соединение Secure Enclave с защищенным энергозависимым хранилищем с помощью двухканального соединения. Один провод отвечает за передачу данных, другой – за управление этим процессом. Само хранилище представляет собой, грубо говоря, CD-диск, на котором записана определенная информация.

Что там за информация? Там записаны корни всех ключей шифрования данных пользователей, UID, биометрия, данные Apple Pay и самое главное — значение код-пароля. Кроме того, там находится счетчик попыток входа и количество этих самых доступных попыток. По истечению этих попыток (допустим, 10 попыток на айфоне) происходит либо блокировка устройства, либо уничтожение всех данных, которые были защищены код-паролем пользователя.

То есть, в этом хранилище находятся ваши личные данные, а также ключи, которые позволяют расшифровать данные на вашем накопителе, и именно это хранилище и защищает Secure Enclave.

Защищенный нейронный модуль. Он интегрирован в Neural Engine, но связан только с Secure Enclave. На смартфонах и планшетах с Face ID модуль преобразует двумерные изображения и карты глубины лица в математические данные. А они уже по этапу отправляются через Анклав в защищенное хранилище.

После того, как мы познакомились со всеми частями Secure Enclave, я предлагаю чуть ближе рассмотреть процесс поступления и извлечения информации из защищенного хранилища. К сожалению, на сайте Apple я так и не нашёл последовательную цепочку поступления информации в защищенное энергонезависимое хранилище. Поэтому нижеследующие описание этого процесса является лишь моей догадкой, построенной на некоторых фрагментах статьи службы поддержки и здравом смысле.

Поступление информации:

  1. В момент регистрации Face ID/Touch ID датчики сканируют вашу биометрию и направляют её в зашифрованном виде в Secure Enclave.

  2. Прежде чем попасть в Анклав, данные проходят через AES-модуль, который их шифрует.

  3. Зашифрованная вне Secure Enclave биометрия проходит уже через внутреннюю симметричную шифровку аналогичного AES-модуля.

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

  5. Наконец, идёт запись шаблона биометрии на защищенное энергонезависимое хранилище.

Извлечение информации, а вернее — сверка шаблона:

  1. В момент прохождения аутентификации Face ID/Touch ID датчики сканируют вашу биометрию и направляют её в зашифрованном виде в Secure Enclave.

  2. Прежде чем попасть в Анклав, данные проходят через AES-модуль, который их шифрует.

  3. Зашифрованная вне Secure Enclave биометрия проходит уже через внутреннюю симметричную шифровку аналогичного AES-модуля. И вот здесь момент, в котором я не уверен, — либо полученная биометрия сверяется сопроцессором Secure Enclave с шаблоном между AES модулем и РКА, либо она сверяется между РКА и защищенным хранилищем. Я больше склоняюсь ко второй версии.

  4. Защищенное хранилище по запросу РКА отправляет шаблон для сверки.

  5. Если совпадения были найдены, то аутентификация считается пройденной, а полученные данные стирается за ненадобностью (кроме случаев, когда они улучшают существующий шаблон).

Шифровка обычной информации на накопитель:

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

T2 – это один из родителей M1 — по крайне мере, в сфере аппаратной безопасности.

  1. Мы нажимаем на кнопочку «Сохранить» сохраняя нашу красивую презентацию.

  2. Файл с презентацией отправляется в AES модуль вне Secure Enclave и проходит через симметричное шифрование.

  3. Для шифровки данных используется ключ из защищенного хранилища.

  4. Ваша презентация в зашифрованном виде записана на накопитель.

❯ Аппаратное отключение микрофона

Ещё одна интересная аппаратная функция защиты безопасности, про которую мне хотелось рассказать, это аппаратное отключение микрофона при закрытие крышки ноутбука. Оно защищает вас от прослушки, даже если каким-то образом был взломан сам Макбук или Айпад. Впервые функция была реализована на Макбуках с поддержкой сопроцессора Apple T2 (чип безопасности для интеловских маков). Сейчас она применяется на всех современных макбуках и айпадах компании.

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост

Схема реализации

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

После закрытия крышки или чехла проходит буквально 0,5 секунд и система отключает каналы передачи данных между микрофоном и ЦП, либо отключает один из каналов ввода микрофона, которые обеспечивают его работу. То есть, просто-напросто технически отключая микрофон от системы. Опять же, если ваше устройство было взломано — прослушать вас при закрытой книжке будет технически невозможно, так как физического контакта между микрофоном и системой нет.

❯ Резюмируя

Ну как-то так. В основе аппаратной безопасности чипа Apple M1 лежит Secure Enclave. Несмотря на кажущуюся сложность чипа, принцип его работы довольно… Понятен? Зашифрованная информация поступает в Анклав, проходит через ещё два уровня шифровки и записывается в защищенное хранилище. Для хранилища всех остальных данных применяется один уровень шифровки. Если уж совсем упрощать.

Разбирая каждый модуль отдельно, можно просто сдохнуть от количества различных терминов. Но если рассматривать общий принцип защиты информации в Secure Enclave, то можно понять, что Apple ничего сверхсложного не выдумывала.

Аппаратное отключение микрофона является пусть и небольшим, но важным штрихом ко всей картине аппаратной безопасности систем на чипе Apple M1.

Cписок источников:

Apple M1 — разбор с точки зрения аппаратной безопасности Apple, Криптография, Процессор, Электроника, Гаджеты, Техника, Timeweb, Информационная безопасность, Познавательно, Длиннопост
  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 11
55

Оживляем контроллер машиниста от ушедшего в историю электропоезда

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Приветствую всех!

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

И вот наконец в мои руки попал не просто какой-то контроллер, а очень примечательный экземпляр — от «концептуальной» электрички ЭМ2И, коих в наши дни уже не осталось.

Итак, в сегодняшней статье поговорим о том, как устроен такой контроллер и как его подключить. Традиционно будет много интересного.

❯ Суть такова


Так получилось, что ко мне в руки попал контроллер от старого электропоезда ЭМ2И. И, само собой, напрашивалось единственное верное решение — подключить его к Trainz или «Метрострою».

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

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Безусловно, кое-что всё же существует. Есть такая штука как Raildriver, которая даже нативно поддерживается в Trainz, однако в России оказалось реальнее достать настоящий контроллер, нежели её.

Немного про электропоезда ЭМ2И

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Прежде чем начать разбираться с подключением, поговорим о том, что это вообще была за электричка.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

ЭМ2И являются детищем более старых проектов — ЭМ1 и ЭМ2. Все эти поезда — глубокие модернизации куда более старых ЭР2. Серия была предназначена для эксплуатации на линии в Домодедово в качестве экспрессов.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Электропоезд обладал целым рядом нововведений — новые сцепные устройства, полупантографы, электронная система управления. Выпускались они на Московском локомотиворемонтном заводе, а запчасти для них поставляло некое ЗАО «Спецремонт».

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Модель была многообещающей — тут вам и скорость аж в сто шестьдесят километров в час, и мягкие сиденья, и салон повышенной комфортности, всё как в дорогих иномарках японских поездах.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Увы, с самого начала история этих электричек пошла не в их пользу — уже на испытаниях выяснилось, что многие характеристики не соответствовали заявленным, а в конструкции имелось немало фатальных недостатков. Эксплуатировались необычные поезда совсем недолго, в первой половине нулевых, а большую часть своего существования они стояли в депо или на базах запаса и тихонечко гнили. Проект вышел крайне неоднозначным: стоили машины очень дорого (практически как новые ЭД4М), имели небольшой срок службы (ведь ходовая часть осталась от старых ЭРок), а также были крайне ненадёжными и неудобными в ремонте. В итоге от их использования довольно быстро отказались, а в 2019-2020 годах все машины (точнее, то, что от них осталось за долгие годы стояния на открытом воздухе и постепенного разграбления вандалами) были порезаны на металлолом.

Впрочем, многие (как и я) до сих пор жалеют, что не успели прокатиться на этом неудачном, но всё же весьма интересном МВПС.

Обзор оборудования


Ну что же, переходим к нашей железке. Ко мне в руки попал контроллер машиниста КМ-4А, снятый с одного из списанных таких поездов. Скручен он был ещё много лет назад, отчего он не успел сгнить, пострадать от рук вандалов или стать собственностью охотников за драгметаллами.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

А вот и подопытный экземпляр. На нём две ручки — реверс и непосредственно управление. Также имеется тумблер.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Позиции.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Вид снизу. Видно сердце контроллера — кулачки. В нынешних электронных вагонах применяются бесконтактные контроллеры машиниста (БКМы), где вместо кулачков и контактных групп используются датчики (оптические или магнитные). Чуть позже я расскажу и про этот тип контроллеров, ну а пока что будем разбираться с нашим.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Кулачки переключают контактные группы, в качестве которых здесь используются обычные концевые микрики. Один из них почему-то не задействован, видимо, зарезервирован для другой модели или для будущего использования.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Разъём для связи девайса с внешним миром — DB37F. Закреплён он на обычном куске фанерки.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Наклейка того самого «Спецремонта».

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

А вот механизм. Дискретное перемещение ручки обеспечивается за счёт детали сложной формы, в которую упирается подпружиненный ролик. Шестерни обмазаны густой липкой смазкой.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Вдалеке видно тот самый прижимной механизм.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Нужное усилие обеспечивается двумя мощными пружинами.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

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

Кулачки


Контроллер внутри очень похож на командоаппарат.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

В самом деле, в нём имеются всё те же самые контактные элементы, которые переключаются расположенными на вращающемся валу кулачками. Разница лишь в том, что в командоаппарате вал вращается электромотором, а тут он связан с ручкой контроллера машиниста.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост
Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Вот для примера положение кулачков в разных позициях ручки.

Реверс


Начнём, наверное, с самого простого — с ручки реверса.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Для неё выделено сразу три кулачка, один из которых не используется. От оставшихся контактных групп идут четыре провода — по одной на каждое из двух «рабочих» положений.
Помимо этого ручка реверса блокирует перемещение основного вала. Когда она стоит на нуле, ручка контроллера заблокирована. В то же время нельзя переключить реверс на ходу. Достигается это за счёт использования диска с прорезью на основном валу и ролика на реверсоре. Когда вал находится в положении, отличном от нуля, ролик не может встать в прорезь, отчего реверс не переключается. При этом, когда ролик находится на своём месте, диск не может повернуться, что обеспечивает блокировку ручки контроллера.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Вот положение этих двух деталей при нулевой позиции реверса.

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

А вот — когда включён реверс, а ручка повёрнута на ход или тормоз.

Распиновка


Чтобы разобраться с работой самого контроллера, пришлось выяснить распиновку, благо проблем с её определением не возникло. Она здесь оказалась вот такая:

  1. Пятый кулачок (нормально разомкнутый контакт)

  2. Четвёртый кулачок (нормально разомкнутый контакт)

  3. Третий кулачок (нормально разомкнутый контакт)

  4. Второй кулачок (нормально разомкнутый контакт)

  5. Первый кулачок (нормально разомкнутый контакт)

  6. Третий кулачок (нормально замкнутый контакт)

  7. Второй кулачок (нормально замкнутый контакт)

  8. Назад

  9. Вперёд

  10. Ничего

  11. Вперёд

  12. Назад

  13. Второй кулачок (нормально замкнутый контакт)

  14. Третий кулачок (нормально замкнутый контакт)

  15. Первый кулачок (нормально разомкнутый контакт)

  16. Второй кулачок (нормально разомкнутый контакт)

  17. Третий кулачок (нормально разомкнутый контакт)

  18. Четвёртый кулачок (нормально разомкнутый контакт)

  19. Пятый кулачок (нормально разомкнутый контакт)

  20. Ничего

  21. Ничего

  22. Ничего

  23. Ничего

  24. Ничего

  25. Ничего

  26. Ничего

  27. Ничего

  28. ЗАП/ОТП

  29. ЗАП/ОТП

  30. Ничего

  31. Ничего

  32. Ничего

  33. Ничего

  34. Ничего

  35. Ничего

  36. Ничего

  37. Ничего


Далее берём мультиметр и выясняем, какие контакты в какой позиции замкнуты.

Далее объединяем всё в одну таблицу:

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост

Посмотрев на список контактов, решил задействовать их все — лишние несколько занятых выводов контроллера ничего не меняют, зато вероятность глюков из-за пропавшего контакта в одном из концевиков существенно снизится.

Подключение к ПК


Для того, чтобы связать контроллер с компьютером, понадобится всего-ничего — плата на самом дешёвом МК с поддержкой USB HID в лице Raspberry Pico, вилка DB37 и немного проводков...

> Продолжение в источнике материала на Хабре. Увы, все фото не влезли (их действительно много), а именно в них вся суть и самое вкусное. Так же там элементы кода и прошивка :)

Оживляем контроллер машиниста от ушедшего в историю электропоезда Электроника, Поезд, Timeweb, Электричка, Познавательно, Электрика, Техника, Гаджеты, Длиннопост
  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 25
101

Эмуляция сотового телефона… на сотовом телефоне

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Многие помнят линейку телефонов Siemens 65-75 серии, которые были в ходу около 20 лет назад. Мы попробуем провести необычный эксперимент на их основе, для чего напишем небольшую управляющую библиотеку на C, а также изменим код одной из встроенных в ОС Linux утилит. Подробнее в статье.

❯ 1. Аппаратная часть


В серии телефонов «Siemens 75» существовали такие модели, как C75, ME75, CX75 и прочие. Они различались между собой дизайном корпуса и некоторым другим функционалом. Но их основные элементы были, во многом, схожи. Например, дисплей разрешением 132x176. Для работы с данным проектом в коробке с различным электронным мусором были обнаружены останки подобного телефона. Состояние изделия за 20 с лишним лет очень плохое, надписи стёрлись, но я предполагаю, что это был экземпляр телефона C75 – BenQ, позднего выпуска. Родной процессор телефона давно уже умер — какое-то время назад удавалось оживить его, прогрев плату паяльным феном, но теперь осталась лишь безжизненная плата и оболочка. Поэтому я решил перехватить информацию на уровне дисплея.

Нас интересует, в первую очередь, этот самый дисплей. Поэтому, для начала, разберём устройство:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Поскольку любая наука стоит «на плечах гигантов», я не буду повторять материал о видах дисплеев в данном телефоне. Ознакомиться с ним вы можете самостоятельно, это описал ещё в 2013 году Кизим Игорь, в своей статье.

У меня уже был некоторый опыт работы с данным дисплеем. Используя библиотеку, взятую из статьи Игоря, я подключал данный дисплей к микроконтроллеру ATmega8. Однако, это было более 5 лет назад, поэтому, для начала, я решил проверить, а работает ли вообще данный дисплей. Для чего собрал схему Игоря. Её ключевые особенности: установлен стабилитрон по питанию дисплея (5V -> 2.9V), установлены резисторы для понижения уровней логики (5V -> 3.3V). Однако, нам необходимо ещё одно напряжение – 12V, для питания диодной ленты подсветки. Поскольку я не хотел городить дополнительный инвертор, я расковырял подсветку и заменил диоды на те, которые могут работать напрямую от 5V, подсоединив их не последовательно, а параллельно. Таким образом я избавился от лишнего провода питания, хотя и качество подсветки несколько пострадало.

Теперь я имел 2 провода питания (+5V, GND), и 5 сигнальных проводов с уровнем логики 3.3V.

Однако, контроллера ATmega8 под рукой не оказалось, но был китайский клон Arduino Uno на ATmega328. Я попытался поискать библиотеку Arduino под этот дисплей, и нашёл такую. Но она была заточена под ESP8266. Хотя идею замены SPI в функции Send_to_lcd с программного на аппаратный я намотал на ус:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост


В итоге я взял оригинальную библиотеку Игоря (Igoryosha), и портировал её под Uno, просто заменив в текстовом редакторе функции присваивания (напр. LCD_CLK=0) на ардуиновские digitalWrite(LCD_CLK, LOW). Библиотека запустилась без особых проблем.

Так как в ней используется программная имитация SPI, выводы GPIO можно назначить произвольно (кроме тех, что заняты RX TX). Библиотеку под Arduino Uno для данного дисплея в итоге я оставил у себя на github, в ветке main.

Результат запуска программы и скорость работы такого SPI можно увидеть наглядно на видео:


Теперь можно подсобрать телефон для удобства работы. Я вытащил динамик, чтобы вывести провода через отверстие.

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Проверено: дисплей работоспособен, а это означает, что наша задумка в конечном итоге получится.

❯ 2. Подключаем Orange Pi GPIO


Как можно было увидеть в предыдущем фрагменте, скорость отрисовки картинки просто черепашья. Оно и неудивительно: контроллер работает всего лишь на 16 МГц, ещё и использует программный SPI для вывода картинки. Ситуацию нужно исправлять, взяв более мощный и производительный контроллер. Тут я натыкаюсь на статью хабровчанина Hoshi.

В ней он данный дисплей подключает к Raspberry Pi, и использует его как «монитор». Поскольку мы стоим на плечах гигантов, было решено проследовать его примеру, и не изобретать ещё какие-либо методики. Но Raspberry Pi у меня не оказалось, нашёлся только Orange Pi PC.

Поэтому запустить код Hoshi без переделки у меня бы не вышло: в своей статье он оперирует GPIO через библиотеки чипсета bcm2835. Так как данного чипсета на моей плате нет, и библиотеку подключить не выйдет. Я начал поиски способа, как подключить GPIO на моём чипсете h3. Выяснилось, что для этого нужна библиотека wiringPi (на текущий момент уже не поддерживается официальными авторами). Однако, просто установить её через apt-get оказалось мало: устанавливался оригинал под Raspberry. Спустя некоторое время была найдена модификация этой библиотеки от zhaolei. Я собрал её через build (ветка h3), и именно она оказалась рабочей для моей платы. После выполнения build библиотека установилась в систему, и стало возможным вызвать её из требуемого места (например, проверить пины с помощью sudo gpio readall).

Назначение выводов GPIO для «апельсина» назначается через define по аналогии с Arduino:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Также следует отметить следующий момент: в схеме Igoryosha для AVR использовался логический уровень +5В, а на Orange Pi разъем GPIO сразу оперирует уровнями +3.3В. Поэтому резисторные делители я убрал. В итоге получилась следующая конструкция:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Однако, у меня сходу не получалось завести аппаратный SPI. Поэтому для повторной проверки работоспособности дисплея я взял, опять же, библиотеку Игоря из-под AVR, портировав её теперь и под wiringPi. К счастью, особых замен не понадобилось, только поменять в коде LOW и HIGH на 0 и 1 соответственно. Даже функции delay в wiringPi аналогичны ардуиновским. Также на данном этапе библиотека лишилась практически всех графических функций отрисовки примитивов, кроме отрисовки, непосредственно, одного кадра из буфера.
После чего я собрал программу через gcc (gcc –o example example.c –lwiringPi), и запустил из терминала.

Результат можно увидеть на видео:


Однако разницы, по сравнению с Arduino, практически нет. Отрисовка стала шустрее, но лишь немножко. Оно и неудивительно: чаще всего вызывается метод передачи по SPI (Send_to_lcd), а так как он у нас всё ещё программный, прироста в скорости мы не видим, сам GPIO работает достаточно медленно, по скорости сопоставим с обычным Arduino. Поэтому нам нужно исправлять ситуацию, задействовав аппаратный SPI.

❯ 3. Подключаем аппаратный SPI


Для замены программного SPI на апаратный можно, также, задействовать библиотеку wiringPi, а именно, из wiringPiSPI.h использовать функции wiringPiSPISetup и wiringPiSPIDataRW. Функции эти несколько хитрые. Но перед тем, как их использовать, нужно включить этот самый SPI. Информации о том, как это сделать конкретно на Orange Pi PC также в интернете нет, но удалось найти направление, в котором нужно искать. Немного погуглив, я выяснил, что spi включается правкой файла /boot/armbianEnv.txt (актуально для моей версии системы Armbian_23.11.1_Orangepipc_jammy_current_6.1.63_xfce_desktop.img).

В него нужно добавить следующие строки:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост
Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

После чего сделать sudo reboot, и у нас в /dev/ появляется spidev0.0. Проверить это можно, выполнив команду ls /dev | grep spi. Если spidev0.0 появился, дальше библиотека wiringPiSPI подхватит его. Теперь контакты дисплея CS, CLK, DATA нужно подключить к пинам SPI0, как это сделано у Hoshi. Распиновка (40-pin) полностью соответствует Raspberry Pi. Пины RS и RESET оставляем на попечении обычного GPIO.

Однако, просто заменив SPI на аппаратный, я заметил, что FPS отрисовки практически не поменялся. Проблема заключалась в том, что если отправлять по одному байту, то с каждой посылкой SPI будет заново открываться и закрываться, а эта процедура отнимает очень много времени. Поэтому было решено отправлять данные пачками максимально возможной длины.

Возникла следующая проблема: буферизация пакетов SPI. На данном устройстве мы можем отправить только 4 килобайта данных за одну посылку. Наша страница же занимает порядка 44 Кб: 132*176*2, так как используется 16-битная цветность. В качестве решения можно было либо увеличить буфер SPI, что возможно, однако, мне не хотелось прибегать к данной методике. Поэтому я просто в своём коде раздробил страницу на 11 пачек:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

И используя memcpy, копировал перед отправкой каждую пачку в буфер. К слову, это необходимо ещё и потому, что буфер побайтово очищается в процессе передачи, заменяя выходные данные на входные с буфера RX (MOSI pin).

Также библиотека позволяет регулировать скорость: от 500 КГц до предела в 32 МГц. Делается это в момент инициализации: int fd = wiringPiSPISetup(0, 32000000); мы выставляем канал 0, и скорость в 32 МГц.

После вышеописанных процедур мне удалось получить скорость кадров в 60 FPS. Я не уверен, способен ли дисплей отрисовать данные с такой скоростью, но таймер рапортовал именно так. Можно увидеть это на видеозаписи:


На первой половинке видео можно увидеть кусочек области дисплея, который передаётся за одну отправку (4096 байт), это примерно одна десятая всей экранной области. Скорость шины выставлена в 500 КГц. На второй половинке отправка всех 11 областей, и скорость шины в 32 МГц. То есть, скорость передачи примерно порядка 20 Мбит/сек. В данном случае, я считаю, достигнут потолок пропускной способности всей нашей сборки.

❯ 4. Выводим статичный bmp кадр


Следующее, что сделал Hoshi в своей статье – вывел статичную картинку, получив проблемы с цветностью. Поскольку я иду по его стопам, я попробовал вывести картинку из буфера, используя частично его код, поменяв только сдвиг (offset, так как мой заголовок занял другое количество байт). Однако, сначала я получил такую картинку, как показана на левой части изображения, и, лишь потом, такую, как на правой:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Я взял такую же картинку, как у Hoshi, и получил примерно такой же результат. Подводный камень заключался в следующем:

  1. Два байта нужно поменять местами, этот момент был в коде Hoshi. Либо же добавить/убрать один лишний байт в начале пакета, чтобы вызвать сдвиг всего массива.

  2. Я сохранил исходную картинку через Adobe Photoshop в формат BMP 16-bit. Однако, как выяснилось после просмотра в HEX-редакторе, белый цвет у меня получился не FF FF, а FF 7F, вследствие чего он отображался, как бирюзовый, и остальные цвета также имели искажения:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Произошло это из-за того, что редактор сохранил BMP файл в режиме X1R5G5B5 (с альфа-каналом), а у нас в дисплее используется R5G6B5, то есть, зелёный цвет занимает на один бит больше. Поэтому, при скармливании картинки дисплею, мало того, что один из старших битов пропадает, так ещё и происходит бинарный сдвиг одного цветового канала на единицу, из-за чего вся палитра оказывается искажена. После сохранения картинки в нужном режиме значения белого заменились на FF FF, потери одного бита данных больше не было, и она отрисовалась с нормальной цветностью.

На этом построение библиотеки для работы с дисплеем было закончено, и началось самое интересное – попытка вывести на него живой видеопоток.

❯ 5. Пишем ПО для захвата экрана


Далее вышеупомянутый автор для рендеринга использует интерполяцию из фрейм-буфера ОС Linux /dev/fb0. Попытка запустить его код не привела ни к чему хорошему: в моём случае фреймбуфер отображается как чёрная сетка из-за несоответствия данных, да и мне не нужно было проводить интерполяцию картинки всего рабочего стола, а нужна была конкретная область экрана.

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Слева: отрисовка из /dev/fb0. Справа: отрисовка из скриншота.

Так как моя GUI в Armbian работает на графической оболочке XFCE, у меня возникла идея выдрать требуемые пиксели непосредственно через неё. Для этого используются средства gdk и x11. Добавление всех необходимых библиотек сильно усложнило бы программу, поэтому мне пришлось прийти к костыльному решению проблемы.

Я решил копнуть в сторону встроенной в ОС утилиты xfce4-screenshooter. Данная утилита позволяет снять скриншот, в том числе, через командную строку. Однако, функции сохранения заданной области в ней нет, либо требуется задавать каждый раз область мышкой, что было мне неудобно. Поэтому я сделал форк кода данной утилиты. И добавил в опции командной строки, помимо FULLSCREEN, WINDOW и REGION ещё и аргумент FIXED, который сохранял в файл конкретно прописанную в коде область экрана.

Для удобства разработки пришлось поставить xubuntu на виртуальную машину с x86, после чего изменить исходный код, а затем собрать его же, но под armbian непосредственно на своём Orange Pi. Сборка утилиты осуществляется помощью xdt-autogen: сначала ./autogen.sh, далее установить библиотеки по требованию (через apt-install) затем с помощью make, и make install для замены установленного в систему скриншоттера на изменённый вариант. После этого готовый скриншот нужного размера стало можно выводить в файл с помощью одной лишь команды терминала – для определения файлового пути, формата и прочего используется оригинальный код скриншоттера.

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Однако, данное решение имеет и недостаток: программа-скриншоттер работает, вероятно, таким образом, что сначала делает скриншот всего root-окна (рабочего стола), затем обрезает его до требуемого размера. При этом, на какой-то момент, отрисовка даже приостанавливается. Вся процедура съемки занимает порядочное количество времени: на десктопе xubuntu она осуществлялась примерно за 50-100 миллисекунд. На Orange Pi она же стала занимать порядка 100-400 миллисекунд. Видеозахват – в целом тяжелая процедура для ЦПУ. Поэтому уменьшение разрешения рабочего стола помогло, но незначительно. В идеале нужно выдирать изображение через низкоуровневый код непосредственно из экранной памяти, а не из пользовательской среды через функции gdk. Более того, в самом коде скриншоттера написано, что рекомендуемая задержка между скриншотами должна быть не менее 200 мс, то есть, это уже ограничивает нас до 5 FPS. В случае, если нужно просто проверить консольный вывод, этого достаточно, а вот для видеопотока оказалось маловато.

Прим. авт.: через некоторое время после написания статьи, мне удалось решить данную проблему, используя вместо скриншоттера ПО jsmpeg-vnc. С ним я получил 50 FPS и выше, плюс имеются встроенные функции обрезки кадра до нужного размера.

Данное ПО передаёт MPEG-поток через WebSocket протокол (выполняя трансляцию видеосигнала), позволяет закодировать только нужную область, чтобы не передавать весь рабочий стол. Далее кадр можно расшифровать и передать непосредственно в контроллер, минуя костыль в виде отображения его на экране и снятия скриншота. Если это будет интересно, можно показать подробнее в следующей статье.


Также, поскольку сохранение в bmp происходит через встроенные средства gdk, мне не удалось заставить программу сохранять в 16-битный формат. Она сохраняла в 24-битный формат, поэтому для преобразования цветовой палитры мне пришлось написать фрагмент кода на бинарных сдвигах:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Изначально содержимое нашего скриншота копируется в массив байтов (uint8_t) в порядке очередности. Для конвертации цвета 24bit -> 16 bit (ещё и с перевёрнутым порядком байтов) использованы сдвиги: мы сравниваем первый байт красного с пятью единицами, далее сравниваем второй байт зелёного с тремя единицами и сдвигаем результат в самое начало, далее сравниваем следующие разряды байта зелёного и сдвигаем в самый конец, далее сравниваем синий и сдвигаем его в середину. Таким образом, из цветности КККККККК ЗЗЗЗЗЗЗЗ ССССССС мы привели палитру к цветности ЗЗЗССССС КККККЗЗЗЗ, которую и принимает наш дисплей. Для отладки я использовал цветные картинки, после чего смотрел, корректно ли отображается цвет согласно своему описанию, или же цветовой канал требуется сдвинуть ещё на какое-то количество ячеек.

После чего я в цикле запустил скриншоттер через вызов терминала, а далее отрендерил картинку на экран. Это можно увидеть на видео:


Конечно, данный пункт программы нуждается в доработке – ссылки на заголовочные файлы библиотек gdk и x11 следует внести в общий файл программы, в котором происходит работа с дисплеем чтобы избежать костыля в виде сохранения картинки в кэш на жестком диске. Возможно, это несколько улучшит производительность. А для идеальной работы требуется переписать это всё на уровне ядра ос, чтобы превратить самодельную библиотеку в драйвер для устройства. Но на текущий момент ход программы получился такой:

  • Через терминал вызывается скриншоттер, который сохраняет кадр в cache.bmp;

  • Файл cache.bmp открывается, после чего отправляется его содержимое на дисплей.

Причём, основная потеря скорости идёт на этапе снятия скриншота, а не записи/чтения его с диска. Для увеличения FPS выше 5 необходимо заменить xfce4 скриншоттер на какое-то другое ПО. Тем не менее, мы движемся дальше.

❯ 6. Эмуляция сотового телефона


Эмулятор телефона CX75 был написан лет 20 назад, и входил в официальный пакет программ для разработки java-приложений через WTK/JDK 2.0. Он пролежал у меня на жестком диске лет 15, после чего я запустил его для данной работы. Если кому-то интересно также запустить его на своём компьютере, делюсь файлами.

Для работы требуется JDK 6u45 и Windows XP. Насколько я помню, даже при запуске на Windows 7 эмулятор вылетал, на Win 10, тем более, работоспособность я не проверял. Поэтому запускать я его буду через виртуальную машину с WinXP.

Эмулятор полностью реализует функционал прошивки телефона 75-й серии, в том числе, можно устанавливать java-игры, подключать веб-камеру для съемки фото, и так далее. Единственное, вряд ли будет работать интернет, по причине того, что WAP технологии уже не получится использовать.

Вот так эмулятор выглядит в системном окне. Управлять можно с клавиатуры (джойстик – стрелки и enter, клавиши – цифры или тачпад), либо нажатием на виртуальные кнопки.

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

Выдаёт он картинку чётко размера 132x176, поэтому интерполяция не потребуется. Теперь нужно прокинуть картинку из виртуальной машины в Linux машину. Можно было использовать wine, но я не уверен, будет ли эмулятор адекватно работать на нём. Поэтому он запущен в XP. Для передачи картинки, опять же, ничего нового изобретать я не буду, использую TightVNC.

На Windows мы устанавливаем сервер, на armbian’е устанавливаем клиент через apt-get xtightvncviewer.

После чего запускаем клиент-сервер, и выставляем на экране требуемую зону отображения. FPS в данном случае также примерно равен 5 кадрам, поэтому дисплей будет рендерить с точно такой же скоростью.

И вот момент, ради которого всё затевалось: помещаем эмулятор телефона в экранную область на самом телефоне

Видео:


Таким образом, наш видеопоток проходит через следующие уровни:

  • Эмулятор CX75 (x86 C-программа, но порт ARM-совместимой прошивки);

  • Windows XP (виртуальная машина);

  • Windows 10 (через виртуализацию, но можно пропустить, выведя в VNC напрямую с XP);

  • Armbian xfce4 gui (через VNC);

  • Изображение cache.bmp (через xfce4-screenshooter);

  • Дисплей C75 (через wiringPi + wiringPiSPI).


Для эмуляции же клавиатуры достаточно просто припаять контактные площадки к контроллеру от USB-клавиатуры в соответствии со схемой их разводки:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

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

❯ 7. Заключение


Результат проекта:

Эмуляция сотового телефона… на сотовом телефоне Python, Timeweb, Мобильные телефоны, IT, Электроника, Эмулятор, Видео, YouTube, Длиннопост

В ходе работы были изучены особенности работы с GPIO, SPI, GTK3, VNC, преобразованием цветности и некоторым другим функционалом компьютерных и микроконтроллерных систем.

Готовые файлы проекта под wiringPi.

Спасибо за внимание.

  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 17 5
20

Спасти Linux

Спасти Linux Linux, Железо, Timeweb, Перевод, Windows, Компьютер, Познавательно, Длиннопост, YouTube (ссылка)

Некоторое время назад я написал статью, в которой критически высказался о Linux-разработчиках, не желающих поддерживать дистрибутив, если он предназначен для работы на компьютерах, которым более 15 лет. За это я получил немало критики от читателей с Hacker News. Кто-то указывал, что я не понимаю, насколько же это сложно – создать и поддерживать дистрибутив Linux. Были и такие, кто советовали мне просто накатить на старый компьютер старую версию Windows. Я же начал пользоваться Linux в первую очередь для избегания Windows, так как считал её монструозным порождением Билла Гейтса. Фактически, разработчики операционной системы, ранее обещавшие освободить меня от Windows, теперь склоняют меня вернуться к Windows, как только мой компьютер настолько состарится, что им станет неудобно его поддерживать. Ответы, которые я получаю от Linux-разработчиков, явно свидетельствуют, что Linux больше не является операционной системы для технарей-компьютерщиков, желающих сохранить на ходу свои любимые винтажные машины. Напротив, Linux превратился в операционную систему, которую разработчик рассматривает как средство для прокачки карьеры. Те, кому интересно подробнее разобраться в нарастающей дисфункциональности Linux и узнать, почему сложилась такая ситуация, могут посмотреть это видео на YouTube.

Некоторые разработчики советовали мне собрать собственный дистрибутив Linux. Хотел бы я! К сожалению, по паре причин этот вопрос не обсуждается. Во-первых, у меня просто нет на это времени. Слишком много времени у меня уходит на работу по поддержке моих сообществ Cheapskate's Guide и Blue Dwarf. Во-вторых, даже если бы я взялся за создание собственного дистрибутива, то получился бы ISO-образ размером более 1 гигабайта и с репозиторием на десятки гигабайт, а такой крупный софт я просто не мог бы выложить в общее пользование, так как мне было бы слишком дорого передать все эти данные.

Учитывая, что немного найдётся Linux-разработчиков, готовых поддерживать старые версии своих дистрибутивов в рабочем состоянии, единственный разумный с моей точки зрения выход – сохранить мои любимые дистрибутивы на будущее. К счастью, я сохраняю ISO-образы Linux, которым более 15 лет. Сейчас у меня есть резервные жёсткие диски с самыми разнообразными дистрибутивами. Вот неполный список: AntiX 19.4, AntiX 22, AntiX 23, Arch Linux 2020.09.01, Debian 11.3, Debian 11.1.0 Server, DSL 4.4.10, версии 1.2 и 4.4.9 со встроенными DSL, Kali Linux 2022.2, Kodachi Linux 8.15, LibreELEC 8.2, Mint 9, Mint 13, Mint 17, Lubuntu 22.04, MV Linux 21.1, Nano Linux 1.3, OpenElec 8.0.4, OpenWRT 19.07.7 обобщённый, Parrot OS 4.11.3, Parrot OS 5.3, PirateBox, Noobs v2_4_5, OSMC_TGT_rbp2_20190424, Raspberry Pi Buster 2020-05-27, Raspberry Pi Buster Lite 2020-05-27, Raspios Bullseye 2023-5-03, Raspian Buster 2019-07-10, Raspbian Jessie 2017-07-05, Raspbian Stretch 2017-11-29, TAILS 2.2.1, TAILS 4.5, Zenlive Linux 7.0 и Zorin 9 Lite. Большинство из этих версий в Интернете уже не найти. Если бы не моя предусмотрительность, то и у меня не было бы к ним доступа. Для большинства пользователей кроме меня они навсегда утрачены.

Со всеми вышеупомянутыми ISO-образами Linux существует важная проблема: в них содержатся только такие приложения, которые поставляются в виде ISO-файлов. Зачастую в них нет программ для чтения RSS-лент, браузера Lynx, PHP, веб-серверов, nmap, bleachbit, cowsay и fortune, truecrypt или Veracrypt, Unetbootin, macchanger, espeak, hwinfo, cpulimit, thermald, calibre, fbreader, браузера Dillo, браузера Vivaldi, libdvdread4, libdvd-pkg, libdvdnav4, загрузчика yt (теперь yt-dlp), почтового клиента Alpine, pulseaudio и многих других, от которых бы я не отказался. Многие из этих пакетов и сопутствующие им зависимости содержатся в репозиториях вышеупомянутых дистрибутивов. К сожалению, по прошествии многих лет установить их нельзя, поскольку многие репозитории теперь просто не существуют! Также можете не рассчитывать найти многие из библиотек, от которых зависят старые версии этих приложений для Linux.

Очевидное решение – скачивать и сохранять не только ISO-образ каждого дистрибутива Linux, но и его репозитории. Да, это осуществимо, и в Интернете можно найти множество статей, в которых объясняется, как скопировать репозиторий. Но сам процесс скачивания и хранения файлов на десятки гигабайт на множестве резервных жёстких дисков для каждого дистрибутива порой утомляет, особенно, если приходится делать это годами и учитывать такие факторы, как гниение бит и плановые обновления винчестеров.

Теперь, когда многие из моих старых ПК слишком устарели для современного Linux, мне приходится серьёзнее относиться к информации и сохранять не только базовые ISO-образы Linux, но и дополнительные файлы. Немного поразмыслив, я решил пойти по компромиссному пути, между двумя крайностями «сохранять только ISO-образ» и «сохранять ISO и все связанные с ним репозитории». Итак, пока такая возможность ещё не утрачена, я решил сохранять хотя бы по одной версии дистрибутива Linux плюс дополнительные пакеты к нему. Очевидный вариант – а в настоящее время, вероятно, и единственный – работать с AntiX Linux. Я не особенно переживаю за AntiX, поскольку багов в нём хватает. Кроме того, он работает несколько иначе, нежели другие Debian-подобные дистрибутивы. Вероятно, дело в том, что он использует легковесные среды для рабочего стола, в частности, IceWm. Они довольно старые и никогда не стандартизировались до такой степени, до какой принято доводить более современные окружения. К сожалению, не знаю ни одного другого до сих пор поддерживаемого дистрибутива, который бы нормально работал на компьютерах от двадцати лет и старше. Я пробовал несколько «легковесных» дистрибутивов и убеждался, что они просто кишат багами, и пользоваться ими на компьютерах старше 15 лет решительно невозможно.

❯ Устанавливаем AntiX


Я скачал ISO-образ AntiX-23_386_full.iso современной версии AntiX со страницы загрузки AntiX. Это самая «полная» версия, в которой содержится больше всего приложений для работы на ПК. Это 32-битная версия. Кстати, немного найдётся таких Linux-разработчиков, которые до сих пор предоставляют 32-битные версии своих дистрибутивов. Пожалуйста, не надо мне доказывать, что 32-битную версию любого дистрибутива Linux вполне можно скомпилировать из исходного кода. Я не раз безуспешно пытался скомпилировать таким образом хотя бы единичное приложение, поэтому на собственном опыте знаю, насколько маловероятно преуспеть с таким подходом.

Попытался установить AntiX из скачанного ISO-файла на мой компьютер fDell Precision M20, 2004 года выпуска. Эта машина может похвастаться ЦП Pentium M (Centrino) с частотой 1,86 ГГц и 2 ГБ ОЗУ (это для неё максимум). Этот компьютер я купил в 2019 году на барахолке за 20 долларов. Даже если вы совсем новичок в Linux, вам не составит труда установить AntiX, так как установщик в нём включён. К сожалению, я неоднократно и безуспешно пытался поставить его на «жёсткий диск» Precision M20 (за громким названием скрывается карта памяти microSD с адаптером IDE-to-microSD). Всякий раз казалось, будто установка прошла успешно. Я даже проверял систему при помощи Gparted, убеждаясь, что раздел диска действительно создан, с него можно загрузиться, и в него записываются данные. Потом перезагружаюсь – и никакого раздела нет! Короче говоря, мне не удавалось установить на этот компьютер ни одну из версий AntiX, ни 19.4, ни 23, ни через установщик с GUI, ни через командную строку. Теряюсь в догадках, но, возможно, что-то не так с самой microSD-картой или адаптером, поэтому установка и не выходит. Ранее я уже поднимал проблему некачественных установщиков Linux, поэтому здесь не стану снова в неё углубляться.

Поскольку мои первые попытки установить AntiX на Precision M20 успехом не увенчались, я решил повторить попытку на ноутбуке с обычным твердотельным жёстким диском SATA. Для начала установил компактный твердотельный диск SATA в мой ноутбук Lenovo Thinkpad T500, модель 2008 года, воспользовался при этом утилитой для установки AntiX через командную строку. AntiX установился! К сожалению, по-видимому, мне не удалось бы таким способом установить сверх одного-двух дополнительных пакетов при помощи команды «apt-get install» (уверен, что сначала я выполнил «sudo apt-get update»). В AntiX на этой машине проявлялись и другие неприятные баги, поэтому я подумал, что лучше воспользуюсь другим дистрибутивом Linux.

Несмотря на все эти неудачи, я не отступал. Попытался установить AntiX 23 на ноутбук Dell Inspiron 5100, модель 2002 года, с жёстким диском IDE на 40 ГБ и с 256 МБ ОЗУ. Это самый старый из имеющихся у меня действующих компьютеров. Установщик потребовал, чтобы я выделил ему весь жёсткий диск, но AntiX всё-таки встал. Затем, чтобы сэкономить место, я ужал сегмент с AntiX до 14 ГБ. Для этого я воспользовался Gparted на загрузочной флешке с AntiX, так как Gparted не может ужать сегмент, используемый в настоящий момент. Держал в уме, что нужно сделать перманентную резервную копию этого сегмента и потом попробовать устанавливать её на другие старые компьютеры. Непосредственно после установки дистрибутив занимал около 5 ГБ дискового пространства. Я обновил получившуюся конфигурацию при помощи «sudo apt-get update», а потом приступил к установке дополнительных пакетов.

❯ Добавляем пакеты Linux в AntiX


Как решить, какие именно пакеты Linux устанавливать? Если у вас есть рассчитанные на работу под Linux копии приложений, не содержащие зависимостей, то, теоретически, их можно установить в любой момент (хотя, чтобы максимально перестраховаться, можете поставить их сразу же). Важно установить именно те пакеты Linux, у которых есть по несколько зависимостей, ведущих в репозитории. В данном случае у вас возникает такая дилемма: требуется установить те приложения, которые могут вам понадобиться не только в ближайшем будущем, но, вероятно, и через 10, и через 20 лет. Конечно, непросто сходу определить, что это за приложения. Но можете попробовать установить по одному-два приложения всех основных типов: браузер, читалка для электронных книг, агрегатор новостных лент, офисный пакет, утилиты, т.д.

В качестве первой попытки я установил при помощи «sudo apt-get install» следующие дополнительные пакеты себе на Inspiron 5100:

  • nmap

  • ftp

  • tcpdump

  • iotop

  • nethogs

  • cowsay

  • fortune

  • macchanger

  • bleachbit

  • lynx

  • liferea

  • gedit

  • thermald

  • goldendict

  • mplayer

  • smplayer

  • aspell

  • fbi

  • w3m

  • seamonkey

Установив вышеперечисленные пакеты, я убедился, что все они сохранены на жёстком диске в каталоге /var/cache/apt/archives в формате ".deb". Кроме того, посмотрел с DVD кино через Smplayer. Шло медленно, но работало. С огромными проблемами установил библиотеки, необходимые для просмотра DVD-фильма в ОС Parrot 4.11 и выше. Очевидно, разработчик Parrot OS считает, что больше никто уже не смотрит фильмы с DVD.

Всякий раз при установке дополнительных пакетов в любой дистрибутив Linux, вы рискуете его дестабилизировать. Я не обнаружил никакой явной рассогласованности в работе того AntiX, который сам и установил, но, чтобы с уверенностью полагать, что всё прошло нормально, дистрибутив нужно тестировать неделю или более. Чтобы сохранить эту вполне работоспособную конфигурацию AntiX, я сделал резервную копию 14-гигабайтного сегмента и сохранил её на внешнем диске.

Затем я попытался установить следующие приложения, входящие в оборудованный графическим интерфейсом установщик пакетов для AntiX:

  • pulseaudio

  • Audacious

  • GIMP Basic

  • ImageMagick

  • Handbrake

  • Adobe Reader

  • xfce4-screenshot

  • VLC

Adobe Reader не установился, предположительно, потому, что для него не выполнялись две зависимости, которые мне не удалось подтянуть. Audacious не заработал. Когда я попытался проиграть в Smplayer и VLC фильм с DVD и MP4-файл, ни в одном из четырёх вариантов не было звука, в обеих программах ролики шли очень медленно, а в конце концов зависали. Позже мне удалось заставить VLC зазвучать, но всё равно ни одно из двух этих приложений не стало работать хотя бы так же гладко, как работал Smplayer до установки последнего набора программ. Я даже пытался нарастить ОЗУ на 750 МБ, но это проблем не решило. Я решил перенести резервную 14-гигабайтную копию AntiX на Inspiron 5100, вернувшись таким образом на более работоспособную машину. Пока мне кажется, что чем меньше приложений установлено, тем стабильнее работает вся система, а мне было бы предпочтительнее рассчитывать на уверенное воспроизведение видео, пусть и ценой отказа от некоторых приложений.

Есть два способа перенести файлы ".deb" в каталог /var/cache/apt/archives на другой компьютер, где установлен новый экземпляр AntiX. Первым делом нужно сделать резервные копии всех файлов ".deb", дополнительно к ISO-образу системы AntiX. Затем можно попытаться установить ISO на новый компьютер, скопировав файлы ".deb" в каталог /var/cache/apt/archives на новом компьютере, а затем установив их при помощи «apt-get install». Второй вариант – просто создать файл ".img" и записать в него весь сегмент с AntiX плюс дополнительные пакеты, а затем всё это скопировать на новый компьютер.

Как только я пошёл по первому пути, нарисовалась очевидная проблема. По какой-то причине «apt-get install» не понимала, какие ".deb"-файлы из каталога /var/cache/apt/archives от каких зависят. Не знала, в каком порядке их нужно устанавливать, если только они не лежат в репозитории. Подозреваю, что команда «gdebi -i» может устанавливать отдельно взятые пакеты с зависимостями, а команда «dpkg --unpack» – устанавливать пакеты безотносительно их зависимостей. Но у меня ни с одной ничего не получилось. Путь, на первый взгляд показавшийся простым как с точки зрения установки, так и относительно хранения дополнительных пакетов, не входящих в ISO-образ AntiX, на практике вышел более тернистым.

Таким образом, немного потрепав себе нервы за исследованием первого подхода, я осознал, что не представляю, как методично устанавливать файлы ".deb" в каталог /var/cache/apt/archives. Поэтому решил попробовать второй подход.

Второй подход выглядел так:

  1. Установить AntiX в небольшой сегмент на жёстком диске компьютера (напомню, после установки этот сегмент можно ужать при помощи Gparted);

  2. При помощи «sudo apt-get install» установить любые дополнительные пакеты на мой вкус;

  3. Сделать файл-образ небольшого сегмента (допустим, 14 ГБ) и вынести его на флешку командой «sudo dd if=/dev/sda of=/media/user/usb/AntiX_installed_with_extra_packages.img bs=1M count=14812 conv=notrunc, noerror» (обратите внимание: здесь используется /dev/sda, а не /dev/sda1);

  4. Запустить другой компьютер с загрузочной флешки с Linux, а уже в него вставить флешку, на которой содержится копия только что изготовленного мною образа AntiX;

  5. Скопировать образ AntiX на жёсткий диск нового компьютера при помощи «sudo dd if=/media/user/usb/AntiX_installed_with_extra_packages.img of=/dev/sda bs=1M conv=notrunc,noerror», и, наконец;

  6. Молиться, чтобы конфигурационный файл grub заработал на новом компьютере.

На этапе 3 я воспользовался «count=14812», чтобы скопировать первые 14,5 ГБ с жёсткого диска. Это я сделал лишь чтобы удостовериться, что у меня будет скопирована и главная загрузочная запись, на случай, если её не окажется в сегменте sda1. Если конфигурационный файл grub не заработает на новом компьютере, то придётся поразмыслить, как изменить его, чтобы загрузка прошла. Обратите внимание: я скопировал на новый компьютер лишь 14-гигабайтный сегмент sda1, но в какой-то момент его загрузочная последовательность оборвалась, поэтому и потребовалось указать «count=14812».

Именно вторым способом мне удалось перенести установленный AntiX с компьютера Dell Inspiron 5100 на модели Emachines KAV60 и Compaq Presario V5000. Оба раза всё получилось, даже не пришлось вносить изменений в файл grub.cfg. После того, какую огромную фрустрацию доставил мне первый способ, успех в данном случае практически сподобил меня простить разработчиков Linux и AntiX в частности, хотя, согласитесь, они сделали очень хрупкую операционную систему. Как говорится, осадочек остался.

Если кому-то из вас придётся работать со старым дистрибутивом, обязательно учитывайте эти риски. Конечно же, может быть опасно бороздить Интернет на таком старом софте. Может быть, воспользуйтесь Gemini или другой оверлейной сетью, которая пока не кишит подозрительными личностями (интересно, а существуют ли ещё такие сети?). Может быть, отключите JavaScript в браузере, и такой защиты будет достаточно? Ещё лучше было бы выделить старый компьютер строго для путешествий по Интернету, а на другом компьютере хранить исключительно личные данные. Также работает подход с использованием нескольких загрузочных USB-флешек на одном старом компьютере. Любая старая версия любого дистрибутива Linux отлично подойдёт для оффлайновой работы. В самом деле, а есть ли более удобные варианты для старого компьютера, на котором современный дистрибутив Linux? Может быть, Windows? Нет, я не враг моим старым компьютерам!

❯ Заключение

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

Спасти Linux Linux, Железо, Timeweb, Перевод, Windows, Компьютер, Познавательно, Длиннопост, YouTube (ссылка)
Показать полностью 2
2574

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Приветствую всех!

Давным-давно я уже рассказывал про то, как в домашних условиях поднять GSM-сеть при помощи комплектующих, доступных любому школьнику. И в той статье я мельком упомянул, что идеальным в плане производительности вариантом будет запускать сети при помощи SDR, а не телефонов.

Итак, в сегодняшней статье поговорим о том, как быть владельцам SDR, желающим запустить свою GSM-сеть. Узнаем, какой софт нужен, чтобы заставить её работать в прямом смысле слова за пять минут. Попутно запустим GPRS и ненадолго побываем в 2007 году. Традиционно будет много интересного.

❯ Суть такова

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Многие помнят тот поистине легендарный пост про то, как из двух телефонов и обычного компьютера собрать базовую станцию. Но всё же у той конфигурации был целый ряд недостатков, которых лишена БС на базе SDR. В свою очередь, единственным минусом того, что будет рассмотрено в данной статье, является высокая стоимость оборудования.

Также на просторах Хабра был найден пост про Osmocom в Docker-контейнере, однако за десять лет софт порядком устарел, теперь есть куда более новые версии с большими возможностями и более стабильной работой.
И вот в мои руки попал полнодуплексный SDR, а это значит, что самое время попробовать запустить сеть при помощи него и узнать, что же из этого выйдет.

❯ В чём преимущества сети на базе SDR?


В отличие от телефонов, мы будем избавлены от целого ряда проблем, неминуемо возникающих при попытке использовать подобное железо:

  • Диапазон частот. В телефонах используются фильтры, не позволяющие прослушивать входящий трафик. Моя БС работала исключительно из-за их неидеальности, лучшим же решением было бы заменить их, что доступно не каждому ввиду необходимости наличия оборудования и хороших навыков пайки, дабы не запороть плату телефона. SDR лишён этой особенности.

  • Генератор. Точности внутреннего генератора SDR с лихвой хватит, чтобы обеспечить корректную работу сети. В телефонах такого устройства нет, поэтому нам приходилось ловить тактовый сигнал от других коммерческих вышек.

  • Подключение к компьютеру. В случае с SDR не придётся заниматься ерундой типа пайки проводов, проверки заряда аккумулятора и тому подобными вещами, достаточно просто подключить его к ПК и больше не думать о том, что причины неработоспособности сети кроются где-то здесь.

  • Производительность. В отличие от телефонов, можно создать конфигурацию, где будут доступны сразу и звонки, и SMS, и интернет.

  • Стабильность. Сеть на базе SDR при правильной настройке не падает.

  • Поддерживаемые устройства. При запуске сети на базе телефонов я смог подключить к ней далеко не все устройства, какие у меня были. В частности, телефон от Nokia смог поймать её только один раз. В случае же с SDR все имевшиеся у меня телефоны, которые участвовали в испытаниях, подключались без проблем. Товарищ axilirator подсказал, что связано это с частотной характеристикой сигнала, так как телефон после попытки подключения к операторской сети ориентируется на неё, а лабораторную не видит. В моём случае эта проблема если и возникала, то устранялась банальной перезагрузкой трубки.


Таким образом, если у вас есть желание серьёзно заниматься исследованием устройства и работы сотовых сетей, приобретение полнодуплексного SDR должно стать вашим первым шагом.

❯ Обзор оборудования

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

А вот и SDR. Это USRP B200mini-i, которого для данных опытов хватает с избытком. Само собой, к нему понадобится и компьютер, который будет им управлять. Виртуалка или Raspberry не подойдёт.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Далее понадобятся телефоны, которые будут ловить сеть. В них должны быть симки, какие именно — неважно, лишь бы были. Вот, например, Samsung Galaxy M12, уже фигурировавший в опытах с LTE.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Три легенды кнопочных телефонов — Nokia 3310, Siemens CX75, Sony Ericsson K750i.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Nokia E90, крутейший девайс, совмещающий в себе кнопочный телефон, коммуникатор на Symbian и клавиатурный КПК.

❯ Софт


Как и в прошлых опытах с SDR, использовать будем дистрибутив DragonOS. Там уже есть все необходимые компоненты для запуска сети, достаточно лишь слегка поменять настройки. Уже не придётся ни собирать софт из исходников, ни искать примеры файлов конфигурации.
Как и в прошлых статьях, ссылки на всё необходимое я оставлю в конце.

❯ Конфигурация


Теперь, когда ОС загружена, можно приступать к настройке.
Открываем папку osmo-nitb-scripts (ярлык на неё есть в меню «Пуск» в разделе «Other»), а в ней — папку configs. Нас интересует файл openbsc.cfg.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Вообще, сеть будет работать и с тем файлом, что есть по умолчанию, однако SMS не будут ходить из-за неправильной настройки таймслотов и протокола SMPP. Так что приводим файл к следующему виду:

!
! OpenBSC configuration saved from vty gprs mode none | phys_chan_config SDCCH8
! !
password foo
!
line vty
no login
!
e1_input
e1_line 0 driver ipa
network
network country code 250
mobile network code 10
short name MaFrance
long name MaFrance
auth policy accept-all
location updating reject cause 13
encryption a5 0
neci 1
rrlp mode none
mm info 1
handover 0
handover window rxlev averaging 10
handover window rxqual averaging 1
handover window rxlev neighbor averaging 10
handover power budget interval 6
handover power budget hysteresis 3
handover maximum distance 9999
subscriber-keep-in-ram 0
bts 0
type sysmobts
band GSM900
cell_identity 1087
location_area_code 13415
training_sequence_code 7
base_station_id_code 56
ms max power 30
rxlev access min 0
periodic location update 1000
cell reselection hysteresis 14
cell reselection offset 120
temporary offset 0
penalty time 20
channel allocator ascending
rach tx integer 9
rach max transmission 7
ip.access unit_id 1801 0
oml ip.access stream_id 255 line 0
gprs mode none
trx 0
rf_locked 0
arfcn 25
nominal power 34
max_power_red 20
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config TCH/H
hopping enabled 0
timeslot 2
phys_chan_config TCH/H
hopping enabled 0
timeslot 3
phys_chan_config TCH/H
hopping enabled 0
timeslot 4
phys_chan_config TCH/H
hopping enabled 0
timeslot 5
phys_chan_config TCH/H
hopping enabled 0
timeslot 6
phys_chan_config TCH/H
hopping enabled 0
timeslot 7
phys_chan_config TCH/H
hopping enabled 0
nitb
assign-tmsi
subscriber-create-on-demand random 100 199
smpp
local-tcp-port 2775
system-id OSMO-SMPP
policy accept-all
esme OSMPP
password 1234
osmocom-extensions

Коротко пройдёмся по параметрам.

  • ARFCN — самый важный. Это номер канала, на котором будет работать наша вышка. Необходимо воспользоваться приложением по типу Net Monitor, чтобы узнать, на каких каналах работают вышки в округе и выбрать незанятый.

  • LAC. Код зоны, использующийся для определения местоположения. Вообще, он не влияет на работу, но некоторые телефоны могут не подключаться, если он равен 0 или 1.

  • CID. Код соты. Выбирается аналогично LAC.

  • MCC — код страны. Для России это 250. Можно выбрать другой, но стоит учитывать, что не все телефоны смогут подключиться к такой сети.

  • MNC — код сети. Нужно открыть список сотовых операторов (он есть, например, тут или тут)

  • Long name и Short name. Это, как нетрудно догадаться, имя сети, отображаемое в строке состояния на телефоне. Устанавливается любое желаемое.


    Теперь разберёмся с таймслотами. Каждый из них конфигурируется на определённый тип канала. Подробнее о них можно почитать тут.

    Теперь, когда параметры изменены, запускаем нашу сеть:

sudo ./main.py

Если у вас не LimeSDR, а USRP, то запускать надо следующим образом:

sudo ./main.py -d uhd

Если всё было сделано правильно, то на экране должно будет появиться примерно следующее:

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

А через несколько секунд — вот это:

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Всё, сеть работает. На всё ушло меньше пяти минут не считая времени загрузки ОС. Можно пробовать подключаться.
В этом окне отображаются IMSI абонентов, подключившихся к сети, а также их номера.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

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

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост
Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Запустились и две более новые легенды. Всё, можно звонить и отправлять SMS. Точно так же, как мы делали это при помощи телефонов.

❯ А что насчёт интернета?


Но, конечно, при помощи Osmocom можно поднять и GPRS. Причём в случае использования SDR можно получить полноценную сеть, где будут работать все составляющие: звонки, SMS, USSD и пакетные данные. В случае использования телефонов нам пришлось бы либо подключать дополнительные моторолы, либо потерять возможность звонить.
Ну что же, самое время попробовать запустить GPRS.

❯ GPRS и как он работает


И перед началом экспериментов традиционно разберёмся с тем, как пакетный трафик в 2G-сети перенаправляется во внешний мир.

GPRS имеет свою опорную сеть. Она представляет собой расширение для сети GSM, добавляющее в неё возможность обмена пакетными данными.

Итак, сеть с поддержкой GPRS дополнительно включает в себя следующие компоненты:

  • PCU (Packet Control Unit). Это устройство управления пакетами, позволяющее в паре с контроллером БС отправлять и принимать те самые данные.

  • SGSN (Serving GPRS Support Node). Этот узел отвечает за обслуживание абонентов — обмен пакетами, тарификацию, проверку APN (Access Point Name) точки доступа, распределение ресурсов.

  • GGSN (Gateway GPRS Support Node). Шлюз, соединяющий сотовую сеть с другими сетями передачи данных.


Для работы GPRS на телефоне должна быть создана точка доступа, включающая в себя APN, логи и пароль. Обычно она создаётся сразу при регистрации в сети оператора и участие пользователя в этом не требуется.

❯ Конфигурация


Как и в прошлом случае, для начала необходимо настроить сеть.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Необходимо узнать имя подключения, через которое компьютер получает доступ в интернет. Сделать это можно, открыв ifconfig или iwconfig.

Теперь открываем opengts_egprs.cfg из папки configs. И приводим его к следующему виду:

!
! OpenBSC configuration saved from vty
! !
password foo
!
line vty
no login
!
e1_input
e1_line 0 driver ipa
e1_line 0 port 0
no e1_line 0 keepalive
network
network country code 250
mobile network code 10
short name MaFrance
long name MaFrance
auth policy accept-all
authorized-regexp .*
location updating reject cause 13
encryption a5 0
neci 1
rrlp mode none
mm info 1
handover 0
handover window rxlev averaging 10
handover window rxqual averaging 1
handover window rxlev neighbor averaging 10
handover power budget interval 6
handover power budget hysteresis 3
handover maximum distance 9999
subscriber-keep-in-ram 0
bts 0
type sysmobts
band GSM900
cell_identity 7229
location_area_code 7619
training_sequence_code 7
base_station_id_code 63
codec-support fr efr amr
ms max power 15
rxlev access min 0
periodic location update 1000
cell reselection hysteresis 14
cell reselection offset 120
temporary offset 0
penalty time 20
radio-link-timeout 32
channel allocator ascending
rach tx integer 9
rach max transmission 7
channel-descrption attach 1
channel-descrption bs-pa-mfrms 5
channel-descrption bs-ag-blks-res 1
ip.access unit_id 1801 0
oml ip.access stream_id 255 line 0
gprs mode egprs
gprs routing area 1
gprs cell bvci 1234
gprs nsei 1234
gprs nsvc 0 nsvci 1234
gprs nsvc 0 local udp port 23001
gprs nsvc 0 remote udp port 23000
gprs nsvc 0 remote ip 127.0.0.1
no force-combined-si
trx 0
rf_locked 0
arfcn 100
nominal power 34
max_power_red 20
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config SDCCH8
hopping enabled 0
timeslot 2
phys_chan_config TCH/H
hopping enabled 0
timeslot 3
phys_chan_config TCH/H
hopping enabled 0
timeslot 4
phys_chan_config TCH/H
hopping enabled 0
timeslot 5
phys_chan_config TCH/H
hopping enabled 0
timeslot 6
phys_chan_config PDCH
hopping enabled 0
timeslot 7
phys_chan_config PDCH
hopping enabled 0
nitb
assign-tmsi
subscriber-create-on-demand random 100 199
smpp
local-tcp-port 2775
system-id OSMO-SMPP
policy accept-all
esme OSMPP
password 1234
osmocom-extensions

Здесь активирован GPRS, а также изменены два таймслота — теперь им выделены пакетные данные. Настройки, касающиеся сети (имя, канал, код...) остались те же самые, их также нужно изменить, как в прошлый раз.

На телефоне необходимо создать точку доступа. APN её может быть любым, как и в случае с srsRAN он не проверяется, нужна она лишь для того, чтобы телефон сам начал подключение.
Итак, время запускать сеть. На этот раз делается это так:

sudo ./main.py -d uhd --gprs -i (тут ваше имя подключения)

Если в более старых руководствах надо было править файлы конфигурации, менять iptables, то тут достаточно просто указать подключение, которое связывает машину с внешним миром.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Для проверки был взят всё тот же смартфон от Samsung. Подключаемся к сети, включаем сотовые данные, и в строке состояние появляется «EDGE». Отлично, работает.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

У меня было много опасений, что интернет работать не будет. Во-первых, куча приложений, стремящихся дорваться до сети во что бы то ни стало, во-вторых, сам размер сайтов, не позволяющий пропихнуть их через канал, по скорости недалеко ушедший от модемного. Но легковесные сайты по типу old-dos.ru вполне открылись.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Далее я подключил и свой основной телефон. Он тоже отлично заработал и подхватил созданную сеть.

❯ Возвращаем свой две тысячи седьмой


Пожалуй, одна из немногих составляющих старого железа и «тех» времён в принципе, к которой я не испытываю ностальгии, — мобильный интернет.

По поистине конским тарифам (единицы рублей за мегабайт) предоставлялось весьма слабенькое соединение. Мобильные версии сайтов тогда тоже сильно отличались от привычных нам. Существовало два протокола — WAP (созданный специально для GSM-сетей, работающий через шлюз поверх GPRS или SMS), в котором передавалиись страницы в формате WML, и обычный HTTP. Позднее префикс «wap.» получили вообще почти все сайты, адаптированные под сотовые телефоны.

Сайты эти тоже были весьма своеобразными — на типичной страничке было в наличии практически всё, от новостей и мобильного софта (с непременными разделами для J2ME, WM и Symbian) до знакомств и дешёвой эротики. Многие телефоны из использовавшихся в те времена до сих пор хранят на своих картах памяти картинки с котиками, скачанные по пять рублей за мегабайт.

Также существовал такой бич для баланса как «premium-rate сайты». Суть их заключалась в том, что при заходе на с виду обычный сайт абонент мог не только просадить весь свой баланс, но и уйти в глубокий минус — тарификация по ним была повышенной (вплоть до сотен рублей за мегабайт), отчего заход на такие страницы обходился во всех смыслах дорого (на безлимитных тарифах они всё равно списывали деньги). Не обходилось и без грязного SEO (в духе тех времён) в виде размещения на страницах элементов с вот таких вот сайтов по типу «невидимых» картинок и тому подобного материала.

К слову говоря...

Нечто подобное сейчас тоже существует, правда, в куда меньших масштабах (например, у Tele2 — на страницах ошибок по типу 404).
Случайный жмяк по рекламе (которую ещё иногда делают картинкой в виде видеоплеера, чтобы кто-то намеренно нажал), и пользователь немедленно получает подписку за двадцать-тридцать рублей в сутки, отказаться от которой очень сложно.

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

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Увы, Siemens так и не смог загрузить ни один сайт. То ли что-то с настройкой точек доступа, то ли его браузер поддерживает только WML, но ничего больше унылой надписи «Соединение...» из него выжать не удалось.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Поэтому на помощь был призван Nokia E90, который смог загрузить вначале old-dos.ru…

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

… а потом и какой-то древний мобильный сайт.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

А вот он же на экране Nokia N95.

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Интересно, обновляются ли они? Или эти «обновления дня» остаются такими уже лет десять?

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Отправляемся гуглить и находим список из всё ещё живых старых сайтов. А вот и ещё один экземпляр…

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

Забавно — программы для WM, а значок от Win8/WP…

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост

lankost.net, один из крупнейших ныне живых...

> Продолжение в источнике материала на Хабре. Увы, все фото не влезли (их действительно много), а именно в них вся суть и самое вкусное. :)

Как запустить собственную GSM-сеть за пять минут при помощи SDR Gsm, Sdr, Timeweb, Электроника, Мобильные телефоны, Техника, Интернет, Связь, Android, Длиннопост
  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 25
Отличная работа, все прочитано!