惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V2EX - 技术
V2EX - 技术
P
Privacy International News Feed
Security Latest
Security Latest
H
Hacker News: Front Page
T
Tenable Blog
The Hacker News
The Hacker News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Security @ Cisco Blogs
Project Zero
Project Zero
O
OpenAI News
AI
AI
Spread Privacy
Spread Privacy
C
CERT Recently Published Vulnerability Notes
The Last Watchdog
The Last Watchdog
G
GRAHAM CLULEY
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Scott Helme
Scott Helme
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
NISL@THU
NISL@THU
A
Arctic Wolf
T
Threat Research - Cisco Blogs
PCI Perspectives
PCI Perspectives
N
News and Events Feed by Topic
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
Simon Willison's Weblog
Simon Willison's Weblog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Google Online Security Blog
Google Online Security Blog
罗磊的独立博客
L
LINUX DO - 最新话题
U
Unit 42
S
Security Affairs
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 【当耐特】
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
月光博客
月光博客
Engineering at Meta
Engineering at Meta
腾讯CDC
F
Full Disclosure
Cyberwarzone
Cyberwarzone
S
SegmentFault 最新的问题
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 司徒正美
The Cloudflare Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Самодельный ARM ноутбук, реально ли?
HOMPAIN · 2026-05-25 · via Все публикации подряд на Хабре

Средний

8 мин

12K

Мне всегда хотелось разработать свой ноутбук. Сейчас, благодаря развитию систем на базе ARM-процессоров, эта задача сильно упростилась и стала вполне реальной.

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

Введение

В отличие от процессоров x86, ARM-чипы содержат на борту ряд периферии, что сильно упрощает конструкцию материнской платы. Так, например, существуют даже процессоры RV1106G3, в которых сразу встроена оперативная память. Для разработки простейшего компьютера на базе такого процессора достаточно развести плату - это не сложнее, чем сделать плату для Arduino на базе микроконтроллера. Одним из примеров таких плат являются одноплатники Luckfox Pico, о которых я как-то рассказывал в статье.

Также процессоры ARM по большей части рассчитаны на небольшое энергопотребление (до 5 Вт), что сильно упрощает схему питания и охлаждения.

Ещё одним важным плюсом ARM является популярность одноплатных компьютеров на их базе. Многие производители выкладывают в открытый доступ принципиальные схемы своих плат, что сильно помогает в проектировании.

Варианты материнских плат

На данный момент есть несколько вариантов реализации материнской платы для вашего портативного устройства:

Своя плата с процессором

Первый - самый очевидный вариант: разработать свою материнскую плату, на которой будет распаян процессор и вся необходимая периферия.

В такой компоновке можно реализовать один из самых простых вариантов. Так, например, можно взять процессор RV1106G3, добавить к нему микроконтроллер с подключением по UART и простейшую схему питания, а на микроконтроллере реализовать управление клавиатурой и вывод изображения на экран. Собственно, всё! В результате получится простейший портативный компьютер с Linux для работы через консоль. Не нужно никаких сложных схем и драйверов. Однако недостатков у такого подхода тоже много. Низкая производительность и консольный интерфейс делают такое устройство специфическим и не особо интересным для широкого круга задач.

Я не знаю примеров подобной реализации в виде единой платы, но есть устройства, схожие по функционалу: Beepberry и PicoCalc.

Также при таком подходе можно реализовать и наоборот - продвинутое устройство со сложной платой и богатой периферией. Эта задача достаточно сложная и дорогая для хобби-проекта. Я знаю только один пример подобной реализации - OpenPandora.

Core-модуль

Второй вариант реализации - использование core-модулей. Такой модуль содержит основные компоненты: процессор, оперативную память, eMMC, Wi-Fi и Bluetooth. Он берет на себя самую сложную часть разводки материнской платы и целиком напаивается на вашу основную плату с периферией. Такой подход позволяет значительно упростить задачу, сохранив при этом все преимущества собственной разработки платы.

К сожалению, данный вариант хорош только в теории: на практике с ним связан ряд проблем. Подобных модулей очень мало в продаже. У более-менее популярных китайских производителей есть только пара слабых моделей, а на доступные мощные модели отсутствует какая-либо документация.

Я встречал реализацию с подобным модулем только в одном китайском устройстве.

Compute-модуль

Следующий вариант - использование compute-модуля. Он, так же как и core-модуль, содержит основные компоненты: процессор, память... Но, в отличие от core-модуля, compute-модуль устанавливается на материнскую плату через разъём, что делает возможным его замену или апгрейд. За свой функционал и универсальность подобная компоновка «расплачивается» габаритами: материнская плата с compute-модулем получается заметно толще.

