Чому Windows показує сповіщення "Цей пристрій може працювати швидше", якщо я підключаю його незграбно?


74

Я помітив, що і в Windows XP, і в 7 (і на 2-х різних комп’ютерах відповідно) мені вдалося отримати так: "Цей пристрій може працювати швидше, якщо ви підключите його до високошвидкісного порту USB 2.0", щоб з'явитися повідомлення, якщо я підключую кабель дуже повільно (або боротися, роблячи це лише однією рукою). Якщо я з'єднаю його досить швидко або нормально обома руками, повідомлення не буде. В будь-якому випадку, схоже, всі такі пристрої функціонують нормально.

Я думаю, що трапляється так, що контакт між проводами переривається протягом достатнього часу під час повільного / незграбного з'єднання, що USB-контролер вважає, що це не 2.0, а повільніше. Але чому він так вважає? Або чому це не просто каже "Ви погано підключаєте кабелі, будь-ласка, відключіть і повторіть спробу"?


Чи пристрій підключено до USB-ключа, а не безпосередньо до вашого вікна? Якщо так, спробуйте підключити пристрій безпосередньо, а не сторонній, так би мовити.

Він підключений до заднього кабельного порту настільної вежі, тому у нього не повинно бути нічого між материнською платою та пристроєм на іншому кінці.
user1306322

5
Хто на землі використовує обидві руки, щоб підключити USB-пристрій?
ПНДА

3
@ Cunningham'sLawyer: сценарій однієї руки : штепсельна вилка USB (або клавіша) штовхає ноутбук по всьому столу, коли намагається в один бік, перевертає його, намагається ще раз, повернути його, щоб остаточно підключити його. Сценарій двох рук : стільки ж гортання, але друга рука тримає ноутбук нерухомо.
WoJ

Зачекайте, значить у вас портами USB 1 на цих ноутбуках? 0_0
rahuldottech

Відповіді:


76

Повідомлення стосується узгодження старої повної швидкості передачі (FS) швидкості передачі даних 12 Мбіт / с, а не високошвидкісної (HS) швидкості передачі даних, яка становить 480 Мбіт / с. Отримати цей ефект через порт USB2 повинно бути дуже важко. Протокол USB2.0 HS встановлюється після досить складних переговорів між пристроєм та хостом, оскільки спочатку кожен HS-пристрій виступає як FS-пристрій.

Нормальний процес такий:

  1. Пристрій з підтримкою HS підтягує лінію D + після отримання сигналу VBUS з резистором 1-1,5 кОм до 3,3 В. Так само, як це зробив FS-пристрій.

  2. Порт хазяїна виявляє величину D + =, і, як мінімум, затримка затримки мінімум 100 мс, хост підтверджує стан шини USB_RESET на шині, керуючи як D +, так і D-лінії на землю з драйверами 45 Ом протягом 10 або 50 мс.

  3. Якщо пристрій FS, він нічого не робить і чекає до кінця USB_RESET.

  4. Якщо пристрій HS, він би запускав D-high за допомогою драйвера HS (джерело 18mA) близько 1 мс. Це створить імпульс з амплітудою близько 800 мВ (18 мкм в навантаження 45 Ом), який називається "Чирп-К";

  5. Після виявлення КОНТУ Chirp-K, якщо хост здатний до режиму HS, він передає цей сигнал назад (той же 18mA в власне навантаження 45 Ом), що становить приблизно 50 мкс. Якщо це хост FS, він ігнорує Chirp-K і продовжує діяти як FS.

  6. Потім, якщо хост здатний до режиму HS, він перемикає свій привід у провід D +, утворюючи "Chirp-J", знову на 50 мкс;

  7. Хост повторює цю змінну схему 50 мкс протягом усієї тривалості стану USB_RESET (10 мс на портах концентратора, 50 мс на портах кореневих концентраторів);

  8. Після трьох змінних chirp-K / J пристрій розпізнає, що хост - HS, і переходить у режим HS сам. Це передбачає включення закінчення HS на кінці пристрою, що робить загальний опір дроту до 22 Ом, а амплітуда щебетання сигналу падає до 400 мВ, до стандартного рівня сигналізації HS.

  9. Хост переходить до пакетів HS start-of-frame (SOF) і запускає процес перерахування в режимі HS.

Тепер уже хтось здогадується, яка частина хитання порушила цей протокол, і змусив хоста позначити порт як FS.


10
Скорочення: FS"повношвидкісний" (USB 1.0, 12 Мбіт / с), HS"швидкісний" (USB 2.0, 480 Мбіт / с) і SSбув би "SuperSpeed" (USB 3.0, 5 Гбіт / с).
isanae

