Нашествие клонов Beepy

Перевод статьи Attack Of The Beepy Clones — Arya Voronova, Hackaday.
В рассказе о родословной проектов на базе клавиатуры BlackBerry на прошлой неделе я разобрала, как череда открытых проектов превратилась в Beepy — классный Linux-наладонник с живым сообществом. Для меня это ещё одна демонстрация силы, которую несёт открытый исходный код, и, что важнее, это показывает, как даже ваш небольшой домашний проектик может вызвать большие движения в мире железа — при условии, что вы его опубликуете. Просто спросите [JoeN], [WoodWorkeR] и [arturo182].
На этом путешествие не закончилось. При всех своих достоинствах у Beepy были недостатки, которыми стоило заняться, — причём некоторые даже убивающие плату. Повышающий регулятор на 5 В никогда не рассчитывался на входные 4,7 В, которые он получает при подключении зарядки, и время от времени сам себя поджаривал. Резистор тока заряда был недостаточного номинала, из-за чего люди либо навешивали на свои платы Beepy резисторы, либо ждали, пока батарея заряжается 30 часов до полного. Диод в цепи питания тоже был недостаточного номинала и выгорел не на одном устройстве. К тому же набор функций Beepy оставлял желать лучшего.
Beepy так и не перешагнул за v1. Если бы мне пришлось гадать — отчасти из-за проблем с поставками клавиатуры BB Q20, но также определённо из-за некоторой потери интереса. Что досадно, ведь планы на v1.5 железа были довольно многообещающими. Тем временем другие игроки решили подхватить эстафету — вот повесть о трёх проектах.
Улучшенный, цветной, закрытый#
Мне нравится говорить обо всех сторонах открытого железа — и хороших, и плохих. Начнём здесь с плохого. Иногда вы публикуете проект под открытой лицензией, которая требует от других делиться своими наработками, если они основаны на ваших файлах. А затем кто-то берёт ваши файлы, вносит от нуля до минимальных изменений, закрывает исходники, а может даже полностью убирает упоминание авторства — и начинает их продавать. Это история Colorberry.

Слева: оригинальный Beepy, справа: Colorberry; найдите 10 отличий. Если одно из них — «лишён всякого упоминания авторства», вам бонусные очки.
Это был один из первых производных от Beepy — вроде бы исправлявший два из трёх багов Beepy и добавлявший поддержку цветного дисплея от JDI. К сожалению, он также убрал некоторые важные элементы, а именно упоминание Beepy на страницах продукта и проекта, — и закрыл исходники.
Печатная плата Beepy лицензирована под реципрокной (копилефт) лицензией, а значит, разработчики производных продуктов должны делиться любыми внесёнными изменениями. Без доступа к исходникам трудно подтвердить, что Colorberry действительно исправил вышестоящие баги Beepy. Это также затрудняет диагностику и ремонт железа и снижает шансы, что Colorberry продолжит жить, если его создатель отойдёт от проекта.
К сожалению, проблемы на этом не заканчиваются. Код для управления цветным экраном сильно основан на драйвере, созданном людьми из сообщества Beepy. Как и железо Beepy, лицензия драйвера (GPL) требует, чтобы внесённые в код изменения были опубликованы. Но когда Алекса, разработчика Colorberry, спросили о публикации кода этого драйвера, он ответил, что это случится, «как только драйвер будет готов». Спустя год новая версия истории, по-видимому, такова, что он выложит исходники, как только закончится его личный запас цветных экранов.
Поскольку драйвер опубликован только в виде (неурезанных) бинарников на GitHub, его нужно перекомпилировать и заново публиковать Алексу с каждым обновлением ядра Linux или дистрибутивом, с которым мог бы использоваться Colorberry. Его также заметно сложнее устанавливать (до такой степени, что людям пришлось сочинять многошаговые скрипты установки), и у меня есть достоверные сведения, что драйвер содержит баг, который на деле сокращает срок службы дисплея. Но без исходников драйвера сообщество не может его исправить.

