Firmware development
for gaming keyboards
Customer
NZXT – American computer hardware manufacturer
Project type
Entertainment, Gaming and Esports, Consumer Apps, Software for Hardware, UI
Technology
C, FreeRTOS, Python, NXP (LPC), USB Hid, Microcontroller software, UART, SPI, I2C, ADC, Timers, PWM, ARM Cortex M, GNU ARM toolchain (gcc, gdb, etc.), git, Jenkins, CI
Developex team
2 Embedded engineers, 1 QA, 1 PM, 1 BA
About
The Client is a well-known American premium computer hardware manufacturer based in California. The company manufactures computer cases, components, and accessories for the PC gaming market.
Our team of gaming enthusiasts and professionals took part in developing firmware for gaming peripherals (keyboards) and made extraordinary gaming experiences.
Developex team developed the firmware for three types of gaming keyboards. All keyboards have the same feature set, but each keyboard has a different number of keys and different layouts to support several languages and allow users to choose the most comfortable keyboard for themselves.
We implemented the ability for users to use various lighting effects, including customizing their own, configure profiles, macros, and actions for ease of use of the keyboards.
Main features that Developex was responsible for:
The difficulty of the project was to work without UI application as we have implemented the firmware part of keyboard development. Also, we developed the firmware in such a way as to optimally use the available memory and implement the maximum amount of functionality.
Developex team was responsible for testing the firmware. We used tests written in Python programming language and run these tests in PyCharm.
On the Business Analysis side, we prepared specifications for firmware and software-to-firmware protocol for keyboards. We have created User stories with Acceptance criteria for such topics as keyboard behavior, firmware update, lighting effects, keyboard macros, profiles, actions, and special buttons.
On the Project Management side, we managed the project using Agile methodology,
prepared tasks for the team based on requirements, participated in meetings and discussions with clients,
prepared weekly status reports, and prepared roadmaps and reports for each firmware version for each keyboard type.
Also, we created technical documents such as coding style, communication protocol, keyboard layout, some manuals, etc.
We had weekly meetings with clients where we provided a project status, showed a demo and discussed future plans and releases. Also, we communicated through email and messengers to resolve quick questions.