Extending bluetooth bandwidth using multiple antennas or controllers

A load balancer manages traffic between hardware instances in Bluetooth systems to support multiple user profiles, enhancing bandwidth and user experience by abstracting multiple hardware instances as a single instance, addressing the limitations of existing platforms in vehicles with increased connectivity demands.

WO2026106605A1PCT designated stage Publication Date: 2026-05-21GOOGLE LLC
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
GOOGLE LLC
Filing Date
2024-11-15
Publication Date
2026-05-21

AI Technical Summary

Technical Problem

Existing Bluetooth platforms struggle to support multiple user profiles concurrently due to privacy and performance concerns, limiting access to a single user profile and inadequate architecture, which is insufficient for modern vehicles with increased demands for screens and personal devices.

Method used

A load balancer is utilized to manage traffic between a unified personal area network interface and hardware instances, such as chipsets and antennas, applying a load balancing algorithm to assign communication requests to specific hardware instances based on unique session identifiers, effectively abstracting multiple hardware instances as a single instance.

Benefits of technology

This approach enhances bandwidth and resource utilization, allowing multiple users to access the system concurrently without the complexity of managing individual hardware components, improving Bluetooth functionality and user experience in vehicles with multiple users.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2024056130_21052026_PF_FP_ABST
    Figure US2024056130_21052026_PF_FP_ABST
Patent Text Reader

Abstract

A host computing system includes a plurality of hardware instances, a personal area network (PAN) interface that manages communication between client computing devices and the plurality of hardware instances, and a load balancer module that manages traffic between the PAN interface and the plurality of hardware instances. The load balancer module receives, from the PAN interface, a plurality of communication requests, wherein each communication request is associated with a respective unique session identifier for a respective client computing device. The load balancer module assigns, based on the respective unique session identifier, a respective communication request to a respective hardware instance, and forwards, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device. Each communication request may be assigned to an antenna from a plurality of antennas managed by a single chipset, or assigned to a chipset from a plurality of chipsets.
Need to check novelty before this filing date? Find Prior Art

Description

PCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01EXTENDING BLUETOOTH BANDWIDTH USING MULTIPLE ANTENNAS OR CONTROLLERSBACKGROUND

[0001] There is an increased demand for cars to support more screens or personal devices and more concurrent users. Bluetooth™ is the main connectivity means by which users bring features of their wireless devices into the car, such as media control, audio streaming (sink and source), game controllers, messaging, and calling. However, many Bluetooth™ platforms do not currently support the demands of this environment due to privacy and performance concerns and inadequate architecture. While an instance of a vehicle operating system may support multiple user profiles, the instance of the vehicle operating system may only allow a single user profile of the multiple user profiles to access (or in other words “log into”) the instance of the vehicle operating system.SUMMARY

[0002] In general, this disclosure is directed to a concurrent multi-user architecture that utilizes a load balancer to increase bandwidth. There is an increased demand for cars to support more personal devices and more concurrent users, which may require an increase in bandwidth. As such, an example host computing system may utilize a routing or load balancing mechanism to manage traffic between the host and instances of hardware (e.g., chipsets / controllers, and / or antennas). Specifically, the host computing system may include a load balancer that manages traffic between a single and unified personal area network (PAN) interface and the instances of hardware. For example, the load balancer may receive, from the PAN interface, a plurality of communication requests, in which each communication request is associated with a unique session identifier (e.g., link / packet identifiers) for a client computing device from a plurality of client computing devices. The load balancer may determine a current load for each hardware instance from the plurality of hardware instances, and apply, using the unique session identifiers, a load balancing algorithm to the loads to assign each communication request to a specific hardware instance. After assigning a communication request to a respective hardware instance, the load balancer may forward, to the respective hardware instance, the communication request, in which the respective hardware instance may then establish communication with the respective client computingPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01device. In some examples, the plurality of hardware instances may include a single chipset / controller with a plurality of antennas, in which the plurality of antennas may be managed by a single Bluetooth module including a single host controller interface (HCI). In other examples, the plurality of hardware instances may include a plurality of chipsets / controllers, in which each chipset / controller may be managed by a respective Bluetooth module from a plurality of Bluetooth modules, and the respective Bluetooth module may include its own HCI. However, regardless of whether a single chipset / controller with multiple antennas or multiple chipsets / controllers are used, a hardware abstraction layer (HAL) may effectively abstract any number of hardware instances, presenting them as a single instance. In this way, the concurrent multi-user architecture may present as an architecture involving only a single chipset / controller, which may integrate better with host systems that are not configured to individually manage and interact with multiple chipsets / controllers.

[0003] In one example, this disclosure describes a method that includes receiving, by a host computing system and from a personal area network interface, a plurality of communication requests, wherein the host computing system includes a plurality of hardware instances, wherein the host computing system includes the personal area network interface for managing communication between a plurality of client computing devices and the plurality of hardware instances, wherein host computing system includes a load balancer module for managing traffic between the personal area network interface and the plurality of hardware instances, and wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device from the plurality of client computing devices. The method further includes assigning, by the host computing system and using the load balancer module, and based on the respective unique session identifier, a respective communication request to a respective hardware instance from the plurality of hardware instances. The method further includes forwarding, by the host computing system and to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0004] In another example, this disclosure describes a host computing system that includes a plurality of hardware instances, a personal area network interface that manages communication between a plurality of client computing devices and the plurality of hardware instances, a load balancer module that manages traffic between the personal area network interface and the plurality of hardware instances, and a memory that stores a unique sessionPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01identifier for each client computing device from the plurality of client computing devices. The host computing system further includes one or more processors that execute the load balancer module to receive, from the personal area network interface, a plurality of communication requests, wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device. The one or more processors further execute the load balancer module to assign, based on the respective unique session identifier, a respective communication request to a respective hardware instance from the plurality of hardware instances, and forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0005] In another example, this disclosure describes a non-transitory computer-readable storage medium encoded with instructions. The instructions, when executed by one or more processors of a computing device, cause the one or more processors to receive, from a personal area network interface, a plurality of communication requests, wherein the computing device includes a plurality of hardware instances, wherein the computing device includes the personal area network interface for managing communication between a plurality of client computing devices and the plurality of hardware instances, wherein the computing device includes a load balancer module for managing traffic between the personal area network interface and the plurality of hardware instances, and wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device from the plurality of client computing devices. The instructions further cause the one or more processors to assign, using the load balancer module, and based on the respective unique session identifier, a respective communication request to a respective hardware instance from the plurality of hardware instances, and forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0006] In another example, this disclosure describes a computer program product for extending bandwidth for a plurality of hardware instances includes instructions. The instructions, when executed by one or more processors, cause the one or more processors to receive, from a personal area network interface, a plurality of communication requests, wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device from a plurality of client computing devices. The instructions further cause the one or morePCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01processors to assign, using a load balancer module, and based on the respective unique session identifier, a respective communication request to a respective hardware instance from a plurality of hardware instances, and forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0007] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description, drawings, and claims.BRIEF DESCRIPTION OF DRAWINGS

[0008] FIG. l is a block diagram illustrating an example computing system that utilizes a load balancer to increase bandwidth for multiple concurrent users, in accordance with the techniques described in this disclosure.

[0009] FIG. 2 is a block diagram illustrating another example computing system that utilizes a load balancer to increase bandwidth for multiple concurrent users, in accordance with the techniques described in this disclosure.

[0010] FIG. 3 is a block diagram illustrating another example computing system that utilizes a load balancer to increase bandwidth for multiple concurrent users, in accordance with the techniques described in this disclosure.

[0011] FIG. 4 is a flowchart illustrating example operation of the system shown in the example of FIG. 1 in utilizing a load balancer to increase bandwidth for multiple concurrent users, in accordance with the techniques described in this disclosure.DETAILED DESCRIPTION

[0012] FIG. l is a block diagram illustrating an example computing system that utilizes a load balancer to increase bandwidth for multiple concurrent users, in accordance with the techniques described in this disclosure. As shown in the example of FIG. 1, a computing system 100 includes a host computing device 102 and client computing devices 110A-110N (“client computing devices 110”). Although described with respect to a vehicle, computing system 100 may be utilized in different contexts, including standalone computing systems (including laptop computers, desktop computers, workstations and the like), gaming systems, cellular telephones (including so-called “smartphones”), media systems (including streaming media systems), audio / visual (A / V) receivers, televisions (including so-called “smartPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01televisions”), smart speakers, smart watches, thermostats (including so-called “smart thermostats”), smart glasses, or any other computing system.

