Перейти до основного вмісту
No authors found.

Clockwork uConsole

uConsole

Історія

Колись SQFMI випустили прикольний пристрій на RPI Zero. Називався він Beeper чи то Beepery чи Beepy чи то як. Вони потім його переіменували здається. По суті це був екран, клавіатура і конроллер заряду для RPI Zero на одній прикольній платі.

Beepy

Я йдуже довго чекав його доставку, але він прийшов! Я все зібрав, встановив систему 5 хвилин потикав. Був дуже щасливий і вже думав що я з ним буду робити далі. А поки я думав - вирішив поставити на зарядку. Це останній раз коли я його бачив живим. Він одразу випустив білий димок духу і помер. Виявилось при виробницітві китайці поставили фіговий танталовий конденсатор, чи ще щось десь браковане(можливо дебільний контроллер заряду, котрий в гуглі ОДРАЗУ знаходиться як той що має дуже великий відсоток браку). Короче вже не важливо. радість була БУКВАЛЬНО пів години-годину. Потім він просто згорів у мене в руках.

Під запис

Виникає питання чому я не відремонтував. Я намагався! Я навіть замовив контроллер заряду! І він навіть десь у мене є! Але він в типорозмірі котрий для мене складний і більше того - по ту сторону плати приклеєна клавіатура, котру треба ДУЖЕ обережно відірвати щоб не перегріти. Бо сам по собі контроллер припаяний ще й всім пузом для теплопровідності. Короче skill issues! АЛЕ! Я собі пообіцяв що колись це зроблю.

Але з того дня мене не покидала думка про такий формфактор.

Потім на просторах інтернету я знайшов uConsole. Дуже схожа ідея, але розміри в 3 рази більші. Але занадто пізно вже було і не встиг поки вони реальнно мали запаси з першого батчу. Офіційний сайт писав In Stock але обіцяли доставку протягом 90 днів. Я замовив. Потім одразу замовив AIO комплект розширення від HackerGadgets. І так вийшло шо AIO expansion прийшов через місяць, а uConsole так і висів в очікуванні відправки (і вже 7 місяців продовжує висіти).

На сабредіті я прочитав що якийсь чеський магазин распбері барахла завжди їх має в наявності. Короче після ще кількох місяців очікування я все є вирішив замовити з Чехії. Разом з цим я там же замовив CM5 16Gb Without eMMC with WiFi спеціально під нього. Комплект того що я замовив я напишу нижче. І віно все приїхало!

BOM

Core

Значить почнемо з вибору. У вас є два стільця... CM4 і CM5. CM4 - під нього був офіційно спроектований uConsole. Під його живлення і терморежим. З CM4 менше проблем в контексті драйверів. Але це минуле покоління. Воно повільніше і навіть офіційна система від Clockwork більше не підтримується. CM5 - умовно нова, потужна але гаряча версія распбері. У неї є проблеми з драйверами і живленням. НІЧОГО критичного. Є нюанси, але воно всеодно працює. Основна проблема - охолодження. і мікро проблема - при просадці батарейки коли напруга сідає нижче умовних 50% то саме на CM5 динаміки почнуть дуріти, пищати, хрипіти і все інше. Як тільки підключається зарядка - одразу все зникає.

Не купейте eMMC версії. натрахаєтесь з пріорітетом буту! НЕ КУПУЙТЕ БЕЗ ВАЙФАЯ натрахаєтесь з донглами.

Я обрав CM5. Тому далі все буде +- про CM5. Але також валідне і для CM4

Охолодження

З охолодженням складніше. Оригінальна ідея uConsole полягає в тому що задня магнієва кришка прилягає до чіпу распбері через термопрокладку. Через трохи іншу посадку CM5 це не виходить ефективно зробити так само. Але рішення є! Це ріщення - проставка (Waveshare CMX Adapter) що піднімає плату вище. Завдякі якій проміжок між кришкою і чіпом майже відсутній. Якраз такий, куди можна покласти 0.5мм термопрокладку.

Waveshare CMX Adapter

Також ходять легенди що пасивне охолодження для nvme ssd дисків приклеєне прямо на кришку покращує теплообмін, але я хз, це виглядає не зручно.

