2013-12-18

Открытый Терминальный Клиент — первый шаг

Первый раз опубликовано 18 дек 2013 в 00:16 на habrhabr.com
Это первая моя статья на Хабр. Спасибо Хабру за предоставление этой возможности нашей компании.
Мы делаем конечное устройство — ультратонкий клиент — терминальный клиент для «всех» (RDP, VMWare, S.P.I.C.E. и другие) терминальных систем. «Всех» в кавычках потому что это пока не реализовано, но пути есть.
Сейчас готов прототип — плата DS-109 (размером 100мм*100мм) — CPU 1 ГГц, RAM 1 ГБ, NAND 4Гб,…
alt text
Закончено производство платы DS-110, характеристики платы opensourceclient.org/faq/specifications-ds-110
Ниже я кратко расскажу о пути, который привел нас под предводительством меня к нынешнему состоянию дел.
Всё началось давным-давно. Моя средняя школа пришлась на середину 80-х, тогда я стал посещать радиокружок в нашем поселке, который находится на расстоянии ~1900 км от Москвы и ~2500 км от Санкт-Петербурга.
Огромное спасибо за организацию этого кружка военруку (в то время) поселкообразующего сельскохозяйственного техникума Михаилу Михайловичу — спасибо Папа! Спасибо бессменному руководителю кружка Юрию Ивановичу (кличка «ереваныч») за привитый интерес к электронике, работе руками и головой.
В конце 80-х я в первый раз увидел компьютер. О, это был класс Yamaha, модели уже не помню, но помню черно-зеленую картинку из игры карате. Большое спасибо преподавателю информатики за эти экскурсии, спасибо Мама!
В 1990-м году мною был собран первый Sinclair ZX Spectrum с этапом пайки и запуска с помощью осцилографа, потом ещё один с дисководом. Много играл, потом более интересно стало разбираться в программах. Выписывал ZX Review, зачитывал до дыр. Уехал учиться в Санкт-Петербург. Успел послужить в вооруженных силах РФ, работал сисадмином, начальником сисадминов. Но денег денег было мало, пошел продавать.
Продавали маленькие терминальные клиенты, это те, что запускают RDP клиент и подключаются к далекому или не очень терминальному серверу Windows и показывают рабочий стол. Производства они были китайского и очень дешевые. Построенные на SOC (системе-на-чипе) и WindowsCE 5/6 версии. Спрос на них был более менее стабильный.
Работать на дядю со временем надоело и стал возникать вопрос — что же делать дальше.
Радиокружок и сисадминство не прошло даром. На горизонте появились новости о Raspberry Pi. А ведь на нём можно сделать терминальный клиент, и он будет маленьким. Предзаказ Raspberry Pi. и ожидание, а также общение с пользователями китайских терминальных клиентов позволили уточнить требования к «идеальному» терминальному клиенту.
Но ряд требований не могли быть удовлетворены тонким клиентом на основе www.raspberrypi.org который модель B), а именно:

  • только 2 USB порта — получается что если хочешь подключить что-то кроме клавиатуры/мыши, то надо городить гирлянду из хаба или использовать ещё что-то
  • вывод видео только по HDMI, на тот момент мониторы с HDMI были редкостью, да и сейчас есть огромный парк мониторов имеющих только VGA/D-Sub
  • отсутствие корпуса, который позволил бы сделать «коробочное» решение
  • питание через USB порт. Ничего плохого нет в питании через USB, но посчитали это недостатком
  • обязательное использование карты памяти — любая штука которая торчит из корпуса имеет шанс на исчезновение или поломку
  • часть ПО используемого в Raspberry Pi имеет характер проприетарного, вроде бы не сильно это и страшно, но наследие сисадминства и любовь к открытым системам подсказывала что это неправильно.
    От себя добавил, что очень удобно было бы подключаться не только к RDP серверам но и к другим (от VMware, RedHat и т.п.).
    В период предзаказа Raspberry Pi, проводя время в поисках решения удовлетворяющего всем требованиям, наткнулся на Cubieboard, тогда ещё единственной версии, теперь это версия Cubieboard1.
    Прямое сравнение характеристик Cubieboard с Raspberry Pi (да, я понимаю, что это не очень корректно, хотя…) было в пользу Cubieboard, а именно — больше памяти, быстрее процессор, открытые спецификации AllwinnerTech SOC A10, видеоускоритель позволяющий воспроизводить видео до 1080p, большое количество pin со всевозможными портами (цитирую «96 extend pin interface, including I2C, SPI, RGB/LVDS, CSI/TS, FM-IN, ADC, CVBS, VGA, SPDIF-OUT, R-TP, and more»). Последнее для терминального клиента конечно лишнее, но это уже есть в базе, а значит можно использовать плату для встраивания в другие устройства, например в 3D принтеры или умный дом — есть мощный процессор, есть много портов для управления.
    Есть NAND для хранения прошивки и SD slot для карты памяти.
    Можно грузиться с NAND, можно с карты памяти.
    Можно загрузить Android 4.0.4, можно Ubuntu 12.04 ARM версию с возможностью обновления с оф.сайта Ubuntu.
    Есть начальная поддержка FreeBSD.
    В конце концов можно запустить и WindowsCE 6.0 — но это не вписывается в концепцию открытого терминального клиента.
    Концепция открытого терминального клиента в нашем понимании — это возможность использовать только открытое программное обеспечение в прошивке.
    В Cubieboard всё также недостаточно портов USB, нет вывода на VGA D-Sub, нет корпуса подходящего для «коробочного» решения.
    Проведя много времени в поисках и думах об возможном решении пришел к мысли, а почему бы не создать что-то типа Cubieboard самим? Радиокружок не прошел даром…
    Однако с тех пор электроника шагнула далеко (очень далеко, можно сказать за горизонт) вперед. Посмотрев на проблему с разных сторон пришли к выводу, что если нырять в конструирование платы самим — это займет не просто очень много времени, это займет всё обозримое время и не факт, что приведет к положительному результату.
    Стали искать профессионала, которым мог бы сделать что-то типа Cubieboard в обозримые сроки и средства. Поиск такого человека/организации — это тема отдельной истории. Если будет интерес — будет и история.
    Много времени занял этот поиск. В результате была найдена организация, которая осуществила разработку и производство прототипа. Прототип был протестирован, требования к окончательному варианту слегка изменились, а именно заменили разъемы USB на немного другие для снижения общей высоты.
    В результате у нас получилась плата по функциям аналогичная плате Cubieboard1с некоторыми отличиями:
  • имеет 6 портов USB, из которых 4 доступны с края платы
  • видео вывод возможен на HDMI или VGA D-Sub (с разрешением до 1920*1080)
  • питание возможно через USB-OTG и отдельным штекером
  • в окончательных требованиях сознательно не ставили наличие WiFi модуля, потому что это удорожает производство и очень сильно удорожает ввоз таких плат в РФ. При необходимости wifi может быть добавлен USB «свистком» для которого есть место на плате.
    Отдельным пунктом выделяю, что в полный рост возможно использование Linux/GNU в виде специального дистрибутива для SOC AllwinnerTech sunxi — весь исходный код доступен.
    Можно использовать Ubuntu 12.04 ARM версию, она будет обновляться с официальных серверов Ubuntu.
    Работают образы созданные для Cubieboard. Программные доработки необходимы только в виде переключения вывода видео с HDMI на VGA/dsub. Можно использовать полноценный Android 4.0.4.
    Таким образом можно использовать нашу плату с прошивкой собранной только из открытого программного обеспечения.
    Можно использовать нашу плату как отдельный «компьютер-на-плате», в самодельных конструкциях, например «умный дом», контроллер печати для 3D принтера и т.п. — огромное количество разных портов позволяет это.
    Открывать документацию на плату вряд ли будем — повторить 6-ти слойную плату в домашних и не очень условиях очень непросто, наверное даже невозможно. Дарить документацию конкурентам тоже не хочется. И разработка такой платы стоила немалых средств — сначала надо их вернуть. О начале продаж плат DS-110 будет новость на нашем сайте, до конца этого года, вероятнее всего на следующей неделе.
    Характеристики платы opensourceclient.org/faq/specifications-ds-110
    Для этой платы у нас есть корпус и крепление на монитор, и блок питания тоже есть.
    Позже мы планируем продавать «коробочные» устройства — достал, подключил провода, настроил для подключения к «любому» терминальному серверу и работай.
    Ссылки: Сайт, который посвящен открытому терминальному клиенту opensourceclient.org, там же расположен и форум. Хабраэффект наверно не выдержит, мы работаем над этим.
    Видео с демонстрацией работы прототипа, платы DS-109
  • Демонстрация работы прототипа платы под Ubuntu 12.04
  • Демонстрация работы прототипа платы под Android 4.0.4
    Дистрибутив Linux специально для работы на AllwinnerTech SOC A1X — http://linux-sunxi.org/Main_Page
    Сайт платы Cubieboard http://cubieboard.org/
    Характеристики платы Cubieboard1 http://docs.cubieboard.org/products/start#hardware_specs
    Производитель AllwinnerTech SOC A10 http://en.wikipedia.org/wiki/Allwinner_Technology оф.сайт http://www.allwinnertech.com/
    Если не хотите пропустить начало продажи нашей платы — на сайте opensourceclient.org можно подписать на рассылку новостей (слева внизу).
Дата публикации December 18, 2013