Case study
Cisco CP-9951 DOOM: mapping phone input for a native game port
Cisco CP-9951 DOOM ports the game to run on the IP phone's ARM CPU using its local framebuffer, keypad, and media path. The accompanying investigation maps the Raven keypad path and a 16-byte input event format from the phone's keyhandle module and hardware observations.
- Targets
- Firmware
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Sources reviewed
- Evidence class
- C1 partial scope or analysis entry
- Stars
- 3
- Last commit
- 2026-09-15
GitHub data as of 2026-11-10
Evidence

- Observed
- Download and demo observed; the case covers part of the target software.
- Scope
- Partial
- Checked
- 2026-11-08
Requirements & limits
- Prerequisites: A Cisco CP-9951 with firmware sip9951.9-2-1 is the documented tested device.
- Testing evidence: The author reports an Ethernet-disconnected cold-boot test of the final build.
- License: No licence file in the repository.
Cite
BibTeX
@misc{cisco-9951-doom-case,
title = {{Cisco CP-9951 DOOM: mapping phone input for a native game port}},
howpublished = {\url{https://github.com/dennishilk/cisco9951-doom}},
url = {https://github.com/dennishilk/cisco9951-doom},
urldate = {2026-11-06},
note = {Awesome REA entry: \url{https://awesomerea.org/resources/cisco-9951-doom-case/}}
}Plain text
Cisco CP-9951 DOOM: mapping phone input for a native game port. https://github.com/dennishilk/cisco9951-doom (accessed 2026-11-06). Awesome REA entry: https://awesomerea.org/resources/cisco-9951-doom-case/
Useful? Star Awesome REA on GitHub2.4k
About this entry
The description was reviewed against primary sources.
Primary sources
- docs/keypad-reverse-engineering.md GitHub · dennishilk/cisco9951-doom · Revision f9c4911
- README.md GitHub · dennishilk/cisco9951-doom · Revision f9c4911
More in Firmware and hardware
- Zeppelin Air: reconstructing USB firmware recovery · Case study
- EmuWorks: emulating NumWorks N0110 calculator hardware · Case study
- CH899: reconstructing the clock's MM32–ESP exchange · Case study
- telink-usb-ota: reconstructing Telink USB-HID firmware updates · Case study
- K2 OpenKlipper: reconstructing the Creality K2 control stack · Case study
- ThinkCentre Fan Control: recovering fan telemetry and modes from the M70t Gen 6 · Case study
All 260 entries in Firmware and hardwareFirmware and hardware case studies (175)