Ну і для САМИХ вибагливих - кастомна друкована кришка з активним куллером. Це якесь знущання, але, може, комусь воно і підійде. Пошукайте в інтернеті є кілька прикольних варіантів по кастомнним кришкам. Дехто навіть робив технічний отвір в рідній кришці щоб туди вліз активний куллер.

Але з моїм рішенням через адаптерй "спейсер" і ячкісною термопрокладкою я отримую стабільні 41 градус в простої і до 55 градусів при активному(але звичайному) використанні.

Живлення

Далі вам потрібні аккумулятори 18650 дві штуки. Краще брати гарні дорогі, без захисту, з пласким піном. Такі котрі колись купували для вейпів. Щось типу по 3000мАг на одному.

Доречі! HackerGadgets випустили оновленні плати для uConsole. Навіть зробили зручний роз"єм для підключення LiPo пакетів. Кажуть можна знайти LiPo пакет на 10000мАг що ідеально влазить в копус.

Память

Флешка. Тут комьюніті рекомендує брати конкретні флешки.

Модель картиОб'ємСтатусПримітки
TeamGroup (Nintendo Switch Edition)128GBGold StandardРекомендація Rex (автор системи для CM5). Працює без редагування EEPROM.
SanDisk Extreme512GBВідмінноПрацює стабільно. Кажуть, що вона "поводиться набагато краще", ніж Samsung.
SanDisk High Endurance128GBВідмінноЗавантажилась з першої спроби на CM5.
Lexar Pro Plus64GBДобреЗапрацювала відразу на новому CM5 без проблем.
Будь-яка дешева картка32GBІнструментМалі карти (≤32GB) мають простіші таймінги. Ідеальні для прошивки EEPROM, якщо велика карта не стартує.

З цими картами комюніті мало проблеми (чорний екран, або взагалі не бутається) до моменту внесення правок в EEPROM.

Модель картиОб'ємСтатусСимптоми / Рішення
Samsung Evo Select512GBПроблемна"Навіть не ввімкнула підсвітку екрану після 10 хвилин".
Samsung Pro Plus512GBЗмішанийСпочатку не працювала. Запрацювала тільки після оновлення завантажувача/EEPROM.
Kingston Endurance256GBПоганоПостійні помилки при запису образу або завантаженні.
Generic / No-NameБудь-якийРизикованоCM5 дуже чутливий до якості живлення та таймінгів. Краще уникати.

Я взяв SanDisk Extreme на 128GB. Але певно треба було брати 512 %) Все спрацвало майже ідеально. Але проблема в тому що драйвер дисплею ініціалізується в саму останню чергу тому перший бут РЕАЛЬНО довгий. Просто лишаємо на 20хв і чекаємо. А якщо у вас є HDMI - можете підключити uConsole до зовнішнього екрану і моніторити прогрес.


Це в принципі все основне. З цим ви готові до повної збірки. Збірка проста зрозуміла, просто гортайте інструкцію. Але не забудьте що WIFI антену треба крипіти саме на модуль якщо у вас CM5. Для CM4 антена кріпиться на саму материнську плату uConsole! Також варто зазначити, що оця антена котру пропонують приклеїти на корпус - повна фігня. Дуже рекомендую від неї відмовитись. В інтернеті пропонують різні адаптери під SMA стандартні вайфай виносні антени. Пошукайте моделі і роздрукуйте. в AIO board (нижче) є окрема виносна антена що вирішує усі питання.

Build

uConsole RTL-SDR/LoRa/GPS/RTC/USB Hub All-In-One Extension Board

Актуальний лінк: https://hackergadgets.com/products/uconsole-aio-v2 Я купляв ще першу версію.

З цим аддоном нема що загалом розповізти. Все працює. Все чітко встановлюється. Ніяких питань немає. Ну типу все як має бути.

Головний його плюс - наявність зовнішньої WIFI антени.

Якщо у вас встановлена ОС від Rex то вам просто треба встановити всі пакети для повної підтримки усії модулів в системі:

sudo apt update && sudo apt --install-recommends install hackergadgets-uconsole-aio-board -y && sudo apt install meshtastic-mui -y

Оригінальний пост: https://forum.clockworkpi.com/t/hackergadgets-aio-board-package/17875

Система

Загалом вибору нема. Вибір один - система від Rex. Оригінальний пост - https://forum.clockworkpi.com/t/bookworm-6-12-y-for-the-uconsole-and-devterm/15847

