Автор купил на eBay плату с экраном от кофейного автомата и изучил её, заинтересовавшись упоминанием микрофона в сервисном руководстве. Производитель на запрос ответил, что микрофон — задел на будущее для датчика присутствия и энергосбережения, который не реализован, но изучать плату не разрешил.
Плата запустилась после подачи 24 В на найденные по дорожкам контакты, но выдала ошибку об отсутствии остальной части автомата. На отладочном разъёме обнаружился сигнал UART 3,3 В: RX на четвёртом контакте, TX на пятом, GND на восьмом. Подключение через Raspberry Pi дало консоль устройства.
Загрузчик U-Boot не был защищён паролем и позволял менять командную строку ядра, поэтому автор загрузился с init=/bin/sh, смонтировал файловую систему и сменил пароль root. Механизм обновления через USB проверяет целостность не подписью кода, а самодельным хешем с секретом, который лежит на самом устройстве открытым текстом.
С помощью shell-скрипта, запускаемого с USB-накопителя, автор проверил оборудование и ПО автомата, наличие сетевого подключения и возможность записи звука. Следов прослушивания не нашлось: нужного звукового оборудования в большинстве конфигураций не было вовсе, хотя более крупный вариант дисплея и контроллера, судя по всему, звук поддерживать мог.
Для запуска DOOM автор выбрал порт fbDOOM, который рисует прямо в кадровый буфер Linux и почти не зависит от библиотек. На плате стоит процессор ARM Cortex-A9 со старым окружением glibc 2.18 и ядром Linux 3.10.17, а исходной среды разработки для заказной платы нет.
Игру собрали статически с совместимой libc или с собственным окружением и запустили на тестовом экране в лаборатории и с подготовленного USB-накопителя на самом кофейном автомате.