Compute-модули присутствуют в линейке плат Raspberry Pi. Такие модули обладают хорошей поддержкой и совместимостью с различным ПО. Благодаря этому подобная компоновка достаточно популярна в данный момент. На базе подобных модулей существует несколько портативных устройств, класс которых получил название «cyberdeck». Наиболее известные устройства с подобной компоновкой: uConsole, Hackberry CM5, DevTerm CM4.

Одноплатный компьютер

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

Примеры: Pi Flux, Beepberry, PocketTerm35.

Периферия

Портативные устройства из-за своей компактности требуют особого подхода к выбору периферии. В ноутбук не получится «запихнуть» обычный монитор и USB-клавиатуру.

Дисплей

Вопрос с подключением дисплея оказался для меня наиболее сложным и до конца не решённым. Для подключения есть несколько возможных подходов:

  1. Наиболее простой вариант. Подключение микроконтроллера к отладочному UART-интерфейсу и вывод консольной информации через этот микроконтроллер.

  2. Подключение дисплея по SPI-интерфейсу. Процесс схож с подключением дисплея к микроконтроллеру. На дисплей можно вывести рабочий стол либо «вручную» отрисовывать свой интерфейс из приложения. Данный вариант достаточно прост, но при этом малоэффективен. Для рабочего стола у таких дисплеев недостаточно разрешения и производительности, а при выводе информации только из одного приложения устройство перестаёт быть полноценным компьютером.

  3. Вывод на дисплей через шлейф по интерфейсу MIPI DSI. Это наиболее правильный, но и самый сложный вариант. Проблема в том, что данный интерфейс не стандартизирован. Под каждую линейку дисплеев нужен свой драйвер, у каждого дисплея своя распиновка шлейфа, а какая-либо документация в открытом доступе полностью отсутствует. Кроме того, нужно ещё обеспечить питание подсветки (~10–20 В).

  4. Вывод через HDMI. Это простой и универсальный способ вывести изображение с хорошей производительностью и совместимостью. Но при этом такое решение получается более громоздким и потребует дополнительный модуль-преобразователь, т. к. почти все компактные дисплеи имеют MIPI или подобный интерфейс, который нужно конвертировать в HDMI.

Клавиатура

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

Для подключения клавиатуры также есть несколько вариантов:

  1. USB-HID - самый простой и оптимальный вариант. Многие современные микроконтроллеры поддерживают такой режим; для них доступно большое количество примеров и библиотек. Для слабых моделей микроконтроллеров AVR (которые часто встречаются в Arduino) можно использовать программную реализацию V-USB на низкой скорости, чего более чем достаточно для клавиатуры и мыши. Также данный вариант по умолчанию поддерживается в Linux и не требует дополнительных настроек.

  2. Подключение по шине I2C по протоколу HID over I2C. Это практически полный аналог USB-HID, но у данного варианта есть много неприятных нюансов. Практически нет открытых реализаций, библиотек, статей и примеров по протоколу HID over I2C, так что с его реализацией придётся повозиться. HID over I2C поддерживается в Linux, но его предварительно нужно активировать. А значит, к устройству нужно будет подключиться как-то иначе (например, по UART или SSH), либо активировать поддержку на этапе подготовки образа системы. По этому протоколу работают многие тачпады и клавиатуры ноутбуков, поэтому этот вариант можно использовать для их прямого подключения.

  3. Подключение по UART, SPI или I2C со своей реализацией протокола. Клавиатура - достаточно простое устройство, и написать для неё свой скрипт или драйвер для Linux не так сложно. У данного подхода есть два недостатка. Первый: клавиатура может не работать в системе в момент загрузки или в случае какого-то сбоя, поэтому должна быть возможность подключения другой клавиатуры для настройки или восстановления системы. Второй недостаток: нужна первичная настройка и установка скриптов/драйверов после установки системы.

По механической части клавиатуры тоже есть несколько вариантов:

  1. Для компактных решений подходит клавиатура от BlackBerry, они доступны в продаже как запчасти.

  2. Для устройств покрупнее можно взять за основу готовую Bluetooth-клавиатуру и развести свою плату под её кнопки.

  3. Для крупных изделий можно использовать клавиатуры от различных ноутбуков: они бывают самых разных форм и размеров.

Мой тестовый стенд