Працює і на CM4 і на CM5. Є різні варіації системи. Я обрав DragonOS бо там багато додаткових радіоаматорських приколів. Це зручно. Авжеж Trixie.

Для історії скачати тут(офіційна лінка від автора): https://drive.google.com/drive/folders/1tw2uPVPsFDhQ5Onx4mlllYexUDmDp0eK

Рідна система котру пропонують оригінальні автори - мертва і не актуальна. Там є корисні скрипти для 4g модему і прошивка клавіатури.

Берете флешку і через rpi-imager прошиваєте її. Коли вам запропонує застосувати кастомні налаштування - ВІДМОВЛЯЙТЕСЬ! НЕ ТРЕБА ВЗАГАЛІ НІЧОГО НАЛАШТОВУВАТИ! Це 100% зламає перший запуск.

Потім вставляєте в роз"єм на uConsole і чекаєте. Довго. Бажано з підключеним зовнішнім живленням.

Перший запуск

Одразу після першого запуску нам треба оновити eeprom і налашутвати запуск з флешки!

Відкриваємо термінал і дивимось версію

vcgencmd version

якщо 2025-01-06 і старіше то треба оновлюватись (в моєму випадку була 2025-12-30)

оновлюємо якщо треба.

sudo rpi-eeprom-update -a

Тепер трохи відредагуємо бут конфіг

sudo rpi-eeprom-config -e
[all]
BOOT_UART=1

# Switch off PMIC outputs on HALT
POWER_OFF_ON_HALT=1

# Default BOOT_ORDER for provisioning
# SD -> NVMe -> USB -> Network
BOOT_ORDER=0xf461

# Try boot on SDCard repeatedly
SD_BOOT_MAX_RETRIES=2

# Slow down SDCard SDR Mode on bootloader
SD_QUIRKS=1

рестартуємо

sudo reboot

З основного це все. Насправді, якщо у вас все вантажиться без проблем то команди вище не потрібні.

Оновлення прошивки клавіатури

Клавіатура в uConsole це окремий пристрій на STM32. Вона прошивається через dfu режим окремо.

Оновити прошивку важливо! Бо тоді у вас з"являється адекватний скрол режим через Fn+Trackpad! Без цього режиму скрол це якесь пекло.

Відкриваємо термінал.

# Качаємо оригінальну прошивку
wget https://github.com/clockworkpi/uConsole/raw/master/Bin/uconsole_keyboard_flash.tar.gz

# Розпаковуємо архів
tar zxvf uconsole_keyboard_flash.tar.gz

# Встановлюємо dfu-utils
sudo apt update && sudo apt install -y dfu-util

# Прошиваємо
cd uconsole_keyboard_flash
sudo ./flash.sh

Якщо все добре то ви побачите прогрес бар. І після цього клавіатура оновлена і одразу має працювати без рестарту!

Troubleshooting

CM5 з eMMC: перший раз завантажилось, а потім чорний екран

Я вище писав не брати CM5 з eMMC. Ось чому. На Reddit був дуже корисний кейс: людина поставила CM5 16GB з 64GB eMMC в uConsole, залив образ Rex'а, перший запуск пройшов нормально, майстер налаштування відкрився, WiFi завівся. А потім система сама пішла робити великий apt upgrade і десь посередині просто померла.

Симптоми виглядали так:

  • екран чорний
  • клавіатура не реагує
  • SSH і мережа відвалились
  • світлодіоди горять
  • довге натискання power нічого не робить
  • допомагає тільки витягнути батареї

Після наступного старту все виглядає як цегла: зелений LED є, картинки нема, мережі нема, SSH нема. Але це не обов'язково смерть. Часто це просто розірваний посередині dpkg плюс побитий /boot/firmware.

Що там одночасно пішло не так:

  1. Під час оновлення мінявся kernel, а стара система ще працювала на старих модулях.
  2. Mesa/vc4 оновлювались прямо під Wayland-сесією.
  3. CM5 грівся на розпаковці і встановленні пакетів.
  4. Живлення від батарей могло просісти саме в момент пікового навантаження.

Тобто тут не одна магічна причина. Це просто дуже невдалий момент для важкого апдейту.

EEPROM для CM5 eMMC

