System and method for updating firmware in headphones with dedicated earpiece controllers
A dual-mode communication system enables simultaneous firmware updates for headphones with dedicated earpiece controllers, addressing the inefficiency of separate updates by allowing both controllers to receive and apply updates concurrently.
Patent Information
- Application Number
- JP2025542075
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-01-20
- Filing Date
- 2024-01-12
- Publication Date
- 2026-02-10
AI Technical Summary
Headphones with dedicated earpiece controllers require separate firmware updates for each earpiece, doubling the time required during manufacturing due to the need to send updates addressed to each controller individually.
Implementing a dual-mode communication system where controllers can receive updates in a second mode regardless of the intended recipient, allowing simultaneous updates while maintaining the ability to distinguish commands addressed to specific controllers.
Reduces the time required for firmware updates by allowing both earpiece controllers to receive and apply updates simultaneously, optimizing manufacturing efficiency.
Smart Images

Figure 2026504931000001_ABST
Abstract
Description
[Technical Field]
[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application claims priority to U.S. Non-Provisional Patent Application No. 18 / 157,474, filed January 20, 2023, and entitled "System and Method for Updating Firmware of Headphones With Dedicated Earpiece Controllers," which is incorporated herein by reference in its entirety. [Background technology]
[0002] The present disclosure generally relates to a system and method for updating firmware in headphones using a dedicated earpiece controller. Summary of the Invention [Means for solving the problem]
[0003] All examples and features mentioned below can be combined in any technically possible manner.
[0004] According to one aspect, headphones include a first earpiece containing a first electro-acoustic transducer and a first controller, the first controller including a first processor and a first memory, the first memory storing first program code executed by the first processor during operation of the headphones; and a second earpiece containing a second electro-acoustic transducer and a second controller, the second controller including a second processor and a second memory, the second memory storing second program code executed by the second processor during operation of the headphones, wherein the first controller receives packets of data over a communication path, the communication path transmitting the packets of data. to the first controller and the second controller, and receiving a packet of data addressed to either the first controller or the second controller; and determining whether the packet of data is addressed to the first controller, wherein the first controller is programmed to, in a first mode, execute at least one command stored in the packet of data only when it determines that the packet of data is addressed to the first controller; and the second controller is programmed to, in a second mode, update at least a portion of the first program code regardless of whether the packet is addressed to the first controller.
[0005] In one example, the first controller is programmed to enter the second mode if the packet of data includes updates to the first program code.
[0006] In one example, a portion of the second program code is permanent program code that is not updated in the second mode.
[0007] In one example, the persistent program code is a gain adjustment for a signal transduced by a first electro-acoustic transducer.
[0008] In one example, the communication path is a wired communication path.
[0009] In one example, the communication path is a wireless communication path.
[0010] In one example, the headphones include a down-cable control module and the communication path includes a down-cable control module.
[0011] In one example, the second controller is programmed to receive a packet of data over the communication path and determine whether the packet of data is addressed to the second controller, and the second controller is programmed in a first mode to execute at least one command stored in the packet of data only when the second controller determines that the packet of data is addressed to the second controller, and the second controller is programmed in a second mode to update at least a portion of the second program code regardless of whether the packet is addressed to the first controller.
[0012] In one example, the first controller is further programmed to, in the second mode, transmit an acknowledgment over the communication path upon receipt of the packet of data if the packet of data is addressed to the first controller.
[0013] In one example, the first controller is further programmed to, in the second mode, upon receiving a query regarding receipt of the packet of data, transmit an acknowledgment of receipt of the packet of data over the communication path if the packet of data is addressed to the second controller.
[0014] According to another aspect, a non-transitory storage medium contained in a first earpiece of a pair of headphones including a first earpiece and a second earpiece stores program code that, when executed by a processor, causes the processor to receive a packet of data via a communication path, the communication path delivering the packet of data to a first controller and a second controller, the packet of data being addressed to either the first controller or the second controller, the first controller being contained in the first earpiece and the second controller being contained in the second earpiece; and determine whether the packet of data is addressed to the first controller; wherein in a first mode, at least one command stored in the packet of data is executed only upon determining that the packet of data is addressed to the first controller; and wherein in a second mode, at least a portion of the program code is updated regardless of whether the packet is addressed to the first controller.
[0015] In one example, the second mode is entered when the packet of data contains updates to the program code.
[0016] In one example, the portion of the program code is persistent program code that is not updated in the second mode.
[0017] In one example, the persistent program code is a gain adjustment for a signal transduced by an electro-acoustic transducer disposed in the first earpiece.
[0018] In one example, the non-transitory storage medium further includes, in the second mode, sending an acknowledgment over the communication path upon receipt of the packet of data if the packet of data is addressed to the first controller.
[0019] In one example, the non-transitory storage medium further includes, in the second mode, transmitting an acknowledgment of receipt of the packet of data over the communication path upon receiving a query regarding receipt of the packet of data if the packet of data is addressed to the second controller.
[0020] A method for updating program code stored on a non-transitory storage medium contained in a first earpiece of a pair of headphones, the headphones including a first earpiece and a second earpiece, the method including receiving a packet of data over a communication path, the communication path delivering the packet of data to a first controller and a second controller, the packet being addressed to either the first controller or the second controller, the first controller being contained in the first earpiece and the second controller being contained in the second earpiece; and upon determining that the packet of data includes an update to the stored program code, updating at least a portion of the program code regardless of whether the packet is addressed to the first controller.
[0021] In one example, a portion of the program code is permanent program code that is not updated.
[0022] In one example, the persistent program code is a gain adjustment for a signal transduced by an electro-acoustic transducer disposed in the first earpiece.
[0023] In one example, the method further includes transmitting an acknowledgement over the communication path upon receipt of the packet of data if the packet of data is addressed to the first controller.
[0024] In one example, the method further includes, upon receiving a query regarding receipt of the packet of data, transmitting an acknowledgment of receipt of the packet of data over the communication path if the packet of data is addressed to the second controller.
[0025] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will become apparent from the description and drawings, and from the claims. [Brief explanation of the drawings]
[0026] In the drawings, like reference numbers generally refer to the same parts throughout the different views. Also, the drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of various aspects. [Figure 1] 1 illustrates a block diagram of a pair of headphones with dedicated earpiece controllers, according to an example. [Figure 2] 1 illustrates a block diagram of a pair of aviation headphones with dedicated earpiece controllers, according to an example. [Figure 3] 1 illustrates a block diagram of a pair of truly wireless headphones with dedicated earpiece controllers, according to an example. [Figure 4A] 1 illustrates a portion of a flowchart of a method for updating firmware in headphones with a dedicated earpiece controller. [Figure 4B] 1 illustrates a portion of a flowchart of a method for updating firmware in headphones with a dedicated earpiece controller. [Figure 4C] 1 illustrates a portion of a flowchart of a method for updating firmware in headphones with a dedicated earpiece controller. DETAILED DESCRIPTION OF THE INVENTION
[0027] Certain types of headphones, such as aviation headphones or truly wireless headphones, feature dedicated controllers in each earpiece, allowing each earpiece to function with a degree of independence. In the context of truly wireless headphones, each earpiece typically includes a separate Bluetooth controller to allow each earpiece to receive signals without using connecting wires. In the context of aviation headphones, the separate controllers typically allow the wearer to assign different functions to each earpiece. For example, one earpiece may be in a noise cancellation mode to reduce ambient engine noise, while the other earpiece may be in a transparency mode to allow the wearer to hear the person sitting next to the wearer, such as the co-pilot.
[0028] These headphones typically require periodic firmware updates, whether they are updates to the wireless protocol used by the dedicated controller or updates from the manufacturer to add features or remove bugs. In these cases, both controllers require the same update, but to maintain independence, each controller is programmed to respond only to packets addressed directly to itself and to discard packets addressed to the other controller. This means that each update must be sent twice: once as an update addressed to one earpiece controller and once as an update addressed to the other earpiece controller, effectively doubling the time required to update the headphone firmware. This is particularly challenging during manufacturing, when efficient use of time is paramount. Therefore, there is a need in the art to reduce the time required to update the firmware of headphones that use dedicated earpiece controllers.
[0029] Referring to FIG. 1 , a block diagram of headphones 100 is shown that includes at least two separate controllers, controller 102 and controller 104, each programmed to have two modes for receiving data over communication path 106: (1) a first mode for receiving commands and (2) a second mode for receiving updates. In the first mode, controller 102 and controller 104 each execute only commands addressed to themselves and discard any commands addressed to the other controller. In the second mode, controller 102 and controller 104 each accept update data regardless of which controller the update data is addressed to. By accepting any data packet in the second mode, both controller 102 and controller 104 can be updated simultaneously using a single transmitted update while retaining the ability to distinguish commands addressed in the first mode.
[0030] In a particular example, controllers 102 and 104 each operate in a first mode or a second mode according to the type of data received. Thus, when receiving update data over communication path 106, controllers 102 and 104 operate in the second mode, but operate in the first mode while receiving command data. In one example, each packet of data may include an identifier, such as a flag, that designates the packet as a command packet or an update packet. In an alternative example, controllers 102, 104 may each receive a separately addressed command that informs controller 102, 104 to assume either the first mode or the second mode for subsequent data packets.
[0031] Controllers 102 and 104 are each housed in a separate earpiece. Thus, earpiece 108 houses controller 102, and earpiece 110 houses controller 104. Each earpiece 108, 110, in use, can receive an audio signal and provide an acoustic signal to a respective ear of a user. To that end, earpiece 108 and earpiece 110 further house at least one electro-acoustic transducer, with earpiece 108 including electro-acoustic transducer 112 and earpiece 110 including electro-acoustic transducer 114. Electro-acoustic transducer 112 and electro-acoustic transducer 114 each receive an audio signal and convert it into an acoustic signal.
[0032] Controllers 102 and 104 each include a processor and memory that stores program code executed by the processor to perform various functions necessary to operate each earcup, including the steps of method 400 described below. In particular, controller 102 includes processor 116 and memory 118, while controller 104 includes processor 120 and memory 122. (It is understood that the processor and memory of each controller 102, 104 need not be in the same housing, such as part of a dedicated integrated circuit, but may be disposed in separate housings. Furthermore, a single controller may include multiple physically separate memories for storing program code necessary for its functionality and may include multiple processors for executing the program code. Additionally, for purposes of this disclosure, the term "updating" may refer to either initially writing data to memory or overwriting existing data.)
[0033] In various examples, the controllers 102, 104 may be further programmed to receive input from one or more microphones (e.g., disposed in or on the respective earpieces) and, based on the microphone signals, provide either a noise-canceling signal or a hear-through signal via the electro-acoustic transducer 112. Methods for generating noise-canceling signals or hear-through signals are known in the art and will not be discussed further herein, although any suitable method may be used. Furthermore, the controllers 102, 104 in certain examples may be programmed to receive a wireless signal, e.g., music, and, based on the wireless signal, generate an acoustic signal via the electro-acoustic transducers 112, 114. The memory may be any suitable form of memory, including EPROM, EEPROM, flash EPROM, etc.
[0034] In various examples, each controller 102, 104 may be programmed to send an acknowledgment when a data packet addressed to it is successfully received. Thus, for example, controller 102 will acknowledge commands addressed to it, but will not acknowledge commands addressed to controller 104. This means, for example, that after an update, a controller 102 that receives an update packet addressed to controller 104 will not send an acknowledgment. To address this, a controller 102 that is not addressed by a data packet may be separately queried for successful receipt of the data packet. For example, a controller 102 that receives update data addressed to controller 104 will only acknowledge after receiving a separate query for successfully received data. In an alternative example, each controller 102, 104 may not only respond to data packets addressed to it, but also respond to each data packet with an acknowledgment that describes whether the received packet was kept or discarded.
[0035] Additionally, certain portions of the memory containing persistent data, such as user or manufacturer settings, may be configured or otherwise adjusted in the first mode but remain excluded from any updates during the second mode. For example, if a user has hearing loss in one ear, one of the controllers 102, 104 may be programmed to increase the gain of the appropriate acoustic signal to compensate. Generally, it is not desirable for such configuration information to be overwritten during updates. Such settings may be stored in persistent memory that is not updated. The portion of the memory may, in one example, be a specific block of memory or a separate physical memory structure.
[0036] In one example, the communication path 106 may be a wired communication path, such as a cable that splits to be received at each earpiece. Alternatively, the wired communication path 106 may be received at the earpiece 108 and forwarded or otherwise conveyed to the earpiece 110 through a second cable. Indeed, the communication path may include any suitable medium (i.e., a bus) for transferring data to both the first controller and the second controller. For example, the communication path may include a cable received at the earpiece 108 and a second cable extending from the first earpiece to the earpiece 110 through the headband connecting them. In an alternative example, the communication path may be a wireless communication path received using a communication protocol such as Bluetooth or Wi-Fi. In yet another example, the communication path 106 may be partially wireless and partially wired, such as a wireless signal being received at the earpiece 108 and then forwarded to the earpiece 110 via a cable extending from the first earpiece to the second earpiece. Regardless of the configuration of the communication path 106, the same signals are received by both controllers 102, 104.
[0037] The source of the update can be any suitable device for delivering the update, but typically the update originates from the manufacturer and is downloaded onto a local device, such as a personal computer, which then transmits the update to the headphones over communication path 106. It is preferable, though not required, that the update be transmitted over a wired communication path, such as a USB cable, because a wireless communication path is more susceptible to disruptions, such as the user walking out of range before the update is complete.
[0038] The structure of the headphones 100 and the earpieces 108, 110 may have different form factors in various examples. For example, in the example of FIG. 1, the headphones 100 may be a pair of over-ear headphones, in which case the earpieces 108, 110 may be earcups that fit over the user's ears. In this example, the communication path 106 typically, although not necessarily always, includes a conductive path (e.g., wires) extending between the controller 102 and the controller 104 (e.g., extending through a headband). In alternative examples, the headphones 100 may be in-ear headphones, in which case the communication path may be wired or wireless (e.g., if both headphones are truly wireless headphones). These are provided by way of example only, and those skilled in the art will understand that headphones may adopt any number of form factors and be used in a variety of contexts, including open-back headphones, closed-back headphones, on-ear headphones, open-ear headphones, earphones, etc. Furthermore, headphones may be specialized for a particular application, such as a hearing aid or, as in the example of FIG. 2, aviation headphones. In general, the examples and methods described in this disclosure can be used with any headphones that have multiple controllers.
[0039] 2 and 3 illustrate block diagrams of example headphones 100. Specifically, FIG. 2 illustrates a block diagram of an exemplary pair of aviation headphones 200, and FIG. 3 illustrates a block diagram of a pair of truly wireless headphones. To focus the discussion, only components associated with updating the various controllers are illustrated in these block diagrams, and thus electro-acoustic transducers such as speakers or microphones are excluded.
[0040] FIG. 2 illustrates a block diagram of an exemplary pair of aviation headphones 200. As shown, the headphones 200 include a controller in the left earcup 202, including a microcontroller 206, an aviation profile memory 210, and a non-aviation profile memory 208. The headphones 200 further include a controller in the right earcup 204, including a microcontroller 212, a non-aviation profile memory 214, and an aviation profile memory 216. Each microcontroller 206, 212 may implement noise cancellation or hear-through modes according to user input. Additionally, the aviation profile memories 210, 216 may store profile information related to aircraft type-specific features and persistent user-defined settings (such as gain adjustments for the earcups to account for hearing loss in one ear). The non-aviation profile memories 208, 214 may further include three definable active noise cancellation profiles. The profiles stored in the aviation profile memories 210, 216 and non-aviation profile memories 208, 214 are available to the microcontrollers 206, 212 to configure the noise cancellation profile of the aviation headphones 200 accordingly.
[0041] Aviation headphones 200 further include a down-cable controller 218 that includes a system controller 220 in communication with a system controller memory 222 and a Bluetooth system-on-chip 224 in communication with an external flash memory 226. In this example, the communication path includes a cable 232 that delivers data from down-cable controller 218 through a cable 236 that extends through the headband of headphones 200 between a cup-to-cup interface 228 in left earcup 202 and a cup-to-cup interface 230 in right earcup 204.
[0042] During normal operation, the headphones 200 may receive user commands, for example, via a tap control on at least one of the earcups 202, 204. The tap control signal is sent to the down-cable controller 218, which determines the tap control input by the user and sends an addressed signal to the appropriate earcup 202, 204 controller. For example, as described above, the tap control can set one earcup 202, 204 to hear-through mode while leaving the other in noise-canceling mode. In this mode, commands from the down-cable controller 218 are addressed, for example, via a header in a packet of data delivered to the earcups via the cable 236. In another example, the volume of the earcups 202, 204 may be independently adjusted, for example, via left and right volume control wheels on the down-cable controller 218.
[0043] In the first mode, each of the microcontrollers 206, 212 responds only to data packets addressed to it (e.g., related to tap controls or volume controls) and discards packets addressed to the other microcontroller. Thus, a tap control addressed to the earcup 202 controller will be executed by the earcup 202 controller but discarded by the earcup 204 controller. Similarly, a volume control directed to the earcup 204 controller will be executed by the earcup 204 controller but discarded by the earcup 202 controller.
[0044] However, during an update, data packets are sent to the earcups 202, 204 via the down-cable controller 218 (and thus the communication path including the down-cable controller 218). The packets may be addressed to any of the controllers in the earcups 202, 204, but in the second mode, each controller will use the packet to implement the update regardless of which controller the packet is addressed to. For example, an update packet may contain an update addressed to the aviation profile memory 210, but will be used by the boot loader in the microcontroller 212 to also update the aviation profile memory 216 with the same update. Conversely, an update may be addressed to the microcontroller 212, but will also be used by the boot loader of the microcontroller 206 to update itself.
[0045] The controller to which the update was addressed may acknowledge the update packet. Thus, if the update was addressed to the controller in earcup 202, microcontroller 206 will acknowledge the packet, even when the update is also used to update the controller in earcup 204. Controllers to which the update was not addressed may be separately queried as to whether the update was successfully received. Thus, for example, down-cable controller 218 may send a query to earcup 204 controller as to whether the update originally addressed to the controller in earcup 202 was successfully received, and microcontroller 212 may acknowledge it.
[0046] 3, a block diagram of an exemplary pair of truly wireless headphones 300 is shown. In this example, the headphones 300 are in-ear headphones comprising a left earpiece 302 and a right earpiece 304. The left earpiece 302 includes a controller comprising a Bluetooth system-on-chip 306 and a microcontroller 308. The right earpiece 304 includes a controller comprising a Bluetooth system-on-chip 310 and a microcontroller 312. The controllers of the left earpiece 302 and the right earpiece 304 receive signals over a communication path 314, which in this example is a wireless Bluetooth connection to a source, such as a mobile phone. However, in certain examples, the communication path 314 may include a wired connection to a case or dock that may be used to charge and update the headphones 300. In this example, the case or dock itself may include a controller that may store and direct updates to the headphones 300 when placed in or on the case or dock.
[0047] In operation, signals are received at Bluetooth system-on-chips 306 and 310 and relayed to microcontrollers 308 and 312, respectively. Microcontrollers 308 and 312 may control various earpiece functions, such as noise cancellation or generation of hear-through signals, as well as receiving input from a user, using, for example, touch controls on the exterior surfaces of earpieces 302, 304. In this case, a user-provided control input, such as pausing playback or turning on noise cancellation mode, may be input to the single earpiece (e.g., earpiece 302), processed by one of the controllers (e.g., microcontroller 308), and relayed via the Bluetooth system-on-chip (e.g., Bluetooth system-on-chip 306) to the other earpiece (e.g., earpiece 304) to match the state of the earpiece to which the control input was input.
[0048] During an update, as described in the example of headphones 100 and 200, an update package received over communication path 314 addressed to a single controller may be received and implemented by both controllers in earpieces 302 and 304. Furthermore, successful receipt of the packet may be acknowledged by the controller to which the packet was addressed. Controllers to which the packet was not addressed may be separately queried (e.g., by the source of the update or by the case / dock) for acknowledgement of successful receipt.
[0049] 4A-4C illustrate a method 400 for updating headphones using dedicated earpiece controllers, such as those described in connection with FIGS. 1-3. More specifically, the headphones may include a first earpiece containing a first controller with a first electro-acoustic transducer and a first processor and a first memory, and a second earpiece containing a second controller with a second electro-acoustic transducer and a second processor and a second memory. Furthermore, both controllers may receive packets of the same data over a communication path, which may be wired or wireless, or some combination of wired or wireless communication paths. The communication path may further include a controller, such as a down-cable controller for wireless headphones, or a controller, such as a case / dock. The data packets are each addressed to either the first controller or the second controller.
[0050] It should be further understood that the processor and memory of each controller need not be disposed within the same housing, such as part of a dedicated integrated circuit, but may be disposed within separate housings and may include multiple processors for executing program code. Additionally, a single controller may include and use multiple physically separate memories to store program code necessary for its functionality.
[0051] Method 400 may be executed in parallel by each of the first and second controllers to manage data packets delivered to the first and second controllers and initiate updates as appropriate in an efficient manner without having to send update packets to each controller individually.
[0052] A packet of data is received over a communication path in step 402. As described above, the packet of data is addressed to either the first controller or the second controller.
[0053] In step 404, it is determined whether the packet of data includes an update (e.g., a firmware update) to program code stored in the controller's memory. In other words, a portion of program code that dictates how the first and second controllers operate is being received for the first time, or such existing program code is being overwritten, so that the first and second controllers operate in a different manner or include some new functionality. This determination may include checking whether a flag identifying the packet as an update is set, although any suitable method for determining whether a packet is an update may be used. If the packet is not an update, the controller operates in the first mode, and the method proceeds to step 406 (FIG. 4B). Otherwise, if the packet is an update, the controller operates in the second mode, and the method proceeds to step 412 (FIG. 4C). (It should also be understood that this determination can be made negatively, i.e., by determining whether the packet is a command, which for purposes of this discussion is how to determine whether a packet is an update.) As an alternative to step 404, the controller can be notified that an incoming data packet is an update and can operate in the second mode or the first mode without determining whether the packet itself is an update.
[0054] In step 406, if the packet is not an update, the controller determines whether the packet is addressed to itself. Thus, as implemented by a first controller, method 400 determines whether the packet is addressed to the first controller. Similarly, as implemented by a second controller, method 400 determines whether the packet is addressed to the second controller. If the packet is not addressed to itself, in step 408, the controller executes at least one command stored in the packet of data (e.g., enter noise cancellation, enter hear-through mode, etc.). However, if the packet is addressed to itself, in step 410, the packet is discarded (i.e., the controller takes no further action based on what is contained in the packet).
[0055] In step 412, if the packet is an update, the controller operates in a second mode and the program code stored on the non-transitory storage medium is updated regardless of whether the packet of data is addressed to the controller. Thus, if a first controller is performing method 400 and the packet is addressed to a second controller, the first controller will continue.
[0056] As part of this step, certain portions of the program code may be excluded from the update, so that certain settings or manufacturing data may be maintained permanently throughout operation of the device. For example, certain settings, such as increasing the gain of a particular earpiece to account for hearing loss, may be preserved throughout the update process.
[0057] Additionally, at the end of steps 408, 410, or 412, if the packet of data was successfully received and addressed to the controller, an acknowledgment may be sent. If the packet of data was not addressed to the controller, the controller may wait for and acknowledge a separate query regarding correct receipt of the data received over the communication path.
[0058] The functionality or portions thereof, and various modifications thereof (hereinafter "functionality") described herein may be implemented, at least in part, via a computer program product, e.g., a computer program tangibly embodied in an information carrier, such as one or more non-transitory machine-readable media or storage devices, for execution by or to control the operation of one or more data processing devices, e.g., programmable processors, computers, multiple computers, and / or programmable logic components.
[0059] The computer program may be written in any form of programming language, including compiled or interpreted languages, and may be arranged in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may be arranged to be executed on one computer, on multiple computers at one site, or distributed across multiple sites and interconnected by a network.
[0060] The operations associated with implementing all or a portion of the functionality may be performed by one or more programmable processors executing one or more computer programs to perform the functions of the calibration process. All or a portion of the functionality may be implemented as special purpose logic circuitry, such as an FPGA and / or an ASIC (Application Specific Integrated Circuit).
[0061] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random-access memory or both. Elements of a computer include a processor for executing instructions and one or more memory devices for storing instructions and data.
[0062] While several embodiments of the present invention have been described and illustrated herein, those skilled in the art will readily envision various other means and / or structures for performing the functions and / or achieving the results, and / or advantages of one or more of the present inventions described herein, and each of such variations and / or modifications is deemed to be within the scope of the embodiments of the present invention described herein. More generally, those skilled in the art will readily appreciate that all parameters, dimensions, materials, and configurations described herein are exemplary, and that the actual parameters, dimensions, materials, and / or configurations will depend on the specific application or applications for which the teachings of the present invention are used. Those skilled in the art will recognize, or be able to ascertain using no more than routine experimentation, many equivalents to the specific embodiments of the present invention described herein. Accordingly, it should be understood that the foregoing embodiments are presented by way of example only, and that, within the scope of the appended claims and their equivalents, embodiments of the present invention may be practiced otherwise than as specifically described and claimed. The inventive embodiments of the present disclosure relate to each individual feature, system, article, material, and / or method described herein. Furthermore, any combination of two or more such features, systems, articles, materials and / or methods, if such features, systems, articles, materials and / or methods are not mutually inconsistent, is included within the inventive scope of this disclosure. [Explanation of symbols]
[0063] 100 headphones 102,104 Controller 106 Communication Path 108,110 earpieces 112,114 Electroacoustic transducer 116,120 processors 118,122 memory 200 Aviation Headphones 202 Left ear cup 204 Right ear cup 206,212 Microcontrollers 208,214 Non-Aeronautical Profile Memory 210,216 Aviation Profile Memory 218 Down Cable Controller 220 System Controller 222 system controller memory 224 Bluetooth System-on-Chip 226 External Flash Memory 228,230 Cup-to-Cup Interface 232,234 Control Module Interface 236 Cable 300 True Wireless Headphones 302 Left earpiece 304 Right earpiece 306,310 Bluetooth System-on-Chip 308,312 Microcontrollers 314 Communication Paths
Claims
1. The headphones are a first earpiece housing a first electro-acoustic transducer and a first controller, the first controller including a first processor and a first memory, the first memory storing first program code executed by the first processor during operation of the headphones; a second earpiece containing a second electro-acoustic transducer and a second controller, the second controller including a second processor and a second memory, the second memory storing second program code executed by the second processor during operation of the headphones; The first controller receiving a packet of data over a communication path, the communication path delivering the packet of data to the first controller and the second controller, the packet of data being addressed to either the first controller or the second controller; determining whether the packet of data is addressed to the first controller; the first controller is programmed to, in a first mode, execute at least one command stored in the packet of data only when it determines that the packet of data is addressed to the first controller; The second controller is programmed to update at least a portion of the first program code in a second mode regardless of whether the packet of data is addressed to the first controller.
2. The headphones of claim 1 , wherein the first controller is programmed to enter the second mode if the packet of data includes an update to the first program code.
3. The headphones of claim 1 , wherein the portion of the second program code is permanent program code that is not updated in the second mode.
4. 4. The headphone of claim 3, wherein the permanent program code is a gain adjustment for a signal transduced by the first electro-acoustic transducer.
5. The headphones of claim 1 , wherein the communication path is a wired communication path.
6. The headphones according to claim 1 , wherein the communication path is a wireless communication path.
7. The headphones of claim 1 , wherein the headphones include a down-cable control module, and the communication path includes the down-cable control module.
8. The second controller receiving packets of the data over a communications path; determining whether the packet of data is addressed to the second controller; the second controller is programmed, in a first mode, to execute at least one command stored in the packet of data only when it determines that the packet of data is addressed to the second controller; 2. The headphones of claim 1, wherein the second controller is programmed to, in the second mode, update at least a portion of the second program code regardless of whether the packet of data is addressed to the first controller.
9. 2. The headphones of claim 1, wherein the first controller is further programmed to, in the second mode, transmit an acknowledgment over the communication path upon receipt of the packet of data if the packet of data is addressed to the first controller.
10. 10. The headphones of claim 9, wherein the first controller is further programmed to, in the second mode, upon receiving a query regarding receipt of the packet of data, if the packet of data is addressed to the second controller, transmit an acknowledgment of receipt of the packet of data over the communication path.
11. A non-transitory storage medium contained in a first earpiece of a pair of headphones including a first earpiece and a second earpiece, the non-transitory storage medium storing program code, the program code, when executed by a processor, receiving a packet of data over a communication path, the communication path delivering the packet of data to a first controller and a second controller, the packet of data being addressed to either the first controller or the second controller, the first controller being contained within the first earpiece and the second controller being contained within the second earpiece; determining whether the packet of data is addressed to the first controller; in a first mode, executing at least one command stored in the packet of data only upon determining that the packet of data is addressed to the first controller; In a second mode, at least a portion of the program code is updated regardless of whether the packet of data is addressed to the first controller.
12. 12. The non-transitory storage medium of claim 11, wherein the second mode is entered when the packet of data includes an update to the program code.
13. 12. The non-transitory storage medium of claim 11, wherein the portion of the program code is persistent program code that is not updated in the second mode.
14. 14. The non-transitory storage medium of claim 13, wherein the persistent program code is a gain adjustment for a signal transduced by an electro-acoustic transducer disposed in the first earpiece.
15. 12. The non-transitory storage medium of claim 11, further comprising, in the second mode, sending an acknowledgment over the communication path upon receipt of the packet of data if the packet of data is addressed to the first controller.
16. 16. The non-transitory storage medium of claim 15, further comprising, in the second mode, upon receiving a query regarding receipt of the packet of data, if the packet of data is addressed to the second controller, transmitting an acknowledgment of receipt of the packet of data over the communication path.
17. 1. A method for updating program code stored on a non-transitory storage medium contained in a first earpiece of a pair of headphones, the headphones including the first earpiece and a second earpiece, the method comprising: receiving a packet of data over a communication path, the communication path delivering the packet of data to a first controller and a second controller, the packet of data being addressed to either the first controller or the second controller, the first controller being contained within the first earpiece and the second controller being contained within the second earpiece; upon determining that the packet of data includes an update to the stored program code, updating at least a portion of the program code regardless of whether the packet of data is addressed to the first controller.
18. 20. The method of claim 17, wherein the portion of program code is persistent program code that is not updated.
19. 20. The method of claim 18, wherein the persistent program code is a gain adjustment for a signal transduced by an electro-acoustic transducer disposed within the first earpiece.
20. 18. The method of claim 17, further comprising the step of transmitting an acknowledgement over the communication path upon receipt of the packet of data if the packet of data is addressed to the first controller.
21. 20. The method of claim 17, further comprising the step of: upon receiving a query regarding receipt of the packet of data, if the packet of data is addressed to the second controller, transmitting an acknowledgment of receipt of the packet of data over the communication path.