We collaborated with Heavys, a specialized headphone manufacturer for Heavy Metal enthusiasts, to develop a mobile app and web admin panel that allow the company to swiftly and conveniently deliver firmware updates for its headphones over the air. These headphones do more than just play music; they’re designed to precisely render sound, enhanced by continually evolving custom firmware for each model. How can users stay informed about the latest updates and improvements? This is where our expertise in wireless connected devices truly shines. We have crafted mobile applications for both iOS and Android, streamlining the headphone firmware update process using Bluetooth Low Energy (BLE) for efficiency and ease.
In this blog post, we will explore the technical aspects of the solution we developed for Heavys, including the mobile applications and a web management panel. Through this panel, the Heavys team can upload and distribute firmware updates. Read on to discover the technical details behind the solution.
Implementing Device Firmware Update via BLE
To bring Heavys’ vision to life, we developed a web admin panel and a backend server in addition to mobile applications. The admin panel serves not only as the upload point for firmware builds but also as the command center for managing their distribution. The backend server executes this distribution, ensuring that updates, along with notifications, are sent to the app. Users can then effortlessly apply these updates to their headphones through Bluetooth Low Energy, ensuring their device is always up to date with the latest sound enhancements.
The mobile app also includes registration and authorization integrated with Shopify, which Heavys already used for its ecommerce operations and customer data. This integration enables unified user management across the existing Heavys customer ecosystem and the mobile application. For instance, one person might purchase the product while another uses the headphones and app, each providing their contact details. By bringing these users together in Shopify, the solution connects product purchasers with app users. Users register by entering their name, email, and password, which is checked against the Shopify database. If the account doesn’t exist, it’s automatically created in Shopify, seamlessly blending customer and user experiences. For app access, users simply log in using their Shopify email and password.
As for headphone pairing in the app, we’ve incorporated features for a smooth and intuitive connection process. Users receive a standard prompt to allow Bluetooth access, leading them to the “Connect your headphones” screen upon consent. For further assistance, there’s a handy guide for pairing, accessible through a link. There’s also a feature for easy navigation to the Heavys online store. The pairing screen only shows compatible headphones, simplifying the connection process. If a user encounters difficulty in connecting, they have the option to retry or choose a different pair. For any assistance, the app provides direct access to customer support, ensuring a user friendly experience.
Now let’s focus on the central functionality of our application. It notifies headphone users about the latest firmware updates through push notifications. When users tap on these notifications, the app opens and leads them straight to the process for updating their firmware. Should an error occur, the application informs the user and provides a retry option. Additionally, it reports any server or connectivity issues encountered.
Within the app, users can securely view their personal details. They have the capability to delete their account, which affects only the app while keeping their Shopify account intact. An essential feature is the option for users to export all their data collected by the app in a .json format. The Privacy Policy and Terms of Use are accessible via links to the Heavys website. This ensures that updates to these documents are made in one central location, eliminating the need for changes within the app itself.
Customizable sound with built-in equalizer
The built-in equalizer allows users to fine tune their audio experience by adjusting six frequency bands through an intuitive interface in the mobile app. Each band controls gain levels, enabling users to optimize sound balance for different music genres. Leveraging Qualcomm’s advanced chipset capabilities, the equalizer delivers high quality audio processing while remaining user friendly. To ensure stability, we optimized the update process: iOS utilizes a built-in request queue, while Android incorporates delays to prevent device overload.
Additionally, we addressed global volume regulations, which initially posed a challenge when equalizer adjustments exceeded permissible loudness levels. By refining gain controls, the app now ensures compliance with legal limits while maintaining an immersive listening experience.
Firmware management with the admin panel
The web admin panel gives the Heavys team full control over firmware updates. The panel showcases a comprehensive list of all firmware builds, with options to sort by various criteria such as name and date. Creating new firmware involves inputting specific details like build name, version, type, and OS compatibility. The panel enables administrators to edit details of non-active firmware builds and delete them as required. Activation of firmware builds is meticulously managed, allowing only production-type builds for each platform to be activated at a time. Once a firmware update is released by an administrator, users with the corresponding headphone model receive a notification about the new firmware.
Client-Server Application Architecture
Exploring the architecture of the solution we developed for Heavys, we have native iOS and Android client applications developed in Swift and Kotlin, respectively. The web admin panel is built with React. These applications interact with a backend running on AWS EC2, implemented in .NET 7 as a REST API. A key feature is the Scheduled Job within this API, utilizing .NET Hosted Service, which schedules and runs background tasks. PostgreSQL in Amazon RDS serves as the primary database. Additionally, Shopify serves as a centralized source of customer data, allowing the solution to connect Heavys ecommerce customers with users registered through the mobile application.
One of the Heavys requirements was to maintain a unified view of headphone purchasers and mobile app users, since they are not always the same individuals. To illustrate how this architecture achieves such integration, let’s examine the new user registration scenario in the app.
When a new user registers, the app sends a request to the server, processed by the REST API. This API then creates a new user record in the PostgreSQL database and generates a related event. Every five minutes, a Scheduled Job checks PostgreSQL for new events. Upon finding a new user registration event, it queries the Shopify customer database to see if a user with the same contact details exists. If not, it creates a new user record. This system thus adds app-registered users to Shopify alongside those who have purchased headphones, if they weren’t already in the database.
For a broader overview of our collaboration with Heavys, including the project scope, technology stack, and results, see the Heavys project in the ABCloudz portfolio.
Let’s build together
The Heavys project demonstrates how mobile applications, BLE connectivity, backend infrastructure, ecommerce integration, and device firmware management can work together as a single connected product ecosystem.
If you are building a connected device and need expertise in Bluetooth Low Energy (BLE), native mobile development, backend architecture, or OTA firmware delivery, ABCloudz can help take your solution from architecture to production.
Let’s start discussing your project today. Contact us to get the ball rolling!