Как стать автором
Обновить

Разработчик из Microsoft рассказал про «тележку смерти» с USB-устройствами в ранних версиях Windows

Время на прочтение 2 мин
Количество просмотров 17K
Всего голосов 25: ↑21 и ↓4 +17
Комментарии 45

Комментарии 45

Ролевые игры тестировщиков уровня «Пилы»))

У меня есть трогательнейшая история на эту тему.

Мы производим рентгеновское оборудование, и там в составе системы есть источник питания рентгеновского детектора, который надо включать, подавая команду по USB (он взят из медицинской системы, убрать USB и заменить его кнопкой производитель отказывается, технически там FTDI чип стоит). Соответственно там кабель метров пятнадцать с активным усилителем.

После серии обновлений с Win7 на Win10 (эту ОС стали требовать заказчики), сервис начал отмечать увеличившееся количество репортов со спонтанно возникающим BSOD, причём даже замена компьютера в сборе не помогала. Воспроизвести у нас это не удавалось, пока я не посетил одного заказчика (совсем по другому поводу), но он между делом заметил, что система таки да, иногда падает в BSOD, примерно пару раз в неделю, но если это и происходит, то всегда примерно в обеденный перерыв. Я посмотрел логи — и правда, ядро падает, но время плавает, плюс минус десять минут примерно. Мистика. Мне повезло — напротив офиса, где стояла система, была курилка, и вот на следующий день в обед я стоял и покуривал, видя в открытую дверь экран системы. Дальше всё было как в замедленном сне — я увидел, как в соседнем офисе (там небольшая кухня была) девушка ставит свою еду в микроволновку, нажимает кнопку... и наша система за стенкой начинает перегружаться. Длинный кабель работал как антенна, собирая все помехи, и случайные выбросы, прилетающие на вход, успешно роняют Windows 10 в голубой экран, причём из логов однозначно не видно, что это прилетает именно из драйвера USB. У других заказчиков помехи вызывало рядом стоящее промышленное оборудование. После замены USB кабелей на оптоволоконные удлинители все проблемы исчезли. Мне удалось это воспроизвести, положив кабель USB рядом со шлейфом кабелей к моторам, и подключив осциллограф к линиям данных, чтобы видеть помехи. В момент старта/останова моторов сигналы скакали и иногда возникал BSOD (в среднем примерно каждую десятую попытку). И иногда, но не всегда, в дампе я видел ftdi*.sys.

У меня в планах долгими зимними вечерами собрать примитивный генератор на ардуинке, и подавать рандомно сгенерированный мусор в USB, думаю (надеюсь) что удастся стабильно и воспроизводимо ронять десятку в BSOD (и если так, то мне интересно как 11-я себя поведёт). А вот семёрка, похоже, была значительно более "отказоустойчива".

Между прочим, бился кога-то тоже с подобной проблемой, тока это был бюджетный комп с 10й а рядом- какое-то научно-исследовательское оборудование))

А не пробовали записать сигнал помехи и потом воспроизводить в контроллируемых условиях?

Нет, к сожалению, параллельно идут другие проекты, так что время на эксперименты было сильно ограничено, да и под руками ничего пишущего в тот момент не было.

Имитатор красного трамвая, как в известной истории из интернета))))

Вот нашел эту историю, если кому нужна:

У знакомых микроэлектронщиков, клепающих собственные контроллеры, на испытательном стенде лежала обычная бытовая пьезозажигалка для газовых плит. На ней был инвентарный номер и бирка: «Имитатор красных трамваев». На мои выпученные челюсти и отпавшие глаза было дано разъяснение.

Когда-то служба сидела в самом центре города на первом этаже. На улице перед окнами была трамвайная линия. При очередных испытаниях контроллеров вдруг полезли глюки. Долго ли, коротко ли, нашли корреляцию с проходящими мимо трамваями — они искрили и создавали помехи. Причём не все трамваи, а только красного цвета.

Защиту от таких помех придумали. Потом служба переехала на окраину и засела в глубине территории, на подстанции. А контроллеры испытывать на помехозащищённость всё равно надо. Перебрав огромное количество всяких искрогенераторов и прочих постановщиков помех, остановились на этой зажигалке как наиболее близкой по спектру и эффектам воздействия.