Для CM5 з eMMC краще спочатку прошити EEPROM на зовнішній платі типу Waveshare CM5-IO-BASE-A. У тому кейсі нормальною комбінацією був pieeprom-2025-05-08 і такий boot.conf:

[all]
BOOT_UART=1
POWER_OFF_ON_HALT=1
BOOT_ORDER=0xf461
PCIE_DISABLE=1
SD_BOOT_MAX_RETRIES=2
SD_QUIRKS=1

А от EEPROM 2025-11-05 для uConsole краще не брати. У людей з ним був цикл: лого, вимкнення, знову лого, знову вимкнення.

Приклад процедури на Linux-хості:

cp -r /usr/share/rpiboot/recovery5 /tmp/recovery-uconsole
cp /lib/firmware/raspberrypi/bootloader-2712/default/pieeprom-2025-05-08.bin /tmp/recovery-uconsole/pieeprom.original.bin

# записати boot.conf з прикладу вище в /tmp/recovery-uconsole/boot.conf
cd /tmp/recovery-uconsole
/usr/share/rpiboot/tools/update-pieeprom.sh

# CM5 перевести в BOOT mode і прошити
sudo rpiboot -d /tmp/recovery-uconsole/

Після цього в логах треба побачити щось типу EEPROM_UPDATE і success.

Відновлення після зламаного apt

Треба витягнути CM5 з uConsole, поставити його на IO-плату, перевести в BOOT mode і підключити до Linux-хоста.

sudo rpiboot

eMMC має з'явитись як диск, наприклад /dev/sda. Перевіряємо обидва розділи:

sudo fsck.fat -aw /dev/sda1
sudo fsck.ext4 -fy /dev/sda2

Далі монтуємо систему і заходимо в chroot:

sudo mount /dev/sda2 /mnt/cm5
sudo mount /dev/sda1 /mnt/cm5/boot/firmware

for d in proc sys dev dev/pts run; do
    sudo mount --bind /$d /mnt/cm5/$d
done

sudo chroot /mnt/cm5 dpkg --configure -a

А тепер важливий момент. dpkg --configure -a не завжди все лікує. Він доведе до кінця конфігурацію пакетів, але не повторить нормально фазу розпаковки файлів. Якщо apt помер посеред запису, у /boot/firmware можуть лишитись файли на 0 байт або файли з хвостом .dpkg-new.

Перевірити:

sudo find /mnt/cm5/boot/firmware -size 0 -ls
sudo find /mnt/cm5/boot/firmware -name "*.dpkg-new" -ls

Якщо побитий саме пакет ядра, треба перевстановити .deb напряму з кешу apt. Назва версії може відрізнятись, тому краще підставити її автоматично.

KERNEL_DEB="$(basename "$(ls /mnt/cm5/var/cache/apt/archives/clockworkpi-kernel_*.deb | tail -n 1)")"
sudo chroot /mnt/cm5 dpkg -i "/var/cache/apt/archives/$KERNEL_DEB"

Після цього мають нормально відновитись kernel_2712.img, dtb-файли, overlay для uConsole CM5 і initramfs.

Якщо лишились інші .dpkg-new, для яких вже нема .deb у кеші, їх можна просто перейменувати:

sudo find /mnt/cm5/boot/firmware -name "*.dpkg-new" -exec bash -c 'mv "$1" "${1%.dpkg-new}"' _ {} \;

Що зробити перед тим, як збирати назад

Я б не збирав одразу. Краще підготувати систему так, щоб наступного разу не розбирати все знову.

Увімкнути SSH:

sudo touch /mnt/cm5/boot/firmware/ssh
sudo chroot /mnt/cm5 systemctl enable ssh

Додати свій SSH-ключ:

sudo mkdir -p /mnt/cm5/home/pi/.ssh
sudo cp ~/.ssh/id_ed25519.pub /mnt/cm5/home/pi/.ssh/authorized_keys
sudo chown -R 1000:1000 /mnt/cm5/home/pi/.ssh
sudo chmod 700 /mnt/cm5/home/pi/.ssh
sudo chmod 600 /mnt/cm5/home/pi/.ssh/authorized_keys

Вимкнути автозапуск piwiz, щоб він знову не запустив той самий великий апдейт:

sudo bash -c 'echo "Hidden=true" >> /mnt/cm5/etc/xdg/autostart/piwiz.desktop'