[0013] Host computing device 102 may be an example of a vehicle computing device, such as a head unit or other vehicular computing system (such as an electronic control unit -ECU). FIG. 1 illustrates only one particular example of host computing device 102, and many other examples of host computing device 102 may be used in other instances and may include a subset of the components included in example computing device 102 or may include additional components not shown in FIG. 1.

[0014] As shown in the example of FIG. 1, host computing device 102 includes presencesensitive display 112, one or more processors 104, one or more communication units 108, one or more input components, one or more output components 116, and one or more storage devices 120. Storage devices 120 of host computing device 102 may store (or otherwise, include) software modules, such as load balancer module 106 and an operating system (OS) 126 that supports hardware abstractions layer (HAL) interface 152 and one or more personal area network (PAN) stacks from PAN stacks 128A-128N that operate according to a suite of PAN protocols, such as Bluetooth™ and various profiles thereof, e.g., Bluetooth™ low energy (BLE).

[0015] One or more input components 114 of host computing device 102 may receive input. Examples of input are tactile, audio, kinetic, and optical input, to name only a few examples. Input components 114 of host computing device 102 include, in one example, a mouse, keyboard, touchpad, voice responsive system, video camera, buttons, scroll wheel, dial, control pad, microphone or any other type of device for detecting input from a human or machine. Input components 114 may include cameras. In some examples, input component 114 may be a presence-sensitive input component, which may include a presence-sensitive screen, touch-sensitive screen, etc. separate from presence-sensitive display 112.

[0016] One or more output components 116 of host computing device 102 may generate output. Examples of output are tactile, audio, and video output. Output components 116 of host computing device 102, in some examples, include a presence-sensitive screen (possibly separate from presence-sensitive display 112), sound card, video graphics adapter card, speaker, cathode ray tube (CRT) monitor, liquid crystal display (LCD), organic light emitting diode (OLED), or any other type of device for generating tactile, audio and / or visual output to a human or machine.

[0017] In some examples, presence-sensitive display 112 of host computing device 102 may include functionality of input component 114 and / or output components 116. In the examplePCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01of FIG. 1, presence-sensitive display 112 may include a presence-sensitive input (PSI) component 105 (“PSI component 105”), such as a presence-sensitive screen or touch-sensitive screen. In some examples, presence-sensitive input component 105 may detect an object at and / or near the presence-sensitive input component. As one example range, presence-sensitive input component 105 may detect an object, such as a finger or stylus that is within two inches or less of presence-sensitive input component 105. Presence-sensitive input component 105 may determine a location (e.g., an (x,y) coordinate) of the presencesensitive input component at which the object was detected. In another example range, presence-sensitive input component 105 may detect an object two inches or less from presence-sensitive input component 105 and other ranges are also possible. Presencesensitive input component 105 may determine the location of presence-sensitive input component 105 selected by a user’s finger using capacitive, inductive, and / or optical recognition techniques.

[0018] In some examples, presence-sensitive display 112 may also provide output to a user using tactile, audio, or video stimuli as described with respect to output component 116. For instance, presence-sensitive display 112 may include display component 103 that displays a graphical user interface. Display component 103 may be any type of output component that provides visual output, such as described with respect to output components 116. While illustrated as an integrated component of host computing device 102, presence-sensitive display 112 may, in some examples, be an external component that shares a data or information path with other components of host computing device 102 for transmitting and / or receiving input and output.

[0019] For instance, presence-sensitive display 112 may be a built-in component of host computing device 102 located within and physically connected to the external packaging of host computing device 102 (e.g., an in-vehicle screen mounted in a dashboard of a vehicle). In another example, presence-sensitive display 112 may be an external component of host computing device 102 located outside and physically separated from the packaging of host computing device 102 (e.g., a monitor, a projector, etc. that shares a wired and / or wireless data path with an electronic control unit of the vehicle). In some examples, presence-sensitive display 112, when located outside of and physically separated from the packaging of host computing device 102, may be implemented by two separate components: a presencesensitive input component 105 for receiving input and a display component 103 for providing output.PCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01

[0020] One or more storage devices 120 within host computing device 102 may store information for processing during operation of host computing device 102 (e.g., computing device 102 may store data accessed by OS 126, HAL interface 152, and / or PAN stacks 128 during execution at host computing device 102). In some examples, storage device 120 is a temporary memory, meaning that a primary purpose of storage device 120 is not long-term storage. Storage devices 120 on host computing device 102 may be configured for short-term storage of information as volatile memory and therefore not retain stored contents if powered off. Examples of volatile memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories known in the art.

[0021] Storage devices 120, in some examples, also include one or more computer-readable storage media. Storage devices 120 in some examples include one or more non-transitory computer-readable storage mediums. Storage devices 120 may be configured to store larger amounts of information than typically stored by volatile memory. Storage devices 120 may further be configured for long-term storage of information as non-volatile memory space and retain information after power on / off cycles. Examples of non-volatile memories include magnetic hard disks, optical discs, flash memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories.Storage devices 120 may store program instructions and / or information (e.g., data) associated with OS 126, HAL interface 152, and / or PAN stacks 128. Storage devices 120 may include a memory configured to store data or other information associated with modules 126-136.

[0022] One or more processors 104 may implement functionality and / or execute instructions associated with host computing device 102. Examples of processors 104 include application processors, display controllers, auxiliary processors, one or more sensor hubs, and any other hardware configured to function as a processor, a processing unit, or a processing device. OS 126, HAL interface 152, and / or PAN stacks 128 may be operable (or, in other words, executed) by processors 104 to perform various actions, operations, or functions of host computing device 102. That is, OS 126, HAL interface 152, and / or PAN stacks 128 may form executable bytecode, which when executed, cause processors 104 to perform specific operations (and thereby causing host computing device 102 to become a specific-purpose computer by which to perform) in accordance with various aspects of the techniques described herein. For example, processors 104 of host computing device 102 may retrieve and execute instructions stored by storage devices 120 that cause processors 104 to perform the operations described herein that are attributed to OS 126, HAL interface 152, and / or PANPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01stacks 128. The instructions, when executed by processors 104, may cause host computing device 102 to store information within storage devices 120.

[0023] Communication channels 150 may interconnect each of the components of FIG. 1 for inter-component communications (physically, communicatively, and / or operatively) and thereby allow the components of FIG. 1 to communicate with one another. In some examples, communication channels 150 may include a system bus, a network connection, one or more inter-process communication data structures, or any other components for communicating data (also referred to as information). In some examples, host computing device 102 may include other components or less components than those shown, e.g., some components may be included in control units such as a telematic control unit (TCU).

[0024] One or more communication units 108 of host computing device 102 may communicate with external devices by transmitting and / or receiving data. For example, host computing device 102 may use one or more of communication units 108 to transmit and / or receive radio signals on a radio network such as a cellular radio network. In some examples, communication units 108 may transmit and / or receive satellite signals on a satellite network such as a Global Positioning System (GPS) network. Examples of communication units 108 include a network interface card (e.g., an Ethernet card), an optical transceiver, a radio frequency transceiver, a GPS receiver, or any other type of device that can send and / or receive information. Other examples of communication units 108 may include short wave radios (e.g., near field communication (NFC), personal area networks - such as Bluetooth™ and different profiles thereof, e.g., Bluetooth™ low energy (BLE), etc.), GPS, 3G, 4G, 5G, and WiFi® radios found in mobile devices as well as Universal Serial Bus (USB) controllers and the like.

[0025] Host computing device 102 may be integrated or otherwise included within a vehicle. The vehicle may include one or more of a bicycle, a tricycle, a unicycle, an automobile, farm equipment (such as a tractor, combine, etc.), construction equipment (a dump truck, crane, etc.), military vehicle or equipment (a tank, armament, etc.), a truck, a semi-tractor (or, in other words, a semi-trailer), aviation equipment (such as a plane), nautical equipment (such as a boat, carrier, etc.), or any other type of vehicle.

[0026] In this respect, host computing device 102 may represent a vehicle head unit that is integrated into a dashboard or other component of the vehicle, where host computing device 102 may be referred to alternatively as vehicle head unit 102, host vehicle head unit 102, and / or main computing device 102. In this context, processors 104 may retrieve and execute OS 126, which may be referred to as an embedded OS in that OS 126 is a fully specified OSPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01that provides a full-featured application execution environment in which local applications (so-called “apps,” which are not shown for ease of illustration) may be stored locally (e.g., to storage devices 120) and executed by processors 104 within the execution environment provided by OS 126.

[0027] OS 126 may, in this context, include a kernel that supports interaction between the applications and underlying hardware, such as processors 104, communication units 108, input components 114, output components 116, presence-sensitive display 112, and / or storage devices 120. The kernel may execute in so-called kernel space (which refers to a privileged OS-level execution environment) that is separate from a so-called user space that supports the application environment in which the applications execute. The kernel may expose an interface (such as an application programming interface - API) by which the user space (and applications executing therein) may access kernel space in a limited manner (e.g., having less privileges than the kernel) in order to interface with the underlying hardware.

