Вопрос или проблема
Проблема
Порты USB (2.0) продолжают перезагружаться, что приводит к остановке работы подключенных периферийных устройств через некоторое время.
Аппаратное обеспечение
Материнская плата: ASUS J1800I-C
Процессор: Intel(R) Celeron(R) CPU J1800 @ 2.41GHz
Оперативная память: 4 ГБ
Количество устройств: > 100 устройств, работающих как платежные киоски, все показывают одну и ту же проблему.
Подключенные USB-устройства (lsusb)
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 013: ID 0dd4:015d Custom Engineering SPA
Bus 001 Device 012: ID 12d1:1506 Huawei Technologies Co., Ltd. Модем/сетевой адаптер
Bus 001 Device 011: ID 23d8:0285
Bus 001 Device 010: ID 1ff7:0013 CVT Electronics.Co.,Ltd CVTouch Screen (HID)
Bus 001 Device 009: ID 05e3:0610 Genesys Logic, Inc. 4-портовый концентратор
Bus 001 Device 002: ID 0e8f:0022 GreenAsia Inc. мультимедийная клавиатура
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ОС, воспроизводящие проблему:
Ubuntu 14.04-server (64bit)
Ubuntu 16.04-server (64bit)
Ubuntu 18.04-server (64bit)
Ubuntu 14.04 (сервер и десктоп) (32bit)
Ubuntu 16.04-server (32bit)
Пробовал вышеуказанные ОС с загрузкой как UEFI, так и BIOS.
ОС, не вызывающие проблем с тем же оборудованием:
Windows 7
Симптомы:
При запуске все работает хорошо, и USB-устройства работают в течение 15~60 минут.
После этого времени один или несколько портов начинают перезагружаться с ошибками, которые появляются в dmesg:
[ 1484.129248] perf interrupt took too long (2520 > 2500), lowering kernel.perf_event_max_sample_rate to 50000 [ 2645.972003] usb 1-4-port1: cannot reset (err = -71) [ 2646.236044] usb 1-4.1: reset full-speed USB device number 4 using xhci_hcd [ 2646.324439] usb 1-4.1: ep 0x1 - rounding interval to 64 microframes, ep desc says 80 microframes [ 2647.558156] usb 1-4.1: reset full-speed USB device number 4 using xhci_hcd [ 2647.646546] usb 1-4.1: ep 0x1 - rounding interval to 64 microframes, ep desc says 80 microframes [ 3942.619669] usb 1-4-port1: cannot reset (err = -71) [ 3942.619742] usb 1-4-port1: cannot reset (err = -71) [ 3942.619821] usb 1-4-port1: cannot reset (err = -71) [ 3942.619861] usb 1-4-port1: cannot reset (err = -71) [ 3942.619901] usb 1-4-port1: cannot reset (err = -71) [ 3942.619905] usb 1-4-port1: Cannot enable. Maybe the USB cable is bad? [ 3942.690031] usb 1-4.1: reset full-speed USB device number 4 using xhci_hcd [ 3942.690038] usb 1-4.1: hub failed to enable device, error -22 [ 3942.762176] usb 1-4.1: reset full-speed USB device number 4 using xhci_hcd [ 3943.170800] usb 1-4.1: device not accepting address 4, error -22 [ 3943.242967] usb 1-4.1: reset full-speed USB device number 4 using xhci_hcd [ 3943.651734] usb 1-4.1: device not accepting address 4, error -22 [ 3943.653063] usb 1-4.1: USB disconnect, device number 4 [ 3943.751603] usb 1-4.1: new full-speed USB device number 8 using xhci_hcd [ 3943.840892] usb 1-4.1: New USB device found, idVendor=1ff7, idProduct=0013 [ 3943.840899] usb 1-4.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3943.841068] usb 1-4.1: ep 0x1 - rounding interval to 64 microframes, ep desc says 80 microframes [ 3943.850194] input: HID 1ff7:0013 as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.1/1-4.1:1.0/0003:1FF7:0013.0005/input/input11 [ 3943.850467] hid-multitouch 0003:1FF7:0013.0005: input,hiddev0,hidraw3: USB HID v1.11 Mouse [HID 1ff7:0013] on usb-0000:00:14.0-4.1/input0 [ 4215.269989] usb 1-4-port1: cannot reset (err = -71) [ 4215.270192] usb 1-4-port1: cannot reset (err = -71) [ 4215.270264] usb 1-4-port1: cannot reset (err = -71) [ 4215.270343] usb 1-4-port1: cannot reset (err = -71) [ 4215.270383] usb 1-4-port1: cannot reset (err = -71) [ 4215.270386] usb 1-4-port1: Cannot enable. Maybe the USB cable is bad? [ 4215.342214] usb 1-4.1: reset full-speed USB device number 8 using xhci_hcd [ 4215.342221] usb 1-4.1: hub failed to enable device, error -22 [ 4215.358192] hub 1-4:1.0: hub_ext_port_status failed (err = -71) [ 4215.358263] usb 1-4-port1: cannot reset (err = -71) [ 4215.622566] usb 1-4.1: reset full-speed USB device number 8 using xhci_hcd [ 4215.755250] usb usb1-port4: disabled by hub (EMI?), re-enabling... [ 4215.755273] usb 1-4: USB disconnect, device number 3 [ 4215.755277] usb 1-4.1: USB disconnect, device number 0 [ 4216.031181] usb 1-4.1: device not accepting address 8, error -22 [ 4216.064588] usb 1-4.2: USB disconnect, device number 5 [ 4216.065324] usb 1-4.3: USB disconnect, device number 6 [ 4216.065632] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0 [ 4216.065647] option 1-4.3:1.0: device disconnected [ 4216.065760] huawei_cdc_ncm 1-4.3:1.1 wwx001e101f0000: unregister 'huawei_cdc_ncm' usb-0000:00:14.0-4.3, устройство Huawei CDC NCM [ 4216.079590] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1 [ 4216.079611] option 1-4.3:1.2: device disconnected [ 4216.079752] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2 [ 4216.079768] option 1-4.3:1.3: device disconnected [ 4216.148026] usb 1-4.4: USB disconnect, device number 7 [ 4216.148183] usblp2: удален [ 4216.387741] usb 1-4: new high-speed USB device number 9 using xhci_hcd [ 4216.517658] usb 1-4: New USB device found, idVendor=05e3, idProduct=0610 [ 4216.517666] usb 1-4: New USB device strings: Mfr=0, Product=1, SerialNumber=0 [ 4216.517670] usb 1-4: Product: USB2.0 Hub [ 4216.518341] hub 1-4:1.0: USB hub found [ 4216.518643] hub 1-4:1.0: 4 ports detected [ 4216.792385] usb 1-4.1: new full-speed USB device number 10 using xhci_hcd [ 4216.885849] usb 1-4.1: New USB device found, idVendor=1ff7, idProduct=0013 [ 4216.885855] usb 1-4.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 4216.886042] usb 1-4.1: ep 0x1 - rounding interval to 64 microframes, ep desc says 80 microframes [ 4216.895096] input: HID 1ff7:0013 as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.1/1-4.1:1.0/0003:1FF7:0013.0006/input/input13 [ 4216.951230] hid-multitouch 0003:1FF7:0013.0006: input,hiddev0,hidraw2: USB HID v1.11 Mouse [HID 1ff7:0013] on usb-0000:00:14.0-4.1/input0
Что я пробовал и что НЕ решило проблему:
Я пытался отключить автоусыпление для USB-портов, добавив командную строку ядра Linux: usbcore.autosuspend=-1 среди многих других опций, и все они не сработали.
Я также пытался изменить несколько опций BIOS, связанных с USB, ничего не помогло.
Полезные факты:
– Все 4-портовые USB 2.0 вызывают проблему.
– Материнская плата имеет один USB 3.0 порт, который, похоже, не затрагивается этой проблемой.
– Использование активного USB-хаба, подключенного к USB3 порту, а затем подключение всех USB-устройств к нему, похоже, решает проблему.
– Использование 32-битной версии той же ОС, похоже, решает проблему с USB. Протестировано несколько киосков с 32-битной установкой в течение 3 дней без единого предупреждения или ошибки dmesg.
Вопрос:
Как я могу решить эту проблему на моем 64-битном Ubuntu 16.04?
Переход на 32 бита — это нереальное решение для меня, так как это требует переустановки более 100 устройств. Кроме того, часть моего оборудования поставляется с 64-битным проприетарным SDK.
Обновление 1:
Проблема, похоже, не связана с архитектурой процессора, и она произошла через некоторое время на Ubuntu 14.04-32bit и 16.04-32bit
Возможное решение – черный список модулей ядра, связанных с USB, в процессе проб и ошибок показал, что модуль ядра ehci-pci
был причиной проблемы.
Для временного решения просто удалите модуль ядра:
sudo rmmod ehci_pci
Для постоянного решения либо добавьте модуль в черный список через параметры загрузки ядра, например:
modprobe.blacklist=ehci_pci
Примечание. Черный список ehci_pci также предотвратит загрузку модуля ядра ehci-hcd
.
Модули ядра ehci* — это драйверы USB 2 для ядра.
К счастью, модули ядра USB 3 xhci* также поддерживают устройства USB 2, и вы не заметите потери производительности с ними
Я использую клавиатуру и мышь BlackWidow ultimate. Когда я подключаю мышь
в USB порт на стороне клавиатуры, я получаю многотысячные
перезагрузки USB портов.
НО когда я подключаю эту мышь в порт USB 1.x или 2.x напрямую на материнской плате (избегая портов 3.x), перезагрузки портов проходят
Ответ или решение
USB-порты постоянно сбрасываются на Linux: Решение проблемы
Введение
Если вы сталкиваетесь с проблемой постоянного сброса USB-портов на системе Linux, это может оказывать значительное влияние на производительность и функциональность ваших устройств. Рассмотрим подробнее причины возникшей ситуации и предложим возможные решения для устранения этой проблемы.
Описание проблемы
Вы используете оборудование на базе материнской платы ASUS J1800I-C с процессором Intel Celeron J1800 и 4 ГБ оперативной памяти. У вас более 100 терминалов для платёжных киосков, и все они демонстрируют аналогичную проблему с USB-портами 2.0: после 15-60 минут работы начинаются сбои, подтвержденные сообщениями об ошибках в dmesg.
Наблюдаемые симптомы
Ошибка, возникающая в dmesg, включает сообщения о сбоях USB:
usb 1-4-port1: cannot reset (err = -71)
Cannot enable. Maybe the USB cable is bad?
hub failed to enable device, error -22
Эти сообщения подразумевают, что что-то мешает нормальной работе USB-портов, что приводит к разъединению подключаемых устройств.
Анализ
Несмотря на использование различных версий Ubuntu (14.04, 16.04 и 18.04, 32 и 64 бит), проблема остаётся актуальной, в то время как та же конфигурация под Windows 7 работает исправно. Это указывает на то, что проблема может быть связана с USB-драйверами и совместимостью ядра Linux.
При тестировании было замечено, что использование USB 3.0 портов или использование USB-хаба с собственным питанием решает проблему. Также работоспособные системы под 32-битной архитектурой не демонстрировали таких проблем, что может намекать на различия в управлении ресурсами в 64-битной версии.
Решение проблемы с помощью черного списка модулей
На основе проведённых тестов было установлено, что модуль ehci-pci
может быть причиной проблемы. Чтобы временно решить проблему, вы можете отключить этот модуль, выполнив следующую команду:
sudo rmmod ehci_pci
Для долговременного решения добавьте модуль в черный список, добавив следующее в параметры загрузки ядра:
modprobe.blacklist=ehci_pci
Это действие предотвратит загрузку модуля ehci-hcd
, который отвечает за управление USB 2.0. К счастью, модули USB 3.0 (xhci) поддерживают работу с USB 2.0 устройствами, поэтому вы не заметите потери производительности после внесения таких изменений.
Заключение
Хотя проблемы с USB-портами на Linux могут быть сложными и требовать значительных усилий для устранения, использование метода с черным списком модуля ehci-pci
демонстрирует эффективность в решении этой задачи. Убедитесь, что вы тщательно протестировали все предлагаемые решения на вашем оборудовании, чтобы избежать потенциальных сбоев в работе систем.