Porting Doom to a 20-year-old VoIP phone
a day ago
- #hardware-hacking
- #reverse-engineering
- #doom
- The author repurposed a Snom 360 VoIP phone from 2005 to run Doom by reverse engineering its firmware and hardware.
- Initial steps involved upgrading the phone's firmware to the latest available version (V08) and exploring its contents using tools like binwalk.
- The firmware was found to contain a JFFS2 filesystem, revealing a Linux 2.4.31 OS running on a MIPS chip, which was promising for porting Doom.
- Key binaries like '1lid' and 'lcs360' were identified as responsible for the phone's audio and web interface functionalities.
- The author discovered GPL-licensed source code for the phone's components, including the kernel, BusyBox, and a cross-compiler, which significantly aided the project.
- Custom firmware was built to gain shell access to the phone, involving setting up a TFTP server and flashing the image via a serial connection.
- Reverse engineering efforts focused on the phone's display and keyboard drivers, utilizing ioctl calls to interact with the hardware.
- A custom driver was developed to control the phone's display and LEDs, enabling basic graphical output.
- Doom was ported to the phone using doomgeneric, implementing necessary functions for display output, keyboard input, and timing.
- The final product successfully runs Doom on the Snom 360, albeit with some limitations like unreadable text and no sound.