LINUX.ORG.RU

Pi-KVM - проект открытого IP-KVM на Raspberry Pi

 , , , ,


23

5

Состоялся первый публичный релиз проекта Pi-KVM: набора софта и инструкций, которые позволяют превратить Raspberry Pi в полностью функциональный IP-KVM. Это устройство подключается к HDMI/VGA и USB-порту сервера, чтобы управлять им удаленно, независимо от операционной системы. Можно включить, выключить или перезагрузить сервер, настроить BIOS и даже полностью переустановить ОС с загруженного образа: Pi-KVM умеет эмулировать виртуальный CD-ROM и флеш-накопитель.

Количество необходимых деталей, помимо самого Raspberry Pi, минимально, что позволяет собрать его буквально за полчаса, а общая стоимость окажется в районе $100 даже в самой дорогой конфигурации (в то время как многие проприетарные IP-KVM при меньшей функциональности будут стоить от $500 и выше).

Основные возможности:

  • Доступ к серверу через веб-интерфейс обычного браузера или VNC-клиент (никаких Java-апплетов или флеш-плагинов);
  • Низкая задержка видео (порядке 100 миллисекунд) и высокий FPS;
  • Полная эмуляция клавиатуры и мыши (включая светодиоды и прокрутку колесиком/тачпадом);
  • Эмуляция CD-ROM и флешки (можно загрузить несколько образов и подключать их по мере необходимости);
  • Управление питанием сервера с помощью ATX-пинов на материнской плате или через Wake-on-LAN; поддерживается IPMI BMC для интеграции в существующую сетевую инфраструктуру;
  • Расширяемые механизмы авторизации: начиная от обычной по паролю и заканчивая возможностью использования единого сервера авторизации и PAM.
  • Широкая поддержка железа: Raspberry Pi 2, 3, 4 или ZeroW; различные устройства видеозахвата;
  • Простой и дружественный тулчейн, который позволяет собрать и установить ОС на карту памяти Raspbery Pi всего парой команд.
  • И многое другое.

Также готовится к релизу специальная плата расширения для Raspberry Pi 4, которая реализует все описанные функции, плюс множество других возможностей (подробности на GitHub). Открытие предзаказов ожидается в четвертом квартале 2020 года. Стоимость ожидается в районе $100 или меньше. Подписаться на новость о предзаказе можно тут.

>>> Подробности на GitHub

★★

Проверено: Zhbert ()

Отличная работа.

Предлагаю еще один USE CASE: VDI. Вывод данных с проброшенной в виртуальную машину видеокарты.

Если в SPICE-клиента завернуть вывод от PIKVM, можно будет получить полноценный виртуальный десктоп со звуком, общим буфером обмена и клиентским Интернет соединением.

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

b0r1s ()
Ответ на: комментарий от No

Существует миллион плат на ARM. Я не отказываюсь их поддерживать, даже наоборот. Но мне бы хотелось, чтобы я не делал весь софт в одно рыло, как до этого, а чтобы владелец такой платы оказал в поддержке посильное участие :) Если кто-нибудь найдется с платой - обязательно добавим.

liksys ★★ ()
Ответ на: комментарий от liksys

Идея топовая, но боюсь через USB 2.0 все это счастье не пролезет :) Это надо PCI-E городить (хотя такие мысли тоже были)

От PIKVM ничего не нужно кроме видеопотока. Все остальное предоставляется пользователю через SPICE-соединение.

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

Всё что осталось сделать это код SPICE-клиента пропатчить чтобы видеопоток с PIKVM отображался поверх имеющегося экрана.

b0r1s ()
Ответ на: комментарий от anonymous

uStreamer solved all of this. It ran its own minimal HTTP server that served video in Motion JPEG, a format browsers play natively. I didn’t have to bother with HLS streams or getting ffmpeg and nginx to talk to each other.

The tool was so fully-featured that I assumed Max simply forked it from a more mature project, but I was mistaken. This maniac wrote his own video encoder in C just to squeeze the maximum performance out of Pi hardware. I quickly donated to Max and invite anyone who uses his software to do the same.

greenman ★★★★★ ()

Интересный проект.

А у 1-3 пишек вообще достаточно пропускной способности, чтобы прокачивать через себя видео с экрана? Там же около 40Мб/сек в сумме вообще на всё.

kirill_rrr ★★★★★ ()

Народ, немного не в тему, но всё же близко…

Не попадалось ли кому мониторов со встроенным KVM на пару входов? Поясню: полно моников с переключением источника видео по нажатию кнопки. Им бы цены не было, если б они еще и USB переключали (на звук плевать).

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

anonymous ()
Ответ на: комментарий от anonymous

https://www.samsung.com/us/computing/monitors/curved/43-cj890-super-ultra-wide-curved-monitor-lc43j890dknxza/ умеет так. У меня к нему подключены вебка, свистки от беспроводной клавы и мыши и колонки. Он сам через один usb-c подключен к неттопу, а вторым к ноуту (когда нужно). Через этот usb-c работает само видео, клавиатура, мышь, вебка, колонки. Ну а ноут ещё и заряжается, т.к. там на type-c порты выведено 15W и 85W power delivery соотвественно. Да и как монитор он отличный - 32:10 (как 2 монитора 16:10 рядом), 120Hz. Но цена, да, соотвествует - отдал за него $770 полтора года назад. Возможно у Самсунга такое есть и в мониторах попроще, но я не в курсе.

ava1ar ()
Последнее исправление: ava1ar (всего исправлений: 2)

Поздравляю с релизом! Рад, что нашёл свою ЦА. Патреон показывает, что умеешь не только писать код, но и преподносить ПО конечному пользователю. Опенсорс здорового человека.