Позже я это подтвердила, сама заглянув в бинарные файлы, — и действительно, даже опечатки из чужого открытого драйвера всё ещё присутствуют в коде драйвера Colorberry.
Из того, что я видела, открытый дизайн Beepy был решающим фактором для того, чтобы его сообщество расцвело и продолжало процветать даже два года спустя. Загадочные закрытые решения Colorberry просто не складываются в ту же ценность, и, как я понимаю, это большая часть причины, по которой проект не набрал большей популярности.
Colorberry — не единственный клон Beepy, оставляющий исходники железа при себе. PiBerry от CarbonComputers, к сожалению, не исправляет баги оригинального наладонника, но зато приносит на вечеринку цветной дисплей с более высоким разрешением. Он также не пытается стереть свою родословную: и шелкография на плате, и документация ссылаются на то, что он основан на Beepy. И всё же файлы дизайна платы не включены в репозиторий PiBerry.
Что интересно в этом случае — CarbonComputers позже сделали более новую версию PiBerry в том же форм-факторе, рассчитанную на сборку из более «магазинных» компонентов, и у той версии файлы KiCad опубликованы. Здесь я готова истолковать сомнение в пользу создателей и сказать, что невключение исходных файлов предыдущих версий железа может быть просто их упущением, а не намеренным.
Эти двое были не единственными проектами, ожившими благодаря успеху Beepy, — порой, если вы достаточно вдохновите кого-то своим проектом, он может в итоге построить целую линейку гаджетов. Так и случилось с Hackberry Pi — проектом хакера по имени Zitao.
Семейство Hackberry#

Всегда хотели мощь Pi 5 в портативном корпусе? Вот тут и тянешься за Hackberry Pi. Версия на CM5, надо сказать, куда изящнее этой.
Возможно, вы видели Hackberry Pi — это Beepy-подобное устройство с экраном 720×720 DPI, производным от дизайна Hyperpixel от Adafruit, и клавиатурой Q20. Ряд деталей в первых версиях Hackberry Pi на базе Pi Zero был явно производным от дизайна Beepy. Однако как минимум более поздние версии были перерисованы с нуля в EasyEDA, с рядом расходящихся путей проектирования, и Zitao был плодовит в создании новых и в целом лучших версий платформы.
От версии на базе Pi Zero с батареями от Nokia до устройства на базе Pi 5, питаемого элементами 18650, Hackberry прошёл немалый путь. Буквально пару дней назад от момента написания стала доступна версия Hackberry Pi на базе Compute Module, и она расходится как горячие пирожки.
Железо Zitao вдохновляет в нескольких отношениях. Например, тем, как эти устройства избегают необходимости устанавливать драйверы: клавиатура подключается по USB вместо I2C, чипы пауэрбанка со светодиодной индикацией уровня заряда вместо RP2040 у Beepy, — и доходит даже до припаивания на плату небольшого Bluetooth-приёмника, чтобы гонять встроенные динамики от той самой Pi, что всем заправляет. Это костыль, но в то же время трудно спорить с тем, что хорошо работает на практике!
Устройства Hackberry Pi тоже с закрытым исходным кодом, но по крайней мере схемы сделали доступными. Этого достаточно, чтобы заметить большинство багов, и эти схемы уже пригодились людям, указавшим на неудачные проектные решения в первых версиях. Конечно, это всё равно против духа открытого кода и, в частности, против проекта, который вообще сделал Hackberry Pi возможным, — но это хотя бы шаг в правильном направлении.
Наш радикально открытый клон Beepy#
Как вы, возможно, догадались, я не люблю устройства с закрытым исходным кодом. В особенности мне не нравятся устройства, которые пользуются открытой экосистемой, а затем сжигают предоставленную ею добрую волю, будто стремясь стерилизовать и засыпать солью землю, которая иначе послужила бы другим проектам в будущем.

