Usb kvm своими руками

IP KVM своими руками

Эта статья написана под впечатлением от другой — большое спасибо автору! В этой статье почти удалось сделать собственный IP KVM Switch, и это круто! Но объясню, почему почти. Да, там все работает как и написал автор… До момента перезагрузки в биос — там вся магия рассеивается и сколько не старайся, ничего не происходит.

Решено было исправить это досадное недоразумение и как можно дешевле и компактней. Начнем со стереотипов Raspberry Pi и Arduino, а в следующей статье будет продолжение уже на другом железе.

Итак, что нам понадобится:

1. Плата видеозахвата обязательно с поддержкой UVC драйвера, вроде этой.Вариантов
полно на алиекспрессе и других китайских магазинах.

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

2. VGA to AV Конвертер:


Обратите внимание! Нужен именно VGA to AV, а не наоборот.

3. Arduino UNO, именно UNO, так как на ней есть чип Atmega16u2, он нас интересует в первую очередь. Вот он рядом с USB портом, так же бывают ардуины с чипом Atmega8u2 подойдут и с тем и с тем.

4. Ну и конечно Raspberry Pi, у меня был версии 2 b поэтому все написанное в этой статье актуально именно для него, но в целом думаю не должно возникнуть особых сложностей и с другими моделями малины.

Заливаем дистрибутив

Что ж вводные данные даны, пожалуй приступим.Я использовал дистрибутив 2015-05-05-raspbian-wheezy, вероятно это не принципиально, дальнейшие манипуляции должны подойти для любого дистрибутива основанного на Debian.

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

Переходим в консоль, обновляем пакеты:

Передача видео

Проверяем определилась ли плата:

Должно выдать что-то вроде: /dev/video0.

Устанавливаем Motion, трансляцию захваченного изображения будем вести именно через него:

Редактируем конфиг автозапуска:

В строке start_motion_daemon ставим ‘yes’. Сохраняем изменения Ctrl + x, y, Enter.

Редактируем конфиг самого motion(а):

Меняем значения параметров как указано далее:

Параметр определяет запуск приложения в качестве службы:

Эти параметры определяют разрешение передаваемого изображения, смысла ставить большее разрешение нет, т.к. захват видео ограничен стандартами PAL или SECAM, разрешение коих 720х576. Это кстати досадный недостаток, но об этом позднее.

Частота захвата кадров:

Отключаем сохранение скриншотов:

Качество передачи изображения:

Частота передачи кадров:

Отмена ограничения на подключение с других ip

Сохраняем изменения Ctrl + x, y, Enter.

Ждем пару минут если все сделали правильно должен загореться светодиод на плате видео захвата.

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

Процесс пошел, ищем жертву для захвата сигнала с VGA порта, подключаем к порту “VGA IN” конвертера, а плату видеозахвата к “VIDEO OUT”. Должна получиться примерно такая картинка, не пугайтесь у меня плохой кабель поэтому изображение «двоит», пробовал с другим изображение было лучше, но разрешение не изменить. 720х576 это ограничение конвертера и платы видео захвата, которое при всем желании не преодолеть.

Что ж передавать изображение научились, осталось дело за малым — передать управление.

Передача управления

Для этого, как вы уже догадались, будем использовать ардуину. Выбор пал на Arduino UNO неспроста, там есть очень нужная для наших целей микросхема с названием Atmega16u2, только благодаря ей мне удалось заставить БИОС компьютера определить arduino как USB клавиатуру. По умолчанию в составе платы ардуино эта микросхема выполняет роль USB to Serial конвертера для заливки прошивки в микроконтроллер Atmega328p, большая прямоугольная микросхема на плате ардуино. По сути же Atmega16u2 является то же микроконтроллером, но с важным отличием, она способна напрямую работать с шиной USB. Atmega16u2, при наличии нужной прошивки, может эмулировать практически любое USB устройство. Понимаете к чему я веду? Мы прошьем это чудо инженерной мысли и заставим трудиться на благо общества.

Читайте также:  Как ремонтировать микроволновку своими руками

Прошивка Atmega16u2

На просторах интернета была найдена прошивка, которая превращает Atmega16u2 в USB клавиатуру принимающую команды, определенного вида, через Serial Port.

Инструкция в данной статье написана для windows, линуксоиды же могут воспользоваться этой.

И так приступим, для прошивки потребуется утилита от производителя под названием Flip. Качаем, устанавливаем, запускаем и вот перед нами окно программы:

Сначала кнопки(галки) не активны, это нормально, подключаем ардуину к компьютеру и замыкаем – размыкаем два крайних контакта со стороны USB порта, RESET и GND.

В системе должно появиться новое устройство под названием, как ни странно, ATmega16u2 устанавливаем драйвер(в папке с программой), выбираем в программе flip вкладку «Settings» → «Communication» → «USB» → «open», кнопки должны стать активны. На всякий случай можно сделать бэкап прошивки, чтоб можно было все вернуть на место. В меню «File» нажимаем «Load HEX File», программа требовательна к путям, лучше всего положить файл прошивки в корень диска C:, выбираем нужный hex файл с прошивкой, проверяем стоят ли галки «Erase», «Program», «Verify» и нажимаем «Run». Отключаем — подключаем arduino и вуаля… Теперь мы больше не сможем загружать прошивки в ардуино через встроенный USB, зато получили отличную клавиатуру без кнопок.