Прибрати quiet splash, щоб при наступному старті бачити kernel messages, а не просто чорний екран:

sudo sed -i 's/ quiet//; s/ splash//; s/ plymouth.ignore-serial-consoles//' /mnt/cm5/boot/firmware/cmdline.txt

Якщо після цього система стартує, але на робочому столі є тільки аплети audio і bluetooth, то це не нова поломка. Просто lightdm міг лишитись на автологіні в користувача rpi-first-boot-wizard. Змінюємо на нормального користувача:

sudo sed -i 's/^autologin-user=rpi-first-boot-wizard/autologin-user=pi/' /etc/lightdm/lightdm.conf
sudo systemctl restart lightdm

Корисні перевірки після ремонту:

lsusb | grep "BCM2712 Boot"
ls -la /mnt/cm5/boot/firmware/kernel_2712.img
ls -la /mnt/cm5/boot/firmware/bcm2712-rpi-cm5-cm4io.dtb
ls -la /mnt/cm5/boot/firmware/overlays/clockworkpi-uconsole-cm5.dtbo

Мораль проста: перший великий апдейт на CM5 краще робити з зарядкою, нормальними батареями і термопрокладкою на BCM2712. А ще краще перед першим запуском вимкнути piwiz або хоча б бути готовим, що він сам полізе оновлювати пів системи.

Різне корисне

Скрипт моніторингу температури

#!/bin/bash

vcgencmd get_config int | egrep "(arm|core|gpu|sdram)_freq|over_volt"
for src in arm core h264 isp v3d; do echo -e "$src:\t$(vcgencmd measure_clock $src)"; done
for id in core sdram_c sdram_i sdram_p ; do echo -e "$id:\t$(vcgencmd measure_volts $id)"; done
vcgencmd measure_temp
throttled="$(vcgencmd get_throttled)"
echo -e "$throttled"
if [[ $throttled != "throttled=0x0" ]]; then
    echo "WARNING:  You are being throttled.  This is likely because you are undervoltage.  Please connect your PI to a better power supply!"
fi

Андерклок

УВАГА!

Це данні зібрані з різних постів на форумі комьюніті. ВСЕ НА СВІЙ СТРАХ І РИЗИК!

nano /boot/firmware/config.txt

Balance

gpu_mem=256
gpu_freq=500
arm_freq=1800

Aggresive

arm_freq=1000
arm_freq_min=500
gpu_freq=800
gpu_freq_min=500

Оверклокінг

УВАГА! Буде пекло!

over_voltage_delta=50000
arm_freq=2800
gpu_freq=1000

Аудіо нюанси CM5

Побічним ефектом високого споживання енергії CM5 є "виття котушки" або статичний шум від динаміків, коли заряд батареї падає нижче 50%. Це апаратна проблема, пов'язана з падінням напруги, що впливає на аудіотракт.

Підключення пристрою до 3,5-мм роз'єму для навушників зупиняє шум від динаміків

Або ви можете вимкнути контакт GPIO, який викликає це: sudo pinctrl set 11 op dl Щоб відновити, sudo pinctrl set 11 op dh

Калібрування AXP228

uConsole використовує AXP228 в якості PMU. При новій установці або після заміни батареї індикатор відсотку заряду батареї може бути неточним. Контролер потребує ручного циклу калібрування, щоб визначити ємність встановлених елементів.

Процедура кліброки:

  1. Зарядити до 100%: Переконайтеся, що пристрій повністю заряджений.
  2. Активувати режим калібрування: echo 1 | sudo tee /sys/class/power_supply/axp20x-battery/calibrate Ви можете перевірити, чи активне калібрування, прочитавши значення. Значення 48 вказує на те, що клібрування продовужється.
  3. Розрядити: Повністю розрядити пристрій, доки він не вимкнеться.
  4. Перезарядити: Зарядити пристрій знову до 100%, коли він увімкнений.

Якщо рівень заряду батареї падає нижче 50-40% до завершення калібрування, uConsole може відключитися через падіння напруги на CM5.

Посилання

Я скачав всю тему про систему Rex`a з форуму і запихнув в ШІ. Він трохи загрегував мені інструкцію. Там багато води, але загалом він посилається на реальні повідомлення реальних користувачів: https://gist.github.com/assada/71a1aa6d086e59dc9876b780bcc5d6c9