HP Prime G2: разработчик доработал порт Linux для калькулятора

Реми ван Эльст, разработчик встраиваемых систем, обновил старый неофициальный порт Linux (ядро 4.14) для графического калькулятора HP Prime G2, модели на рынке с 2013 года, обновлённой в 2018-м до ревизии G2. Внутри у калькулятора процессор i.MX 6 Ultralite (ARM Cortex A7), 256 МБ DDR3 RAM и 512 МБ встроенной памяти, по мощности это скорее маленький embedded-компьютер с калькуляторной клавиатурой, чем обычный калькулятор; штатно устройство работает на FreeRTOS. Для сравнения: предыдущая ревизия G1 имела процессор 400 МГц и 32 МБ RAM на кастомной Besta OS, конкурент TI 84+ CE, процессор eZ80 на 48 МГц без всякого Linux, калькуляторы Numworks N0110/N0120, 216 и 550 МГц на ARM Cortex-M7 (тоже без Linux, хотя их прошивка открытая), а Casio FX-CG50, заявленные сторонними источниками 118 МГц на кастомном Renesas SH7305. Единственный другой калькулятор с портом Linux, TI Nspire CX (II): 396 МГц, 64 МБ RAM, 128 МБ флеш-памяти. Старый порт для HP Prime G2, который взял за основу автор, был почти нерабочим: репозиторий с исходниками ядра указывал на несуществующую ветку, сборка через buildroot не проходила, файл device tree был испорчен, а в готовом образе не было консольного логина. Автор восстановил репозитории через Software Heritage, собрал ядро заново и внёс несколько улучшений. Клавиатура в старом порте отправляла только часть символов (не работали цифры, дефис, подчёркивание, вертикальная черта), автор написал патч для драйвера imx_keypad.c, который перехватывает коды клавиш и при нажатой клавише ALT (Alpha) отправляет другой символ. У его экземпляра калькулятора оказался новый контроллер тачскрина Ilitek ILI211X (более старый Goodix GT5688 снят с производства), под него в старом ядре драйвера не было, поэтому он написал свой на основе более нового ядра, определив адрес устройства на шине i2c (0x26 вместо ожидаемого 0x14) и совпадение размера пакета данных (43 байта) с константой ILI211X_DATA_SIZE. Дополнительно калькулятор теперь виден как USB-serial-устройство (для этого модуль поддержки USB-serial пришлось не грузить как модуль, а вкомпилировать в ядро, при загрузке модулем устройство зависало), а максимальный размер образа Linux, который можно загрузить в оперативную память, вырос с 15 МБ до 130 МБ за счёт правки смещений в конфигурации ядра, скрипте uuu и u-boot. В итоге порт даёт полноценную консоль, рабочий X11 (запускается командой startx, поднимает оконный менеджер twm вместе с xeyes, xclock и xcalc, работают мышь и клавиатура, долгое нажатие эмулирует правый клик), игру Doom (сборка prboom) и компилятор tcc для разработки прямо на устройстве. Автор специально запускает систему только из оперативной памяти, не прошивая NAND-память калькулятора, чтобы не потерять возможность вернуться к штатному ПО. Готовый собранный образ выложен для скачивания вместе с исходным кодом на GitHub автора, сборка buildroot и ядра с нуля занимает много времени. Для запуска нужно вскрыть калькулятор (снять 4 винта на задней панели), что риск повредить устройство автор прямо обозначает. Отдельно в статье приведена цитата сотрудника HP о том, что чип калькулятора аппаратно способен на полное шифрование и блокировку системы, эта возможность заложена как часть корпоративного требования безопасности (после случаев прошивки вредоносного кода в мыши, клавиатуры и принтеры), но пока используется только для верификации и не включена.

Ключевые факты

  • Реми ван Эльст, разработчик встраиваемых систем, обновил старый заброшенный порт Linux 4.14 для калькулятора HP Prime G2, процессор i.MX 6 Ultralite (ARM Cortex A7), 256 МБ RAM, 512 МБ хранилища.
  • Он пофиксил клавиатурный драйвер (патч imx_keypad.c), написал новый драйвер тачскрина Ilitek ILI211X взамен снятого с производства Goodix, и увеличил максимальный размер загружаемого в RAM образа с 15 МБ до 130 МБ.
  • Порт даёт консоль по USB-serial, рабочий X11 (twm, xcalc, xeyes, xclock), игру Doom (prboom) и компилятор tcc для разработки прямо на калькуляторе.
  • Систему запускают только из оперативной памяти, не прошивая NAND, чтобы не потерять штатное ПО калькулятора; готовый образ и исходники выложены на GitHub автора.
  • Среди конкурентов Linux-порт есть только у TI Nspire CX (II) (396 МГц, 64 МБ RAM); TI-84+ CE, Casio FX-CG50 и калькуляторы Numworks Linux не поддерживают.

Почему это важно

Это классический хобби-хак embedded-разработчика: превратить серийный гаджет с избыточным по калькуляторным меркам «железом» (i.MX 6 Ultralite, 256 МБ RAM) в полноценную Linux-машину. Показательно, что автор прямо формулирует свою позицию: купленное устройство должно допускать root-доступ и разработку на нём, иначе, по его словам, «это электронный мусор с момента, как покидает завод». История иллюстрирует движение right-to-repair/right-to-tinker в миниатюре, на калькуляторе, а не на смартфоне.

Кому это важно

В первую очередь, энтузиастам ретро- и embedded-вычислений, владельцам HP Prime G2 и коллекционерам калькуляторов, которые хотят выжать из железа больше, чем предусмотрел производитель. Также интересно разработчикам встраиваемых систем как кейс восстановления заброшенного порта: устаревший buildroot, битый device tree, утерянная ветка ядра, и как это чинится.

Как это применить

Автор выложил готовый собранный образ и утилиту uuu для его загрузки, плюс полный исходный код на своём GitHub. Чтобы попробовать, нужно вскрыть калькулятор (снять 4 винта на задней панели, поддеть корпус), подключить его и прошить образ через uuu, при этом система грузится в оперативную память, а не в постоянную (NAND), что оставляет возможность вернуться к штатному ПО HP.

Можно ли доверять

Источник, личный технический блог автора, который сам разработчик встраиваемых систем по основной работе; статья подробно описывает конкретные технические шаги (адреса i2c, названия драйверов, изменённые файлы), что типично для достоверного инженерного отчёта. Замеченная в исходном тексте статьи оговорка: видимый текст обрывается на полуслове в середине инструкции по прошивке, поэтому не все шаги установки удалось пересказать.

Риски и подводные камни

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

«Систему не заблокировали, сейчас она используется только для верификации. Но учтите: в новом чипе действительно заложена возможность полностью зашифровать и наглухо заблокировать систему, и мы это протестировали, она работает. Мы включим её, если понадобится. Это требование корпоративной безопасности (после случаев, когда прошивку вредоносного кода находили в мышах, клавиатурах и принтерах для взлома сетей), под которое мы добивались исключения. Никто не будет играть с режимом экзамена.»

— неназванный сотрудник HP, дословно процитирован в статье