4
Маючи справу з USB-пристроями за останні 16 років, я мушу визнати, що падіння з HS в FS я бачу вперше. Звичайний протокол рівня драйверів використовує щонайменше ще дві спроби затвердити USB_RESET в процесі перерахунку. У найгіршому випадку при хитанні при першій вставці, буде описано один або два додаткових USB_RESET за описаним протоколом, тому падіння назад ніколи не відбувається на рівні користувача. Однак деякі сучасні хости використовують сигналізацію "керована напругою" замість класичного струму, тому все класичне поєднання різних рівнів порогового виявлення накручується, і все може статися.
Але..ченський

21
@isanae Цікаво, коли у виробників специфікацій пристрою буде передбачувано називати щось "низькою швидкістю".
wizzwizz4

7
@ wizzwizz4, коли вони навмисно і навмисно хочуть, щоб їхній продукт вийшов з ладу через поганий прийом споживачів.
Дан Нілі

10
@isanae - USB 1.0 також підтримував "низькошвидкісний" як 1,5 Мбіт / с.
Майкл Карась

32

Підключаючи пристрій до порту USB2, комп'ютер спочатку намагається узгодити з'єднання за допомогою протоколу даних USB2.
Якщо це не вдається, він знову намагається використовувати протокол даних USB1.

Я найкраще здогадуюсь, що фізичний зв’язок (через хитання контактів) ще не стабільний під час переговорів через USB2. Таким чином, він повертається до USB1, навіть якщо пристрій є пристроєм USB2.

Досить смішно, Windows розуміє, що пристрій повинен працювати на швидкості USB2 (інформація, яку він отримує від драйвера), і тому Windows робить висновок, що USB-порт, до якого ви підключили, був повільним портом USB1. Схоже, Windows не перевіряє, чи підтримує сам порт USB2.
І саме тому ви отримуєте дещо оманливе повідомлення про помилку.

PS Просто спробував це сам на машині Windows 10: Там же ефект.


Іноді те саме відбувається і з пристроєм USB3 у порту USB3
davidbak

1
Ні. Швидкість USB-порту визначається апаратним засобом ПЕРЕД включенням до будь-якого протоколу даних.
Але..ченські

3
@AliChen Як це визначити?
gronostaj

Дивіться мою повну відповідь. Програмне забезпечення ініціює команду скидання порту лише після того, як побачить біт "підключення до порту" (переривання з нього); решта робиться апаратно.
Але..ченські

З Вікіпедії: "Пристрої USB 2.0 під час скидання використовують спеціальний протокол, який називається щебетанням, для узгодження режиму високої пропускної здатності з хостом / концентратором. Пристрій, здатний HS [USB 2.0], спочатку підключається як пристрій FS [USB 1.0] ( D + підтягнувся високо), але після отримання USB RESET (як D +, так і D-LOW за допомогою хоста протягом 10-20 мс) він витягує лінію D-висоти, відому як щебетання K. "
Натан Осман

0

Можливо, ви вставили його досить повільно, що Windows вже закінчила процес потиску рук з контролером і що в той час контакти, необхідні для зв'язку USB 2.0, не торкалися. Це, можливо, призведе до того, що Windows помилково спричинить пристрій USB 2.0 як 1.1 пристрою, оскільки на рейках не буде відповіді, позначених як лише на USB 2.0 і вище.


Це звичайна ситуація для пристроїв <2.0 версії 2.0, що вони все ще розпізнають з'єднання і не вирішують вийти з ладу?
user1306322

8
Це може статися із пристроями USB3 у порту USB3, де спочатку підключаються шпильки USB1 / 2. Але я не бачу, як це може статися з USB1 / USB2. Обидва використовують лише 4 штирі, одна пара для живлення, одна пара для передачі даних.
Геннес

@hennes Я згоден Їх немає фізичного розрізнення між USB 1 та 2.
Тонні

1
@Tonny Я майже впевнений, що побачив деякі відмінності на деяких незрозумілих фірмових пристроях USB 1.1 та 2.0. Але я визнаю, я, мабуть, помиляюся.
Стефан

1
@Stefan У перші дні USB було багато дешевих з’єднувачів, які мали погані розміри для контактів. Я бачив деякі, де кожен із 4-х штифтів у штепселі відрізнявся довжиною та товщиною. Я все ще тримаю пару в офісі, щоб показати людям, коли ми обговорюємо питання про і проти замовлення дешевих відбійних кабелів.
Тонні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.