[0028] OS 126, in other words, may not represent a thin client that supports projection, casting, or other processes by which to mirror output from an OS executed by a separate device, such as OS executed by separate client computing devices 110. OS 126 may instead provide, as noted above, a full execution environment that is separate from an OS executed by client computing devices 110 (or any other separate device) that facilitates local (e.g., on host computing device 102) execution of applications, rather than stream applications within client computing device OS during execution by client computing devices 110.

[0029] In general, client computing devices 110 support PAN links for wireless communication with host computing device 102. Client computing devices 110 may include components similar to host computing device 102. For example, client computing devices 110 may include one or more processors, one or more communication units, one or more input components, and one or more output components. Each of components may be similar to, if not substantially similar to the components described with respect to host computing device 102. Client computing devices 110 may also include communication channels interconnecting modules, which may be similar to, if not substantially similar to, communication channels 150. Furthermore, client computing devices 110 may include storage devices configured to store an OS, which may be similar to, if not substantially similar to, storage devices 120 and OS 126.

[0030] In general, communication units 108 of host computing device 102 may implement a single and unified personal area network (PAN) interface 111 by which wireless local area network connections may be established with one or more computing devices (e.g., clientPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01computing devices 110). That is, communication units 108 may implement a single PAN interface 111 that provides a cohesive communication layer. In some examples, single PAN interface 111 implemented by communication units 108 may act as a unified access point for receiving requests from client computing devices 110.

[0031] In general, each request may be associated with a unique session identifier (ID), such as a link ID and / or packet ID. That is, storage devices 120 may store a unique session ID for each client computing device from client computing devices 110. In the context of embedded OS 126 (which is another way to refer to OS 126), OS 126 may enable PAN links between host computing device 102 and multiple client computing devices 110, and any other client computing devices that support PAN links for wireless communication between host computing device 102 and such client computing devices. In some examples, OS 126 may implement one or more PAN stacks from PAN stacks 128 as native functions of OS 126 (meaning, within kernel space), thereby allowing OS 126 (and / or one or more applications executing within the user space) to establish PAN links 143A-143N (not shown in the example of FIG. 1) with external devices, such as PAN link 143A with client computing device 110A and PAN link 143N with client computing device 110N (and potentially via the kernel API for applications executed locally by OS 126).

[0032] In general, host computing device 102, as shown in the example of FIG. 1 and / or in other examples, may include one instance of a hardware abstraction layer (HAL), or multiple instances of an HAL. That is, while HAL interface 152 may represent one instance of a HAL, in some examples, host computing device 102 may include multiple instances of a HAL. In general, HAL interface 152 may enforce an agreement for communication between OS 126 and system hardware. In some examples, HAL interface 152 may be considered a server that implements a given interface. In general, host computing device 102, as shown in the example of FIG. 1 and / or in other examples, may include one or more host controller interface(s) (HCI) that may specify how a PAN controller and the host system may communicate. In some examples, the HAL may be defined as the HCI. In some examples, HAL interface 152 may abstract away complex implementations, e.g., multiple antennas. In some examples, such as in FIG. 3, HAL interface 152 may effectively “hide” multiple private HCI instances / controllers, and present them as one HAL (i.e., the multiple private HCI instances / controllers may be masked as one HCI), using load balancer module 106 to manage and route traffic. In some other examples in which host computing device 102 may include multiple instances of a HAL, each instance may include its own HCI / controller, and may manage and route traffic within a PAN stack itself.PCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01

[0033] In general, host computing device 102 includes a plurality of hardware instances, such as chipsets / controllers and / or antennas. In some examples, the plurality of hardware instances includes a single chipset / controller with a plurality of antennas, in which the plurality of antennas may be managed by a single Bluetooth module (e.g., PAN stack) including a single host controller interface (HCI). That is, in some examples, the plurality of hardware instances includes a single chipset / controller with a plurality of antennas, in which the plurality of antennas may be managed by a single PAN stack, such as PAN stack 128 A. In some other examples, the plurality of hardware instances may include a plurality of chipsets / controllers, in which each chipset / controller may be managed by a respective Bluetooth module from a plurality of Bluetooth modules, and the respective Bluetooth module may include its own HCI. That is, in some examples, the plurality of hardware instances includes a plurality of chipsets / controllers, in which each chipset / controller may be managed by a respective PAN stack from PAN stacks 128A-128N, and the respective PAN stack may include its own HCI.

[0034] More specifically, in the example of FIG. 1, a PAN link may be established between a client computing device and a plurality of hardware instances managed by one or more PAN stacks from PAN stacks 128. However, provided that many host computing devices are not set up to individually manage and interact with multiple controllers / chipsets, and thus manage multiple PAN stacks (i.e., many host computing devices expect only one PAN stack for one Bluetooth controller / chipset), HAL interface 152, may be used to abstract any number of hardware instances, and thus effectively present them as a single instance. Thus, in the example of FIG. 1, single PAN interface 111 may act as a unified access point for receiving requests from multiple concurrent users of client computing devices 110, and single HAL interface 152 may abstract any number of PAN stacks. In some examples, multiple PAN links (i.e., the PAN links established between the plurality of hardware instances and computing devices 110) may be managed by one or more PAN stacks from PAN stacks 128. For example, in some examples, PAN link 143A may be established between client computing device 110A and a hardware instance (e.g., a chipset or antenna) managed by PAN stack 128A. In these examples, PAN link 143N, on the other hand, may be established between client computing device 110N and another hardware instance (e.g., another chipset or antenna) managed by PAN stack 128N. In some other examples, PAN links 143A and 143N may be established between the respective client computing device and respective hardware instance, in which both hardware instances are managed by the same PAN stack, e.g., PAN stack 128 A. However, regardless of whether host computing device 102 includes one PAN stack (e.g., a single PAN stack for a single chipset / controller with multiple antennas) orPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01multiple PAN stacks (e.g., multiple PAN stacks for multiple chipsets / controllers), HAL interface 152 may effectively abstract any number of hardware instances, presenting them as a single instance. That is, when HAL interface 152 abstracts the hardware components, including PAN stacks 128 and PAN links 143A and 143N, it effectively makes it appear to host computing device 102 as though only one unified PAN exists, and thus host computing device 102 may not be burdened by the complexity of managing multiple hardware components individually. Provided that each PAN link may be associated with a unique session ID, though, PAN interface 111 may still effectively manage and differentiate the communication over each PAN link. Furthermore, each unique session ID may be used to properly route traffic to and from the plurality of hardware instances and the correct client computing devices, e.g., the unique session IDs may be used to associate correct data packets with their respective PAN links.

[0035] In some examples, host computing device 102 may initially receive a request from client computing device 110A (e.g., a user account associated with client computing device 110A) to connect to PAN interface 111. Responsive to receiving the request, host computing device 102 may determine whether PAN interface 111 was previously connected with the client computing device and / or user account. If PAN interface 111 was not previously connected with the client computing device and / or user account, data associated with the connection request, such as the unique session ID (and / or link / packet IDs), and devicespecific configuration data (e.g., encryption keys and channel information), may be generated and stored in PAN configuration data (PCD) database 127 by host computing device 102 as part of the PCD for the client computing device and / or user account associated with the client computing device. The PCD, e.g., PCD 129A-129N, may be stored in PCD database 127. For example, in the example of FIG. 1, client computing device 110A may send a request to host computing device 102 to connect to PAN interface 111 for the first time. Host computing device 102 may generate PCD 129 A for client computing device 110A, in which PCD 129 A may include a unique session ID (and / or link / packet IDs), and device-specific configuration for client computing device 110A. In the example of FIG. 1, PCD 129 A may be stored in PCD database 127. In some examples, PCD database 127 may store PCD 129A-129N for multiple client computing devices associated with multiple concurrent user accounts. That is, OS 126 may support multiple concurrent user accounts, in which each user account may be associated with a user operating one or more of client computing devices 110A-110N.