Не переживайте по поводу прошивки arduino, прошивку можно будет загрузить из Arduino IDE через отдельный USB To TTL адаптер, хотя надо сказать, теперь это будет менее удобно.

Подключаем USB To TTL адаптер, например такой:

Нам понадобятся Белый, зеленый и черный контакты это RX, TX и GND соответственно, подключаем их к пинам с такими же обозначениями на ардуине, только наоборот RX к TX, а TX к RX. Красный контакт использовать не следует!

Подключаем USB To TTL к компьютеру, устанавливаем драйвера, в диспетчере устройств должен появиться новый COM Port. Открываем arduino IDE и выставляем: Плата — Arduino/Genuino Uno, Порт – наш новоиспеченный последовательный порт.

Приступаем к прошивке arduino

Добавим необходимую библиотеку в arduino IDE: Переходим по ссылке github.com/SFE-Chris/UNO-HIDKeyboard-Library нажимаем «Clone or download» → «Download ZIP». далее в arduino IDE выбираем вкладку «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку» и выбираем только что скачанный zip архив.

Подготовка закончена, переходим непосредственно к прошивке. Копируем мою писанину:

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

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

Финишная прямая

Открываем консоль на распберри и пишем:

Откроется меню настройки распберри, выбираем «Advanced Options» → «Serial» и выбираем «No».

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

Устанавливаем программу minicom.

Minicom — простенькая программа для работы с serial портом.

Задаем права на доступ к устройству, /dev/ttyAMA0 — это тот самый сериал порт.

Читайте также:  Как изготовить зубной протез своими руками

Откроется меню программы, выбираем пункт «Serial port setup», откроется еще одно меню, выбираем «Serial Device» нажатием на клавишу A, прописываем /dev/ttyAMA0, нажимаем Enter, далее выбираем пункт Bps/Par/Bits под буквой E, появляется очередное меню нажимаем C и Q строчка Current: должна выглядеть вот так «9600 8N1» нажимаем Enter. Убедимся что в строчках F — Hardware Flow Control: и G — Software Flow Control: стоит No, в общем все должно быть как на скриншоте ниже, нажимаем Enter.

Сохраним эти настройки как настройки по умолчанию «Save setup as dfl» и закрываем «Exit from Minicom».

Подключение

Едем дальше, теперь у нас практически все готово, осталось только подключить ардуину к serial порту малины, вот как-то так:

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

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

Или хотя бы собрать делитель напряжения на резисторах.

Запуск

Все готово, можно начинать.

Проверяем все соединения, вкючаем raspberry pi, переходим в консоль малины, запускаем minicom. Сразу оговорюсь я подключался к малине через ssh, в качестве клиента использовал KiTTY(модифицированную версию PuTTY), это важно т.к. с другими терминалами значения передаваемых клавиш могут быть иными и соответственно нужно будет сделать поправку на ветер — поменять номер перехода switch case.

В общем передаю вам в руки как говорится «as is». Что ж на этом пожалуй закончу, самодельный IP KVM готов.

На последок опишу что получилось в сухом остатке.

Плюсы:

— Цена
— Устройство получилось относительно недорогим
— Raspberry Pi: примерно 2700руб.
— Arduino UNO: примерно 400руб.
— VGA to AV конвертер: примерно 700руб.
— Плата видеозахвата: 500руб.
— Итого: 4300руб.

— Тонкая настройка
Можно перехватывать практически любые комбинации и назначать на них практически любые клавиши вплоть до KEYBOARDPOWER и VOLUMEUP, кстати возможные значения можно посмотреть в заголовочном файле HIDKeyboard.h, а можно и добавить свои.

Минусы:

— Торможение как видео, так и передачи нажатий
— Второй и самый большой это качество изображения, здесь просто необходим грустный смайлик, оно ужасно, даже если убавить разрешение на целевом компьютере до минимума, максимум что можно будет сделать, это настроить БИОС и выбрать пункт в загрузчике. Но разве собственно не для этого нужен KVM. А для всего остального существует радмин и ему подобные.

Источник

Делаем своими руками: KVM Over IP при помощи Raspberry Pi

На Хабре вряд ли стоит рассказывать о программах удаленного доступа к ПК, вроде TeamViewer. Но все это работает лишь в среде операционной системы. А вот доступа к BIOS, возможности установки, переустановки и прочих операций с операционной системой нет. Для всего этого есть иные решения. Одно из самых доступных — KVM Over IP.

Конечно, если покупать брендовую систему, то получится дорого. Но есть иное решение — создание собственной системы на основе «малинки». Это решение предложил разработчик Максим Деваев (Maxim Devaev). Он собирается начать продавать эту систему по $130. Но собрать все это можно и самостоятельно — главное запастись собственными компонентами. Под катом — описание того, как это сделать.