arturianec100 ()
Ответ на: комментарий от anonymous

Не попадалось ли кому мониторов со встроенным KVM на пару входов? Поясню: полно моников с переключением источника видео по нажатию кнопки. Им бы цены не было, если б они еще и USB переключали (на звук плевать).

Давно таким пользуюсь, BenQ PD3200Q, 4 входа HDMI/DP/mDP/DVI. Звук идет по HDMI, есть 4 входа USB и 2 выхода. Переключается либо на самом мониторе, либо на пульте. Можно настроить шорткаты чтобы сразу все перебрасывать, можно автоматом, короче масса вариантов.

Нареканий никаких, кроме того что я хочу iiyama всю жизнь. Но за такие деньги с такими возможностями у iiyama можно купить разве что упаковку.

alex07 ()
Последнее исправление: alex07 (всего исправлений: 4)
Ответ на: комментарий от anonymous

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

liksys ★★ ()

Интересный проект. После работы с KVM, что требует старых-старых JRE 7/8 и кучу магии, чтобы с ними работать(и это реальные железки от именитых производителей) ваш проект с HTML-интерфейсом и VNC выглядит на редкость удобно, современно и разумно. Да и клава получше выглядит, чем у KVM, с которыми приходилось иметь дело. Да и эмуляция CD-ROM и флешки смотрится интересно. Что-то подобное у IPMI/ILO есть, а у классического KVM - далеко не всегда.

lucentcode ★★★★★ ()
Ответ на: комментарий от zgen

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

liksys ★★ ()

Круто, спасибо!

Только у меня маленький вопрос, сейчас везде есть IPMI с консолью через web либо java-клиент, данная замена нацелена на варианты без IPMI, более старые сервера?

int13h ★★★★★ ()
Ответ на: комментарий от int13h

«Везде есть IPMI» - это сильное преувеличение. Например, если вы пойдете собирать какой-нибудь рендер-кластер на райзене и воткнете туда штук шесть видях, с высокой вероятностью вы используете десктопную/игровую материнку, и никакого IPMI у вас не будет. А таких конфигураций на самом деле полным-полно.

liksys ★★ ()
Ответ на: комментарий от liksys

Тебе вагон респекта и еще камаз уважухи за этот проект!!! Сам хотел мастерить подобное, но чисто для себя, просто необходимо было, нужнейший проект! Пользоваться буду, а может и сконтрибучу ченить. Чтобы не быть пустозвоном, просто промолчу что хотел сделать (что делаю на базе ПЛИС), но если кое что получится, такое может будет применимо к этому проекту

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от liksys

У меня только один вопрос, вижу документацию на чип TC358743XBG, ясно что готовая плата «люся» сделана на базе него. Еще знаю что MIPI CSI-2 в Rapsberry поддерживает только ограниченный набор сенсоров

Как удалось заставить raspivid (или свою программу по мотивам) настраивать режим работы для подобного устройства, которое не является сенсором? Как удалось согласовать разрешения захвата, скорость линков (lanes)?

Я уже продолжительное время занимаюсь с отладочной платой Lattice Crosslink совместно с Raspberry Pi в качестве самого доступного приемника. Есть демо прошивка, которая прокидывает CCI (I2C) прямо до сенсора и это позволяет такому мосту работать

Моя же проблема что у меня собственная прошивка, которая работает в режиме CMOS->CSI2, точнее должна работать. В модели работает (собственный паттерн-генератор с вроде как с правильными таймингами), всё по сто раз перепроверил, но она не принимает поток в таком режиме в реале (все тактовые сигналы работают, всё отлично, PLL заводится и многое другое), хотя я на Raspbrry даю такие же параметры на сенсор, какие генерирую в своей прошивке

Единственно что пробовал принимать Crisslink-чипом от сенсора, вот это вроде как работает, кадры бегут, а вот само расбери не кушает

Вот потому и непонятно, как же Raspberry заставить принимать поток не от сенсора, какой протокол? У меня есть игрушка на базе FT2232HL и через нее я собираюсь обманывать Raspberry что она якобы общается не с сенсором

На форуме Raspberry org мне ихний инженер автор raspivid поведал, что если отучить raspivid от I2C и вручную задать фиксированные параметры в структурах, то оно без проблем должно сожрать мой поток. Меня научили как включать отладочный режим ихнего драйвера

Как это чудо свершилось в RPI-KVM?

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Я не буду вас обманывать - я не электронщик и не особо разбираюсь во внутренностях этого бриджика. Один из разработчиков ядра пая написал к tc358743 драйвер и поддерживает его: https://github.com/torvalds/linux/blob/master/drivers/media/i2c/tc358743.c

Может, это как-то поможет.

liksys ★★ ()
Ответ на: комментарий от liksys

Один из разработчиков ядра пая написал к tc358743 драйвер и поддерживает его: https://github.com/torvalds/linux/blob/master/drivers/media/i2c/tc358743.c

Да, это поможет. Вижу что там есть I2C для edid, еще и I2C от CSI-2 там вижу. Наверное, стоит заказать такую плату

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от anonymous

К вогнутости привык буквально за день. Возможно дизайнерам-чертёжникам вогнутость мешает, но мне как программисту не мешает ни разу. До этого были 2 x Dell U2415 (24" 1920x1200) - т.е. я получил примерно то же, только с USB-C и одним экраном без разделителя посередине. Ширина экрана позволяет его делить на 3 части, чем я сейчас активно пользуюсь. На работе 4x24", но мы с марта месяца на удалёнке и похоже это надолго, так что живу с одним 43" и особо не жалуюсь.

ava1ar ()
Последнее исправление: ava1ar (всего исправлений: 1)