[0036] In general, to facilitate better PAN (e.g., Bluetooth) functionality for concurrent users, e.g., to effectively increase bandwidth, host computing device 102 may include load balancerPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01module 106 that intelligently routes traffic between PAN interface 111 and the plurality of hardware instances. For example, in the example of FIG. 1, PAN interface 111 implemented by communication units 108 may receive a communication request from client computing device 110A and a communication request from client computing device 1 ION, in which each communication request is associated with a respective unique session ID previously provisioned to a respective client computing device (i.e., PAN interface 111 may have previously connected with the client computing devices and / or user accounts associated with the client computing devices, in which PCD was stored for each client computing device and / or user account). Upon receiving a request, PAN interface 111 may forward, to load balancer module 106, the communication request along with its respective unique session ID. In general, while load balancer module 106 may be depicted as a software module that is executable by processors 104, in some examples, load balancer module 106 may be a hardware module that is executable by processors 104. In some examples, e.g., examples in which HAL interface 152 presents underlying hardware that contains several antennas, the load balancer may be embedded within a PAN stack 128, below HAL interface 152 and an HCI layer, in which HAL interface 154 may use the load balancer to route and manage traffic underneath. In some examples, e.g., examples in which host computing system 102 includes a single HAL instance (e.g., HAL interface 152) for multiple controllers / chips that each have their own HCI, the load balancer may be included below HAL interface 152 but above the multiple HCIs, and may be used by HAL interface 152 to route and manage traffic underneath. In some examples, e.g., examples in which host computing system 102 includes multiple HAL instances for multiple controllers / chips (i.e., distinct HAL implementations that each correspond to a respective controller / chip), the load balancer may be included within the host stack and be used to route and manage traffic between the host and the multiple HAL instances.

[0037] In general, load balancer module 106 may intelligently distribute incoming traffic (e.g., the communication requests) across the plurality of hardware instances, such as to optimize resource utilization, minimize response times, and avoid overloading any single hardware instance. Specifically, load balancer module 106 may determine a current load for each hardware instance from the plurality of hardware instances. Then, load balancer module 106 may apply an algorithm (e.g., a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm) to the current loads to assign a respective communication request to an available hardware instance. In some examples, load balancer module 106 may additionally or alternatively assignPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01communications requests to a respective hardware instance based on the unique session ID, capacity and / or availability of the plurality of hardware instances.

[0038] After assigning a respective communication request to a respective hardware instance, load balancer module 106 may forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device. In some examples, such as example in which each request is assigned to a respective PAN stack, OS 126 may invoke the respective PAN stack. That is, in some examples, the communication request from client computing device 110A may be assigned to a hardware instance managed by PAN stack 128 A, in which PAN stack 128 A may retrieve PCD 129 A from PCD database 127, and the communication request from client computing device 1 ION may be assigned to a hardware instance managed by PAN stack 128N, in which PAN stack 128N may retrieve PCD 129N from PCD database 127. In some examples, the assigned PAN stack may obtain the PCD from PCD database 127 using the respective unique session ID associated with the communication request as a key. In some examples, the assigned PAN stack may parse the respective PCD to obtain data used to initiate programming of PAN interface 111. In some examples, the PCD may include the respective unique session ID for use by PAN interface 111 when supporting a PAN link with the respective client computing device.

[0039] As such, PAN link 143A may be established between client computing device 110A and its respective assigned hardware instance, and PAN link 143N may be established between client computing device 110N and its respective assigned hardware instance. PAN interface 111 may continue to manage each PAN link after it's established, e.g., PAN interface 111 may ensure the correct traffic is routed / transmitted to and from the correct assigned hardware instance, may manage link / packet IDs, and / or may coordinate communication protocols. The assigned hardware instance may then handle the actual data transmission over the PAN, manage maintenance of the physical link, and / or execute the low-level physical communication tasks required for PAN operations, e.g., the assigned hardware instance may manage the wireless communication between the client computing device and the PAN, modulate signals, send or receive signals across the PAN, encode / decode data, handle and / or execute low-level protocols (e.g., Bluetooth), interface with the associated PAN stack, etc. In some examples, host computing device 102 may further store, in the respective PCD for each PAN device (e.g., PCD 129 A for client computing device 110A and PCD 129N for client computing device 110N), which may include the respective unique session ID, an indication that the PAN device is communicating with a respective assignedPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01hardware instance.

[0040] Thus, PAN interface 111 implemented by communication units 108 may manage multiple PAN links between the plurality of hardware instances and client computing devices 110, in which HAL interface 152 may abstract the plurality of hardware instances as a single instance, and traffic, which may be intelligently routed using a load balancer, may be distinguished by unique session IDs. In this way, host computing device 102 may be integrated with a concurrent multi-user architecture that may present as an architecture involving only a single chipset / controller. That is, rather than limiting access to a single client computing device for a single instance of OS 126, a single instance of OS 126 may allow multiple client computing devices to access the single instance of OS 126 by making use of unique session IDs and assigning each client computing device to a respective hardware instance managed by OS 126, in which the assigned hardware instance may handle each respective session’s traffic. Furthermore, by using a load balancer to route requests and data to and from assigned controllers and / or antennas, higher level logic may effectively use more link resources and bandwidth, without having to worry about individually interacting with the multiple instances of underlying hardware. In some examples, the single instance of OS 126 is executed on a vehicle head unit. In this respect, various aspects of the techniques described in this disclosure may facilitate better personal area network (e.g., Bluetooth™) functionality and user experience for concurrent users, such as in a vehicle where each user of the concurrent users (such as the driver, front seat passengers, or rear seat passengers) is provided their own private, performant, and personal version of the Bluetooth™ (or personal area network) stack for audio streaming (sink and source) and sharing, game controllers, calling, messaging, etc. By effectively providing each user of the concurrent users their own PAN controller / chip, or their own antenna, the concurrent users may not have to share link keys, data, resources, and control. Further, the techniques described in this disclosure conform to the single-instance, concurrent multi-user architecture that the automotive industry has aligned with, which may result in lower implementation costs.

[0041] FIG. 2 is a block diagram illustrating another example computing system that utilizes a load balancer to increase bandwidth for multiple concurrent users, in accordance with the techniques described in this disclosure. As shown in the example of FIG. 2, computing system 200 includes host computing device 202 and client computing devices 210A and 210B. In the example of FIG. 2, PAN stack 228 A may represent one example of PAN stack 128A and client computing device 210A may be substantially similar to client computing device 110A of FIG. 1. FIG. 2 further illustrates a second client computing device 210B.PCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01Processor(s) 204, communication channels 250, communication unit(s) 208, single PAN interface 211, input component(s) 214, output component(s) 216, presence-sensitive display 212, display component 203, and PSI component 205 of FIG. 2 may similar if not substantially similar to processor(s) 104, communication channels 150, communication unit(s) 108, single PAN interface 111, input component(s) 114, output component(s) 116, presence-sensitive display 112, display component 103, and PSI component 105 of FIG. 1, respectively. In the example of FIG. 2, output components 216 further include antennas 240A-240N (referred to herein collectively as “antennas 240”). One or more storage devices 220 and OS 226 may be similar if not substantially similar to one or more storage devices 120 and OS 126 of FIG. 1, respectively. Storage devices 220 of host computing device 202 may store (or otherwise, include) software modules, such as load balancer module 206 and OS 226 that supports HAL interface 252 and at least one PAN stack, such as PAN stack 328 A, that operates according to a suite of PAN protocols, such as Bluetooth™ and various profiles thereof, e.g., Bluetooth™ low energy (BLE).

[0042] In the example of FIG. 2, host computing device 202 may include a single chipset / controller, such as controller 250A, which may be managed by a single PAN stack 228A. With respect to PAN stack 228A, PAN stack 228A may further include a host controller interface (HCI) 254A, and a PAN controller 256A. Controller 250A may generally control high-level PAN protocol stack operations, which in the example of Bluetooth™, may occur in accordance with link logic control and adaptation layer protocol (L2CAP) as well as supporting different PAN profiles, such as a generic attribute (GATT) profile, a generic access protocol (GAP), an attribute (ATT) protocol, and supporting services, such as a security manager (SM).

[0043] In the example of Bluetooth™ protocols, The Bluetooth™ HAL (which may be represented by HAL interface 252 in FIG. 2) may define several interfaces used for communication with Bluetooth™ controllers and Bluetooth™ related hardware. In particular, the Bluetooth™ HAL may abstract away single Bluetooth™ PAN stack 228A (e.g., a single controller / chip) with antennas 240A-240N. That is, HAL interface 252 may present underlying hardware that contains several antennas (e.g., antennas 240A-240N), and may use load balancer module 206 to route and manage traffic underneath.

[0044] HCI 254A (which may include an HCI Layer, and in some examples, additionally or alternatively, an HCI HAL) in FIG. 2 may provide a command interface for host computing device 202 to control hardware functions and to handle asynchronous and synchronous data exchange between host computing device 202 and PAN controller 256A. In Bluetooth™PCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01systems, for example, HCI 254A may enable OS 226 to communicate with PAN stack 228A, e.g., send commands and receive events to manage device pairing, data transfers, etc. For example, Bluetooth™ controller level responsibilities may be delegated down PAN stack 228A from the controller 250A layer to the HCI 254A layer and PAN controller 256A layer (which may be configured for HCI and / or HCI HAL implementation). In an example of an HCI HAL implementation, HCI HAL child classes may own one implementation of a client to an underlying Bluetooth™ HCI HAL implementation. In some examples, the entirety of PAN stack 228 A may be packaged as a dynamically loadable shared object.