Приказом начальника лаборатории зажигалка вошла в состав испытательного оборудования стенда.

Откликнулась глубоко в памяти байка про трамваи, и вспомнилась ещё одна про них же. Когда-то в России в сетях общего пользования было напряжение 127 вольт. В Москве вроде перевели на 220 окончательно в конце 60-х, и история примерно из середины их. Приходит женщина с телевизором в бюро ремонта и говорит - почините, пожалуйста, телевизор, постоянно белая полоса на экране, невозможно смотреть. А мастер, ковыряясь в другом телевизоре - а у вас муж в трамвайном депо работает? Та в удивлении - ну да, а как вы узнали? Мастер - ну вот скажите ему, чтобы трамвайные лампы снял дома и нормальные поставил. Оказалось, что реально по напряжению трамвайные лампы подходили для установки дома на 127 вольт, но, в отличие от бытовых, давали вот такие помехи, что телевизоры полосу показывали.

Я даже понял о какой зажигалке речь, у бабушки такая была. Искрила точно как трамвайный пантограф, с таким же звуком. Но она вовсе не пьезо, от 220 работала.

Мы с одним товарищем с хабры делали небольшое устройство на МК, он отвечал за программную и аппаратную часть, а я за дизайн интерфейса. У меня был образец устройства "в железе", а он присылал прошивки для тестирования.

Я делал всё как он говорил, но устройство не прошивалось, оказалось что лежащий рядом графический планшет наводил помехи и мешал работе устройства. Как только я его стал отключать всё прошивалось и работало как положено. Хорошо, что хотя бы не окирпичил во время такой прошивки.

Потом я плотнее увлёкся электроникой, купил осциллограф и открыл чудесный мир помех, исходивших отовсюду. Особенно от импульсных преобразователей.

И еще одна чисто аппаратная бага, пойманная недавно. При включении мощных блоков питания с ёмкими конденсаторами на входе стал гаснуть свет в помещении. Отключалось всё на уровне щитка, причём проблема была не в автоматах, т.к. они не срабатывали. А в пакетном выключателе, который износился и таким неведомым образом реагировал на импульс тока.

Особенно от импульсных преобразователей.

Это катастрофа, причем никаких надежд не то, что на улучшение ситуации - даже на сокращение темпов ухудшения нет. Импульсные преобразователи - источники помех by design. Дальше все сильно зависит от правильности, ну или тщательности фильтрации. С этим довольно часто возникают вопросы и к, казалось бы, брендовым изделиям, а вездесущий китайский мусор - с китайской-то склонностью экономить на спичках, часто не имеет фильтрации вообще никакой, даже номинальной, загаживая с одной стороны электросеть, в которую включен, а с другой стороны питаемый прибор, используя сам прибор и собственно кабель питания как излучающую помехи антенну.

А как же резонансные бп? Их, конечно, сложнее рассчитывать и настраивать, но если все сделать как надо фонить они практически не будут.

А как же резонансные бп?

Никак. Они на среднюю температуру по больнице не влияют. Так же как не влияют линейные блоки питания.

Их, конечно, сложнее рассчитывать и настраивать, но если все сделать как надо фонить они практически не будут.

Пока компатрия Китая не постановила производить только такие блоки питания на экспорт - правильно рассчитанные и тщательно настроенные, с серьезными санкциями против нарушителей этого пока что не существующего постановления, сокращения темпов ухудшения помеховой обстановки ждать не приходится.

Добрый день, можете поделиться моделью оптического удлинителя?

Вот этот:

Вообще вначале, после того как проблему локализовали, я проверил с удлинителем через TCP/IP, типа такого: и проблема ушла:

Суть в том, что большинство дешёвых удлинителей, типа таких

не имеют гальванической развязки между железкой и компьютером (даже если экстендер использует RJ45 кабель, он его использует просто как многожильный провод). А в удлинителе, основанном на TCP/IP с обеих сторон стоят два одноплатника, типа малинок, которые гонят USB траффик в честный TCP, и обратно, соответственно мы можем отнести железку от компьютера настолько, насколько позволяет сетевой сегмент, ну и к помехам такой удлинитель невосприимчив (там к тому же трансформаторы развязывающие стоят, насколько я понимаю). Но удлинитель на TCP стоил под четыре сотни евро, кроме того хаб на четыре порта нам не нужен, поэтому в рамках оптимизации расходов перешли на оптику — тут ценник почти в четыре раза ниже, около ста евро за пятнадцатиметровый кабель.

