A better understanding of the present invention may be obtained when the following detailed description is considered in conjunction with the following drawings, in which:
a and 4b illustrate two communication configurations of the USB switching hub, according to an embodiment;
a, 5b, and 5c illustrate additional communication configurations of the USB switching hub, according to an embodiment;
a and 14b illustrate two communication configurations of the USB switching hub, according to an alternate embodiment;
a, 15b, and 15c illustrate additional communication configurations of the USB switching hub, according to an alternate embodiment;
a, 18b, and 18c illustrate the USB switching hub communicatively coupling to a wireless host, according to an embodiment;
d and 18e illustrate various embodiments of the hub and switching logic;
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. Note, the headings are for organizational purposes only and are not meant to be used to limit or interpret the description or claims. Furthermore, note that the word “may” is used throughout this application in a permissive sense (e.g., having the potential to or being able to in some embodiments), not a mandatory sense (i.e., must). The term “include”, and derivations thereof, mean “including, but not limited to”. The term “coupled” means “directly or indirectly connected”.
U.S. patent application Ser. No. 11/424,179 titled “Peripheral Sharing USB Hub” filed on Jun. 14, 2006, whose inventors are Mark R. Bohm, Mark Y. Fu, Henry Wurzburg, James E. Bowles, Robert E. Hollingsworth, Drew J. Dutton, and Akhlesh Nigam, is hereby incorporated by reference as though fully and completely set forth herein.
U.S. patent application Ser. No. 11/100,299 titled “Peripheral Sharing USB Hub” filed on Apr. 6, 2005, whose inventors are Mark R. Bohm, Mark Fu, Henry Wurzburg, James E. Bowles, Robert E. Hollingsworth, and Drew J. Dutton, is hereby incorporated by reference as though fully and completely set forth herein.
U.S. patent application Ser. No. 10/940,406 titled “Universal Serial Bus Switching Hub” filed on Sep. 14, 2004, whose inventors are Henry Wurzburg, James E. Bowles, Robert E. Hollingsworth, Mark R. Bohm, and Drew J. Dutton is hereby incorporated by reference as though fully and completely set forth herein.
U.S. patent application Ser. No. 11/412,431 titled “System and Method for Universal Serial Bus Hub Port Reversal” filed on Apr. 27, 2006, whose inventors are Mark R. Bohm, Donald L. Perkins, and Carl J. Crawford is hereby incorporated by reference as though fully and completely set forth herein.
In some embodiments, upstream devices coupled to upstream ports 117 may enumerate USB switching hub 119 according to the total number (N) of downstream ports 121. For example, USB switching hub 119 may be enumerated as a 4-port hub (corresponding to the four downstream ports 121). In some embodiments, communications between each of downstream ports 121 and upstream ports 117 may be controlled by USB switching hub 119. In some embodiments, when first upstream port 117a is communicating with first downstream port 121a, second upstream port 117b may communicate with second downstream port 121b. Second upstream port 117b may register first downstream port 121a as disconnected. For example, status registers coupled to second upstream port 117b may indicate first downstream port 121a is disconnected (i.e., to appear that no device is electrically connected to first downstream port 121a). The disconnect status may prevent second upstream device 117b from attempting to reset and connect to first peripheral device 121a coupled to first downstream device 121a while a separate upstream device is communicating through first upstream port 117a with first downstream device 125a. By enumerating USB switching hub 119 as a 4-port hub, the upstream devices may not have to re-enumerate USB switching hub 119 (and correspondingly each downstream and/or upstream device coupled to the USB switching hub) each time a downstream device is switched.
In some embodiments, only one upstream device may access any one downstream device at a time. In some embodiments, multiple upstream devices may access separate downstream devices at the same time. In some embodiments, different communication configurations may be implemented. For example, first upstream port 117a may be allowed access to the first three downstream ports (121a, 121b, and 121c) and second upstream port 117b may be allowed access to fourth downstream port 121d. Devices coupled to first upstream port 117a and second upstream port 117b may have enumerated USB switching hub 119 as a 4-port hub, but in this example, a device coupled to first upstream port 117a may register fourth downstream port 121d as disconnected while a device coupled to second upstream port 117b may register the first three downstream ports (121a, 121b, and 121c) as disconnected.
In a second communication configuration, first upstream port 117a may be allowed to access fourth downstream port 121d while second upstream port 117b may be allowed to access the first three downstream ports (121a, 121b, and 121c). Other communication configurations are also possible (e.g., in one communication configuration neither upstream port 117 may be allowed to access any downstream port 121). In some embodiments, USB switching hub 119, after receiving a control signal (e.g., from a computer, a different attached device, a person, a sensor, a logic internal to USB switching hub 119, etc.), may switch between the first communication configuration and the second communication configuration (or another communication configuration). In some embodiments, USB switching hub 119 may not receive a control signal before switching communication configurations (e.g., switching access for first downstream device 125a from first upstream port 117a to second upstream port 117b).
In some embodiments, USB switching hub 119 may have multiple downstream ports 121 for coupling to multiple peripheral devices 125. Peripheral devices 125 may include USB printers, scanners, digital cameras, digital camera docks, consumer audio/video, storage devices, and card readers, among others. In some embodiments, peripheral devices 125 may couple to USB switching hub 119 through interface 123. In some embodiments, interface 123 may be a PHY interface. Other interfaces may also be used (e.g., UTMI or ULPI). Upstream ports 117 and downstream ports 121 may also have interfaces.
In some embodiments, dual role peripheral device 207 may include a dual role USB printer or dual role USB Digital Versatile Disc (DVD) read/write drive, among others. In some embodiments, dual role peripheral device 207 may be coupled to an upstream port (e.g., upstream port 117b) of USB switching hub 119 through device port 210. Dual role peripheral device 207 may interface through upstream port 117b with other peripheral devices (downstream peripheral devices) coupled to USB switching hub 119 (e.g., using host controller 209 on dual role peripheral device 207). Dual role peripheral device 207 may also interface with other upstream devices (such as computer system 101) through a slave controller. For example, dual role peripheral device 207 may be coupled to USB switching hub 119 as a slave peripheral device (e.g., through downstream port 121c). In some embodiments, dual role peripheral device 207, coupled to the USB switching hub, may simultaneously act as a host to one or more peripheral devices and/or as slave peripheral device to a separate host.
In some embodiments, dual role peripheral device 207 may have an embedded host controller application to operate as a standalone system (e.g., to communicate with another peripheral device, such as a digital camera, without PC intervention). For example, a dual role USB printer may print pictures directly from a digital camera, coupled to a downstream port 121 on USB switching hub 119, without PC intervention. In some embodiments, USB switching hub 119 may alternately allow the computer system 101 or dual role peripheral device 207 to access one or more downstream devices (e.g., by switching between one or more communication configurations).
a illustrates an embodiment of a computer system 101 electronically coupled to multiple peripheral devices 125. In some embodiments, USB switching hub 119 may act like a switch coupling multiple internal “hubs” that may share one or more downstream ports. For example, each potential communication configuration of the USB switching hub may represent an internal “hub”. In some embodiments, when computer system 101 is accessing peripheral device 125 (e.g., peripheral device 125a) coupled to USB switching hub 119, communications to/from the peripheral device may be processed through a first “hub” comprised of first upstream port 117a, hub controller 203a, transaction translator 205, and at least a subset of the downstream ports 121. A second “hub” may be comprised of second upstream port 117b, hub controller 203b, transaction translator 205, and at least a subset of the downstream ports 121. In one communication configuration, computer system 101 may connect to downstream ports 121a and 121c (through the first “hub”), and dual role peripheral device 207 may connect to downstream ports 121b and 121d (through the second “hub”) (as seen in
In some embodiments, computer system 101 and dual role peripheral device 207 may communicate through USB switching hub 119 simultaneously with separate downstream devices. For example, while computer system 101 communicates with device 125a (e.g., through the first “hub”), dual role peripheral device 207 may communicate with device 125b (e.g., through the second “hub”). In some embodiments, while peripheral device 125a is being accessed through the first “hub”, a different upstream device may not be able to access peripheral device 125a (e.g., dual role peripheral device 207 may not be able to access peripheral device 125a while peripheral device 125a is being used by computer system 101). In some embodiments, a signal (e.g., from an external control block) may trigger downstream switching logic 201 to switch access for a subset of downstream ports 121 (e.g., downstream port 121a and/or 121c) on the first “hub” to the second “hub” (i.e., switch communication configurations). In some embodiments, dual role peripheral device 207 may send a control signal to USB switching hub 119. USB switching hub 119 may then switch communication configurations to connect one or more downstream ports to the dual role peripheral device. For example, when a user presses a button on dual role peripheral device 207 (e.g., a dual role printer), a signal may be sent through mode 211 to downstream switching logic 201 to switch access of device 125a from computer system 101 to dual role peripheral device 207 (i.e., to switch to a second communication configuration as seen in
In some embodiments, when activity is no longer detected between dual role peripheral device 207 and a downstream port (e.g., if dual role peripheral device 207 is turned off), downstream switching logic 201 may switch access of the downstream port to computer system 101 (i.e., switch to a different communication configuration). In some embodiments, downstream switching logic 201 may switch access of the downstream port to a different upstream device. In some embodiments, instead of detecting inactivity, a signal from dual role peripheral device 207 may signal USB switching hub 119 to switch. Other signals and/or logic may also be used in determining when to switch communication configurations.
In some embodiments, communication configurations may be software implemented. In some embodiments, a microprocessor coupled to or comprised in downstream switching logic 201 may dynamically determine, e.g., using a dynamic communication configuration profile, which downstream ports to electrically couple to each upstream port. For example, the microprocessor may read a stored communication configuration profile and attempt to connect upstream ports to downstream ports according to the communication configuration profile. The communication configuration profiles may be stored on a memory (e.g., an Electronically Erasable Programmable Read-Only Memory (EEPROM)) coupled to USB switching hub 119. In some embodiments, hub controllers 203 on USB switching hub 119 may have access to the communication configuration profiles.
In some embodiments, a priority logic may be used to switch communication configurations. Priority logic, or other logic used to grant access, may be internal or external to USB switching hub 119. In some embodiments, computer system 101 may be given priority over all of downstream ports 121 until an external control signal is sent from dual role peripheral device 207 to switch access of one or more downstream ports 121 to dual role peripheral device 207. In some embodiments, different control signals may be sent to trigger different communication configurations (i.e., to switch access of different downstream ports to dual role peripheral device 207).
In some embodiments, host negotiation logic may be used to determine which communication configuration to use. In some embodiments, a default communication configuration may be used until multiple upstream devices “request” access to the same downstream port. Host negotiation logic may be used to determine which communication configuration to use (i.e., which communication configuration gives a particular upstream port access to the “requested” downstream port).
In some embodiments, a microprocessor in USB switching hub 119 may include a built in algorithm that auto detects downstream peripheral devices and determines how to connect the downstream peripheral devices. For example, instead of assigning a specific downstream port to an upstream port, a communication configuration profile may specify that the upstream port should have access to a digital camera if one is attached. The built in algorithm may auto-detect the digital camera when it is attached to one of the downstream ports and attach it to the appropriate upstream port (i.e., by switching to an appropriate communication configuration).
In some embodiments, when downstream switching logic 201 switches communication configurations, and control of a downstream port is switched from computer system 101 to dual role peripheral device 207, a connection between computer system 101 and respective peripheral device 125 (coupled to the downstream port to be switched) may be terminated by computer system 101. In some embodiments, communications between the downstream port to be switched and computer system 101 may be terminated by USB switching hub 119. Dual role peripheral device 207 may then connect to, enumerate, and communicate with the respective peripheral device 125 coupled to the switched downstream port.
Upstream devices may see downstream ports that they are not configured to attach to as unattached ports (i.e., active, but with no device connected). In some embodiments, if only a predetermined number of downstream ports is ever going to be attached to a particular upstream port (e.g., a number “x” ports), the upstream device may be signaled that the hub only has x ports. For example, if upstream port 117b is only going to be configured to attach to downstream ports 121c and 121d, a device attached to upstream port 117b may be signaled that USB switching hub 119 is only a two port hub.
a, 5b, and 5c illustrate various embodiments of computer system 101 and two dual role peripheral devices coupled to USB switching hub 419. In some embodiments, multiple dual role peripheral devices may be coupled to USB switching hub 419. For example, dual role printer 407 may be coupled to USB switching hub 419 through upstream port 417b and dual role DVD read/write drive 467 may be coupled to USB switching hub 419 through upstream port 417c. Computer system 101 may be coupled to USB switching hub 419 through upstream port 417a. Each of the upstream devices may be coupled to a respective hub controller 403, downstream switching logic 401, and transaction translator 405. Downstream switching logic 401 may configure communications between each of the upstream devices (i.e., computer system 101, dual role printer 407, or dual role DVD read/write drive 467) and at least a subset of the peripheral devices 425.
As seen in
In some embodiments, transaction translator(s) in the USB switching hub (e.g., USB switching hub 419 or USB switching hub 519) may allow upstream ports to communicate at different communication speeds relative to the other upstream ports. For example, one upstream port may be coupled only to high speed devices and, therefore, communicate at high speed, while a separate upstream port may be coupled to only full speed devices and, therefore, communicate at full speed. In some embodiments, upstream ports may be able to communicate with different downstream ports at different speeds because of the transaction translators.
At 701, the USB switching hub may receive a signal (e.g., an external control signal) signaling the USB switching hub to switch between a first communication configuration and a second communication configuration. For example, switching communication configurations may switch access of a first downstream port from a first upstream port to a second upstream port. In some embodiments, a user may press a button on a dual role peripheral device coupled to the USB switching hub, and the dual role peripheral device may send an external control signal to the USB switching hub to signal the USB switching hub to switch between one or more communication configurations. In some embodiments, the signal may be internal (e.g., generated by logic internal to the USB switching hub).
At 703, communication between a host coupled to the first upstream port and the first peripheral device coupled to the first downstream port may be terminated. In some embodiments, communication may be terminated for a subset of the downstream peripheral devices.
At 705, the USB switching hub may switch between the first communication configuration and the second communication configuration to give access of the first downstream port to the second upstream port. In some embodiments, the communication configuration switch may affect access for a subset of the downstream peripheral devices.
At 707, the downstream peripheral device coupled to the first downstream port may be accessed through the second upstream port by the host coupled to the second upstream port. In some embodiments, the second upstream port may communicate with a subset of the downstream peripheral devices. For example, the host may enumerate and then communicate with the switched multiple downstream devices. In some embodiments, access between the first upstream port and a second downstream port may continue.
In some embodiments, intelligent port routing switch (IPRS) 821 may delay switching communications for downstream port 125a if there is an active transfer in progress between downstream port 125a and first upstream port 117a. In some embodiments, IPRS 821 may delay switching communications for downstream port 125a if there is an active transfer in progress between downstream port 125 and second upstream port 117b. In some embodiments, IPRS 821 may be implemented in hardware and/or firmware on USB switching hub 119. In some embodiments, the IPRS may be implemented in software on computer system 101. The IPRS may include software and drivers that have knowledge of current USB traffic to delay a request to switch a device that is in use. In some embodiments, the IPRS may be entirely outside of any traffic monitoring internal to USB switching hub 119.
IPRS 821 may delay switching communications between other downstream ports 125 if there are pending or active transfers in progress. In some embodiments, IPRS 821 may monitor communications at the hub controller 203 level or may monitor communications at the downstream switching logic level. Other placements between downstream ports 121 and upstream ports 117 may also be used. In some embodiments, instead of relying on intelligent monitoring or an external method for delaying switching communications, IPRS 821 may operate to delay switching such that switching takes place at the USB frame boundary (when, by definition, no traffic is permitted to be in progress). In such embodiments, switching may be delayed until the frame boundary on a predetermined basis, not as a result of intelligent monitoring.
In some embodiments, external signal 813 (e.g., from a user, from computer system 101, or from mode 211 on dual role device 207) may signal downstream switching logic 201 to switch communications between a downstream port 121 and the upstream ports 117. Other sources of external signal 813 are also contemplated (e.g., the external signal may originate from a physical switch coupled to USB switching hub 119). In some embodiments, the physical switch may have switches, push buttons and/or other mechanical components to allow a user to assign one or more downstream ports 121 to specific upstream port 117. In some embodiments, external signal 813 may be sent from computer system 101. For example, an application executing on computer system 101 may allow a user to interact with computer system 101 to assign one or more downstream ports 121 to specific upstream port 117. In some embodiments, computer system 101 may also receive signals back from USB switching hub 119 to communicate with the user. For example, if there are transfers between a related downstream port and an upstream port, USB switching hub 119 may communicate this status to the user, and USB switching hub 119 may wait until it receives confirmation from the user to proceed with the switch (e.g., a signal may be sent from computer system 101 confirming the switch after a user selects a graphical “Proceed” box on a computer screen coupled to computer system 119.)
At 901, a peripheral device may be coupled to a downstream port of a USB switching hub. In some embodiments, the peripheral device may be a USB device. The USB device may also be coupled to an upstream device (i.e., the USB device may be a dual role USB device).
At 903, a first upstream device may be coupled to first upstream port 117a of the USB switching hub 119.
At 905, a second upstream device may be coupled to second upstream port 117b of USB switching hub 119.
At 907, the first upstream device may enumerate USB switching hub 119 using a first hub configuration for USB switching hub 119. For example, if USB switching hub 119 has four downstream ports 121, the first upstream device may enumerate USB switching hub 119 as a 4-port hub. In some embodiments, the first upstream device may enumerate USB switching hub 119 with fewer downstream ports 121 than the total number of downstream ports 121 on USB switching hub 119 (e.g., if one or more downstream ports 121 is permanently inactive or reserved for another use).
At 909, the second upstream device may enumerate USB switching hub 119 using a hub configuration substantially similar to the first hub configuration for USB switching hub 119.
At 911, the downstream port coupled to the peripheral device may be assigned to the second upstream port. In some embodiments, communications between the peripheral device and the first upstream port may be switched to the second upstream port. In some embodiments, if device 125a is a digital camera, it may be initially coupled to computer system 101 (i.e., communications to/from the digital camera may be routed to first upstream port 117a in downstream switching logic 201 while the communications are in the digital domain). External signal 813 (e.g., from a user through computer system 101) may signal downstream switching logic 201 to switch communications between device 125a and two upstream ports 117.
At 913, a disconnect status may be indicated on a status register, corresponding to the switched downstream port, coupled to hub controller 203a of first upstream port 117a. Communications may be terminated between downstream device 125a and an upstream device coupled to first upstream port 117a.
At 915, a connect event may be indicated on a status register, corresponding to the switched downstream port, coupled to hub controller 203b of second upstream port 117b. When second upstream device 207 (e.g., a dual role printer) reads the connect event on the status register, it will reset device 125a coupled to downstream port 121a. Downstream device 125a may connect to upstream device 207 for further communications (e.g., to print pictures directly from the digital camera).
At 917, switching communications of a downstream port 121 may be delayed if there is an active transfer in progress between a downstream port 121 and the first upstream port. Switching communications may be delayed by IPRS 821.
At 919, switching communications of a downstream port 121 may be delayed if there is an active transfer in progress between a downstream port 121 and second upstream port 117b. Switching communications may be delayed by IPRS 821.
At 1001, IPRS 821 may monitor status registers 811 to determine if peripheral device 125 is actively being used by an upstream device. For example, IPRS 821 may determine if a corresponding status register has a “selective suspend” or a standby state indicated for corresponding downstream port 121.
At 1003, downstream switching logic 201 may check IPRS 821 prior to making a switch for an indication as to whether there are current communications between a downstream port 121 to be switched or between downstream ports 121 coupled to upstream port 117 for which a downstream port 121 will be switched. In some embodiments, downstream switching logic 201 may query IPRS 821 to determine if multiple downstream ports 121 may be switched.
At 1005, IPRS 821 may indicate to downstream switching logic 201 whether a switch of communications for one or more downstream ports 121 may proceed. For example, logic on IPRS 821 may determine which downstream ports 121 the status should be checked (e.g., downstream ports 121 to be switched and downstream ports 121 coupled to the upstream port 117 being switched to). In some embodiments, IPRS 821 may check the corresponding status register when downstream switching logic 201 inquires as to a specific downstream port.
At 1007, if a “selective suspend” or a standby state is not indicated, IPRS 821 may continue to monitor the corresponding status register for a predetermined amount of time after IPRS 821 receives an inquiry from downstream switching logic 201 that a switch is desired. At the end of the predetermined amount of time, if the “selective suspend” or a standby state is still not indicated, IPRS 821 may indicate to downstream port controller 201 that it may switch despite the apparent active status. In some embodiments, if the “selective suspend” or a standby state is not indicated, an indication may be sent to computer system 101 to ask the user if a switch should be made despite the apparent active status of one or more affected peripheral devices 125. If the user approves the switch, downstream switching logic 201 may proceed with the switch.
At 1101, IPRS 821 may monitor transactions through USB switching hub 119 to determine if any of the communications are going to/from relevant peripheral devices (e.g., coupled to a downstream port 121 to be switched or already coupled to upstream port 117 for which peripheral device 125 will be switched to). In some embodiments, the presence of communications and the type of communications may be monitored by IPRS 821. IPRS 821 may monitor communications at any of various points of USB switching hub 119 (e.g., coupled to hub controllers 203, downstream switching logic 201, and/or coupled directly to downstream ports 121 and/or upstream ports 117). IPRS 821 may monitor communications using additional internal logic. In some embodiments, IPRS 821 may not interfere with communications between downstream ports 121 and upstream ports 117.
At 1103, downstream switching logic 201 may check IPRS 821 prior to making a switch for an indication as to whether there are current communications between a downstream port 121 to be switched or between downstream ports 121 coupled to upstream port 117 for which a downstream port 121 will be switched.
At 1105, IPRS 821 may indicate to downstream switching logic 201 whether a switch of communications for one or more downstream ports 121 may proceed.
At 1201, IPRS 821 may coordinate a communications switch by downstream switching logic 201 to occur on a frame boundary of communications between upstream port 117 and related downstream ports 121. In some embodiments, IPRS 821 may interface with one or more hub controllers 203 to determine the timing of the frame boundaries. For example, a microframe timer may be used. In some embodiments, IPRS 821 may interface with other parts of USB switching hub 119 to determine a time to affirm a request to switch from downstream switching logic 201.
At 1203, downstream switching logic 201 may check IPRS 821 prior to making a switch for an indication as to whether a frame boundary is occurring for communications to/from the relevant downstream ports 121.
At 1205, IPRS 821 may indicate to downstream switching logic 201 whether a switch of communications for one or more downstream ports 121 may proceed.
Referring again to
As also described for the embodiment of
In some embodiments, dual role peripheral device 207 may have an embedded host controller application to operate as a standalone system (e.g., to communicate with another peripheral device, such as a digital camera, without PC intervention). For example, a dual role USB printer may print pictures directly from a digital camera, coupled to a downstream port 121 on USB switching hub 119, without PC intervention. In some embodiments, USB switching hub 119 may alternately allow the computer system 101 or dual role peripheral device 207 to access one or more downstream devices (e.g., by switching between one or more communication configurations).
a and 14b illustrate alternate embodiments of the embodiments shown in
In some embodiments, computer system 101 and dual role peripheral device 207 may communicate through USB switching hub 119 simultaneously with separate downstream devices. For example, while computer system 101 communicates with device 125a (e.g., through the first “hub”), dual role peripheral device 207 may communicate with device 125b (e.g., through the second “hub”). In some embodiments, while peripheral device 125a is being accessed through the first “hub”, a different upstream device may not be able to access peripheral device 125a (e.g., dual role peripheral device 207 may not be able to access peripheral device 125a while peripheral device 125a is being used by computer system 101). In some embodiments, a signal (e.g., from an external control block) may trigger downstream switching logic 201 to switch access for a subset of downstream ports 121 (e.g., downstream port 121a and/or 121c) on the first “hub” to the second “hub” (i.e., switch communication configurations). In some embodiments, dual role peripheral device 207 may send a control signal to USB switching hub 119. USB switching hub 119 may then switch communication configurations to connect one or more downstream ports to the dual role peripheral device. For example, when a user presses a button on dual role peripheral device 207 (e.g., a dual role printer), a signal may be sent through mode 211 to downstream switching logic 201 to switch access of device 125a from computer system 101 to dual role peripheral device 207 (i.e., to switch to a second communication configuration as seen in
In some embodiments, when activity is no longer detected between dual role peripheral device 207 and a downstream port (e.g., if dual role peripheral device 207 is turned off), downstream switching logic 201 may switch access of the downstream port to computer system 101 (i.e., switch to a different communication configuration). In some embodiments, downstream switching logic 201 may switch access of the downstream port to a different upstream device. In some embodiments, instead of detecting inactivity, a signal from dual role peripheral device 207 may signal USB switching hub 119 to switch. Other signals and/or logic may also be used in determining when to switch communication configurations.
In some embodiments, communication configurations may be software implemented. In some embodiments, a microprocessor coupled to or comprised in downstream switching logic 201 may dynamically determine, e.g., using a dynamic communication configuration profile, which downstream ports to electrically couple to each upstream port. For example, the microprocessor may read a stored communication configuration profile and attempt to connect upstream ports to downstream ports according to the communication configuration profile. The communication configuration profiles may be stored on a memory (e.g., an Electronically Erasable Programmable Read-Only Memory (EEPROM)) coupled to USB switching hub 119. In some embodiments, hub controllers 203 on USB switching hub 119 may have access to the communication configuration profiles.
In some embodiments, a priority logic may be used to switch communication configurations. Priority logic, or other logic used to grant access, may be internal or external to USB switching hub 119. In some embodiments, computer system 101 may be given priority over all of downstream ports 121 until an external control signal is sent from dual role peripheral device 207 to switch access of one or more downstream ports 121 to dual role peripheral device 207. In some embodiments, different control signals may be sent to trigger different communication configurations (i.e., to switch access of different downstream ports to dual role peripheral device 207).
In some embodiments, host negotiation logic may be used to determine which communication configuration to use. In some embodiments, a default communication configuration may be used until multiple upstream devices “request” access to the same downstream port. Host negotiation logic may be used to determine which communication configuration to use (i.e., which communication configuration gives a particular upstream port access to the “requested” downstream port).
In some embodiments, a microprocessor in USB switching hub 119 may include a built in algorithm that auto detects downstream peripheral devices and determines how to connect the downstream peripheral devices. For example, instead of assigning a specific downstream port to an upstream port, a communication configuration profile may specify that the upstream port should have access to a digital camera if one is attached. The built in algorithm may auto-detect the digital camera when it is attached to one of the downstream ports and attach it to the appropriate upstream port (i.e., by switching to an appropriate communication configuration).
In some embodiments, when downstream switching logic 201 switches communication configurations, and control of a downstream port is switched from computer system 101 to dual role peripheral device 207, a connection between computer system 101 and respective peripheral device 125 (coupled to the downstream port to be switched) may be terminated by computer system 101. In some embodiments, communications between the downstream port to be switched and computer system 101 may be terminated by USB switching hub 119. Dual role peripheral device 207 may then connect to, enumerate, and communicate with the respective peripheral device 125 coupled to the switched downstream port.
Upstream devices may see downstream ports that they are not configured to attach to as unattached ports (i.e., active, but with no device connected). In some embodiments, if only a predetermined number of downstream ports is ever going to be attached to a particular upstream port (e.g., a number “x” ports), the upstream device may be signaled that the hub only has x ports. For example, if upstream port 117b is only going to be configured to attach to downstream ports 121c and 121d, a device attached to upstream port 117b may be signaled that USB switching hub 119 is only a two port hub.
a, 15b, and 15c illustrate various alternate embodiments of the embodiments shown in
As seen in
a, 18b, and 18c illustrate the USB switching hub 119 communicatively coupling to a wireless host 1809, according to an embodiment.
In some embodiments, wireless host 1809 (e.g., a laptop with a wireless bridge 1812 and transceiver 1808) may communicate with one or more downstream devices 125a-c through the USB switching hub 119. Communications between the downstream devices 125a-c and the wireless host 1809 may pass through wireless bridges 1810, 1812 coupled to wireless transceivers 1807, 1808 (respectively). Wired host 1801 may also communicate with one or more downstream devices 125a-c through the USB switching hub 119. In some embodiments, another wireless host may be communicatively coupled through upstream port 117a instead of wired host 1801.
As seen in
In some embodiments, wireless USB hosts and devices may use association to implement secure communications. Association may include making an initial connection between a host (e.g., host 1809/wireless bridge 1812) and a device (e.g., wireless bridge 1810), verifying the host and the device to each other, and deriving an initial encryption key for future communications. In some embodiments, a wireless host 1809 and the device (e.g., wireless bridge 1810) may use a temporary physical connection (e.g., by both physically coupling to the USB switching hub 119 and/or connecting through a cable as seen in
In some embodiments, the wireless bridge 1810 may include a downstream device port 1815 which may be coupled to a downstream port 121d of the USB switching hub 119. As seen in
In some embodiments, wireless hosts and devices may use the exchanged keys to authenticate each other during future connection requests (e.g., see the Wireless Universal Serial Bus Specification, Revision 1.0). The keys may also be used to encrypt and decrypt future transmissions. The device (e.g., wireless bridge 1810) and the host (e.g., host 1809/wireless bridge 1812) may establish a connection context (CC) with a unique host ID (CHID), a unique device ID (CDID), and connection key (CK) (a symmetric encryption key). In some embodiments, the CC may be created by a host device and sent to a device on the first connection (and/or by using an out-of-band method). The CK may be unique for each device for which the host is connected. The CK may be used to derive a pair-wise temporal key (PTK) through four-way handshakes (between the host and the device) for use by the host and device in encrypting/decrypting communications. During four-way handshakes, the host and the device may exchange a random nonce and an identifier of the key they are using. The device and host may then perform key generation using the random nonces to generate a message integrity code (MIC) that are also exchanged. If the device and host verify the received MIC (based on the CK), the device and host may know that they are communicating with a device/host that has the previously established key and therefore can be trusted. The device and host may also use the exchanged nonces to generate initial session keys (which may be used as PTKs for encryption/decryption of future communications between the host and the device). In some embodiments, the wireless bridge 1810 may handle encryption/decryption for communications from the downstream devices 125 (e.g., using one PTK for communications from the devices 125). In some embodiments, the separate keys may be used for communications from each device 125.
In some embodiments, a media access controller (MAC) 1805 may be included (as part of a data link layer for transporting data packets) on the wireless bridge 1810 to, for example, control access to the transceiver 1807. The MAC 1811 on wireless bridge 1812 may, for example, control access to the transceiver 1808. The data link layer may also include a logical link control (LLC) for multiplexing protocols and providing flow control over the transceivers 1807, 1808. MAC 1805 may be coupled to the USB switching hub 119 through host interface 1823 and upstream port 117b. MAC 1811 may be coupled to the host 1809 through host interface 1814.
In some embodiments, MACs 1805 and 1811 may insert source and destination addresses into transmitted frames to enable the receiving MAC to determine which frames are being sent to its device. These addresses may include MAC addresses (unique identifiers for the communicating devices). MACs 1805 and 1811 may also recognize the beginning and ending of frames received and transmitted and may detect transmission errors. Transmissions between wireless transceivers 1807 and 1808 may include token, data, and handshake packets (or packets containing a combination of these types). Other packet configurations are also contemplated. In some embodiments, the MACs 1805 and 1811 may work with the data link layer in their respective wireless bridges to encode/decode bit streams into/out of data packets and provide transmission protocol knowledge and management.
In some embodiments, wireless host 1809 may also communicate with other wireless devices in addition to the wired devices coupled to the USB switching hub 119. Wireless host 1809 may also communicate with other wired peripheral devices coupled to a device wire adapter.
At 2301, a wireless host 1809 may perform association with a wireless bridge 1810 coupled to the USB switching hub 119. The wireless host 1809 and wireless bridge 1810 performing association may each be coupled to a separate upstream port of the USB switching hub 119 (e.g., see
At 2303, the wired host 1801 may enumerate the USB switching hub 119 using a first hub configuration for the USB switching hub 119. In some embodiments, the downstream devices 125 coupled to the USB switching hub 119 may be enumerated by the wired host 1801 when the USB switching hub 119 is enumerated.
At 2305, the wireless host 1809 may enumerate the USB switching hub 119 using a hub configuration substantially similar to the first hub configuration for the USB switching hub 119. In some embodiments, the downstream devices 125 coupled to the USB switching hub 119 may be enumerated by the wireless host 1809 when the USB switching hub 119 is enumerated.
At 2307, the wireless host 1809 may wirelessly communicate with at least a subset of a plurality of downstream devices 125 coupled to the USB switching hub 119 through the wireless bridge 1810.
At 2309, a wired host 1801 may communicate with at least a subset of a plurality of downstream devices 125 coupled to a USB switching hub 119. In some embodiments, the wireless host 1809 and the wired host 1801 may communicate substantially simultaneously with separate downstream devices 125 coupled to the USB switching hub 119.
At 2311, communications may be switched between at least one of the plurality of downstream devices 125 and the wired host 1801 to the wireless host 1809. In some embodiments, the USB switching hub 119 may not be re-enumerated when communications are switched. In some embodiments, communications may be switched between at least one of the plurality of downstream devices 125 and the wireless host 1809 to the wired host 1801.
At 2313, switching communications between the at least one of the plurality of downstream devices 125 and the wired host 1801 to the wireless host 1809 may be delayed if there is an active transfer in progress between the at least one of the plurality of downstream devices 125 and the wired host 1801, wherein switching communications is delayed by an intelligent port routing switch (e.g., see IPRS 821 in
At 2401, a first wireless host 1809 (which may include host 1809 and/or associated wireless bridge 1812) may be coupled to a first upstream port 117a of a USB switching hub 119. One or more downstream devices 125 may be coupled to downstream ports 121 of the USB switching hub 119.
At 2403, a second wireless bridge 1810 may be coupled to a downstream port 121d of the USB switching hub 119.
At 2405, the first wireless host 1809 and the second wireless bridge 1810 may perform association.
At 2407, the first wireless host 1809 may be decoupled from the first upstream port 117a. For example, see
At 2409, the second wireless bridge 1810 may be coupled to a second upstream port 117b. The second wireless bridge 1810 may have been coupled to the second upstream port 117b prior to association.
At 2411, the first wireless host 1809 and the second wireless bridge 1810 may authenticate each other.
At 2413, the first wireless host 1809 and the second wireless bridge 1810 may communicate in a wireless fashion. The wireless bridge 1812 coupled to the wireless host 1809 may cooperate with wireless bridge 1810 coupled to USB switching hub 119 to allow communications between the wireless host 1809 and the downstream devices 125 coupled to the USB switching hub 119.
At 2501, a first wireless host 2109a may be coupled to a first upstream port 117a of a USB switching hub 2121. One or more downstream devices 125 may be coupled to downstream ports 121 of the USB switching hub 2121.
At 2503, a second wireless bridge 2110 may be coupled to a downstream port of the USB switching hub 2121. In some embodiments, the downstream port may be internal to the hub (e.g., the wireless bridge 2110 may internally couple to the hub and switching logic 1813).
At 2505, the first wireless host 2109a (and/or wireless bridge 2112a) and the second wireless bridge 2110 may perform association.
At 2507, the first wireless host 2109a (and/or wireless bridge 2112a) may be decoupled from the first upstream port 117a.
At 2509, a second wireless host 2109b (and/or wireless bridge 2112b) may be coupled to the first upstream port 117a of the USB switching hub 2121.
At 2511, the second wireless host 2109b (and/or wireless bridge 2112b) and the second wireless bridge 2110 may perform association. In some embodiments, the second wireless bridge 2110 may use a separate encryption key when communicating with the first wireless host 2109a than when communicating with the second wireless host 2109b. The second wireless bridge 2110 may use different identifiers in communications for each of the first and second wireless hosts 2109a,b.
At 2513, the second wireless bridge 2110 may be coupled to a second upstream port(s). The second wireless bridge may have been coupled to the second upstream port(s) prior to association. In some embodiments, the second wireless bridge 2110 may be coupled to one upstream port per wireless host. For example, as seen in
At 2515, the first wireless host 2109a and the second wireless bridge 2110 may authenticate each other.
At 2517, the second wireless host 2109b and the second wireless bridge 2110 may authenticate each other.
At 2519, the first wireless host 2109a and second wireless host 2109b may each communicate with the second wireless bridge 2110 in a wireless fashion. The first wireless host 2109a and the second wireless host 2109b may communicate with downstream devices 125 coupled to the USB switching hub 2121 at substantially the same time (e.g., through two respective upstream ports 2123a,b coupled to second wireless bridge 2110). The second wireless bridge 2110 may coordinate communications to and from wireless bridges 2112a and 2112b to allow communication between the wireless hosts 2109a,b and the downstream devices 125. For example, unique identifiers may be used to identify communications between each wireless host and its respective downstream device(s). In some embodiments, first wireless host 2109a and second wireless host 2109b may communicate with separate wireless bridges each coupled to a different upstream port of the USB switching hub 2121.
At 2601, a wireless host 1809 may be coupled to a first upstream port 117a of a USB switching hub 2221.
At 2603, a second wireless bridge 2210 may be coupled to a reversible port 2231 as a downstream device on the USB switching hub 2221. In some embodiments, the reversible port 2231 may be signaled to perform as a downstream port. Logic in the USB switching hub 2221 may be manipulated to support the reversible port 2231 as a downstream port.
At 2605, the wireless host 1809 and the second wireless bridge 2210 may perform association.
At 2607, the wireless host 1809 may be decoupled from the first upstream port 117a.
At 2609, the reversible port 2231 may be reversed (e.g., through a signal sent to the reversible port 2231 and/or USB switching hub 2221) and the second wireless bridge 2210 may then be used as an upstream device on the USB switching hub 2210.
At 2611, the wireless host 1809 and the second wireless bridge 2210 may authenticate each other.
At 2613, the wireless host 1809 and the second wireless bridge 2210 may communicate in a wireless fashion. The wireless bridge 1812 and second wireless bridge 2210 may coordinate to allow communications between the wireless host 1809 and the downstream devices 125 coupled to the USB switching hub 2221.
Embodiments of a subset or all (and portions or all) of the above may be implemented by program instructions stored in a memory medium or carrier medium and executed by a processor. A memory medium may include any of various types of memory devices or storage devices. The term “memory medium” is intended to include an installation medium, e.g., a Compact Disc Read Only Memory (CD-ROM), floppy disks, or tape device; a computer system memory or random access memory such as Dynamic Random Access Memory (DRAM), Double Data Rate Random Access Memory (DDR RAM), Static Random Access Memory (SRAM), Extended Data Out Random Access Memory (EDO RAM), Rambus Random Access Memory (RAM), etc.; or a non-volatile memory such as a magnetic media, e.g., a hard drive, or optical storage. The memory medium may comprise other types of memory as well, or combinations thereof. In addition, the memory medium may be located in a first computer in which the programs are executed, or may be located in a second different computer that connects to the first computer over a network, such as the Internet. In the latter instance, the second computer may provide program instructions to the first computer for execution. The term “memory medium” may include two or more memory mediums that may reside in different locations, e.g., in different computers that are connected over a network.
In some embodiments, a computer system at a respective participant location may include a memory medium(s) on which one or more computer programs or software components according to one embodiment of the present invention may be stored. For example, the memory medium may store one or more programs that are executable to perform the methods described herein. The memory medium may also store operating system software, as well as other software for operation of the computer system.
Further modifications and alternative embodiments of various aspects of the invention may be apparent to those skilled in the art in view of this description. Accordingly, this description is to be construed as illustrative only and is for the purpose of teaching those skilled in the art the general manner of carrying out the invention. It is to be understood that the forms of the invention shown and described herein are to be taken as embodiments. Elements and materials may be substituted for those illustrated and described herein, parts and processes may be reversed, and certain features of the invention may be utilized independently, all as would be apparent to one skilled in the art after having the benefit of this description of the invention. Changes may be made in the elements described herein without departing from the spirit and scope of the invention as described in the following claims.