[0045] In general, HCI 254A may represent a module configured to provide a command interface to the baseband controller (which is another way to refer to PAN controller 256A) that is implemented (as software and hardware, or as a hardware controller) on the underlying PAN interface (such as PAN interface 211, which may be substantially similar to PAN interface 111 FIG. 1). HCI 254A may generally represent a module that presents the interface (e.g., an API) to facilitate interactions between high-level protocol PAN protocol operations and low-level protocol PAN operations (e.g., in terms of the network stack as defined by the Open Systems Interconnection (OSI) model, where levels may refer to different higher or lower layers of the OSI model). In some examples, HCI 254A may handle host commands for initiating and / or ending connections. In some examples, HCI 254A may indirectly facilitate management of antennas 240A-240N by handling host commands that are interpreted by the firmware of PAN controller 256A. For example, PAN controller 256A may provide relevant data back to host computing device 202 through HCI events, which load balancer module 206 may use to determine antenna assignments. In the example of FIG. 2, load balancer module 206 may be a software module that is executable by one or more processors 204 or a hardware module that is executable by one or more processors 204. For example, in some examples, such as in FIG. 2 where single controller 250A with multiple antennas 240 is used as the data transmission hardware scheme (in which multiple antennas 240 each have their own scheduled traffic), load balancer module 206 may be included within the hardware instance itself (e.g., within the Bluetooth controller chip or its firmware). That is, while load balancer module 206 may be depicted as a separate module, in some examples, such as the example of FIG. 2, the load balancer may be below HAL interface 252 and HCI 254A (e.g., embedded within PAN stack 228A), in which HAL interface 252 uses the load balancer to route and manage traffic underneath.

[0046] PAN controller 256A may represent a module configured to perform low-level PAN protocol operations in terms of controlling the baseband operations (e.g., L2 and LI operationPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01of PAN interface 211). PAN interface 211 may execute or otherwise implement (e.g., in hardware) PAN controller 256A to support low-level PAN protocol operations (such as baseband operations, which may also be referred to as LI or physical layer operations in terms of the OSI model). PAN controller 256A may manage physical links, such as PAN links 243 A and 243B, and store the respective unique session IDs (e.g., session ID 232A associated with PAN link 243 A and session ID 232B associated with PAN link 243B). PAN controller 256A may provide packetization, channel control, and error correction along with other data integrity and flow control operations.

[0047] In the example of FIG. 2, host computing device 202 may include a single chipset / controller, such as controller 250A, which may have a plurality of antennas 240. Controller 250A may be a device configured to implement a Bluetooth protocol and may manage Bluetooth communication, including processing PAN stack 228A and interfacing with antennas 240. That is, in the example of FIG. 2, controller 250A may be equipped with multiple antennas 240, in which each antenna from antennas 240 may establish a separate PAN link with a respective client computing device when assigned to a communication request from the respective client computing device. For example, in the example of FIG. 2, antenna 240A may establish PAN link 243 A with client computing device 210A, and antenna 240B may establish PAN link 243B with client computing device 210B, in which PAN links 243 A and 243B may be established simultaneously and managed by single PAN interface 211, and each antenna may provide dedicated bandwidth to its respective device, thus minimizing interference and latency. In some examples, at least one antenna from antennas 240 (and / or in some examples, such as FIG. 3, at least one chip / controller) may be reserved for processes such as advertising, device discovery, and / or other operations that cannot be concurrent, e.g., operations that cannot be concurrent for a single MAC address.

[0048] More specifically, in the example of FIG. 2, load balancer module 206 may be used to intelligently assign hardware instances to communication requests. Load balancer module 206 may receive, from PAN interface 211, a plurality of communication requests, in which each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device. For example, load balancer module 206 may receive, from PAN interface 211, a communication request associated with unique session ID 232A for client computing device 210A and a communication request associated with unique session ID 232B for client computing device 210B. Load balancer module 206 may determine a current load for each hardware instance from the plurality of hardware instances, e.g., load balancer module 206 may determine aPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01current load for each antenna from antennas 240. Load balancer module 206 may then assign a respective communication request to a respective hardware instance, e.g., one of antennas 240, by applying an algorithm to the current load for each hardware instance. For example, load balancer module 206 may apply a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm to the current loads for antennas 240 to determine which antenna from antennas 240 should be assigned to a respective communication request. Then, using the respective unique session ID, load balancer module 206 may assign the respective communication request to the respective hardware instance, and forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device. For example, in the example of FIG. 2, in which the plurality of hardware instances include plurality of antennas 240, load balancer module 206 may assign, based on unique session ID 232A, the communication request from client computing device 210A to antenna 240A. Load balancer module 206 may assign, based on unique session ID 232B, the communication request from client computing device 210B to antenna 240B. Load balancer module 206 may then forward, to antennas 240A and 240B, the respective communication requests, such that PAN link 243 A may be established with client computing device 210A, and PAN link 243B may be established with client computing device 210B.

[0049] In the example of FIG. 2, antennas 240 may be managed by a single Bluetooth module, e.g., antennas 240 may be managed by a single PAN stack 228A for a single controller 250A. In some examples, each hardware instance from the plurality of hardware instances may have the same medium access control (MAC) address. As such, PAN interface 211, load balancer module 206, HAL interface 252, and PAN stack 228 A may use the unique session IDs associated with each client computing device to distinguish and effectively manage the multiple concurrent communication sessions between host computing device 202 and the multiple client computing devices.

[0050] In the example of FIG. 2, when PAN interface 211 connects with a client computing device and / or user account for the first time, data associated with the connection request, such as the unique session ID (and / or link / packet IDs), and device-specific configuration data (e.g., encryption keys and channel information), may be generated and stored by controller 250A. As such, after each communication request is assigned to a respective antenna managed by PAN stack 228A, PAN stack 228A may obtain the respective PCD using the respective unique session ID associated with the communication request as a key. In some examples, PAN stack 228A may parse the respective PCD to obtain data used to initiatePCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01programming of PAN interface 211 to support a PAN link with the respective client computing device. More specifically, as shown in the example of FIG. 2, after the communication request from client computing device 210A is assigned to antenna 240A, PAN stack 228A may use unique session ID 232A associated with the communication request to obtain PCD 229A from controller 250A. Then, PAN stack 228A may parse PCD 229 A to obtain data used to initiate programming of PAN interface 211 to support PAN link 243 A with client computing device 210A.

[0051] FIG. 3 is a block diagram illustrating another example computing system that utilizes a load balancer to increase bandwidth for multiple concurrent users, in accordance with the techniques described in this disclosure. As shown in the example of FIG. 3, a computing system 300 includes a host computing device 302 and client computing devices 310A and 310 B. In the example of FIG. 3, PAN stack 328A may represent one example of PAN stack 128A of FIG. 1, and client computing devices 310A and 310B may be substantially similar to client computing devices 210A and 210B of FIG. 2. FIG. 3 further illustrates a second PAN stack 328B. Processor(s) 304, communication channels 350, communication unit(s) 308, single PAN interface 311, input component(s) 314, output component(s) 316, presencesensitive display 312, display component 303, and PSI component 305 of FIG. 3 may similar if not substantially similar to processor(s) 104, communication channels 150, communication unit(s) 108, single PAN interface 111, input component(s) 114, output component(s) 116, presence-sensitive display 112, display component 103, and PSI component 105 of FIG. 1, respectively. One or more storage devices 320 and OS 326 may be similar if not substantially similar to one or more storage devices 120 and OS 126 of FIG. 1, respectively. Storage devices 320 of host computing device 302 may store (or otherwise, include) software modules, such as load balancer 306 and OS 326 that supports single HAL interface 352 and one or more PAN stacks, such as PAN stacks 328A and 328B, that operate according to a suite of PAN protocols, such as Bluetooth™ and various profiles thereof, e.g., Bluetooth™ low energy (BLE).