Спасибо, этот USB кабель именно то, что мне нужно.

У меня про USB в медицинской технике есть пара историй.

1 электроэнцефалограф

Кто-нибудь сталкивался с такой вещью, как прибор портит USB-порты?
Причем именно портит, а не сжигает.

Выглядит это так, что программа перестает работать с прибором, она его
иногда видит, а иногда нет, иногда появляются всякие ошибки.
Поработает неделю и снова начинает глючить.
Втыкаешь в другой USB-порт - начинает работать, втыкаешь в старый порт - уже не работает.
Подключаешь другое устройство в глючный порт, мышь, флэшку - работает, а устройство нет.

Лучше бы совсем сжигались порты.

Чтобы не "портить" порты на материнской плате, начали использовать USB-хабы.
Неделю или две через хаб работает, потом внезапно перестает.
Устройство перестает работать через любой порт хаба.
Флэшки, мышки, принтеры через этот же хаб работают.

Втыкаешь в материнку, все работает, потом перестает; подключаешь через старый хаб - работает.

Комп меняли, кабель тоже меняли.
хабы использовались как с отдельным питанием, так и без.


Иногда может несколько месяцев работать нормально, вызывая иллюзию, что
проблема была в узле Х, но потом все начинается сначала.

2 рентген

Есть в наличии Стоматологический рентген Sidexis Система для цифровой рентгенографии "Sidexis" от словацкого бренда "Sirona" на базе обычного ПК, в который загружено управляющее ПО "Sidexis" от компании "Sirona".
К нему подключены В её состав из "железа" входят:
1) панорамный рентген ортопантомограф через Ethernet;
2) прицельный рентген XIOS-Plus USB через USB.
Также все стоматологи поликлиники могут смотреть снимки, полученные с этих приборов через локальную сеть.
Всё это нормально работало более четырёх лет, успели даже поменять агрегат для снятия панорам.
И вот с декабря прошлого года начались непонятные вещи с прицельными снимками.
Делается несколько снимков, или сразу подряд, или в течение часа разным пациентам, и приём снимков зависает.
Зависнуть может или на втором снимке, или через 15, системы никакой.
Как это выглядит:
-
в программе выбирается сделать снимок пациенту, появляется окно
ожидания снимка, лаборант жмёт кнопку съёмки, трубка срабатывает, в
программе висит окно: "Излучение опознано", и через несколько секунд
ошибка в программе.

Достаточно отключить USB-прибор от компьютера и включить обратно, как всё продолжает работать.
Внешнего питания прибор не имеет, имеет только вход от датчика и USB-выход к компьютеру.
Далее начинается сказка:
Приезжает инженер. Да зависает, проверим кабель.
Отключаем пятиметровый(!) удлинитель, делаем 15-ть снимков - всё работает. Инженер говорит, нельзя использовать удлинитель! OK !
Через пару дней снова начинаются зависания.
Опять приезжает инженер, меняют датчик и сам прибор, меняется кабель, всё работает.
Через пару дней снова начинаются зависания. sic!
В
процессе "прыганий" вокруг прибора обнаруживаем, что вместе с
программой виснет и USB-мышь,. Меняем мышь, бесполезно ... Ладно может
материнская плата глючит? ...
Меняем полностью компьютер, ситуация не меняется.
Проверяем на отдельном ноутбуке - зависает.
Имеем в наличии два провода 2 и 1.5 метра.

Ноутбук стоит на столе, где комп с проводом 2-а метра - виснет ...
Ноутбук стоит посреди комнаты с проводом 1,5-а метра - не виснет, и отщёлкивает подряд более 15-ти снимков!

