WO2022046084A1 - Firmware updates - Google Patents
Firmware updates Download PDFInfo
- Publication number
- WO2022046084A1 WO2022046084A1 PCT/US2020/048532 US2020048532W WO2022046084A1 WO 2022046084 A1 WO2022046084 A1 WO 2022046084A1 US 2020048532 W US2020048532 W US 2020048532W WO 2022046084 A1 WO2022046084 A1 WO 2022046084A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- electronic device
- firmware
- controller
- examples
- identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Definitions
- FIG. 1 is a block diagram of an example of a first electronic device that may be used in updating firmware
- FIG. 2 is a flow diagram illustrating an example of a method for performing firmware updates
- FIG. 3 is a block diagram of an example of a first docking device and a second docking device that may be used in updating firmware
- FIG. 4 is a block diagram illustrating an example of a computer- readable medium for firmware updates.
- An electronic device may be a device that includes electronic circuitry (e.g., integrated circuitry, a chip(s), etc.). Examples of electronic devices may include docking devices, computing devices, smartphones, tablet devices, game consoles. Some examples of electronic devices may store and/or utilize firmware.
- Firmware may be instructions stored on a hardware device or electronic circuitry to operate the hardware device or electronic circuitry. Instructions included in firmware may be code or programming that defines or controls functionality or operation of the hardware device or electronic circuitry. For example, some hardware devices or electronic circuitries may execute firmware to perform an operation(s). For instance, firmware may be executed to initialize, control, and/or operate the hardware device or electronic circuitry.
- firmware may include instructions to control communication and/or interaction between the hardware device or electronic circuitry and other hardware or circuitry(ies) (e.g., a host electronic device).
- firmware may be stored in non-volatile memory (e.g., Read-Only Memory (ROM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, etc.).
- ROM Read-Only Memory
- EPROM Erasable Programmable Read-Only Memory
- EEPROM Electrically Erasable Programmable Read-Only Memory
- flash memory etc.
- different circuitries in an electronic device may store and/or utilize separate firmware for operation.
- FIG. 1 is a block diagram of an example of a first electronic device 102 that may be used in updating firmware.
- the first electronic device 102 may include docking devices, computing devices, smartphones, game consoles, smart appliances, power adapters, wall outlets, port hubs, port replicators, power banks, and/or power bricks, etc.
- FIG. 1 also illustrates an example of a second electronic device 110.
- the second electronic device 110 may include docking devices, computing devices, smartphones, game consoles, smart appliances, etc.
- the second electronic device 110 may be a same type of device as the first electronic device 102 and/or may include the same types of components as the first electronic device 102.
- the second electronic device 110 may be a different type of device relative to the first electronic device 102 and/or may include different components than the first electronic device 102.
- a docking device may be an electronic device capable of connecting to another electronic device.
- the docking device may be capable of being connected to another electronic device via an interface(s), cable(s), plug(s), and/or connector(s).
- a docking device may be capable of providing a connection between a computing device (e.g., laptop device, smartphone, tablet device, etc.) and a peripheral device(s).
- a peripheral device may be a device to provide input to a computing device and/or to provide output from a computing device. Examples of a peripheral device may include a monitor, keyboard, mouse, camera, external storage device, track pad, game controller, projector, etc.
- a docking device may be capable of connecting a laptop computer to multiple monitors (e.g., separate monitors, monitors not integrated into the laptop computer), a keyboard (e.g., separate keyboard, full-size keyboard, keyboard not integrated into the laptop computer), a mouse (e.g., separate mouse), etc.
- the first electronic device 102 may be a first docking device and/or a second electronic device 110 may be a second docking device.
- the first electronic device 102 may include a port 104, a controller 106, and/or firmware data 108.
- a port 104 may be connecting hardware (e.g., a socket, a fitting with a conductor(s), etc.).
- the port 104 may enable a plug, cable, cable head, termination, etc., to be connected to the first electronic device 102.
- the port 104 may enable the first electronic device 102 to communicate with other electronic devices (e.g., a second electronic device 110).
- the port 104 may connect to a second electronic device 110.
- the port 104 may be utilized to connect the first electronic device 102 to the second electronic device 110.
- the port 104 may connect to the second electronic device 110 with a wired connection.
- a wire and/or cable e.g., USB-C cable
- the port 104 may provide received information to the controller 106.
- the first electronic device 102 and/or the second electronic device 110 may not be connected to a host (e.g., computing device, laptop computer, etc.) during a firmware check and/or update procedure.
- a host e.g., computing device, laptop computer, etc.
- two docking devices may be connected to each other instead of a host.
- the first electronic device 102 and/or the second electronic device 110 may be connected to a host (via another port(s), for instance) during a firmware check and/or update procedure.
- the port 104 may be included in an interface.
- An interface may be a device to interface with another device.
- an interface e.g., interface for an external connection
- some interfaces may be utilized to interface with a device (e.g., the second electronic device 110) that is external to the first electronic device 102.
- an interface may enable a connection(s) (e.g., wire(s), cable(s), etc.).
- interfaces may include a Universal Serial Bus (USB) interface (e.g., USB Type- C (USB-C), USB Type-A, USB Type-B, USB 2.0, USB 3.0, USB Mini-B, USB Micro-B, etc.), Lightning interface, Ethernet interface, etc.
- USB Universal Serial Bus
- an electronic device may include an interface and/or may be connected to another electronic device (e.g., the second electronic device 110) via an interface.
- Some interfaces may include a power delivery controller.
- a power delivery controller may be circuitry to control power delivery through an interface.
- a power delivery controller may include power delivery controller firmware and/or may execute power delivery controller firmware to perform power delivery functions.
- Power delivery controller firmware may be instructions for performing a power delivery operation(s).
- a power delivery controller of an interface may execute power delivery controller firmware to negotiate with a power delivery controller of a connected interface to establish voltage, amperage, and/or wattage for power delivery.
- the interface may include memory or storage to store the power delivery controller firmware.
- a power delivery controller may receive information via the port 104.
- the power delivery controller may provide the information to the controller 106.
- the first electronic device 102 may communicate with the second electronic device 110 using a signal(s).
- the signals may communicate information.
- the information may be formatted as a digital binary code(s).
- the first electronic device 102 may communicate with the second electronic device 110 using vendor defined messages (VDMs).
- VDMs are messages that can be flexibly defined to carry a target type of payload data.
- a VDM may be defined to carry the identifier information (e.g., vendor identifier information and/or product identifier information), component identifier(s), firmware version(s), and/or firmware.
- a VDM(s) may be defined to indicate an information request(s) (for identifier information, component identifier(s), firmware version(s), and/or firmware, for instance).
- a VDM may include a header with a number of bits (e.g., 14 bits) and a field(s) with a number of bits (e.g., up to six fields of 32 bits each).
- the first electronic device 102 may send information to the second electronic device 110 and/or may receive information from the second electronic device 110 as a VDM(s).
- the controller 106 may be hardware to perform an operation(s) on the first electronic device 102.
- Examples of the controller 106 may include integrated circuitry, a microcontroller unit (MCU), a microprocessor, a field- programmable gate array (FPGA), an application-specific integrated circuit (ASIC), and/or other hardware device.
- the controller 106 may fetch, decode, and/or execute instructions stored in memory.
- the controller 106 may include an electronic circuit(s) that include electronic components for performing a function(s) of the instructions.
- the first electronic device 102 may include additional hardware and/or circuitry (not shown in FIG. 1 ).
- the first electronic device 102 may include a chip(s) (e.g., chipset(s)) to perform an operation(s).
- a chip may be semiconductor material (e.g., a piece of silicon, wafer, etc.) that includes electronic circuitry and/or electronic components (e.g., transistor(s), resistor(s), capacitor(s), inductor(s), wire(s), and/or trace(s), etc.).
- Examples of the hardware, circuitry, chip(s), and/or chipsets may include a power delivery controller, display port hub, scaler, audio chip, USB controller chip, local area network (LAN) chip, magnetic secure transmission (MST) hub chip, sensor chip(s), and/or other chip(s) capable of a firmware update (from a controller 106 path, for instance), etc.
- a power delivery controller may be a chipset to perform the operations described above
- a display port (e.g., DisplayPort) hub may be a chipset to output data to a monitor(s)
- a scaler may be a chipset to scale image data (e.g., scale pixel data to a pixel format for a monitor(s)), etc.
- a scaler may be an MCU for a monitor(s).
- a scaler may scale an input image (e.g., zoom in or zoom out an input image) and/or may process pixel data.
- a scaler may include and/or execute a color engine (for controlling gamma, contrast, and/or brightness, etc.).
- a scaler may process multiple input signals and/or provide control functions for an on-screen display (OSD).
- OSD on-screen display
- the controller 106 may be coupled to and/or communicate with a component(s) (e.g., hardware, circuitry, chip(s), and/or chipsets) of the first electronic device 102.
- the controller 106 may communicate with a component(s) using an interface (e.g., internal interface).
- interfaces e.g., internal interfaces
- I2C inter-integrated circuit
- SPI serial peripheral interface
- an internal interface may be an interface between internal components.
- an internal interface may enable communication between internal components.
- an internal interface may be an interface between the controller 106 and another component(s) of the first electronic device 102.
- the first electronic device 102 may store the firmware data 108.
- the firmware data 108 may be firmware and/or data about firmware.
- the firmware data 108 may include firmware and/or firmware metadata.
- the firmware data 108 may include firmware (e.g., hardware instructions), information indicating a firmware version, and/or information indicating a component identifier.
- a firmware version may be data (e.g., a number, characters, a string, etc.) indicating a version (e.g., release, version number, date, etc.) of the firmware.
- the firmware version may provide an indication of an age or variant of the firmware (relative to another firmware version(s), for example). For instance, a higher version number may indicate newer firmware relative to a lower version number, which may indicate older firmware.
- the firmware data 108 may correspond to hardware and/or a circuitry(ies) of the first electronic device.
- portions of the firmware data 108 may correspond to hardware, circuitry, chip(s), and/or chipset(s) included in the first electronic device 102.
- portions of the firmware data 108 may be stored by separate hardware, circuitry(ies), chip(s), and/or chipset(s) of the first electronic device 102 (e.g., in separate memories of the different hardware, circuitry, chip(s), and/or chipset(s), etc.).
- different portions of the firmware data 108 may be stored by a power delivery controller, display port hub, scaler, etc.
- a component(s) e.g., hardware, circuitry, chip(s), chipset(s), power delivery controller, display port hub, scaler, etc.
- a component(s) of the first electronic device 102 may include or have access to memory or storage (e.g., memory cells, registers, flash memory, etc.), in which respective portions of the firmware data 108 (e.g., respective component firmware) may be stored.
- the controller 106 may determine whether the first electronic device 102 is a same type (e.g., kind, class, model, and/or product) as the second electronic device 110. For instance, the controller 106 may determine whether the second electronic device 110 is the same kind of electronic device as the first electronic device 102. Two electronic devices may be the same type of electronic device when the two electronic devices are the same type of product, when they are made by the same vendor (e.g., manufacturer), and/or when they include the same types of components.
- a same type e.g., kind, class, model, and/or product
- the controller 106 may determine whether the second electronic device 110 is the same kind of electronic device as the first electronic device 102.
- Two electronic devices may be the same type of electronic device when the two electronic devices are the same type of product, when they are made by the same vendor (e.g., manufacturer), and/or when they include the same types of components.
- the first electronic device 102 may request and/or receive identifier information from the second electronic device 110 to determine whether the first electronic device 102 is the same type as the second electronic device 110.
- the first electronic device 102 e.g., controller 106 may send a request to the second electronic device 110 via the port 104 for the identifier information to determine whether the first electronic device 102 and the second electronic device 110 are the same type.
- the second electronic device 110 may send the identifier information to the first electronic device 102.
- Identifier information may be information that indicates a type of device. Examples of identifier information may include a vendor identifier and a product identifier.
- a vendor identifier may be data (e.g., a number, string, characters, code, etc.) that indicates a vendor (e.g., manufacturer) of an electronic device.
- a product identifier may be data (e.g., a number, string, characters, code, etc.) that indicates a product type of an electronic device.
- the first electronic device 102 may compare identifier information of the first electronic device 102 with identifier information of the second electronic device 110 to determine whether the first electronic device 102 and the second electronic device 110 are the same type. For example, to determine whether the first electronic device 102 is the same type as the second electronic device 110, the controller 106 may compare a first vendor identifier and/or a first product identifier of the first electronic device 102 to a second vendor identifier and/or a second product identifier of the second electronic device 110. If the vendor identifiers and/or product identifiers match (e.g., contain the same numbers, strings, characters, etc.), the first electronic device 102 and the second electronic device 110 may be determined to be the same type.
- the vendor identifiers and/or product identifiers match (e.g., contain the same numbers, strings, characters, etc.), the first electronic device 102 and the second electronic device 110 may be determined to be the same type.
- the controller 106 may determine whether the first electronic device 102 has newer or older firmware than the second electronic device 110. For instance, the controller 106 may determine whether the second electronic device 110 has newer or older firmware for a component(s) than the first electronic device 102. Firmware may be newer if a firmware version of the firmware indicates a more recent firmware version.
- the first electronic device 102 may request and/or receive a firmware version(s) from the second electronic device 110 to determine whether the first electronic device 102 has newer and/or older firmware than the second electronic device 110.
- the first electronic device 102 e.g., controller 106 may send a request to the second electronic device 110 via the port 104 for the firmware version(s) to determine whether the first electronic device 102 has newer and/or older firmware than the second electronic device 110.
- the second electronic device 110 may send the firmware version(s) to the first electronic device 102.
- the second electronic device 110 may send firmware versions corresponding to components of the second electronic device 110.
- the first electronic device 102 may, in response to a determination that the first electronic device 102 is the same type as the second electronic device 110, compare a first firmware version of the first electronic device to a second firmware version of the second electronic device 110.
- the controller 106 may compare the first firmware version of a component of the first electronic device 102 to the second firmware version of a component of the second electronic device 110 to determine whether the first firmware version is newer, older, or the same as the second firmware version. For instance, if the first firmware version is (or includes) a higher number than the second firmware version, the first firmware version may be newer than the second firmware version.
- the first firmware version may be older than the second firmware version. In some examples, if the first firmware version is a same number as (e.g., equal to) the second firmware version, the first firmware version may be the same as the second firmware version.
- the controller 106 may update (e.g., replace, modify, switch, etc.) a first firmware of the first electronic device 102 with a second firmware from the second electronic device 110.
- the first electronic device 102 e.g., controller 106
- the first electronic device 102 may receive the second firmware from the second electronic device 110 and overwrite the first firmware (e.g., firmware data 108 or a portion thereof) with the second firmware (e.g., firmware data 112 or a portion thereof).
- the first electronic device 102 may include a power delivery controller to send a request for the second firmware to the second electronic device 110 when the first firmware version is older than the second firmware version.
- the controller 106 may send a first firmware (of the first electronic device 102, for example) to the second electronic device 110 to update the second firmware (of the second electronic device 110, for example) with the first firmware.
- the first electronic device 102 e.g., controller 106
- the second electronic device 110 may overwrite the second firmware (e.g., firmware data 112 or a portion thereof) with the first firmware (e.g., firmware data 108 or a portion thereof).
- a first firmware may be “of” the first electronic device 102 if that firmware is or has been utilized (e.g., executed) by the first electronic device 102, is or has been utilized (e.g., executed) by a component of the first electronic device 102, and/or is instructions to be executed by a component of the first electronic device 102.
- firmware is not “of” an electronic device if that firmware is not to be utilized and/or executed by any component of the electronic device (e.g., if the electronic device is merely distributing or passing the firmware).
- a second firmware is of the second electronic device 110 if that firmware is utilized (e.g., executed) by the second electronic device 110, is utilized (e.g., executed) by a component of the second electronic device 110, and/or is instructions to be executed by a component of the second electronic device 110.
- the first electronic device 102 may compare a component identifier of the first electronic device 102 to a component identifier of the second electronic device 110.
- a component identifier may be data (e.g., a number, string, characters, code, etc.) that identifies a component (e.g., hardware, circuitry, chip, chipset, etc.) of an electronic device.
- component identifiers may be utilized to identify components of different electronic devices to enable firmware version comparison of the same type of component.
- the first electronic device 102 may receive component identifiers from the second electronic device 110 in association with firmware versions for multiple components of the second electronic device 110.
- the controller 106 may compare a first chip identifier of the first electronic device 102 to a second chip identifier from the second electronic device 110. If the chip identifiers match, the controller 106 may compare firmware versions associated with the chip identifiers to determine whether the firmware versions are the same or different (e.g., newer or older). For instance, the controller 106 may receive the first chip identifier from a first chip via an internal interface (e.g., I2C). The first electronic device 102 may include a power delivery controller to receive the second chip identifier from the second electronic device 110 and to send the second chip identifier to the controller 106 (via an internal interface, such as I2C, for example). The controller 106 may then compare the first and second chip identifiers. Corresponding firmware versions may be compared for matching chip identifiers. For example, firmware versions may be compared for components with matching identifiers.
- firmware versions may be compared for components with matching identifiers.
- the first electronic device 102 may trigger the firmware update procedure.
- the firmware update procedure may include an operation(s) described herein.
- the firmware update procedure may include determining whether electronic devices are a same type, comparing firmware versions, and updating firmware with an older firmware version.
- the first electronic device 102 may include and/or may be connected to an input device (e.g., button, touch pad, touch screen, keyboard, mouse, wireless receiver, image sensor, motion sensor, light sensor, etc.).
- the first electronic device may trigger the firmware update procedure based on an input from an input device.
- the first electronic device 102 may include a button to trigger the firmware update procedure.
- the first electronic device 102 may request and/or receive identifier information from the second electronic device 110 (and/or send identifier information to the second electronic device), and so on.
- the controller 106 may trigger a firmware update procedure in response to detecting that the second electronic device 110 is a docking device. For instance, upon an initial connection, the first electronic device 102 and/or second electronic device 110 may send and/or receive (e.g., exchange) information indicating whether the first electronic device 102 is a docking device and/or the second electronic device 110 is a docking device. In a case that the first electronic device 102 and the second electronic device 110 are docking devices, the controller 106 may trigger the firmware update procedure. In some examples, the first electronic device 102 may trigger the firmware update procedure in response to a received message. For instance, the first electronic device 102 may be connected to a host and may receive a message to initiate the firmware update procedure.
- FIG. 2 is a flow diagram illustrating an example of a method 200 for performing firmware updates.
- the method 200 and/or a method 200 element(s) may be performed by an electronic device (e.g., docking device).
- the method 200 may be performed by the first electronic device 102 (e.g., controller 106) described in FIG. 1 , the first docking device 314 described in FIG. 3, and/or the second docking device 316 described in FIG. 3.
- the electronic device may determine whether to trigger a firmware update procedure. In some examples, determining whether to trigger a firmware update procedure may be performed as described in FIG. 1. For instance, the electronic device may determine whether an input from an input device has been received (e.g., whether a button has been pressed, whether a wireless signal has been received, etc.), whether a connection to a docking station is detected, and/or whether a message is received from a host to initiate the firmware update procedure. In a case that the electronic device determines not to trigger an update procedure, the electronic device may return to determining whether to trigger a firmware update procedure (e.g., continue to monitor for a condition for triggering the update procedure).
- an input from an input device e.g., whether a button has been pressed, whether a wireless signal has been received, etc.
- the electronic device may return to determining whether to trigger a firmware update procedure (e.g., continue to monitor for a condition for triggering the update procedure).
- the electronic device may receive information at 204.
- receiving information may be performed as described in FIG. 1.
- the electronic device may request and/or receive identifier information (e.g., product identifier, vendor identifier), component identifier(s), and/or firmware version(s) from a second electronic device.
- identifier information may be received and compared to determine that the received identifier information matches identifier information (e.g., local identifier information) of the electronic device.
- identifier information e.g., local identifier information
- component identifier(s) and/or firmware version(s) may be requested and/or received.
- receiving information may be performed in one stage. For instance, the electronic device may request and/or receive the identifier information, component identifier(s), and/or firmware version(s) together.
- the electronic device may determine whether the received identifier information (e.g., vendor identifier and/or product identifier) matches identifier information (e.g., local identifier information) of the electronic device (e.g., the vendor identifier and/or product identifier of the electronic device). In some examples, determining whether identifier information matches may be performed as described in FIG. 1. In some examples, the electronic device may determine that identifier information matches if a received product identifier matches the product identifier of the electronic device. In some examples, the electronic device may determine that identifier information matches if a received vendor identifier matches the vendor identifier of the electronic device.
- identifier information e.g., vendor identifier and/or product identifier
- the electronic device may determine that identifier information matches if a received product identifier matches the product identifier of the electronic device and if a received vendor identifier matches the vendor identifier of the electronic device. In some examples, the electronic device may determine that identifier information matches if a received component identifier(s) match the component identifier(s) of the electronic device. In some examples, the electronic device may determine that identifier information matches if a received product identifier matches the product identifier of the electronic device, if a received vendor identifier matches the vendor identifier of the electronic device, and if the received component identifier(s) match the component identifier(s) of the electronic device. In a case that the identifier information does not match, operation may end at 208.
- the electronic device may determine whether firmware versions match at 210. In some examples, determining whether firmware versions match may be performed as described in FIG. 1. For instance, the electronic device may determine whether a first firmware version of the electronic device is the same as, older than, or newer than a second firmware version received from the second electronic device. In some examples, the electronic device may compare numbers, characters, and/or strings, etc., of the firmware versions to determine whether the firmware versions match or if one of the firmware versions is older than the other. In some examples, the electronic device may make the determination for a set of firmware versions (where each firmware version corresponds to a component of the electronic device, for instance). In a case that the firmware versions match, operation may end at 208.
- the electronic device may send first firmware (corresponding to the first firmware version, for instance) to the second electronic device at 212.
- sending the first firmware to the second electronic device may be performed as described in FIG. 1 .
- Sending the first firmware may enable the second electronic device to update second firmware corresponding to the second firmware version.
- Operation may return to determining whether firmware versions match at 210. For instance, the electronic device may receive an updated firmware version from the second electronic device and may confirm that the firmware versions match, after which operation may end at 208.
- the electronic device may send the first firmware again in a case that the first firmware was initially sent unsuccessfully and/or in a case that updating the second firmware of the second electronic device was unsuccessful.
- the electronic device may determine whether a firmware version for a next component matches a firmware version from the second electronic device. For instance, some or all of the operations of the method 200 may repeat for multiple components.
- the electronic device may receive second firmware from the second electronic device at 214.
- receiving the second firmware from the second electronic device may be performed as described in FIG. 1.
- the electronic device may request and/or receive the second firmware from the second electronic device using an interface and/or connection.
- the electronic device may update first firmware with second firmware.
- updating the first firmware with the second firmware may be performed as described in FIG. 1.
- the electronic device may overwrite the first firmware with the second firmware in the memory of a component to which the second firmware corresponds.
- Operation may return to determining whether firmware versions match at 210.
- the electronic device may confirm that the firmware versions match, after which operation may end at 208.
- the electronic device may request and/or receive the second firmware again in a case that the second firmware was initially sent unsuccessfully and/or in a case that updating the first firmware was unsuccessful.
- the electronic device may determine whether a firmware version for a next component matches a firmware version from the second electronic device. For instance, some or all of the operations of the method 200 may repeat for multiple components. In some examples, an element(s) of the method 200 may be omitted, divided, and/or combined.
- firmware may be updated between two electronic devices (e.g., docking devices) when the electronic devices are the same type.
- firmware on docking devices may be updated without a host connection and/or network (e.g., Internet) connection in some examples.
- the capability to update firmware between electronic devices may allow a more efficient firmware updating procedure, especially when multiple docking devices are to be updated.
- FIG. 3 is a block diagram of an example of a first docking device 314 and a second docking device 316 that may be used in updating firmware.
- the first docking device 314 and/or the second docking device 316 may be examples of the first electronic device 102 and/or second electronic device 110 described in FIG. 1 .
- the first docking device 314 may include components, which may include a first power delivery controller 318a, a first controller 322a, a first memory 336a, a first chip 324a, a second chip 328a, and/or a third chip 332a.
- the first power delivery controller 318a may store and/or execute first power delivery controller firmware data 320a.
- the first chip 324a may store and/or execute first firmware data 326a.
- the first chip 324a may store a first firmware version in the first firmware data 326a and/or the first chip 324a may execute first firmware that is included in the first firmware data 326a.
- the second chip 328a may store and/or execute second firmware data 330a.
- the third chip 332a may store and/or execute third firmware data 334a.
- Each firmware data 326a, 330a, 334a may include firmware and a firmware version corresponding to the firmware for respective chips 324a, 328a, 332a of the first docking device 314.
- the first memory 336a may store first identifier information 338a.
- the second docking device 316 may include components, which may include a second power delivery controller 318b, a second controller 322b, a second memory 336b, a fourth chip 324b, a fifth chip 328b, and/or a sixth chip 332b.
- the second power delivery controller 318b may store and/or execute second power delivery controller firmware data 320b.
- the fourth chip 324b may store and/or execute fourth firmware data 326b.
- the fourth chip 324b may store a second firmware version in the fourth firmware data 326b and/or the fourth chip 324b may execute second firmware that is included in the fourth firmware data 326b.
- the fifth chip 328b may store and/or execute fifth firmware data 330b.
- the sixth chip 332b may store and/or execute sixth firmware data 334b.
- Each firmware data 326b, 330b, 334b may include firmware and a firmware version corresponding to the firmware for respective chips 324b, 328b, 332b of the second docking device 316.
- the second memory 336b may store second identifier information 338b.
- the first power delivery controller 318a may enable the first docking device 314 to communicate with other electronic devices (e.g., the second docking device 316).
- the first power delivery controller 318a may connect to a second docking device 316.
- the first power delivery controller 318a may connect to the second docking device 316 (e.g., the second power delivery controller 318b) with a wired connection.
- the first power delivery controller 318a may be included in an interface (e.g., USB-C interface).
- a wire and/or cable e.g., USB-C cable
- the first controller 322a may be hardware to perform an operation(s) on the first docking device 314.
- the first controller 322a may fetch, decode, and/or execute instructions stored in the first memory 336a.
- the first controller 322a may include an electronic circuit(s) that include electronic components for performing a function(s) of the instructions.
- the first controller 322a may be coupled to and/or communicate with a component(s) (e.g., first power delivery controller 318a, first chip 324a, second chip 328a, third chip 332a, and/or first memory 336a) of the first docking device 314 by an internal interface (e.g., I2C interface).
- I2C interface internal interface
- the second controller 322b may be hardware to perform an operation(s) on the second docking device 316.
- the second controller 322b may fetch, decode, and/or execute instructions stored in the second memory 336b.
- the second controller 322b may include an electronic circuit(s) that include electronic components for performing a function(s) of the instructions.
- the second controller 322b may be coupled to and/or communicate with a component(s) (e.g., the second power delivery controller 318b, the fourth chip 324b, the fifth chip 328b, the sixth chip 332b, and/or the second memory 336b) of the first docking device 314 by an internal interface (e.g., I2C interface).
- I2C interface internal interface
- the first controller 322a may request and/or receive information from the first power delivery controller 318a, the first chip 324a, the second chip 328a, the third chip 332a, and/or the first memory 336a.
- the first controller 322a may request and/or receive first identifier information 338a (e.g., a first product identifier, a first vendor identifier, and/or first component identifier(s)) from the first memory 336a.
- first identifier information 338a e.g., a first product identifier, a first vendor identifier, and/or first component identifier(s)
- the first controller 322a may request and/or receive a firmware version from the first power delivery controller 318a (e.g., first power delivery controller firmware 320a), the first chip 324a (e.g., the first firmware data 326a), the second chip 328a (e.g., the second firmware data 330a), and/or the third chip 332a (e.g., the third firmware data 334a).
- a firmware version may indicate whether corresponding firmware is older than, newer than, or the same as other firmware.
- the second controller 322b may request and/or receive information from the second power delivery controller 318b, the fourth chip 324b, the fifth chip 328b, the sixth chip 332b, and/or the second memory 336b.
- the second controller 322b may request and/or receive second identifier information 338b (e.g., a second product identifier, a second vendor identifier, and/or second component identifier(s)) from the second memory 336b.
- second identifier information 338b e.g., a second product identifier, a second vendor identifier, and/or second component identifier(s)
- the second controller 322b may request and/or receive a firmware version from the second power delivery controller 318b (e.g., the second power delivery controller firmware data 320b), the fourth chip 324b (e.g., the fourth firmware data 326b), the fifth chip 328b (e.g., the fifth firmware data 330b), and/or the sixth chip 332b (e.g., the sixth firmware data 334b).
- the first docking device 314 e.g., the first controller 322a
- the first docking device 314 may request and/or receive a firmware version of the second power delivery controller 318b (from the second power delivery controller firmware data 320b, for instance), of the fourth chip 324b (from the fourth firmware data 326b), of the fifth chip 328b (from the fifth firmware data 330b), and/or of the sixth chip 332b (from the sixth firmware data 334b).
- the first docking device 314 may request and/or receive a component identifier of the second power delivery controller 318b (from the second power delivery controller firmware data 320b, for instance), of the fourth chip 324b (from the fourth firmware data 326b), of the fifth chip 328b (from the fifth firmware data 330b), and/or of the sixth chip 332b (from the sixth firmware data 334b).
- the second docking device 316 may request and/or receive information from the first docking device 314.
- the second docking device 316 e.g., the second controller 322b
- the second docking device 316 may request and/or receive a component identifier of the first power delivery controller 318a (from the first power delivery controller firmware data 320a, for instance), of the first chip 324a (from the first firmware data 326a), of the second chip 328a (from the second firmware data 330a), and/or of the third chip 332a (from the third firmware data 334a).
- the first controller 322a may compare a first firmware version to a second firmware version to determine that the first firmware is newer than, older than, or the same as the second firmware. For instance, the first controller 322a may compare a first firmware version from the first chip 324a (e.g., from the first firmware data 326a) to a second firmware version from the fourth chip 324b (e.g., from the fourth firmware data 326b). The comparison may indicate that the first firmware from the first chip 324a (e.g., from the first firmware data 326a) is newer than, older than, or the same as the second firmware from the fourth chip 324b (e.g., from the fourth firmware data 326b).
- the first controller 322a may compare a first component identifier to a second component identifier to compare associated firmware versions. For instance, the first controller 322a may compare a first component identifier of the first chip 324a (e.g., from the first firmware data 326a and/or from the first identifier information 338a) to a second component identifier of the fourth chip 324b (e.g., from the fourth firmware data 326b and/or the second identifier information 338b). The comparison may indicate that the first firmware version corresponds to the first chip 324a (e.g., from the first firmware data 326a) and that the second firmware version corresponds to the fourth chip 324b (e.g., the same type of chips for comparison).
- the first docking device 314 may send newer firmware to the second docking device 316 and/or may receive newer firmware from the second docking device 316 for a component(s) when the first docking device 314 is the same type as the second docking device 316.
- the first controller 322a may send the first firmware to the first power delivery controller 318a from the first chip 324a when a second product identifier of the second docking device 316 matches a first product identifier of the first docking device 314 and when the first firmware is newer than the second firmware of the second docking device 316.
- the first controller 322a may request and/or receive first firmware of the first chip 324a (from the first firmware data 326a) and may provide the first firmware to the first power delivery controller 318a for transmission to the second docking device 316.
- the second docking device 316 e.g., the second controller 322b
- the first controller 322a may compare a firmware version of the first power delivery controller 318a (from the first power delivery controller firmware data 320a) to a received firmware version of the second power delivery controller 318b of the second docking device 316. In some examples, the first controller 322a may update firmware of the first power delivery controller 318a in response to a determination that the firmware version of the first power delivery controller 318a is older than the received firmware version of the second power delivery controller 318b.
- the first controller 322a may request and/or receive the firmware of the second power delivery controller 318b from the second docking device 316 when a second product identifier of the second docking device 316 matches a first product identifier of the first docking device 314 and when the firmware of the first power delivery controller 318a is older than the firmware of the second power delivery controller 318b.
- the first docking device 314 e.g., the first controller 322a
- firmware updates are given in FIG. 3. Other examples may be performed in accordance with the techniques described herein.
- the first docking device 314 and/or the second docking device 316 may compare firmware versions for each component and may exchange firmware to enable updating an older firmware version(s) to a newer firmware version(s) for a component(s).
- FIG. 4 is a block diagram illustrating an example of a computer- readable medium 440 for firmware updates.
- the computer-readable medium may be a non-transitory, tangible computer-readable medium 440.
- the computer-readable medium 440 may be, for example, RAM, EEPROM, a storage device, an optical disc, and the like.
- the computer- readable medium 440 may be volatile and/or non-volatile memory, such as DRAM, EEPROM, magnetoresistive random-access memory (MRAM), phasechange random-access memory (PCRAM), memristor, flash memory, and the like.
- the first memory 336a or the second memory 336b described in FIG. 3 may be an example of the computer-readable medium 440 described in FIG. 4.
- the computer-readable medium 440 may include code (e.g., data, executable instructions, and/or executable code).
- code e.g., data, executable instructions, and/or executable code.
- the computer- readable medium 440 may include trigger instructions 442, matching instructions 444, firmware comparison instructions 446, and/or updating instructions 448.
- the trigger instructions 442 may be instructions when executed cause a controller of a first electronic device to detect a connection between electronic devices (e.g., between docking devices). In some examples, the controller may compare the first product identifier and the second product identifier as described in FIG. 1 , FIG. 2, and/or FIG. 3. In some examples, the trigger instructions 442 may be code to cause the controller to execute the matching instructions 444 (e.g., to compare a first product identifier to a second product identifier, etc.) in response to the detection.
- the matching instructions 444 e.g., to compare a first product identifier to a second product identifier, etc.
- the first electronic device may be a first docking device and the second electronic device may be a second docking device that is coupled to the first docking device without a host (e.g., the first docking device and the second docking device are not coupled to a host).
- the matching instructions 444 may be instructions when executed cause the controller of the first electronic device to compare a first product identifier of the first electronic device to a second product identifier of a second electronic device.
- the controller may compare the first product identifier and the second product identifier as described in FIG. 1 , FIG. 2, and/or FIG. 3.
- the matching instructions 444 may be instructions when executed cause the controller of the first electronic device to compare a first vendor identifier of the first electronic device to a second vendor identifier of the second electronic device.
- the controller may compare the first vendor identifier and the second vendor identifier as described in FIG. 1 , FIG. 2, and/or FIG. 3.
- the firmware comparison instructions 446 may be code to cause the controller to, in response to a determination that the first product identifier matches the second product identifier and that the first vendor identifier matches the second vendor identifier, determine whether a first firmware version of the first electronic device is newer than, older than, or the same as a second firmware version of the second electronic device that is coupled to the first electronic device. In some examples, the controller may determine whether the first firmware version is newer, older, or the same as described in FIG. 1 , FIG. 2, and/or FIG. 3.
- the updating instructions 448 may be code to cause the controller to update older firmware on the first electronic device and/or send firmware to update older firmware on the second electronic device.
- the updating instructions 448 may be code to cause the controller to, in response to a determination that the first firmware version is newer than the second firmware version, send first firmware of the first electronic device to the second electronic device.
- the controller may send the first firmware as described in FIG. 1 , FIG. 2, and/or FIG. 3.
- the term “and/or” may mean an item or items.
- the phrase “A, B, and/or C” may mean any of: A (without B and C), B (without A and C), C (without A and B), A and B (but not C), B and C (but not A), A and C (but not B), or all of A, B, and C.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Examples of firmware updates are described herein. In some examples, a first electronic device may include a port to connect to a second electronic device. In some examples, the first electronic device includes a controller to determine whether the first electronic device is a same type as the second electronic device. In some examples, the controller is to, in response to a determination that the first electronic device is the same type as the second electronic device, compare a first firmware version of the first electronic device to a second firmware version of the second electronic device. In some examples, the controller is to, when the first firmware version is older than the second firmware version, update a first firmware of the first electronic device with a second firmware from the second electronic device.
Description
FIRMWARE UPDATES
BACKGROUND
[0001] The use of electronic devices has expanded. Some electronic devices include electronic circuitry for performing processing. As processing capabilities have expanded, electronic devices have been utilized to perform more functions. For example, a variety of computing devices are used for work, communication, and entertainment. Electronic devices may be linked to other devices and may communicate with other devices.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] FIG. 1 is a block diagram of an example of a first electronic device that may be used in updating firmware;
[0003] FIG. 2 is a flow diagram illustrating an example of a method for performing firmware updates;
[0004] FIG. 3 is a block diagram of an example of a first docking device and a second docking device that may be used in updating firmware; and
[0005] FIG. 4 is a block diagram illustrating an example of a computer- readable medium for firmware updates.
DETAILED DESCRIPTION
[0006] An electronic device may be a device that includes electronic circuitry (e.g., integrated circuitry, a chip(s), etc.). Examples of electronic devices may include docking devices, computing devices, smartphones, tablet devices, game
consoles. Some examples of electronic devices may store and/or utilize firmware. Firmware may be instructions stored on a hardware device or electronic circuitry to operate the hardware device or electronic circuitry. Instructions included in firmware may be code or programming that defines or controls functionality or operation of the hardware device or electronic circuitry. For example, some hardware devices or electronic circuitries may execute firmware to perform an operation(s). For instance, firmware may be executed to initialize, control, and/or operate the hardware device or electronic circuitry. In some examples, firmware may include instructions to control communication and/or interaction between the hardware device or electronic circuitry and other hardware or circuitry(ies) (e.g., a host electronic device). In some examples, firmware may be stored in non-volatile memory (e.g., Read-Only Memory (ROM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), flash memory, etc.). In some examples, different circuitries in an electronic device may store and/or utilize separate firmware for operation.
[0007] Throughout the drawings, identical reference numbers may designate similar, but not necessarily identical, elements. Similar numbers may indicate similar elements. When an element is referred to without a reference number, this may refer to the element generally, without necessary limitation to any particular drawing or figure. The drawings are not necessarily to scale, and the size of some parts may be exaggerated to more clearly illustrate the example shown. Moreover, the drawings provide examples in accordance with the description; however, the description is not limited to the examples provided in the drawings.
[0008] FIG. 1 is a block diagram of an example of a first electronic device 102 that may be used in updating firmware. Examples of the first electronic device 102 may include docking devices, computing devices, smartphones, game consoles, smart appliances, power adapters, wall outlets, port hubs, port replicators, power banks, and/or power bricks, etc. FIG. 1 also illustrates an example of a second electronic device 110. Examples of the second electronic device 110 may include docking devices, computing devices, smartphones,
game consoles, smart appliances, etc. In some examples, the second electronic device 110 may be a same type of device as the first electronic device 102 and/or may include the same types of components as the first electronic device 102. In some examples, the second electronic device 110 may be a different type of device relative to the first electronic device 102 and/or may include different components than the first electronic device 102.
[0009] A docking device may be an electronic device capable of connecting to another electronic device. For example, the docking device may be capable of being connected to another electronic device via an interface(s), cable(s), plug(s), and/or connector(s). In some examples, a docking device may be capable of providing a connection between a computing device (e.g., laptop device, smartphone, tablet device, etc.) and a peripheral device(s). A peripheral device may be a device to provide input to a computing device and/or to provide output from a computing device. Examples of a peripheral device may include a monitor, keyboard, mouse, camera, external storage device, track pad, game controller, projector, etc. For instance, a docking device may be capable of connecting a laptop computer to multiple monitors (e.g., separate monitors, monitors not integrated into the laptop computer), a keyboard (e.g., separate keyboard, full-size keyboard, keyboard not integrated into the laptop computer), a mouse (e.g., separate mouse), etc. In some examples, the first electronic device 102 may be a first docking device and/or a second electronic device 110 may be a second docking device.
[0010] The first electronic device 102 may include a port 104, a controller 106, and/or firmware data 108. A port 104 may be connecting hardware (e.g., a socket, a fitting with a conductor(s), etc.). For instance, the port 104 may enable a plug, cable, cable head, termination, etc., to be connected to the first electronic device 102. In some examples, the port 104 may enable the first electronic device 102 to communicate with other electronic devices (e.g., a second electronic device 110). For example, the port 104 may connect to a second electronic device 110. For instance, the port 104 may be utilized to connect the first electronic device 102 to the second electronic device 110. In some examples, the port 104 may connect to the second electronic device 110
with a wired connection. For instance, a wire and/or cable (e.g., USB-C cable) may be connected to the port 104 and to the second electronic device 110. In some examples, the port 104 may provide received information to the controller 106. In some examples, the first electronic device 102 and/or the second electronic device 110 may not be connected to a host (e.g., computing device, laptop computer, etc.) during a firmware check and/or update procedure. For instance, two docking devices may be connected to each other instead of a host. In some examples, the first electronic device 102 and/or the second electronic device 110 may be connected to a host (via another port(s), for instance) during a firmware check and/or update procedure.
[0011] In some examples, the port 104 may be included in an interface. An interface may be a device to interface with another device. In some examples, an interface (e.g., interface for an external connection) may include connector hardware (e.g., a port, a plug, a connector, a controller, circuitry, etc.) and instructions for operating the connector hardware. For instance, some interfaces may be utilized to interface with a device (e.g., the second electronic device 110) that is external to the first electronic device 102. In some examples, an interface may enable a connection(s) (e.g., wire(s), cable(s), etc.). Examples of interfaces may include a Universal Serial Bus (USB) interface (e.g., USB Type- C (USB-C), USB Type-A, USB Type-B, USB 2.0, USB 3.0, USB Mini-B, USB Micro-B, etc.), Lightning interface, Ethernet interface, etc. For instance, an electronic device may include an interface and/or may be connected to another electronic device (e.g., the second electronic device 110) via an interface.
[0012] Some interfaces may include a power delivery controller. A power delivery controller may be circuitry to control power delivery through an interface. In some examples, a power delivery controller may include power delivery controller firmware and/or may execute power delivery controller firmware to perform power delivery functions. Power delivery controller firmware may be instructions for performing a power delivery operation(s). For example, a power delivery controller of an interface may execute power delivery controller firmware to negotiate with a power delivery controller of a connected interface to establish voltage, amperage, and/or wattage for power delivery. In some
examples, the interface may include memory or storage to store the power delivery controller firmware. In some examples, a power delivery controller may receive information via the port 104. In some examples, the power delivery controller may provide the information to the controller 106.
[0013] In some examples, the first electronic device 102 (e.g., controller 106, port 104, and/or power delivery controller, etc.) may communicate with the second electronic device 110 using a signal(s). The signals may communicate information. In some examples, the information may be formatted as a digital binary code(s).
[0014] In some examples, the first electronic device 102 (e.g., controller 106, port 104, and/or power delivery controller, etc.) may communicate with the second electronic device 110 using vendor defined messages (VDMs). VDMs are messages that can be flexibly defined to carry a target type of payload data. For example, a VDM may be defined to carry the identifier information (e.g., vendor identifier information and/or product identifier information), component identifier(s), firmware version(s), and/or firmware. A VDM(s) may be defined to indicate an information request(s) (for identifier information, component identifier(s), firmware version(s), and/or firmware, for instance). In some examples, a VDM may include a header with a number of bits (e.g., 14 bits) and a field(s) with a number of bits (e.g., up to six fields of 32 bits each). In some examples, the first electronic device 102 may send information to the second electronic device 110 and/or may receive information from the second electronic device 110 as a VDM(s).
[0015] The controller 106 may be hardware to perform an operation(s) on the first electronic device 102. Examples of the controller 106 may include integrated circuitry, a microcontroller unit (MCU), a microprocessor, a field- programmable gate array (FPGA), an application-specific integrated circuit (ASIC), and/or other hardware device. In some examples, the controller 106 may fetch, decode, and/or execute instructions stored in memory. In some examples, the controller 106 may include an electronic circuit(s) that include electronic components for performing a function(s) of the instructions.
[0016] In some examples, the first electronic device 102 may include additional hardware and/or circuitry (not shown in FIG. 1 ). For instance, the first electronic device 102 may include a chip(s) (e.g., chipset(s)) to perform an operation(s). A chip may be semiconductor material (e.g., a piece of silicon, wafer, etc.) that includes electronic circuitry and/or electronic components (e.g., transistor(s), resistor(s), capacitor(s), inductor(s), wire(s), and/or trace(s), etc.). Examples of the hardware, circuitry, chip(s), and/or chipsets may include a power delivery controller, display port hub, scaler, audio chip, USB controller chip, local area network (LAN) chip, magnetic secure transmission (MST) hub chip, sensor chip(s), and/or other chip(s) capable of a firmware update (from a controller 106 path, for instance), etc. For instance, a power delivery controller may be a chipset to perform the operations described above, a display port (e.g., DisplayPort) hub may be a chipset to output data to a monitor(s), and a scaler may be a chipset to scale image data (e.g., scale pixel data to a pixel format for a monitor(s)), etc. For example, a scaler may be an MCU for a monitor(s). In some examples, a scaler may scale an input image (e.g., zoom in or zoom out an input image) and/or may process pixel data. For instance, a scaler may include and/or execute a color engine (for controlling gamma, contrast, and/or brightness, etc.). In some examples, a scaler may process multiple input signals and/or provide control functions for an on-screen display (OSD).
[0017] In some examples, the controller 106 may be coupled to and/or communicate with a component(s) (e.g., hardware, circuitry, chip(s), and/or chipsets) of the first electronic device 102. For example, the controller 106 may communicate with a component(s) using an interface (e.g., internal interface). Examples of interfaces (e.g., internal interfaces) include an inter-integrated circuit (I2C) interface and a serial peripheral interface (SPI). For instance, an internal interface may be an interface between internal components. In some examples, an internal interface may enable communication between internal components. In some examples, an internal interface may be an interface between the controller 106 and another component(s) of the first electronic device 102.
[0018] The first electronic device 102 may store the firmware data 108. The firmware data 108 may be firmware and/or data about firmware. For example, the firmware data 108 may include firmware and/or firmware metadata. For instance, the firmware data 108 may include firmware (e.g., hardware instructions), information indicating a firmware version, and/or information indicating a component identifier. A firmware version may be data (e.g., a number, characters, a string, etc.) indicating a version (e.g., release, version number, date, etc.) of the firmware. The firmware version may provide an indication of an age or variant of the firmware (relative to another firmware version(s), for example). For instance, a higher version number may indicate newer firmware relative to a lower version number, which may indicate older firmware.
[0019] The firmware data 108 may correspond to hardware and/or a circuitry(ies) of the first electronic device. For example, portions of the firmware data 108 may correspond to hardware, circuitry, chip(s), and/or chipset(s) included in the first electronic device 102. In some examples, portions of the firmware data 108 may be stored by separate hardware, circuitry(ies), chip(s), and/or chipset(s) of the first electronic device 102 (e.g., in separate memories of the different hardware, circuitry, chip(s), and/or chipset(s), etc.). For instance, different portions of the firmware data 108 may be stored by a power delivery controller, display port hub, scaler, etc. In some examples, a component(s) (e.g., hardware, circuitry, chip(s), chipset(s), power delivery controller, display port hub, scaler, etc.) of the first electronic device 102 may include or have access to memory or storage (e.g., memory cells, registers, flash memory, etc.), in which respective portions of the firmware data 108 (e.g., respective component firmware) may be stored.
[0020] In some examples, the controller 106 may determine whether the first electronic device 102 is a same type (e.g., kind, class, model, and/or product) as the second electronic device 110. For instance, the controller 106 may determine whether the second electronic device 110 is the same kind of electronic device as the first electronic device 102. Two electronic devices may be the same type of electronic device when the two electronic devices are the
same type of product, when they are made by the same vendor (e.g., manufacturer), and/or when they include the same types of components.
[0021] In some examples, the first electronic device 102 (e.g., controller 106) may request and/or receive identifier information from the second electronic device 110 to determine whether the first electronic device 102 is the same type as the second electronic device 110. For example, the first electronic device 102 (e.g., controller 106) may send a request to the second electronic device 110 via the port 104 for the identifier information to determine whether the first electronic device 102 and the second electronic device 110 are the same type. The second electronic device 110 may send the identifier information to the first electronic device 102. Identifier information may be information that indicates a type of device. Examples of identifier information may include a vendor identifier and a product identifier. A vendor identifier may be data (e.g., a number, string, characters, code, etc.) that indicates a vendor (e.g., manufacturer) of an electronic device. A product identifier may be data (e.g., a number, string, characters, code, etc.) that indicates a product type of an electronic device.
[0022] In some examples, the first electronic device 102 (e.g., controller 106) may compare identifier information of the first electronic device 102 with identifier information of the second electronic device 110 to determine whether the first electronic device 102 and the second electronic device 110 are the same type. For example, to determine whether the first electronic device 102 is the same type as the second electronic device 110, the controller 106 may compare a first vendor identifier and/or a first product identifier of the first electronic device 102 to a second vendor identifier and/or a second product identifier of the second electronic device 110. If the vendor identifiers and/or product identifiers match (e.g., contain the same numbers, strings, characters, etc.), the first electronic device 102 and the second electronic device 110 may be determined to be the same type.
[0023] In some examples, the controller 106 may determine whether the first electronic device 102 has newer or older firmware than the second electronic device 110. For instance, the controller 106 may determine whether the second electronic device 110 has newer or older firmware for a component(s) than the
first electronic device 102. Firmware may be newer if a firmware version of the firmware indicates a more recent firmware version.
[0024] In some examples, the first electronic device 102 (e.g., controller 106) may request and/or receive a firmware version(s) from the second electronic device 110 to determine whether the first electronic device 102 has newer and/or older firmware than the second electronic device 110. For example, the first electronic device 102 (e.g., controller 106) may send a request to the second electronic device 110 via the port 104 for the firmware version(s) to determine whether the first electronic device 102 has newer and/or older firmware than the second electronic device 110. The second electronic device 110 may send the firmware version(s) to the first electronic device 102. For example, the second electronic device 110 may send firmware versions corresponding to components of the second electronic device 110.
[0025] In some examples, the first electronic device 102 (e.g., controller 106) may, in response to a determination that the first electronic device 102 is the same type as the second electronic device 110, compare a first firmware version of the first electronic device to a second firmware version of the second electronic device 110. For instance, the controller 106 may compare the first firmware version of a component of the first electronic device 102 to the second firmware version of a component of the second electronic device 110 to determine whether the first firmware version is newer, older, or the same as the second firmware version. For instance, if the first firmware version is (or includes) a higher number than the second firmware version, the first firmware version may be newer than the second firmware version. In some examples, if the second firmware version is a higher number than the first firmware version, the first firmware version may be older than the second firmware version. In some examples, if the first firmware version is a same number as (e.g., equal to) the second firmware version, the first firmware version may be the same as the second firmware version.
[0026] In some examples, when the first firmware version is older than the second firmware version, the controller 106 may update (e.g., replace, modify, switch, etc.) a first firmware of the first electronic device 102 with a second
firmware from the second electronic device 110. For instance, the first electronic device 102 (e.g., controller 106) may receive the second firmware from the second electronic device 110 and overwrite the first firmware (e.g., firmware data 108 or a portion thereof) with the second firmware (e.g., firmware data 112 or a portion thereof). In some examples, the first electronic device 102 may include a power delivery controller to send a request for the second firmware to the second electronic device 110 when the first firmware version is older than the second firmware version.
[0027] In some examples, when the second firmware version is older than the first firmware version, the controller 106 may send a first firmware (of the first electronic device 102, for example) to the second electronic device 110 to update the second firmware (of the second electronic device 110, for example) with the first firmware. For instance, the first electronic device 102 (e.g., controller 106) may send the first firmware to the second electronic device 110. In some examples, the second electronic device 110 may overwrite the second firmware (e.g., firmware data 112 or a portion thereof) with the first firmware (e.g., firmware data 108 or a portion thereof).
[0028] In some examples, a first firmware may be “of” the first electronic device 102 if that firmware is or has been utilized (e.g., executed) by the first electronic device 102, is or has been utilized (e.g., executed) by a component of the first electronic device 102, and/or is instructions to be executed by a component of the first electronic device 102. In some examples, firmware is not “of” an electronic device if that firmware is not to be utilized and/or executed by any component of the electronic device (e.g., if the electronic device is merely distributing or passing the firmware). In some examples, a second firmware is of the second electronic device 110 if that firmware is utilized (e.g., executed) by the second electronic device 110, is utilized (e.g., executed) by a component of the second electronic device 110, and/or is instructions to be executed by a component of the second electronic device 110.
[0029] In some examples, the first electronic device 102 (e.g., controller 106) may compare a component identifier of the first electronic device 102 to a component identifier of the second electronic device 110. A component identifier
may be data (e.g., a number, string, characters, code, etc.) that identifies a component (e.g., hardware, circuitry, chip, chipset, etc.) of an electronic device. In some examples, component identifiers may be utilized to identify components of different electronic devices to enable firmware version comparison of the same type of component. For instance, the first electronic device 102 may receive component identifiers from the second electronic device 110 in association with firmware versions for multiple components of the second electronic device 110.
[0030] In some examples, the controller 106 may compare a first chip identifier of the first electronic device 102 to a second chip identifier from the second electronic device 110. If the chip identifiers match, the controller 106 may compare firmware versions associated with the chip identifiers to determine whether the firmware versions are the same or different (e.g., newer or older). For instance, the controller 106 may receive the first chip identifier from a first chip via an internal interface (e.g., I2C). The first electronic device 102 may include a power delivery controller to receive the second chip identifier from the second electronic device 110 and to send the second chip identifier to the controller 106 (via an internal interface, such as I2C, for example). The controller 106 may then compare the first and second chip identifiers. Corresponding firmware versions may be compared for matching chip identifiers. For example, firmware versions may be compared for components with matching identifiers.
[0031] In some examples, the first electronic device 102 may trigger the firmware update procedure. The firmware update procedure may include an operation(s) described herein. For instance, the firmware update procedure may include determining whether electronic devices are a same type, comparing firmware versions, and updating firmware with an older firmware version. In some examples, the first electronic device 102 may include and/or may be connected to an input device (e.g., button, touch pad, touch screen, keyboard, mouse, wireless receiver, image sensor, motion sensor, light sensor, etc.). In some examples, the first electronic device may trigger the firmware update procedure based on an input from an input device. For example, the first
electronic device 102 may include a button to trigger the firmware update procedure. For example, when the button is actuated (e.g., pressed), the first electronic device 102 may request and/or receive identifier information from the second electronic device 110 (and/or send identifier information to the second electronic device), and so on. In some examples, the controller 106 may trigger a firmware update procedure in response to detecting that the second electronic device 110 is a docking device. For instance, upon an initial connection, the first electronic device 102 and/or second electronic device 110 may send and/or receive (e.g., exchange) information indicating whether the first electronic device 102 is a docking device and/or the second electronic device 110 is a docking device. In a case that the first electronic device 102 and the second electronic device 110 are docking devices, the controller 106 may trigger the firmware update procedure. In some examples, the first electronic device 102 may trigger the firmware update procedure in response to a received message. For instance, the first electronic device 102 may be connected to a host and may receive a message to initiate the firmware update procedure.
[0032] FIG. 2 is a flow diagram illustrating an example of a method 200 for performing firmware updates. The method 200 and/or a method 200 element(s) may be performed by an electronic device (e.g., docking device). For example, the method 200 may be performed by the first electronic device 102 (e.g., controller 106) described in FIG. 1 , the first docking device 314 described in FIG. 3, and/or the second docking device 316 described in FIG. 3.
[0033] At 202, the electronic device may determine whether to trigger a firmware update procedure. In some examples, determining whether to trigger a firmware update procedure may be performed as described in FIG. 1. For instance, the electronic device may determine whether an input from an input device has been received (e.g., whether a button has been pressed, whether a wireless signal has been received, etc.), whether a connection to a docking station is detected, and/or whether a message is received from a host to initiate the firmware update procedure. In a case that the electronic device determines not to trigger an update procedure, the electronic device may return to
determining whether to trigger a firmware update procedure (e.g., continue to monitor for a condition for triggering the update procedure).
[0034] In a case that the electronic device determines to trigger the firmware update procedure, the electronic device may receive information at 204. In some examples, receiving information may be performed as described in FIG. 1. For example, the electronic device may request and/or receive identifier information (e.g., product identifier, vendor identifier), component identifier(s), and/or firmware version(s) from a second electronic device. In some examples, receiving information may be performed in different stages. For instance, identifier information may be received and compared to determine that the received identifier information matches identifier information (e.g., local identifier information) of the electronic device. In response to determining a match, component identifier(s) and/or firmware version(s) may be requested and/or received. In some examples, receiving information may be performed in one stage. For instance, the electronic device may request and/or receive the identifier information, component identifier(s), and/or firmware version(s) together.
[0035] At 206, the electronic device may determine whether the received identifier information (e.g., vendor identifier and/or product identifier) matches identifier information (e.g., local identifier information) of the electronic device (e.g., the vendor identifier and/or product identifier of the electronic device). In some examples, determining whether identifier information matches may be performed as described in FIG. 1. In some examples, the electronic device may determine that identifier information matches if a received product identifier matches the product identifier of the electronic device. In some examples, the electronic device may determine that identifier information matches if a received vendor identifier matches the vendor identifier of the electronic device. In some examples, the electronic device may determine that identifier information matches if a received product identifier matches the product identifier of the electronic device and if a received vendor identifier matches the vendor identifier of the electronic device. In some examples, the electronic device may determine that identifier information matches if a received component
identifier(s) match the component identifier(s) of the electronic device. In some examples, the electronic device may determine that identifier information matches if a received product identifier matches the product identifier of the electronic device, if a received vendor identifier matches the vendor identifier of the electronic device, and if the received component identifier(s) match the component identifier(s) of the electronic device. In a case that the identifier information does not match, operation may end at 208.
[0036] In response to a determination that the identifier information matches, the electronic device may determine whether firmware versions match at 210. In some examples, determining whether firmware versions match may be performed as described in FIG. 1. For instance, the electronic device may determine whether a first firmware version of the electronic device is the same as, older than, or newer than a second firmware version received from the second electronic device. In some examples, the electronic device may compare numbers, characters, and/or strings, etc., of the firmware versions to determine whether the firmware versions match or if one of the firmware versions is older than the other. In some examples, the electronic device may make the determination for a set of firmware versions (where each firmware version corresponds to a component of the electronic device, for instance). In a case that the firmware versions match, operation may end at 208.
[0037] In response to a determination that the second firmware version is older than the first firmware version, the electronic device may send first firmware (corresponding to the first firmware version, for instance) to the second electronic device at 212. In some examples, sending the first firmware to the second electronic device may be performed as described in FIG. 1 . Sending the first firmware may enable the second electronic device to update second firmware corresponding to the second firmware version. Operation may return to determining whether firmware versions match at 210. For instance, the electronic device may receive an updated firmware version from the second electronic device and may confirm that the firmware versions match, after which operation may end at 208. In some cases, the electronic device may send the first firmware again in a case that the first firmware was initially sent
unsuccessfully and/or in a case that updating the second firmware of the second electronic device was unsuccessful. In some examples, the electronic device may determine whether a firmware version for a next component matches a firmware version from the second electronic device. For instance, some or all of the operations of the method 200 may repeat for multiple components.
[0038] In response to a determination that the first firmware version is older than the second firmware version, the electronic device may receive second firmware from the second electronic device at 214. In some examples, receiving the second firmware from the second electronic device may be performed as described in FIG. 1. For example, the electronic device may request and/or receive the second firmware from the second electronic device using an interface and/or connection.
[0039] At 216, the electronic device may update first firmware with second firmware. In some examples, updating the first firmware with the second firmware may be performed as described in FIG. 1. For example, the electronic device may overwrite the first firmware with the second firmware in the memory of a component to which the second firmware corresponds.
[0040] Operation may return to determining whether firmware versions match at 210. For instance, the electronic device may confirm that the firmware versions match, after which operation may end at 208. In some cases, the electronic device may request and/or receive the second firmware again in a case that the second firmware was initially sent unsuccessfully and/or in a case that updating the first firmware was unsuccessful. In some examples, the electronic device may determine whether a firmware version for a next component matches a firmware version from the second electronic device. For instance, some or all of the operations of the method 200 may repeat for multiple components. In some examples, an element(s) of the method 200 may be omitted, divided, and/or combined.
[0041] Some of the techniques described herein may enable updating firmware from one docking device to another docking device. For example, a host may not be utilized to update firmware in some examples. In some
examples, firmware may be updated between two electronic devices (e.g., docking devices) when the electronic devices are the same type. For instance, firmware on docking devices may be updated without a host connection and/or network (e.g., Internet) connection in some examples. In some examples, the capability to update firmware between electronic devices (e.g., docking devices) may allow a more efficient firmware updating procedure, especially when multiple docking devices are to be updated.
[0042] FIG. 3 is a block diagram of an example of a first docking device 314 and a second docking device 316 that may be used in updating firmware. In some examples, the first docking device 314 and/or the second docking device 316 may be examples of the first electronic device 102 and/or second electronic device 110 described in FIG. 1 .
[0043] The first docking device 314 may include components, which may include a first power delivery controller 318a, a first controller 322a, a first memory 336a, a first chip 324a, a second chip 328a, and/or a third chip 332a. In some examples, the first power delivery controller 318a may store and/or execute first power delivery controller firmware data 320a. In some examples, the first chip 324a may store and/or execute first firmware data 326a. For instance, the first chip 324a may store a first firmware version in the first firmware data 326a and/or the first chip 324a may execute first firmware that is included in the first firmware data 326a. In some examples, the second chip 328a may store and/or execute second firmware data 330a. In some examples, the third chip 332a may store and/or execute third firmware data 334a. Each firmware data 326a, 330a, 334a may include firmware and a firmware version corresponding to the firmware for respective chips 324a, 328a, 332a of the first docking device 314. In some examples, the first memory 336a may store first identifier information 338a.
[0044] The second docking device 316 may include components, which may include a second power delivery controller 318b, a second controller 322b, a second memory 336b, a fourth chip 324b, a fifth chip 328b, and/or a sixth chip 332b. In some examples, the second power delivery controller 318b may store and/or execute second power delivery controller firmware data 320b. In some
examples, the fourth chip 324b may store and/or execute fourth firmware data 326b. For instance, the fourth chip 324b may store a second firmware version in the fourth firmware data 326b and/or the fourth chip 324b may execute second firmware that is included in the fourth firmware data 326b. In some examples, the fifth chip 328b may store and/or execute fifth firmware data 330b. In some examples, the sixth chip 332b may store and/or execute sixth firmware data 334b. Each firmware data 326b, 330b, 334b may include firmware and a firmware version corresponding to the firmware for respective chips 324b, 328b, 332b of the second docking device 316. In some examples, the second memory 336b may store second identifier information 338b.
[0045] In some examples, the first power delivery controller 318a may enable the first docking device 314 to communicate with other electronic devices (e.g., the second docking device 316). For example, the first power delivery controller 318a may connect to a second docking device 316. In some examples, the first power delivery controller 318a may connect to the second docking device 316 (e.g., the second power delivery controller 318b) with a wired connection. In some examples, the first power delivery controller 318a may be included in an interface (e.g., USB-C interface). For instance, a wire and/or cable (e.g., USB-C cable) may be connected to the first power delivery controller 318a and to the second power delivery controller 318b.
[0046] The first controller 322a may be hardware to perform an operation(s) on the first docking device 314. In some examples, the first controller 322a may fetch, decode, and/or execute instructions stored in the first memory 336a. In some examples, the first controller 322a may include an electronic circuit(s) that include electronic components for performing a function(s) of the instructions. The first controller 322a may be coupled to and/or communicate with a component(s) (e.g., first power delivery controller 318a, first chip 324a, second chip 328a, third chip 332a, and/or first memory 336a) of the first docking device 314 by an internal interface (e.g., I2C interface).
[0047] The second controller 322b may be hardware to perform an operation(s) on the second docking device 316. In some examples, the second controller 322b may fetch, decode, and/or execute instructions stored in the
second memory 336b. In some examples, the second controller 322b may include an electronic circuit(s) that include electronic components for performing a function(s) of the instructions. The second controller 322b may be coupled to and/or communicate with a component(s) (e.g., the second power delivery controller 318b, the fourth chip 324b, the fifth chip 328b, the sixth chip 332b, and/or the second memory 336b) of the first docking device 314 by an internal interface (e.g., I2C interface).
[0048] In some examples, the first controller 322a may request and/or receive information from the first power delivery controller 318a, the first chip 324a, the second chip 328a, the third chip 332a, and/or the first memory 336a. For example, the first controller 322a may request and/or receive first identifier information 338a (e.g., a first product identifier, a first vendor identifier, and/or first component identifier(s)) from the first memory 336a. In some examples, the first controller 322a may request and/or receive a firmware version from the first power delivery controller 318a (e.g., first power delivery controller firmware 320a), the first chip 324a (e.g., the first firmware data 326a), the second chip 328a (e.g., the second firmware data 330a), and/or the third chip 332a (e.g., the third firmware data 334a). A firmware version may indicate whether corresponding firmware is older than, newer than, or the same as other firmware.
[0049] In some examples, the second controller 322b may request and/or receive information from the second power delivery controller 318b, the fourth chip 324b, the fifth chip 328b, the sixth chip 332b, and/or the second memory 336b. For example, the second controller 322b may request and/or receive second identifier information 338b (e.g., a second product identifier, a second vendor identifier, and/or second component identifier(s)) from the second memory 336b. In some examples, the second controller 322b may request and/or receive a firmware version from the second power delivery controller 318b (e.g., the second power delivery controller firmware data 320b), the fourth chip 324b (e.g., the fourth firmware data 326b), the fifth chip 328b (e.g., the fifth firmware data 330b), and/or the sixth chip 332b (e.g., the sixth firmware data 334b).
[0050] In some examples, the first docking device 314 (e.g., the first controller 322a) may request and/or receive information from the second docking device 316. For instance, the first docking device 314 (e.g., the first controller 322a) may request and/or receive a firmware version of the second power delivery controller 318b (from the second power delivery controller firmware data 320b, for instance), of the fourth chip 324b (from the fourth firmware data 326b), of the fifth chip 328b (from the fifth firmware data 330b), and/or of the sixth chip 332b (from the sixth firmware data 334b). In some examples, the first docking device 314 (e.g., the first controller 322a) may request and/or receive a component identifier of the second power delivery controller 318b (from the second power delivery controller firmware data 320b, for instance), of the fourth chip 324b (from the fourth firmware data 326b), of the fifth chip 328b (from the fifth firmware data 330b), and/or of the sixth chip 332b (from the sixth firmware data 334b).
[0051] In some examples, the second docking device 316 (e.g., the second controller 322b) may request and/or receive information from the first docking device 314. For instance, the second docking device 316 (e.g., the second controller 322b) may request and/or receive a firmware version of the first power delivery controller 318a (from the first power delivery controller firmware data 320a, for instance), of the first chip 324a (from the first firmware data 326a), of the second chip 328a (from the second firmware data 330a), and/or of the third chip 332a (from the third firmware data 334a). In some examples, the second docking device 316 (e.g., the second controller 322b) may request and/or receive a component identifier of the first power delivery controller 318a (from the first power delivery controller firmware data 320a, for instance), of the first chip 324a (from the first firmware data 326a), of the second chip 328a (from the second firmware data 330a), and/or of the third chip 332a (from the third firmware data 334a).
[0052] In some examples, the first controller 322a may compare a first firmware version to a second firmware version to determine that the first firmware is newer than, older than, or the same as the second firmware. For instance, the first controller 322a may compare a first firmware version from the
first chip 324a (e.g., from the first firmware data 326a) to a second firmware version from the fourth chip 324b (e.g., from the fourth firmware data 326b). The comparison may indicate that the first firmware from the first chip 324a (e.g., from the first firmware data 326a) is newer than, older than, or the same as the second firmware from the fourth chip 324b (e.g., from the fourth firmware data 326b).
[0053] In some examples, the first controller 322a may compare a first component identifier to a second component identifier to compare associated firmware versions. For instance, the first controller 322a may compare a first component identifier of the first chip 324a (e.g., from the first firmware data 326a and/or from the first identifier information 338a) to a second component identifier of the fourth chip 324b (e.g., from the fourth firmware data 326b and/or the second identifier information 338b). The comparison may indicate that the first firmware version corresponds to the first chip 324a (e.g., from the first firmware data 326a) and that the second firmware version corresponds to the fourth chip 324b (e.g., the same type of chips for comparison).
[0054] In some examples, the first docking device 314 may send newer firmware to the second docking device 316 and/or may receive newer firmware from the second docking device 316 for a component(s) when the first docking device 314 is the same type as the second docking device 316. For instance, the first controller 322a may send the first firmware to the first power delivery controller 318a from the first chip 324a when a second product identifier of the second docking device 316 matches a first product identifier of the first docking device 314 and when the first firmware is newer than the second firmware of the second docking device 316. For instance, the first controller 322a may request and/or receive first firmware of the first chip 324a (from the first firmware data 326a) and may provide the first firmware to the first power delivery controller 318a for transmission to the second docking device 316. The second docking device 316 (e.g., the second controller 322b) may receive the first firmware and utilize the first firmware to update firmware from the fourth chip 324b.
[0055] In some examples, the first controller 322a may compare a firmware version of the first power delivery controller 318a (from the first power delivery
controller firmware data 320a) to a received firmware version of the second power delivery controller 318b of the second docking device 316. In some examples, the first controller 322a may update firmware of the first power delivery controller 318a in response to a determination that the firmware version of the first power delivery controller 318a is older than the received firmware version of the second power delivery controller 318b. For instance, the first controller 322a may request and/or receive the firmware of the second power delivery controller 318b from the second docking device 316 when a second product identifier of the second docking device 316 matches a first product identifier of the first docking device 314 and when the firmware of the first power delivery controller 318a is older than the firmware of the second power delivery controller 318b. The first docking device 314 (e.g., the first controller 322a) may receive the firmware of the second power delivery controller 318b and utilize the firmware to update firmware of the first power delivery controller 318a.
[0056] Some examples of firmware updates are given in FIG. 3. Other examples may be performed in accordance with the techniques described herein. For instance, the first docking device 314 and/or the second docking device 316 may compare firmware versions for each component and may exchange firmware to enable updating an older firmware version(s) to a newer firmware version(s) for a component(s).
[0057] FIG. 4 is a block diagram illustrating an example of a computer- readable medium 440 for firmware updates. The computer-readable medium may be a non-transitory, tangible computer-readable medium 440. The computer-readable medium 440 may be, for example, RAM, EEPROM, a storage device, an optical disc, and the like. In some examples, the computer- readable medium 440 may be volatile and/or non-volatile memory, such as DRAM, EEPROM, magnetoresistive random-access memory (MRAM), phasechange random-access memory (PCRAM), memristor, flash memory, and the like. In some examples, the first memory 336a or the second memory 336b described in FIG. 3 may be an example of the computer-readable medium 440 described in FIG. 4.
[0058] The computer-readable medium 440 may include code (e.g., data, executable instructions, and/or executable code). For example, the computer- readable medium 440 may include trigger instructions 442, matching instructions 444, firmware comparison instructions 446, and/or updating instructions 448.
[0059] In some examples, the trigger instructions 442 may be instructions when executed cause a controller of a first electronic device to detect a connection between electronic devices (e.g., between docking devices). In some examples, the controller may compare the first product identifier and the second product identifier as described in FIG. 1 , FIG. 2, and/or FIG. 3. In some examples, the trigger instructions 442 may be code to cause the controller to execute the matching instructions 444 (e.g., to compare a first product identifier to a second product identifier, etc.) in response to the detection. In some examples, the first electronic device may be a first docking device and the second electronic device may be a second docking device that is coupled to the first docking device without a host (e.g., the first docking device and the second docking device are not coupled to a host).
[0060] In some examples, the matching instructions 444 may be instructions when executed cause the controller of the first electronic device to compare a first product identifier of the first electronic device to a second product identifier of a second electronic device. In some examples, the controller may compare the first product identifier and the second product identifier as described in FIG. 1 , FIG. 2, and/or FIG. 3.
[0061] In some examples, the matching instructions 444 may be instructions when executed cause the controller of the first electronic device to compare a first vendor identifier of the first electronic device to a second vendor identifier of the second electronic device. In some examples, the controller may compare the first vendor identifier and the second vendor identifier as described in FIG. 1 , FIG. 2, and/or FIG. 3.
[0062] In some examples, the firmware comparison instructions 446 may be code to cause the controller to, in response to a determination that the first product identifier matches the second product identifier and that the first vendor
identifier matches the second vendor identifier, determine whether a first firmware version of the first electronic device is newer than, older than, or the same as a second firmware version of the second electronic device that is coupled to the first electronic device. In some examples, the controller may determine whether the first firmware version is newer, older, or the same as described in FIG. 1 , FIG. 2, and/or FIG. 3.
[0063] In some examples, the updating instructions 448 may be code to cause the controller to update older firmware on the first electronic device and/or send firmware to update older firmware on the second electronic device. For example, the updating instructions 448 may be code to cause the controller to, in response to a determination that the first firmware version is newer than the second firmware version, send first firmware of the first electronic device to the second electronic device. In some examples, the controller may send the first firmware as described in FIG. 1 , FIG. 2, and/or FIG. 3.
[0064] As used herein, the term “and/or” may mean an item or items. For example, the phrase “A, B, and/or C” may mean any of: A (without B and C), B (without A and C), C (without A and B), A and B (but not C), B and C (but not A), A and C (but not B), or all of A, B, and C.
[0065] While various examples are described herein, the disclosure is not limited to the examples. Variations of the examples described herein may be within the scope of the disclosure. For example, aspects or elements of the examples described herein may be omitted or combined.
Claims
1 . A first electronic device, comprising: a port to connect to a second electronic device; and a controller to: determine whether the first electronic device is a same type as the second electronic device; in response to a determination that the first electronic device is the same type as the second electronic device, compare a first firmware version of the first electronic device to a second firmware version of the second electronic device; and when the first firmware version is older than the second firmware version, update a first firmware of the first electronic device with a second firmware from the second electronic device.
2. The first electronic device of claim 1 , wherein the first electronic device is a first docking device and the second electronic device is a second docking device.
3. The first electronic device of claim 1 , wherein when the second firmware version is older than the first firmware version, the controller is to send the first firmware to the second electronic device to update the second firmware with the first firmware.
4. The first electronic device of claim 1 , wherein to determine whether the first electronic device is the same type as the second electronic device, the controller is to compare a first vendor identifier and a first product identifier of the first electronic device to a second vendor identifier and a second product identifier of the second electronic device.
5. The first electronic device of claim 1 , wherein the controller is to compare a first chip identifier of the first electronic device to a second chip identifier from the second electronic device.
6. The first electronic device of claim 5, wherein the controller is to receive the first chip identifier from a first chip via an internal interface, the first electronic device further comprising a power delivery controller to receive the second chip identifier from the second electronic device and to send the second chip identifier to the controller.
7. The first electronic device of claim 1 , further comprising a button to trigger a firmware update procedure.
8. The first electronic device of claim 1 , the controller is to trigger a firmware update procedure in response to detecting that the second electronic device is a docking device.
9. The first electronic device of claim 1 , further comprising a power delivery controller to send a request for the second firmware to the second electronic device when the first firmware version is older than the second firmware version.
10. A first docking device, comprising: a chip to execute first firmware; a power delivery controller to connect to a second docking device; and a controller coupled to the power delivery controller, wherein the controller is to send the first firmware to the power delivery controller from the chip when a second product identifier of the second docking device matches a first product identifier of the first docking device and when the first firmware is newer than second firmware of the second docking device.
11 . The first docking device of claim 10, wherein the controller is to compare a first firmware version to a second firmware version to determine that the first firmware is newer than the second firmware.
12. The first docking device of claim 10, wherein the controller is to compare a firmware version of the power delivery controller to a received firmware version of a second power delivery controller of the second docking device, and is to update firmware of the power delivery controller in response to a determination that the firmware version is older than the received firmware version.
13. A non-transitory tangible computer-readable medium comprising instructions when executed cause a controller of a first electronic device to: compare a first product identifier of the first electronic device to a second product identifier of a second electronic device; compare a first vendor identifier of the first electronic device to a second vendor identifier of the second electronic device; in response to a determination that the first product identifier matches the second product identifier and that the first vendor identifier matches the second vendor identifier, determine whether a first firmware version of the first electronic device is newer than a second firmware version of the second electronic device that is coupled to the first electronic device; and in response to a determination that the first firmware version is newer than the second firmware version, send first firmware of the first electronic device to the second electronic device.
14. The non-transitory tangible computer-readable medium of claim 13, wherein the first electronic device is a first docking device and the second electronic device is a second docking device that is coupled to the first docking device without a host.
27
15. The non-transitory tangible computer-readable medium of claim 13, further comprising instructions when executed cause a controller of the first electronic device to detect a connection between docking devices and to compare the first product identifier to the second product identifier in response to the detection.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2020/048532 WO2022046084A1 (en) | 2020-08-28 | 2020-08-28 | Firmware updates |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2020/048532 WO2022046084A1 (en) | 2020-08-28 | 2020-08-28 | Firmware updates |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2022046084A1 true WO2022046084A1 (en) | 2022-03-03 |
Family
ID=80355541
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2020/048532 Ceased WO2022046084A1 (en) | 2020-08-28 | 2020-08-28 | Firmware updates |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2022046084A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114745740A (en) * | 2022-05-16 | 2022-07-12 | 四川虹美智能科技有限公司 | Intelligent household appliance upgrading system and method |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9092296B1 (en) * | 2012-10-16 | 2015-07-28 | Google Inc. | Selectively updating firmware for multiple connected devices |
| US20170364349A1 (en) * | 2016-06-16 | 2017-12-21 | Axon Enterprise, Inc. | Systems and Methods for Distributing Updates to Devices |
-
2020
- 2020-08-28 WO PCT/US2020/048532 patent/WO2022046084A1/en not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9092296B1 (en) * | 2012-10-16 | 2015-07-28 | Google Inc. | Selectively updating firmware for multiple connected devices |
| US20170364349A1 (en) * | 2016-06-16 | 2017-12-21 | Axon Enterprise, Inc. | Systems and Methods for Distributing Updates to Devices |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114745740A (en) * | 2022-05-16 | 2022-07-12 | 四川虹美智能科技有限公司 | Intelligent household appliance upgrading system and method |
| CN114745740B (en) * | 2022-05-16 | 2023-08-29 | 四川虹美智能科技有限公司 | Intelligent household appliance upgrading system and method |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102177796B1 (en) | Electronic device charging method and apparatus | |
| US9329672B2 (en) | High-definition multimedia interface (HDMI) receiver apparatuses, HDMI systems using the same, and control methods therefor | |
| JP5683696B2 (en) | Detecting cable connections for electronic devices | |
| US10025374B2 (en) | Input/output interface control method and electronic apparatus performing same | |
| US10346333B2 (en) | Intelligent power dongle | |
| TWI614608B (en) | Apparatus, system and method for communication of touch sensor information | |
| US11023030B2 (en) | Electronic device and control method thereof | |
| US10423566B2 (en) | Electronic device and method for controlling external electronic device connected to USB type-C connector | |
| CN104090855B (en) | Compatible method and device for USB mode and MHL mode of USB interface | |
| WO2021227635A1 (en) | Usb interface switching apparatus, usb interface switching method, and terminal device | |
| US20130283028A1 (en) | Adapter identification system and method for computer | |
| CN104950739A (en) | Electronic device, audio device, and method for supplying power to the audio device | |
| TWI673612B (en) | Motherboard with charging function | |
| WO2020206879A1 (en) | Method and device for automatically adapting link width of pcie port, electronic apparatus and storage medium | |
| WO2022046084A1 (en) | Firmware updates | |
| CN110297789A (en) | A method of realizing USB OTG function | |
| WO2025236635A1 (en) | Terminal device starting method and apparatus, device, and storage medium | |
| CN105589823A (en) | Method, apparatus and circuit for realizing USB (universal serial bus) interface multiplexing MHL (mobile high-definition link) | |
| CN116932310A (en) | An interface testing system, method and storage medium | |
| CN112214433B (en) | Terminal equipment and its control method, auxiliary equipment and storage medium | |
| CN116207817A (en) | Charging method, charging device, electronic equipment and readable storage medium | |
| US20230359775A1 (en) | Peripheral device connections responsive to identification data matching | |
| TWI662764B (en) | Motherboard with a smart charging function | |
| CN111521890A (en) | Method for detecting power supply equipment and power supply detection device | |
| CN110333878A (en) | A kind of equipment to be brushed, connector and brush machine system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20951801 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 20951801 Country of ref document: EP Kind code of ref document: A1 |