BEEPY, наладонник для взлома Linux
В давние времена, когда телефоны ещё щёлкали, а модемы гордо пели песни своего народа, я отправился за комплектом компакт-дисков Slackware и это было замечательное путешествие. В то время запуск Linux (особенно на компьютере) не был задачей, к которой следует относиться легкомысленно. Само ядро находилось в постоянном развитии — вместо того, чтобы изменить какую-то малоизвестную подсистему или добавить поддержку нишевого гаджета, которого у вас даже нет, новые версии открывали важные возможности и целые категории периферийных устройств. Я до сих пор помню, как решал, стоит ли мне перестраховаться и остаться с текущим ядром или рискнуть скомпилировать последнюю версию, чтобы проверить это новое "USB Mass Storage", о котором все говорили на форумах.
Но современный настольный Linux достиг невероятного уровня распространения и теперь является выбором для огромного числа пользователей компьютеров. Если добавить сюда Android и Chrome OS, то окажется, что миллионы и миллионы людей используют Linux ежедневно и даже не осознают этого. В наши дни единственный способ ощутить то чувство приключений и удивления, которое когда-то прилагалось к Linux, — это отвлечься от рутины и отправиться на поиски.
Именно это и ощущается при использовании Beepy от SQFMI. Портативное устройство, ранее известное как Beepberry, после чего его создатели получили вполне предсказуемую официальную жалобу, безоговорочно создано для фанатов Linux. В течение последних нескольких недель, играя с этим устройством, я компилировал драйверы ядра, писал собственные скрипты и пытался (хотя и не всегда успешно) установить на него новое программное обеспечение. Если вы увлекаетесь хакингом в Linux, это просто здоровская штука.
Если вы все еще сомневаетесь, подходит ли вам Beepy или нет, то этот обзор поможет вам принять решение до того, как SQFMI официально начнет принимать новые заказы на гаджет стоимостью 79 долларов.
Аппаратное обеспечение
Чтобы внести ясность, сразу скажу: сам по себе Beepy не является компьютером. Это просто плата, сочетающая в себе клавиатуру BlackBerry, ЖК-дисплей Sharp Memory 400 x 200 и аккумулятор. Для работы с устройством вам всё равно потребуется собственный Raspberry Pi Zero, хотя SQFMI планирует предлагать Beepy с предустановленным Pi Zero 2 в качестве дополнительной опции. На его конструкцию распространяется лицензия CERN Open Hardware License v1.2, а схемы и файлы KiCad уже выпущены SQFMI.
Raspberry Pi подключается к Beepy с помощью подпружиненных контактов и фиксируется винтами. Вам не нужно ничего паять, и теоретически это позволяет легко заменять Pi. Однако на практике интерфейс показался мне привередливым. Потребовалось несколько попыток, прежде чем все контакты встали на свои места, и когда всё, наконец, встало как положено, я не решился сдвинуть их.
К счастью, вам уже не придётся этим заниматься. SQFMI вывела контакты GPIO Pi на стандартные разъёмы по обе стороны от дисплея. Это упрощает добавление собственного оборудования и избавляет вас от необходимости прикасаться к самой Pi. Благодаря тому, как расположен Pi при подключении к Beepy, у вас также будет доступ к его порту micro USB (помните, что только один из двух портов Zero можно использовать для передачи данных) и порту HDMI — об этом чуть позже.
Клавиатура
Как я уже сказал, клавиатура — настоящая плата BlackBerry. Если вы когда-либо пользовались таким устройством, то наверняка знаете, насколько она приятна. Конечно, она маленькая, но тактильный отклик отличный, и разработчики проделали отличную работу, убедившись, что все необходимые символы и знаки препинания находятся на расстоянии одного нажатия клавиши ALT.
После некоторого времени использования клавиатуры на Beepy, возвращение к сенсорному экрану на моем Google Pixel причиняет боль, и я снова вспоминаю, каким разочарованием было видеть, как мобильная индустрия отходит от физических клавиатур.
Электроника, соединяющая клавиатуру BlackBerry с Raspberry Pi, основана на BBQ20KBD от Solder Party. Используется и RP2040, который на Beepy управляет светодиодом RGB в верхнем левом углу устройства. Исходный код прошивки RP2040 предоставляется по лицензии MIT , и его можно обновить даже без установленного Pi, удерживая нажатой клавишу «Завершить вызов» при подключении кабеля USB-C, как и в случае с оригинальным BBQ20KBD.
Дисплей
Пожалуй, самой уникальной особенностью Beepy является ЖК-дисплей Sharp Memory, который, как сообщается, используется и в Playdate. Эту технологию иногда сравнивают с eink, поскольку она потребляет очень мало энергии, обеспечивая при этом высокую контрастность и отличную читаемость при дневном свете. Как и у eink, у него нет подсветки, поэтому, к сожалению, вы не сможете использовать Beepy в темноте. С другой стороны, его частота обновления приближена к частоте традиционного ЖК-дисплея, поэтому даже при быстрой прокрутке текста не возникает явных ореолов.
Дисплей имеет разрешение 400 x 240, и в документации рекомендуется использовать шрифт терминала размером 8×8 пикселей, чтобы максимально увеличить объём информации, которую вы можете разместить на нём за один раз. Благодаря превосходному контрасту Sharp Memory LCD мелкий текст читается лучше, чем я ожидал, но его всё равно трудно назвать идеальным. В дальнейшем жизнеспособность Beepy, скорее всего, будет зависеть от того, сколько программ можно адаптировать для этого ограниченного разрешения.
В настоящее время официальной поддержки графики на дисплее Beepy нет, но есть очень многообещающий порт DirectFB2 , который можно установить с помощью скрипта. Но будьте осторожны — скрипт не только добавляет в вашу систему пакеты размером в несколько сотен мегабайт, но и должен скомпилировать несколько библиотек из исходного кода. На Pi Zero 2 это, вероятно, не такая уж большая проблема, но на оригинальном Zero это процесс занял много времени.
Время автономной работы
Beepy поставляется с аккумулятором LiPo емкостью 2000 мАч, который занимает большую часть свободного места на задней панели платы. С помощью мультиметра, подключенного между батареей и Beepy, я измерил ток в состоянии бездействия Raspberry Pi Zero, который оказался равен примерно 250 мА (ожидается, что с Zero 2 этот показатель будет выше), что даёт приличное время работы — около восьми часов.
Конечно, вам, вероятно, захочется сделать с вашим Beepy что-нибудь более интересное, чем просто наблюдать за миганием курсора терминала. Поэтому я подключил USB-аудиоадаптер (у Beepy нет встроенного аудио) и запустил потоковую передачу SomaFM. Добавленное оборудование и увеличение загрузки ЦП увеличили ток потребления до 280 мА, что соответствует примерно семи часам работы.
Затем я подключился к Libera Chat и провел немного времени болтая в #linux. Теперь Beepy потреблял около 310 мА, в результате чего расчётная продолжительность работы составила всё ещё вполне разумные шесть часов. О, что бы я отдал в молодости за портативное устройство, которое позволяло бы мне оставаться в IRC большую часть ночи без подзарядки!
В целом, всё выглядит не так уж плохо, пока вы не подключите более мощные внешние устройства. Запуск Kismet с Wi-Fi-адаптером Alfa AWUS036H увеличил общее потребление до 700 мА, сократив время работы примерно до трёх часов. При настройке с помощью RTL-SDR (Nooelec NESDR Nano 2) потребление Beepy составило между 770 и 800 мАч, чего было бы достаточно, чтобы разрядить батарею менее чем за два с половиной часа.
Управление питанием
По моим оценкам, это самое короткое время работы, которое вы, вероятно, увидите на полностью заряженном Beepy (по крайней мере, с Pi Zero), поскольку любое устройство, которое потребляло больше энергии, чем SDR, приводило к отключению питания оборудования после его подключения. В поисках слабого звена я достал технический паспорт повышающего преобразователя TPS61090, указанного в схеме, и был удивлен, увидев, что он рассчитан всего на 500 мА. Присмотревшись к плате, я заметил, что фактическим компонентом является TPS61030, рассчитанный на более подходящий ток 1 А. Неясно, действительно ли SQFMI изначально намеревался использовать преобразователь с более низкими характеристиками, а затем ему пришлось увеличить его мощность, или это просто случай использования удобного посадочного места в KiCad — на момент написания этой статьи, похоже, не существует общедоступной спецификации, на которую можно было бы сослаться.
Между прочим, следует избегать слишком глубокого разряда батареи Beepy, если это возможно — согласно схемам (проверка на моём оборудовании это подтвердила) SQFMI использовал резистор 10 кОм на «программном» выводе микросхемы заряда TP4054. Это устанавливает скорость зарядки чипа на уровне жалких 100 мА, а это означает, что полная перезарядка батареи займёт ~20 часов. Трудно поверить, что это было сделано намеренно. Возможно, будет исправлено в следующих версиях оборудования.
Примечание. Хотя лично я не столкнулся с какими-либо проблемами, стоит отметить, что среди тех, кто уже получил свои Beepy, есть несколько сообщений о том, что TPS61030 может внезапно выйти из строя. Очевидно, микросхема замыкается внутри, что, в свою очередь, приводит к сильному нагреву ближайшего индуктора. В результате получается полностью мертвое устройство, поскольку питание от USB-порта и аккумулятора подается через один и тот же чип.
На самом деле на форуме поддержки Texas Instruments есть отчет об этой конкретной проблеме, датируемый 2011 годом. Уже тогда официальный совет TI заключался в том, чтобы перейти на более новый и более надежный компонент, поэтому, если процент отказов настолько высок, как подозревают некоторые пользователи, возможно, этот компонент будет заменён в новой версии платы.
Программмное обеспечение
С помощью Beepy SQFMI по сути просто продает вам оборудование. Хотя они и предоставляют скрипт, который автоматизирует установку необходимых драйверов ядра на стоковую версию Raspberry Pi OS, официального программного обеспечения практически нет. Даже основные функции, такие как мигание светодиода уведомлений для проверки уровня заряда батареи, на самом деле не реализованы. Документация просто сообщает вам, какие адреса I2C нужно использовать, и предоставляет сообществу решать, что делать с этой информацией.
Для аппаратных хакеров и седобородых гуру Linux это вообще не проблема. На самом деле это довольно интересно и в некотором смысле имеет смысл покупать такое устройство. Но любого, кто думает, что он может просто купить Beepy и начать использовать его как обычный потребительский гаджет, ждут неприятные новости. SQFMI абсолютно открыто заявляет об этом факте, хотя я уверен, что люди всё равно будут жаловаться.
Что касается того, что предусмотрено скриптом установки, а именно драйверов для клавиатуры и дисплея, то они работают отлично. Среда по умолчанию не поддерживает графику на ЖК-дисплее Sharp Memory, поэтому вы ограничены программами, которые можно запускать в терминале. К счастью, недостатка в них нет. Некоторым требуются незначительные настройки для работы с маленьким дисплеем Beepy, но если вы зашли так далеко, то это не проблема.
Однако чего вы не ожидаете, так это того, что порт HDMI, по крайней мере, в текущей версии, на самом деле не работает. Точнее, когда загружается драйвер Memory LCD, консоль перемещается в другой фреймбуфер. Вы можете подумать, что достаточно просто подключить Beepy к телевизору, когда устанете смотреть на его крошечный экран, и в момент испытаний обнаружите, что он ничего не выводит. Поговаривают о попытке настроить порт HDMI как дополнительный выход только для графики, но я пока не видел, чтобы кто-то выпустил патч для этого. В крайнем случае вы можете перенастроить ядро и перезагрузиться, чтобы HDMI заработал, но это приведёт к отключению дисплея.
Тем не менее, в вашем распоряжении полноценная система ARM Linux. Хотя интеграция с аппаратным обеспечением могла бы быть и лучше, трудно жаловаться, когда на столе так много невероятных возможностей. Возможность подключить репозиторий Git и скомпилировать какой-нибудь новый инструмент прямо на Beepy — это великолепно по сравнению с тем, что традиционно было возможно в таком форм-факторе.
Документация
Если и есть что-то негативное, что я могу сейчас сказать о Beepy, так это состояние документации. За исключением единственной страницы «Начало работы», большая часть документации либо неполна, либо просто отсутствует. Ситуация еще больше осложняется бессистемной сменой названий. Некоторые документы и репозитории по-прежнему используют имя Beepberry, в то время как другие были переименованы, и нередко можно встретить ссылку, которая возвращает 404. Разобраться в этом обычно несложно, но если вы не знакомы с ситуацией, это может расстроить.
Ещё более серьёзная проблема заключается в том, что большая часть важной информации о Beepy хранится на серверах Discord и Matrix проекта. Хотя очевидно, что важно иметь централизованное место для общения пользователей и обсуждения проблем, в какой-то момент эту информацию необходимо объединить и представить менее эфемерным способом. Например, вы никогда не узнаете о порте DirectFB2, если не присоединитесь к серверу Discord и не пролистаете обсуждение на несколько недель назад.
Честно говоря, Beepy далеко не первый проект, столкнувшийся с этой проблемой. На самом деле, сейчас это большая проблема, которая влияет на многие проекты с открытым исходным кодом… но об этом в другой раз. Кроме того, нельзя игнорировать тот факт, что проект находится в зачаточном состоянии и что написание подробной документации не имеет особого смысла, поскольку многие детали постоянно меняются.
Но факт остаётся фактом: как только начнутся продажи, появится большая волна новых пользователей Beepy. И если до этого времени ситуация не улучшится, существует вероятность дублирования усилий и потери времени, пока люди будут пытаться разобраться в истинном положении дел в проекте.
Заключение
Beepy стоит 79 долларов, и это немного. Один только BBQ20KBD обойдётся вам в 30 долларов, а Adafruit просит 45 долларов за сопоставимый ЖК-дисплей Sharp Memory. К тому же, если вы закажете Pi Zero 2 через SQFMI при покупке Beepy, вы сможете получить его по ценам производителя. Хотя это скорее хакерская игрушка, а не полноценный продукт, я уверен, что ситуация улучшится по мере того, как все больше людей получат в свои руки это устройство и начнут улучшать программное обеспечение и документацию.
Если честно, меня подспудно терзают сомнения: не был бы весь комплект более доступным, если бы в нём использовался более привычный сенсорный ЖК-экран. Доступ к графической среде, даже такой ограниченной, учитывая скудные возможности Pi Zero и крошечную область дисплея, открыл бы новые возможности, которые невозможно реализовать с помощью дисплея Sharp Memory.
С другой стороны, стали бы мы вообще говорить о Beepy, если бы SQFMI не пошла по этому пути? В конце концов, Beepy определяется тем, насколько он уникален, и в мире, где наши мобильные устройства делаются всё более монолитными, есть нечто привлекательное в том, чтобы попробовать что-то другое.
Спасибо за внимание!