Отключаем от компа всё кроме клавы и мыши, подключаем кое-как этот самый короткий провод - виснет ...
Полностью ставим на пустую базу - виснет.
Отключаем Smart-UPS, подключаем напрямую к розетке компьютер - виснет.
Итого:
- датчик меняли;
- прибор меняли;
- кабель меняли;
- компьютер меняли;
- версию софта меняли.
Продолжает виснуть без какой-либо системы ...

Волшебную изоленту для прикручивания провода от датчика к прибору тоже применяли.

Через пару месяцев страданий так вообще отказались от USB-датчика в пользу Ethernet-подключения.

Чей чипсет был на компьютерах - АМД или Интел?

Насколько помню, AMD нигде не было.

С ethernet вас тоже ждут приключения, думаю. Мы замучались с ним уже. У нас такое же стоит, раз в неделю какая-то невоспроизводимая хтонь обязательно происходит. Лечится ребутами. Видимо, таков путь Sidexis)

Этой истории лет 10 уже. Как ни странно потом снова все заработало стабильно как и до событий истории. Тогда и сам Sidexis был элегантен и прост, без этих всех стопицот фреймворков дотнета, библиотек directx, и непонятных служб COM-сервисов.

А как Линукс отреагирует на такое?
Запишет в лог и отключит заглючивший порт?

Теперь этой тележкой стали сами пользователи

Самое ужасное, что у меня падает wifi принтер.... Я даже помню как откатывал Винду что бы распечатать документы.

Ранее Чен рассказывал, что в ранних сборках планшетной версии Windows 8 в меню для вывода на экран кодов ошибок были заведены девять картинок с кошками, сидящими на заборе и вилявшими хвостиками, смотря на заходящую Луну. Именно эти картинки позволяли разработчикам понять, что в запущенном приложении произошла ошибка, и экран с кнопкой «Пуск» недоступен.

А вот оставили бы эту фичу, 8-ка была бы до сих пор самой популярной

У нас на складе поставили базовую станцию оператора, у которого в названии бренда есть цифра два. Антенны на крыше через технический этаж. После этого утром и вечером многие USB принтеры отказывались печатать с ошибкой. Днём всё работало нормально.

Т.е. принтер видно, но задание на печать не уходит - ошибка связи.

При удалении принтера и дров и подключении заново, принтер определялся, дрова ставились, но печать не шла.

Помогла замена USB кабелей на кабели с ферритовым кольцом.

На моей первой работе был случай: при подключении принтера комп уходил в синий экран. Забрали в наш кабинет чинить - всё работает. Вернули обратно - та же история. Потом кто-то догадался подключить принтер в другую розетку (речь о питании 220В) и всё заработало. Оказалось, что розетки, куда изначально включали комп и принтер, были запитаны от разных фаз.

Похожие чудеса бывают и при использовании одной фазы, но с её подачей на разные линии кабеля питания, что при отсутствии заземления даёт потенциал между корпусами устройств, влияющий на работу низковольтных интерфейсов. Обычно лечится поворотом вилки одного из устройств на 180 градусов.

В одной гос.поликлинике стоял периметр (прибор для диагностики поля зрения) - большой настольный прибор в металлическом корпусе, подключённый к RS-232 порту ПК, и хотя прибор и ПК были подключены к двум розеткам с разными фазами, защита в портах оказалась надёжной и оба устройства нормально работали. Никто бы так ничего и не заподозрил, если бы людей периодически не ударяло током от прикосновения к батарее с последующим срабатыванием автомата в щитке.

Но, поскольку добиться ремонта чего-либо в госучреждении бывает невозможно, проблему там решили с помощью обычного тройника без заземления.

У меня аналогичным образом на одном объекте было. Если от коридорного Ethernet коммутатора отключить другой коммутатор в кабинете, то в коридоре начинал пищать UPS, типа нет электричества. Приходилось переворачивать вилку в розетке. Но после подключения кабеля из кабинета, приходилось бесперебойник перетыкать обратно в розетку.
Электрикам говорил, что типа у вас там фигня какая-то, а они не верили.

Раз уж пошли истории совсем отвлечённые... У меня как-то в 2000х в активной колонке, которая была отключена не только от компа, но и из розетки, вдруг заговорил мужской голос. Я прифигел, проверил, что она стоит в шкафу и совсем отключена, и тут она у меня в руках опять заговорила. Оказалось, что в соседнем офисе настраивали таксистам радиостанции и сигнал с них наводился на эту колонку. Я объяснить это до сих пор не могу, пусть умные люди пытаются.