[0052] In the example of FIG. 3, host computing device 202 may include multiple (e.g., at least two) chipsets / controllers, such as controller 350A, which may be managed by PAN stack 328A, and controller 350B, which may be managed by PAN stack 328B. In some examples, a hardware instance may be associated with specific data types and / or operations, e.g., plain data such as audio, Generic Attribute Profile (GATT), and / or anything for a particular Asynchronous Connection-Less (ACL), Synchronous Connection-Oriented (SCO), and / or Isochronous (ISO) link, may be assigned to a single chipset / controller / antenna, such asPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01controller 350A. As another example, a dedicated chipset / controller / antenna instance, such as controller 350B, may be assigned for single-per-controller operations, such as pairing, scanning, and advertising. As such, in some examples, host computing device 302 may include two or more chipsets / controllers, in which at least one chipset / controller is equipped with one or more antennas from antennas 340A-340N (referred to herein collectively as “antennas 340”). In some other examples, however, each client computing device may establish communication with its own respective chipset / controller rather than an antenna, e.g., in some examples, output components 316 may not include antennas 340.

[0053] Controllers 350A and 350B may generally control high-level PAN protocol stack operations, which in the example of Bluetooth™, may occur in accordance with link logic control and adaptation layer protocol (L2CAP) as well as supporting different PAN profiles, such as a generic attribute (GATT) profile, a generic access protocol (GAP), an attribute (ATT) protocol, and supporting services, such as a security manager (SM).

[0054] As such, in some examples, each hardware instance (e.g., chipset / controller) from the plurality of hardware instances may be managed by a respective Bluetooth module, e.g., PAN stack, from a plurality of Bluetooth modules. That is, a single chip / controller, such as controller 350A or 350B, may be managed per concurrent user, in which the single chip / controller is managed by a single PAN stack, such as PAN stack 328A or PAN stack 328B, that exists for each user. In these examples, each PAN stack may correspond to its own HCI that handles the low-level details of communication, configuration, and control specific to the associated hardware instance. For example, in the example of FIG. 2, controller 350A may be managed by PAN stack 328 A including HCI 354A, and controller 350B may be managed by PAN stack 328B including HCI 354B. In general, HCI 354A and HCI 354B may interact with HAL interface 352, in which HAL 352 may effectively encapsulate the details of the respective hardware instances while providing a consistent interface for higher software layers. That is, in the example of FIG. 3, a single HAL instance may effectively “hide” multiple HCI instances, and present them as a single HAL (i.e., HCI 354 A and HCI 354B may be masked as one HCI). In some other examples, however, host computing device 302 may include multiple HAL instances, e.g., a HAL instance may exist for each of controller 350A and controller 350B.

[0055] In some examples, each HCI may return an identifier for a respective chipset / controller, in which the identifiers may further be used to determine which chipsets / controllers are available. That is, in some examples, load balancer module 306 mayPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01use the identifiers to determine which hardware instances are available and can be assigned to a communications request.

[0056] In the example of FIG. 3, load balancer module 306 may receive, from PAN interface 311, a plurality of communication requests, in which each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device. For example, load balancer module 306 may receive, from PAN interface 311, a communication request associated with unique session ID 332A for client computing device 310A and a communication request associated with unique session ID 332B for client computing device 310B. Load balancer module 306 may use the returned identifiers for the plurality of hardware instances (e.g., the chipsets / controllers) to determine which hardware instances are available. Load balancer module 306 may determine a current load for each hardware instance from the plurality of hardware instances, e.g., load balancer module 306 may determine a current load for each chipset / controller, such as controller 350A and controller 350B. Load balancer module 306 may then assign a respective communication request to a respective hardware instance, e.g., one of the plurality of chipsets / controllers, by applying an algorithm to the current load for each hardware instance. For example, load balancer module 306 may apply a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm to the current loads for the plurality of chipsets / controllers to determine which chipset / controller should be assigned to a respective communication request. Then, using the respective unique session ID, load balancer module 306 may assign the respective communication request to the respective hardware instance, and forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0057] For example, in the example of FIG. 3, in which the plurality of hardware instances include controllers 350A and 350B, load balancer module 306 may assign, based on unique session ID 332A, the communication request from client computing device 310A to controller 350A. Load balancer module 306 may assign, based on unique session ID 332B, the communication request from client computing device 310B to controller 350B. Load balancer module 306 may then forward, to controllers 350A and 350B, the respective communication requests, such that PAN link 343 A may be established with client computing device 310A, and PAN link 343B may be established with client computing device 310B.

[0058] In the example of FIG. 3, when PAN interface 311 connects with a client computing device and / or user account for the first time, data associated with the connection request, suchPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01as the unique session ID (and / or link / packet IDs), and device-specific configuration data (e.g., encryption keys and channel information), may be generated and stored in PCD database 327. After each communication request is assigned to a respective controller managed by a respective PAN stack, the respective PAN stack may obtain, from PCD database 327, the respective PCD using the respective unique session ID associated with the communication request as a key. In some examples, the respective PAN stack may parse the respective PCD to obtain data used to initiate programming of PAN interface 311 to support a PAN link with the respective client computing device. As shown in the example of FIG. 3, after the communication request from client computing device 310A is assigned to controller 350A, PAN stack 328A may use unique session ID 332A associated with the communication request to obtain PCD 329A from PCD database 327, in which PCD 329A may be used by controller 350A. Then, PAN stack 328 A may parse PCD 329A to obtain data used to initiate programming of PAN interface 311 to support PAN link 343 A with client computing device 310A. After the communication request from client computing device 31 OB is assigned to controller 350B, PAN stack 328B may use unique session ID 332B associated with the communication request to obtain PCD 329B from PCD database 327, in which PCD 329B may be used by controller 350B. Then, PAN stack 328B may parse PCD 329B to obtain data used to initiate programming of PAN interface 311 to support PAN link 343B with client computing device 310B.

[0059] Thus, each assigned hardware instance may establish communication with a respective client computing device, in which all communications (e.g., requests, transmissions of data, etc.) may be associated with the respective unique session ID, such as to associate traffic with a respective client computing device. In some examples, outgoing data, e.g., data packets, may be serialized and / or ordered by load balancer module 306 and passed back up to PAN interface 311. Although load balancer module 306 is depicted in FIGS. 1-3 as a separate software module, load balancer module 306 may be a software module that is executable by one or more processors 304 or a hardware module that is executable by one or more processors 304. For example, in some examples, such as in FIG. 3 where multiple controllers with individual HCIs are used as the data transmission hardware scheme, the load balancer may be included within the host subsystem at the lowest level of the software stack (above the HCIs and HAL 352), and may be managed by OS 326 and / or host-side software. In some examples, host computing system 302 may include multiple HAL instances, e.g., one HAL instance for each chip / controller. In these examples, the load balancer may be included within the host and used by the host stack to route and managePCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01traffic between the host and each HAL instance. In some other examples, the load balancer may be below HAL interface 352 but above HCIs 354A and 354B, in which HAL interface 352 uses the load balancer to route and manage traffic underneath.

[0060] In general, by using unique session IDs and a load balancer, communication requests and data packets may be efficiently routed to an appropriate underlying controller or antenna, in which the plurality of controllers and / or antennas may be effectively abstracted as a single hardware instance by a HAL. In this way, higher level logic to may effectively use more link resources and bandwidth, as each assigned hardware instance may provide dedicated bandwidth to its respective device, thus minimizing interference and latency, and the abstraction of the hardware instances may prevent the higher-level logic from having to individually interact with each hardware instance. In this way, the concurrent multi-user architecture may present as an architecture involving only a single chipset / controller, which may integrate better with host systems that are not configured to individually manage and interact with multiple chipsets / controllers. Additionally, by leveraging a load balancing mechanism, various aspects of the techniques described in this disclosure may facilitate better PAN (e.g., Bluetooth) functionality for concurrent users, as bandwidth may be increased. Furthermore, by having the load balancer intelligently assign and route traffic using unique session identifiers, concurrent data transmission may be safer and more nicely balanced across instances. Lastly, the techniques described in this disclosure conform to the singleinstance, concurrent multi-user architecture that the automotive industry is aligning with, which may result in lower implementation costs.

[0061] FIG. 4 is a flowchart illustrating example operation of the system shown in the example of FIG. 1 in utilizing a load balancer to increase bandwidth for multiple concurrent users, in accordance with the techniques described in this disclosure. For clarity, FIG. 4 is described with respect to FIGS. 1-3.

[0062] Host computing system 100 includes a plurality of hardware instances. In some examples, the plurality of hardware instances includes a plurality of antennas 240. In some examples, a single PAN stack 228A manages the plurality of antennas 240, in which PAN stack 228A may represent a single Bluetooth module that manages a single controller 250A equipped with antennas 240. In some examples, a respective PAN stack from PAN stacks 128 manages a respective hardware instance from the plurality of hardware instances, e.g., a respective Bluetooth module from a plurality of Bluetooth modules manages a respective hardware instance. That is, in some examples, host computing device 202 of host computing system 100 includes a chipset / controller for each client computing device, in which eachPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01chipset / controller includes its own HCI. For example, host computing device 202 may include controller 350A including HCI 354A, and controller 350B including HCI 354B. Regardless of the specific data transmission hardware scheme, HAL interface 352 may effectively abstract any number of hardware instances (e.g., any number of chipsets / controllers / antennas) as a single hardware instance.

