Allowing for Seamless Customer Customisation & Firmware Updates

Coderus created a new iOS and Android app for each headphones series released by Bowers & Wilkins, which could be used to customise users’ experiences and perform firmware updates.

Client: Bowers & Wilkins
Industry: Audio | Media & Entertainment

At a Glance

  • We supported the automated testing of code and UI.

  • We shared core code across platforms while providing native UI & custom experience.

  • We developed custom hardware.

  • We created mobile iOS and Android applications that interact using BLE.

The best speaker isn’t the one that gives you the most, but the one that loses the least.
John Bowers
Founder of Bowers & Willkins

The Challenge

The Bowers & Wilkins brand’s key focuses are providing customers with products that offer the best music quality as well as battery life. The company sought an app, which would allow users to customise their experience and perform firmware updates, which would ensure that they always had the latest features and improvements. 

The emphasis on high-quality streaming audio meant that any app interaction would need to consume as little power and bandwidth as possible to allow music playback to continue without hiccups – while providing a great user experience and consuming minimal battery.

The application would also be developed in parallel with the hardware, firmware and user experience, so there would be very limited availability of products to develop and test with and there was a high likelihood of change throughout the development life cycle.

Image Block

The Methodology

Our agile methodology played a vital role in ensuring that the project was kept on track. We continued to share code between both the Android and iOS apps using Google’s Java to Objective-C (J2ObjC). This allowed logic for the device interaction to be written once, providing a standardised way for both mobile apps to interact with the headphones.

Early in the project development when hardware was most limited due to the cost of manufacture, we made use of an in-house project which allows for quickly prototyping and mocking Bluetooth Low Energy (BLE) devices. This allowed us to build and test the app end to end before hardware and firmware were complete, which was invaluable in delivering a quality application in tight timelines.

Because BLE is low power, it can be impractical for transferring data such as firmware files and because great audio quality is key for the user, BLE data would have a lower priority than audio data which could cause app performance problems if not carefully considered. This required us to work very closely with the firmware and hardware teams to optimise connection parameters and the payloads that the app would send and receive.

We structured work into two-week sprints, meaning that there was a release to the client every two weeks. This worked well as it allowed the client to evaluate the designs and implementation frequently and update the user experience as necessary. Jia was our platform of choice to track progress and issues, as well as having weekly calls with the UX and firmware teams to ensure that everyone was aligned and updated across multiple continents.

Image Block

The Tech_

  • We created native iOS and Android applications.

  • Libraries were written using J2ObjC to take advantage of code sharing between iOS and Android. Logic for Bluetooth device interaction was written using native code on each platform with the shared code defining the framework used by the application layer to interact with the devices.

  • The apps support functionality across different pairs of headphones such as PX7 (over-ear) and PI4 (in-ear) – many of which have different BLE profiles – affecting how data is retrieved and accessed by the mobile application on a product by product basis.

  • We implemented a solution for Raspberry Pi to simulate the actual hardware.

  • We made use of Bluetooth Sniffer technology for debugging and to verify behaviour correctness.

  • Server backend environment was implemented to allow consumers to download the latest firmware for their headphones without having to update the version of their app.

Image Block
Image Block
Background Image
The Results

Working to a strict deadline in order to coincide with the launch of the headphones, the Coderus team managed to exceed the client’s expectations. Consumer ready applications were developed and deployed to the Apple App Store and Google Play in time for the launch, ensuring consumers could immediately benefit from its use from the moment they got their hands on their newly purchased headphones.


This feat was made possible not only through our close collaboration with the client but due to our ability to produce maintainable and extensible code, allowing us to react quickly to changes in requirements without compromising the quality of the applications. A thorough suite of both automated and manual tests gave us full confidence in the correctness of the applications throughout the whole development lifecycle.


Despite the complexity of the project, we worked to our full capacity and met the deadline, delivering applications which met the client requirements – an iOS and Android mobile app which allowed users to customise the settings on their headphones and perform firmware updates.


Supported by our custom technology and agile approach, the project was completed within our original timelines and we coped very well with the regular changes in the UX design and firmware functionality. Close collaboration and quick feedback cycles with the client made sure that they were up to date on our progress and could design and validate any required changes regularly.

We’d love to enhance your software.

If you’ve got an app or piece of software in mind, get in touch with us today to start your project.