После анализа доступных технологий я понял, что задача разработки собственного устройства до сих пор остаётся достаточно сложной и ресурсоёмкой. Я решил максимально упростить процесс и в качестве материнской платы использовать одноплатник в форм-факторе Raspberry Pi Zero. Это сводит разводку собственной платы к минимуму, а такой формат неплохо вписывается в габариты компактного устройства.

На своей плате я планировал разместить кнопки клавиатуры, цепи питания, адаптер для подключения дисплея и микроконтроллер, который будет обеспечивать функционал периферии.

Первая проблема: из всех десятков одноплатников в форм-факторе Raspberry Pi Zero только три модели поддерживают интерфейс MIPI DSI для дисплея: Radxa Zero 2 Pro (процессор Amlogic A311D), безымянная плата на базе RK3566 и Orange Pi Zero 2W. При этом две из них немного отличаются по размеру от стандарта, а плата от Orange построена на процессоре Allwinner, которые плохо подходят для DIY-проектов из-за слабой поддержки сообществом. Мой выбор пал на Radxa Zero 2 Pro.


Выбор дисплея оказался ещё сложнее. Я долго изучал, какие варианты совместимы с моей платой, какие драйверы будут доступны, и искал экраны, для которых есть хоть какая-то документация. В итоге я выбрал 5-дюймовый экран на драйвере ST7701 с разрешением 480x854, который планировал подключать через самодельный адаптер.

Для отладки я выбрал клавиатуру M5Stack CardKB II, которую можно перепрограммировать под свои задачи.

Для питания сборки я подобрал аккумулятор ёмкостью 5000 мА·ч и различные отладочные платы питания/зарядки на 5 В.

Проблемы

Первые проблемы оказались связаны с одноплатником. Выяснилось, что у моего одноплатника всего два порта USB, и вывести дополнительные линии невозможно. Это сильно усложняет подключение клавиатуры, карт памяти и другой периферии. Даже для отладки подключить одновременно клавиатуру и мышь (или клавиатуру и флешку) оказалось проблемой, т. к. второй порт по умолчанию работает в режиме OTG, а имеющийся у меня хаб с этой платой не заработал. При выборе платы я не учёл этот момент.

Вторая проблема также связана с платой: она оказалась непопулярной. Для неё мало готовых образов ОС, отсутствует активное сообщество, и с любой проблемой ты оказываешься один на один. Да и банально купить такую плату сейчас уже почти невозможно; если потребуется замена, это станет серьёзной трудностью.

Кроме того, я выявил ряд проблем в программной части: курсор мыши на экране мерцает, видео на YouTube нормально воспроизводится в окне, но при разворачивании на полный экран начинает тормозить.

Самые большие трудности возникли с подключением экрана. Перед подключением я решил прозвонить контакты и обнаружил, что распиновка не совпадает с изображением на странице магазина на AliExpress, где я его покупал. После общения с продавцом он выслал мне правильную схему. Затем я несколько дней настраивал драйвер на одноплатнике для вывода изображения через интерфейс DSI. Мне удалось добиться появления сигналов на порту, но картинки на экране я так и не увидел. Что делать дальше в данной ситуации, я не понимаю. В не понимаю чём именно проблема и как её диагностировать, мне не хватает опыта в этом вопросе.

Положительные моменты

Мне удалось скомпилировать и запустить образ Armbian для данной платы. Сама плата работает неплохо: её производительности достаточно для решения простых задач. Кроме того, видеоядро функционирует корректно - на нём пошли простенькие игры и FreeCAD.

Также получилось разобраться с интерфейсами UART, SPI и I2C, поэтому проблем с подключением периферии к ним быть не должно.

Я также исследовал вопрос энергопотребления платы. В простое она потребляет ~1,4 Вт (при выводе изображения через HDMI), а под нагрузкой пиковое потребление возрастает до 5 Вт. Моего аккумулятора должно хватить примерно на 7 часов работы при небольшой нагрузке. Это не самый лучший показатель (смартфоны экономичнее), но и не самый плохой: для комфортной работы этого времени должно быть достаточно.

Выводы

Задача, казавшаяся простой на первый взгляд, оказалась гораздо более трудоёмкой. Для проектирования своего устройства требуется много времени, тестов и работы с ПО. При интеграции периферии возникает множество нюансов, которые невозможно предусмотреть на этапе проектирования.

На данный момент мой энтузиазм немного угас, и мне придётся вернуться к этапу анализа и выбора компоновки. Я хочу сосредоточиться на сборке рабочего макета, который реализует полный функционал без жёстких требований к габаритам, и уже отталкиваясь от него, думать о варианте компоновки в компактном корпусе.