Over-the-Air Device Firmware Upgrade via Bluetooth

21 Feb 2024 Oleksii Svitlychnyi

We’ve developed a mobile app and web admin panel that allow a specialized headphone manufacturer for Heavy Metal enthusiasts to swiftly and conveniently deliver firmware updates for their 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 our solution, including the mobile application and a web management panel for the customer. Through this panel, our customer can upload and distribute firmware updates. Stay tuned to discover the technical insights behind this solution. Stay tuned to discover the technical insights behind this solution.

Implementing Device Firmware Update via BLE

To bring our customer’s 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.Inside the mobile app, per our customer’s request, we’ve implemented registration and authorization features, integrated with Shopify, a renowned e-commerce platform. This integration aims to create a unified database for both customers and app users. For instance, one person might purchase the product while another uses the headphones and app, each providing their contact details. By merging these users into a single Shopify database, we connect 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 “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 customer’s web 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 client’s website. This ensures that updates to these documents are made in one central location, eliminating the need for changes within the app itself.

In our app’s administrative panel, administrators have 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 the administrator, users with the corresponding headphone model receive a notification about the new firmware.

Client-Server Application Architecture

Exploring the architecture of our solution, 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 is used as a unified database for all users, serving as a centralized data repository rather than a store.
We previously noted the client’s requirement for a unified database for both headphone purchasers and app users, as 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 Store 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 the Shopify Store database, alongside those who have purchased headphones, if they weren’t already in the database.

Let’s build together

Need a team skilled in Bluetooth Low Energy (BLE) for both mobile and server application development? You’ve found us! With a track record of delivering numerous successful solutions to our clients, we are equipped to make the best technical decisions right from the start. Our extensive experience means we can quickly identify the most effective technical solutions, foresee potential pitfalls, and swiftly guide your project to a successful deployment within the agreed timeline.

Let’s start discussing your project today. Contact us to get the ball rolling!

Ready to start the conversation?