[0063] Host computing system 100 includes a single PAN interface 111 that manages communication between a plurality of client computing devices 110 and the plurality of hardware instances. In some examples, each hardware instance from the plurality of hardware instances has the same MAC address. In some examples, PAN interface 111 receives a plurality of communication requests from computing devices 110, in which each communication request from the plurality of communication requests is associated with a respective unique session ID for a respective client computing device.

[0064] Host computing system 100 includes load balancer module 106. In some examples, host computing system 100 comprises a vehicle head unit that includes one or more processors 104 executing load balancer module 106. In some examples, load balancer module 106 is a software module that is executable by one or more processors 104. In some examples, load balancer module 106 is a hardware module that is executable by one or more processors 104. Load balancer module 106 manages traffic between PAN interface 111 and the plurality of hardware instances. Specifically, load balancer module 106 receives, from PAN interface 111, a plurality of communication requests, in which each communication request from the plurality of communication requests is associated with a respective unique session ID for a respective client computing device (490). For example, load balancer module 106 receives, from PAN interface 111, a communication request associated with unique session ID 232A for client computing device 210A, and a communication request associated with unique session ID 232B for client computing device 210B.

[0065] load balancer module 106 assigns, based on the respective unique session ID, a respective communication request to a respective hardware instance from the plurality of hardware instances (491). In some examples, to assign the respective communication request to the respective hardware instance from the plurality of hardware instances, load balancer module 106 determines a current load for each hardware instance from the plurality of hardware instances, and assigns the respective communication request to the respective hardware instance by applying an algorithm to the current load for each hardware instance. In some examples, the algorithm is a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm. LoadPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01balancer module 106 forwards, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device (492).

[0066] For example, in one example, load balancer module 106 assigns and forwards the communication request associated with unique session ID 232A for client computing device 210A to antenna 240A. In this example, load balancer module 106 assigns and forwards the communication request associated with unique session ID 232B for client computing device 210B to antenna 240B. In this example, antennas 240A and 240B may be managed by controller 250A, which may store PCD 229A for client computing device 110A and PCD 229B for client computing device HOB. After a respective communication request is assigned and forwarded to a respective antenna, PAN stack 228A may use the respective unique session ID to obtain the respective PCD from controller 250A. Then, PAN stack 228A may parse the PCD to obtain data used to initiate programming of PAN interface 211 to support a PAN link with the respective client computing device.

[0067] In another example, load balancer module 106 assigns and forwards the communication request associated with unique session ID 232A for client computing device 210A to controller 350A managed by PAN stack 328 A. In this example, load balancer module 106 assigns and forwards the communication request associated with unique session ID 232B for client computing device 210B to controller 350B managed by PAN stack 328B. In this example, controllers 350A and 350B may each be a chipset / controller including its own HCI. In some examples, PCD database 327 may store PCD 229A for client computing device 110A and PCD 229B for client computing device HOB. After a respective communication request is assigned and forwarded to a respective controller, each respective PAN stack may use the respective unique session ID to obtain the respective PCD from PDC database 327. Then, the respective PAN stack may parse the PCD to obtain data used to initiate programming of PAN interface 211 to support a PAN link with the respective client computing device.

[0068] In this way, various aspects of the techniques described in this disclosure may enable the following examples:

[0069] Example 1 : A method includes receiving, by a host computing system and from a personal area network interface, a plurality of communication requests, wherein the host computing system includes a plurality of hardware instances, wherein the host computing system includes the personal area network interface for managing communication between a plurality of client computing devices and the plurality of hardware instances, wherein hostPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01computing system includes a load balancer module for managing traffic between the personal area network interface and the plurality of hardware instances, and wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device from the plurality of client computing devices; assigning, by the host computing system and using the load balancer module, and based on the respective unique session identifier, a respective communication request to a respective hardware instance from the plurality of hardware instances; and forwarding, by the host computing system and to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0070] Example 2: The method of example 1, wherein assigning the respective communication request to the respective hardware instance from the plurality of hardware instances further comprises: determining, by the host computing system and using the load balancer module, a current load for each hardware instance from the plurality of hardware instances; and assigning, by the host computing system and using the load balancer module, the respective communication request to the respective hardware instance by applying an algorithm to the current load for each hardware instance.

[0071] Example 3: The method of example 2, wherein the algorithm is a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm.

[0072] Example 4: The method of any of examples 1 through 3, wherein each hardware instance from the plurality of hardware instances is managed by a respective Bluetooth module from a plurality of Bluetooth modules.

[0073] Example 5: The method of any of examples 1 through 4, wherein the plurality of hardware instances includes a plurality of antennas, and wherein the method further comprises: assign, by the host computing system and using the load balancer module, and based on the respective unique session identifier, the respective communication request to a respective antenna from the plurality of antennas; and forward, by the host computing system and to the respective antenna, the respective communication request to establish communication with the respective client computing device.

[0074] Example 6: The method of any of examples 4 and 5, wherein the plurality of antennas is managed by a single Bluetooth module.

[0075] Example 7: The method of any of examples 1 through 6, wherein each hardware instance from the plurality of hardware instances has a same medium access control address.PCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01

[0076] Example 8: The method of any of examples 1 through 7, wherein the host computing system comprises a vehicle head unit that includes one or more processors for execution of the load balancer module.

[0077] Example 9: The method of any of examples 1 through 8, wherein the load balancer module is a software module that is executable by one or more processors or a hardware module that is executable by one or more processors.

[0078] Example 10: A host computing system includes a plurality of hardware instances; a personal area network interface that manages communication between a plurality of client computing devices and the plurality of hardware instances; a load balancer module that manages traffic between the personal area network interface and the plurality of hardware instances; a memory that stores a unique session identifier for each client computing device from the plurality of client computing devices; and one or more processors that execute the load balancer module to: receive, from the personal area network interface, a plurality of communication requests, wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device; assign, based on the respective unique session identifier, a respective communication request to a respective hardware instance from the plurality of hardware instances; and forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0079] Example 11 : The host computing system of example 10, wherein to assign the respective communication request to the respective hardware instance from the plurality of hardware instances, the one or more processors further execute the load balancer module to: determine a current load for each hardware instance from the plurality of hardware instances; and assign the respective communication request to the respective hardware instance by applying an algorithm to the current load for each hardware instance.

[0080] Example 12: The host computing system of example 11, wherein the algorithm is a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm.

[0081] Example 13: The host computing system of any of examples 10 through 12, wherein each hardware instance from the plurality of hardware instances is managed by a respective Bluetooth module from a plurality of Bluetooth modules.

[0082] Example 14: The host computing system of any of examples 10 through 13, wherein the plurality of hardware instances include a plurality of antennas, and wherein the one orPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01more processors further execute the load balancer module to: assign, based on the respective unique session identifier, the respective communication request to a respective antenna from the plurality of antennas; and forward, to the respective antenna, the respective communication request to establish communication with the respective client computing device.

[0083] Example 15: The host computing system of any of examples 13 and 14, wherein the plurality of antennas is managed by a single Bluetooth module.

[0084] Example 16: The host computing system of any of examples 10 through 15, wherein each hardware instance from the plurality of hardware instances has a same medium access control address.

[0085] Example 17: The host computing system of any of examples 10 through 16, wherein the host computing system comprises a vehicle head unit that includes the one or more processors executing the load balancer module.

[0086] Example 18: The host computing system of any of examples 10 through 17, wherein the load balancer module is a software module that is executable by the one or more processors or a hardware module that is executable by the one or more processors.

[0087] Example 19: A non-transitory computer-readable storage medium encoded with instructions that, when executed by one or more processors of a computing device, cause the one or more processors to receive, from a personal area network interface, a plurality of communication requests, wherein the computing device includes a plurality of hardware instances, wherein the computing device includes the personal area network interface for managing communication between a plurality of client computing devices and the plurality of hardware instances, wherein the computing device includes a load balancer module for managing traffic between the personal area network interface and the plurality of hardware instances, and wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device from the plurality of client computing devices; assign, using the load balancer module, and based on the respective unique session identifier, a respective communication request to a respective hardware instance from the plurality of hardware instances; and forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0088] Example 20: The non-transitory computer-readable storage medium of example 19, wherein to assign the respective communication request to the respective hardware instance from the plurality of hardware instances, the instructions further cause the one or morePCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01processors to: determine, using the load balancer module, a current load for each hardware instance from the plurality of hardware instances; and assign, using the load balancer module, the respective communication request to the respective hardware instance by applying an algorithm to the current load for each hardware instance.