Прототип Pi-KVM без корпуса

Необходимые компоненты

Настройка SD-карты для Raspberry Pi KVM Over IP

Все, что нужно для настройки можно загрузить из сети в виде образа диска и записать потом этот образ на карточку. Сделать это можно при помощи Raspberry Pi или balenaEtcher (есть и другие варианты).

    Загрузить образ диска Pi-KVM. Вот ссылка. На исходном ресурсе есть несколько версий образов — для разных версий Pi. Кроме того, выбирать нужно исходя из того, что вы используете — HDMI-to-CSI или HDMI-to-USB.

  • Распаковываем образ.
  • Запускаем Raspberry Pi Imager.
  • Теперь нужно выбрать опцию “Choose OS” → “Use Custom” и, соответственно, использовать образ. Еще требуется определить SD карту при помощи не самой сложной опции “Choose SD Card”.
  • Write — прошиваем.
    Читайте также:  Жесткий пояс для платья своими руками

    Собираем и настраиваем Raspberry Pi for KVM Over IP

    Теперь можно приступить к сборке «железа». Здесь тоже все просто.

    1. Соединяем CSI шлейф нашего HDMI-to-CSI-2 бриджа с портом камеры «малинки». Чтобы убедиться, что все правильно подключено, лучше посмотреть на фото. Если вы используете HDMI-to-USB, то просто подключите коннектор к разъему USB. Ну или в случае Pi Zero — подключаем microUSB к USB Type-A.
    2. Нужно заизолировать 5В пин на коннекторе USB Type-A сплиттера. Проще всего сделать это при помощи тонкого изолирующего материала. Можно просто убрать и контакты, которые ведут к этим пинам, но все же безопаснее и проще — просто заизолировать коннектор. Если этого не сделать, то USB порт компьютера может быть поврежден.
    3. Подключаем кабель USB C-to-A к Type-A

  • Подключаем кабель USB-C к порту USB-C «малинки».
  • Подключаем коннектор Type-A к питанию.

    Подключаем USB Type-A коннектор и HDMI ПК, которым нужно управлять.

    Настройка ПО Pi-KVM

    Теперь мы можем начать работу с Pi-KVM. Первая загрузка будет довольно продолжительной, так что придется подождать. Но в итоге все запустится, после чего можно начать настройку.
    1. Определяем IP «малинки». Собственно, вряд ли на Хабре нужно рассказывать, как это сделать, но на всякий случай — сделать это можно при помощи роутера, в панели которого отображаются IP всех подключенных девайсов.

    Кроме того, можно запустить командную строку Windows и выполнить команду “arp -a”. После этого вы увидите все адреса устройств, подключенных к локальной сети. Любой девайс, адрес которого начинается с b8:27:eb: или dc:a6:32: и является Raspberry Pi.

    2. Вводим IP в браузере клиентского ПК, после чего открывается страничка входа.

    3. Дефолтные значения входа — admin и admin.

    4. Кликаем по иконке KVM.

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

    Чем больше объем вашей SD-карты, тем больше образов ISO можно загрузить и использовать в дальнейшем, расширяя функциональность системы.

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

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

    А вот прототип нашей системы без корпуса и 4-х портовый KVM switch.

    Обновление Pi-KVM до последней версии

    Pi-KVM часто получает обновления, поэтому постарайтесь держать актуальную версию. Для обновления нужно:

    1. Выбираем иконку консоли в главном меню Pi-KVM, после чего запускается консоль.
    2. Вводим «su» и получаем суперпользователя. Пароль — root
    3. Вводим “rw” и открываем систему для записи.

    Обновляемся при последовательном вводе команд “pacman -Syu” и “Y”.

    Удаленное управление

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

    1. Заводим учетку в Tailscale, выбирая бесплатный тариф Solo Plan для частного использования.
    2. Нажимаем на иконку консоли в главном меню Pi-KVM

  • Становимся супер-пользователем при помощи «su» и пароля «root»
  • Открываем систему для записи.

  • Вводим команду “pacman -S tailscale-pikvm” для запуска VPN-сервиса на нашей системе.
  • Вводим «reboot» для перезагрузки.
  • После этого нужно снова получить доступ к системе, повторяем шаги 1-4.
  • Вводим “systemctl enable —now tailscaled” для активации сервиса.
  • Инициализируем начало работы, вводя “tailscale up”.

    Сторона клиента

    Теперь настроим tailscale на клиенте. Tailscale поддерживает большинство операционных систем, включая windows, mac и linux.

    1. Загружаем версию для своей ОС по этой ссылке.
    2. Переходим по этой ссылке для отображения IP VPN.

    Вводим IP в строку браузера, что позволяет подключиться к PI-KVM.

    В целом, это и все. Благодаря этой инструкции получаем недорогой, быстрый и простой в использовании KVM over IP сервис. Если нужны дополнительные подробности, то они доступны по этой ссылке.

    Источник

  • Оцените статью