Universal Serial Bus Specification Revision 1.0
224
11.2.4 Bus State Evaluation
Bus state evaluation is done at the end of the frame and is able to discriminate between the SE0, the
differential 1 and 0 bus states. When no device is connected to a downstream hub port, its pull-down
resistors pull both D+ and D- below VSE(min).
Connect/Disconnect detect can only be performed after Vbus is applied to the downstream port. (This
requirement only affects hubs whose downstream ports are power switched.) When a device is
connected, the bus state changes from the disconnected to the attach detect state. Low speed devices pull
up D- to an SE1 and leave D+ at SE0. Full speed devices pull up D+ to an SE1 and leave D- at SE0.
Each downstream hub port must be capable of detecting and differentiating between low speed and full
speed device connections once a device is connected. The differential J and K states are undefined until
a device is attached and the device’s speed has been ascertained.
When a connect or disconnect occurs, it must be reflected in the hub status by the end of the frame in
which the event occurred unless the hub is in the reset or suspend modes. A hub in the suspend mode is
awakened by a connect or disconnect event and must be capable of reporting the event upon completion
of resume. Upon coming out of reset, a hub must detect which downstream ports have devices connected
to them. Connect and disconnect changes are reported on a per-port basis.
11.2.5 Full vs. Low Speed Behavior
Hubs must differentiate between full speed and low speed devices when a device is connected to the bus
or at power-up. Hubs detect whether a device is full or low speed when the hub port transitions from its
disconnected to its disabled state. Devices attached to a hub are determined to be either full speed or low
speed by detecting which data line (D- or D+) is pulled high. Low speed devices pull D- high, and full
speed devices pull D+ high. Full speed signaling must not be transmitted to low speed devices. Doing so
could cause low speed devices to mistakenly respond to full speed signaling and create a bus conflict.
Communication between the host and the hub controller are always done using full speed signaling.
If a device is detected to be low speed, the hub port’s output buffers are configured to operate at the slow
slew rate (75-300 ns), and the port will not propagate downstream directed traffic unless it is prefaced
with a preamble PID. Low speed signaling immediately follows the PID and is propagated to both low
and full speed devices. Full speed devices will never misinterpret low speed traffic because no low speed
data pattern can generate a valid full speed PID. When low speed signaling is enabled, a hub continues
to propagate downstream signaling to all enabled ports until a downstream EOP is detected, at which
time the output drivers for the low speed ports are turned off and will not be turned on again until the hub
receives another PRE PID. If a port is disabled, no signaling is propagated to the port. Hubs must enable
their low speed port drivers within four full speed bit times of having received the last bit of the PRE
PID, and at that time they must drive a low speed J onto the bus.
If a downstream port is enabled, it propagates upstream directed bus signaling independently of whether
the port was configured as low speed or full speed. Hubs implement slew rate selectable output buffers
only in the downstream direction on their downstream ports; in the upstream direction, they transparently
propagate both low and high speed traffic using fast (4-20 ns) edge rates. Low speed devices do not
append a preamble onto their upstream traffic.
While propagating low speed traffic upstream, hubs must be able to respond to EOPs that are either two
low speed bit times or two full speed bit times wide. The former will occur under normal operation in
which the low speed device generates the EOP. The latter occurs if a downstream hub encounters an end
of frame babble or LOA condition and generates an EOP upstream in response (refer to Section 11.4.5).
11.2.5.1 Low Speed Keep-Alive
All hub ports to which low speed devices are connected must generate a low speed keep-alive strobe,
generated at the beginning of the frame, which consists of two low speed bit times of SE0 followed by at
least 0.5 bit times of J state. Low speed devices use the strobe to prevent themselves from going into