[0089] Example 21: The non-transitory computer-readable storage medium of example 20, wherein the algorithm is a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm.

[0090] Example 22: The non-transitory computer-readable storage medium of any of examples 19 through 21, wherein each hardware instance from the plurality of hardware instances is managed by a respective Bluetooth module from a plurality of Bluetooth modules.

[0091] Example 23: The non-transitory computer-readable storage medium of any of examples 19 through 22, wherein the plurality of hardware instances include a plurality of antennas, and wherein the instructions further cause the one or more processors to: assign, using the load balancer module, and based on the respective unique session identifier, the respective communication request to a respective antenna from the plurality of antennas; and forward, to the respective antenna, the respective communication request to establish communication with the respective client computing device.

[0092] Example 24: The non-transitory computer-readable storage medium of any of examples 22 and 23, wherein the plurality of antennas is managed by a single Bluetooth module.

[0093] Example 25: The non-transitory computer-readable storage medium of any of examples 19 through 25, wherein each hardware instance from the plurality of hardware instances has a same medium access control address.

[0094] Example 26: The non-transitory computer-readable storage medium of any of examples 19 through 25, wherein the computing device comprises a vehicle head unit that includes the one or more processors executing the load balancer module.

[0095] Example 27: The non-transitory computer-readable storage medium of any of examples 19 through 26, wherein the load balancer module is a software module that is executable by the one or more processors or a hardware module that is executable by the one or more processors.

[0096] Example 28: A computer program product for extending bandwidth for a plurality of hardware instances, the computer program product comprising instructions that, when executed by one or more processors, cause the one or more processors to: receive, from aPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01personal area network interface, a plurality of communication requests, wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device from a plurality of client computing devices; assign, using a load balancer module, and based on the respective unique session identifier, a respective communication request to a respective hardware instance from a plurality of hardware instances; and forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

[0097] Example 29: The computer program product of example 28, wherein to assign the respective communication request to the respective hardware instance from the plurality of hardware instances, the instructions further cause the one or more processors to: determine, using the load balancer module, a current load for each hardware instance from the plurality of hardware instances; and assign, using the load balancer module, the respective communication request to the respective hardware instance by applying an algorithm to the current load for each hardware instance.

[0098] Example 30: The computer program product of example 29, wherein the algorithm is a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm.

[0099] Example 31 : The computer program product of any of examples 28 through 30, wherein each hardware instance from the plurality of hardware instances is managed by a respective Bluetooth module from a plurality of Bluetooth modules.

[0100] Example 32: The computer program product of any of examples 28 through 31, wherein the plurality of hardware instances include a plurality of antennas, and wherein the instructions further cause the one or more processors to: assign, using the load balancer module, and based on the respective unique session identifier, the respective communication request to a respective antenna from the plurality of antennas; and forward, to the respective antenna, the respective communication request to establish communication with the respective client computing device.

[0101] Example 33: The computer program product of any of examples 31 and 32, wherein the plurality of antennas is managed by a single Bluetooth module.

[0102] Example 34: The computer program product of any of examples 28 through 33, wherein each hardware instance from the plurality of hardware instances has a same medium access control address.PCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01

[0103] Example 35: The computer program product of any of examples 28 through 34, wherein the computing device comprises a vehicle head unit that includes the one or more processors executing the load balancer module.

[0104] Example 36: The computer program product of any of examples 28 through 35, wherein the load balancer module is a software module that is executable by the one or more processors or a hardware module that is executable by the one or more processors.

[0105] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over, as one or more instructions or code, a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media, which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0106] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, ultra Blu-ray, etc. where disksPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01usually reproduce data magnetically, while discs reproduce data optically with lasers.Combinations of the above should also be included within the scope of computer-readable media.

[0107] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described. In addition, in some aspects, the functionality described may be provided within dedicated hardware and / or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.

[0108] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a hardware unit or provided by a collection of intraoperative hardware units, including one or more processors as described above, in conjunction with suitable software and / or firmware.

[0109] Various examples have been described. These and other examples are within the scope of the following claims.

Claims

PCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01WHAT IS CLAIMED IS:

1. A method comprising:receiving, by a host computing system and from a personal area network interface, a plurality of communication requests, wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device from a plurality of client computing devices;assigning, by the host computing system and using a load balancer module, and based on the respective unique session identifier, a respective communication request to a respective hardware instance from a plurality of hardware instances; andforwarding, by the host computing system and to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

2. The method of claim 1, wherein assigning the respective communication request to the respective hardware instance from the plurality of hardware instances further comprises:determining, by the host computing system and using the load balancer module, a current load for each hardware instance from the plurality of hardware instances; and assigning, by the host computing system and using the load balancer module, the respective communication request to the respective hardware instance by applying an algorithm to the current load for each hardware instance.

3. The method of claim 2, wherein the algorithm is a round-robin scheduling algorithm, a least connections algorithm, a weighted round-robin algorithm, or a least response time algorithm.

4. The method of any of claims 1 through 3, wherein each hardware instance from the plurality of hardware instances is managed by a respective Bluetooth module from a plurality of Bluetooth modules.

5. The method of any of claims 1 through 4, wherein the plurality of hardware instances includes a plurality of antennas, and wherein the method further comprises:assign, by the host computing system and using the load balancer module, and based on the respective unique session identifier, the respective communication request to a respective antenna from the plurality of antennas; andPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01forward, by the host computing system and to the respective antenna, the respective communication request to establish communication with the respective client computing device.

6. The method of claim 5, wherein the plurality of antennas is managed by a single Bluetooth module.

7. The method of any of claims 1 through 6, wherein each hardware instance from the plurality of hardware instances has a same medium access control address.

8. The method of any of claims 1 through 7, wherein the host computing system comprises a vehicle head unit that includes one or more processors for execution of the load balancer module.

9. The method of any of claims 1 through 8, wherein the load balancer module is a software module that is executable by one or more processors or a hardware module that is executable by one or more processors.

10. A host computing system, comprising:a plurality of hardware instances;a personal area network interface that manages communication between a plurality of client computing devices and the plurality of hardware instances;a load balancer module that manages traffic between the personal area network interface and the plurality of hardware instances;a memory that stores a unique session identifier for each client computing device from the plurality of client computing devices; andone or more processors that execute the load balancer module to:receive, from the personal area network interface, a plurality of communication requests, wherein each communication request from the plurality of communication requests is associated with a respective unique session identifier for a respective client computing device;assign, based on the respective unique session identifier, a respective communication request to a respective hardware instance from the plurality of hardware instances; andPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01forward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

11. The host computing system of claim 10, wherein to assign the respective communication request to the respective hardware instance from the plurality of hardware instances, the one or more processors further execute the load balancer module to:determine a current load for each hardware instance from the plurality of hardware instances; andassign the respective communication request to the respective hardware instance by applying an algorithm to the current load for each hardware instance.

12. The host computing system of any of claims 10 and 11, wherein the plurality of hardware instances include a plurality of antennas, wherein the plurality of antennas are managed by a single Bluetooth module, and wherein the one or more processors further execute the load balancer module to:assign, based on the respective unique session identifier, the respective communication request to a respective antenna from the plurality of antennas; and forward, to the respective antenna, the respective communication request to establish communication with the respective client computing device.

13. The host computing system of any of claims 10 and 11, wherein each hardware instance from the plurality of hardware instances is managed by a respective Bluetooth module from a plurality of Bluetooth modules.

14. A non-transitory computer-readable storage medium encoded with instructions that, when executed by one or more processors of a computing device, cause the one or more processors to perform any of the methods of claim 1-9.

15. A computer program product for extending bandwidth for a plurality of hardware instances, the computer program product comprising instructions that, when executed by one or more processors, cause the one or more processors to:receive, from a personal area network interface, a plurality of communication requests, wherein each communication request from the plurality of communication requestsPCT / US24 / 56130 15 November 2024 (15.11.2024)Docket No.: 1333-912WO01is associated with a respective unique session identifier for a respective client computing device from a plurality of client computing devices;assign, using a load balancer module, and based on the respective unique session identifier, a respective communication request to a respective hardware instance from a plurality of hardware instances; andforward, to the respective hardware instance, the respective communication request to establish communication with the respective client computing device.

Citation Information

Patent Citations

  • User account aware personal area network bonding

    US11395356B1

  • Universal bus in the car

    US20130166097A1

  • Techniques to perform the dynamic configuration of load-balanced relay operations

    US20170250859A1