Два экземпляра Blepis v1: один собран с дисплеем Sharp, другой — с более дешёвым цветным SPI.
За последние полгода мне выпала честь работать над Blepis — наследником Beepy, создаваемым хакерским коллективом, в котором я состою, под названием HackMods. Мы вместе спроектировали, спланировали и собрали первые версии этих плат с целью получить целый флот Linux-наладонников.
Сделанный хакерами для хакеров, это эксперимент по тому, насколько далеко можно продвинуть дизайн Beepy, и мы держим всё настолько открытым, насколько сами это нашли, — а можно сказать, что и ещё более открытым! В частности, даже дизайн нашего корпуса — во FreeCAD и с открытым исходным кодом, с включёнными файлами .FCstd.
Первым крупным улучшением, которое мы сделали, стала поддержка экранов. Экраны Sharp Memory могут быть дорогими и часто месяцами отсутствуют на складах, а экраны JDI ещё дороже, и нередко единственные варианты — переоценённые объявления на eBay. Для единичного экземпляра это ещё куда ни шло, но очень неоптимально, если вы собираете флот из дюжины хакерских наладонников для себя и друзей.
Вот почему мы добавили поддержку широко доступных 3,2-дюймовых цветных SPI-экранов 320×240 на 18 контактов в дополнение к экранам Sharp и JDI. У нас даже есть поддержка контроллера сенсора для 18-контактных панелей, идущих со слоем касания, и поддержка подсветки на дисплеях, где она есть. Разумеется, известные баги Beepy тоже исправлены. Наш повышающий преобразователь на 5 В работает в пределах спецификации, а импульсный зарядник батареи, как ожидается, почти не выделяет тепла, обеспечивая при этом изрядный ток заряда.
Печатная плата сделана в основном [LinaLinn] и мной, при участии других разными способами. Наверное, проще было бы рассказать, чего мы не добавили. К счастью, для таких вещей у нас есть разъём расширения! Что ещё? Для начала мы добавили RTC, драйвер вибромотора и встроенный зуммер, не говоря уже о таких вещах, как разъёмы QWIIC для I2C и USB.
У Beepy не было никакой встроенной USB-периферии — предполагалось, что вы воспользуетесь портом microUSB на Pi Zero. А мы добавили целую USB-экосистему на всё свободное место на плате — включая ридер microSD, скошенный слот USB-C, позволяющий подключить маленький USB-C аудиопереходник с разъёмом 3,5 мм для воспроизведения музыки (или другие устройства), и чип USB-хаба, чтобы всё это связать. Помимо этого, мы поддерживаем режим хоста и на нижнем «зарядном» порту USB-C — вместе с выводом питания 5 В.
Некоторые из этих функций, вроде вывода питания на основном порту USB-C, прошивкой пока не поддерживаются. Но, собирая v1, мы неплохо познакомились с прошивкой Beepy, так что добавление поддержки этих функций в прошивке не ожидается таким уж сложным.
Наш разъём расширения также не имеет себе равных по количеству выведенных интерфейсов. Однорядная гребёнка на 23 контакта несёт шины питания 3,3 В, 5 В и VBAT с защитой от перегрузки по току и обратного тока, плюс I2C, SPI, UART, SDIO, PWM и I2S — все с защитой от ЭСР.
Нам уже пожертвовали модуль расширения LoRa от кого-то из сообщества Beepy, а один из наших участников спроектировал плату DECT. Мы планируем вскоре сделать платы, нацеленные на хакинг общего назначения и прошивку BIOS-чипов. Если вы когда-либо хотели наладонник с мощной гребёнкой расширения для целей хардварного хакинга — это дизайн для вас.
Дар отдавать взамен#
Если вы ищете плату Linux-наладонника, надеюсь, вы сможете оценить дизайн железа Blepis, который мы вам приносим, — ставший возможным только благодаря веренице открытых проектов до него. Все наши файлы дизайна и исходники драйверов/прошивки лежат на GitHub и GitLab, а сводку можно найти на сайте экосистемы BBKB у Michael.
Blepis рассчитан на работу с PCBA от JLCPCB, и у нас есть интеграция с GitLab для экспорта файлов проекта — все номера деталей JLC внесены в схемы, так что просто загрузите файлы и получите партию материнских плат прямо к порогу. Чтобы завершить сборку, возьмите Pi Zero, батарею, клавиатуру BlackBerry Q20, дисплей из списка поддерживаемых, распечатайте корпус (совместимый с v2 корпус скоро будет) — и вперёд.
Видеть, как рождаются совершенно новые проекты, каждый круче и продвинутее предыдущего, — и всё потому, что люди продолжали публиковать свой код и файлы плат, — а затем получить возможность собрать устройство мечты для себя и друзей благодаря чужой работе: именно такой опыт радикализировал меня в пользу яростной поддержки открытого кода. Я вижу, как философия открытого кода живёт и процветает через мечты хакеров и бочки вирусных лицензий, через публикацию вопреки несовершенствам и через то, как мы строим на мечтах друг друга, чтобы переломить ход завтрашнего дня. Надеюсь, вам тоже доведётся это испытать.