Так а что тут объяснять, мощности (радиосигнала от соседей) хватало, чтобы прямо таки динамик шевелился. Ну а про детекторный приемник, думаю, вы знаете, как он устроен, ну или нагуглите сами.

А как это повторить? Колонка у меня есть, а чем дать такой сигнал чтобы она его приняла? за это РКН не накажет? :)

А как это повторить?

Поиграться с таксистским радио. Любые провода от колонки, включая сетевой шнур, могут сработать как приемная антенна. Колонка должна быть активная, со встроенным усилителем - его полупроводниковая начинка, даже обесточенная, может сработать как амплитудный детектор.

Колонка у меня есть, а чем дать такой сигнал чтобы она его приняла?

Генератором сигналов или связной радиостанцией достаточной мощности (самой по себе или с дополнительным усилителем) и соответствующей антенной - судя по вашему описанию, в прошлый раз колонку заставили говорить именно этим способом. Не уверен, но предполагаю, что тогда настраивали радио на 27MHz с кирпичом - так на сленге назывался нелегальный усилитель мощности.

за это РКН не накажет?

Может и должен, но чисто практически вероятность околонулевая.

Усилитель и колонка работали как детекторный приёмник. На ютубе был видеоролик (не могу найти) где подростки стоят под мощной длинноволновой антенной и закорачивают пучком сырой травы её на землю. И там искровой разряд издаёт звук радиопередачи.

Когда радио энергии много то всё вокруг работает как приёмники.

Декады разработки, а BSOD как был ничетаемым куском для пользователя из разряда "ой, что-то случилось" так и остался

Мне в 2010+-1 году привезли в подарок мышку с 8 кнопками из Китая, продукт был для внутреннего рынка, собрано качественно. По руке размер, и довольно эргономично все собрано. Я и дома ей пользовался, и на работу носил. Но был минус - провод всего 0,7 м. Дома этого хватало, а на работе включал через удлинитель. За день 1-3 раза мышь отваливалась. Без экрана, просто курсор замирал и кнопки, как основные, так и дополнительные не нажимались. Перевтыкание в тот же порт (а других не было свободных) не помогало, только ресет. Причины выяснять не было времени, да и желания если честно. Помогла перепайка провода с умершего какого-то USB девайса, большей длины. Проблема перестала возникать, максимум раз в месяц. Удлинитель был качественный, из комплекта к Wi-Fi свистку, и другие тоже использовал.

Вообще если б кто-то на тему глюков USB-устройств детальную статью написал (а скорее цикл), думаю попал бы в ТОП

Была статья про бюджет потерь сигнала на usb, тут, на Хабре, из нее следует что стандарт практически не оставляет запаса на неидеальность оборудования, такчто глюки неизбежны

А остались ли другие "падения по другой причине" остаётся загадкой и по настоящий день...

Гигабитный PCIe сетевой адаптер TP-Link вызывает BSOD в Windows 11, если на него поступает хоть какой-то трафик, из-за её кривых комплектных сетевых драйверов.

На Windows 7, 8 и 10 ситуация не воспроизводится. Если отсоединить кабель от сетевого адаптера и обновить драйвер на более новый, то заработает и на Windows 11.

Но при обновлении с 10 до 11 у всех пользователей с этой сетевой картой будет синий экран, если она подключена к сети.

Может немного не в тему, но был такой случай.

Материнка под Атлон64 на Нвидивском чипсете (где-то середина нулевых). При использовании памяти в 2-х канальном режиме падает винда. Тестмем показывает кучу ошибок. В одноканальном режиме - всё ОК. И винда работает и тестмем идёт без ошибок.

Путём долгого "стучания в бубен" был найден способ это победить.

Отключили поддержку USB клавиатуры и мыши в BIOS и всё заработало! Проверено было на десятке компов с этим чипсетом.

Э, вот у меня было устройство USB так устройство - самодельная система охлаждения ноутбука. Там не то что BSOD, там дым шел из всех щелей.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Другие новости