Получите потребляемую мощность USB-устройства

Они - на самом деле просто это - интерфейсы. Закодированный "главным" и "незначительным" числом они предоставляют рычаг ядру.

Они прибывают в две разновидности (хорошо, три, но именованные каналы вне объема этого объяснения на данный момент): Устройства посимвольного ввода-вывода и Блочные устройства.

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

Устройства посимвольного ввода-вывода являются вещами как звуковые карты или видеокарты или устройства ввода данных как клавиатура и мышь.

В каждом случае, когда ядро загружает корректный драйвер (или во время начальной загрузки, или с помощью программ как udev) это сканирует различные шины, чтобы видеть, присутствуют ли какие-либо устройства, обработанные тем драйвером на самом деле, в системе. Если так, это настраивает устройство, которое 'слушает' на соответствующем главном/незначительном числе.

(Например, Цифровой сигнальный процессор первой звуковой карты, найденной Вашей системой, получает главную/незначительную пару числа 14/3; второе добирается 14,35, и т.д.),

Это до udev для создания записи в /dev именованный dsp поскольку устройство посимвольного ввода-вывода отметило главные 14 незначительных 3.

(В значительно более старом или версиях минимального места Linux, /dev/ может не быть динамично загружен, но просто содержать все возможные файлы устройств статически.)

Затем когда программа пространства пользователя пытается получить доступ к файлу, это отмечено как 'символьный специальный файл' с соответствующим главным/незначительным числом (например, Ваш аудиоплеер, пытающийся отправить цифровое аудио в /dev/dsp ), ядро знает, что эти данные должны быть переданы через драйвер, к которому присоединено главное/незначительное число; по-видимому, упомянутый драйвер знает, что сделать с ним в свою очередь.

29
24.09.2016, 17:06
4 ответа

Смотрите на этот SuperUser названные Вопросы и ответы: Как Вы проверяете, сколько питания USB-порт может поставить?, конкретно мой ответ.

lsusb-v

Можно получить использование максимальной мощности lsusb -v, например:

$ lsusb -v|egrep "^Bus|MaxPower"
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    MaxPower                0mA
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    MaxPower                0mA
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    MaxPower                0mA
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    MaxPower                0mA
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    MaxPower                0mA
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    MaxPower                0mA
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    MaxPower                0mA
Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
    MaxPower              100mA
Bus 003 Device 002: ID 046d:c517 Logitech, Inc. LX710 Cordless Desktop Laser
    MaxPower               98mA
Bus 001 Device 004: ID 04a9:1069 Canon, Inc. S820
    MaxPower                2mA
Bus 001 Device 005: ID 05ac:120a Apple, Inc. iPod Nano
    MaxPower              500mA
    MaxPower              500mA
28
27.01.2020, 19:38
  • 1
    я не думаю, что это - корректный ответ. О моем arduino сообщают как использующий 100mA, даже когда я помещаю его для сна (где другой измерили потребляемую мощность приблизительно 56mA затем). Если я делаю своего Ардуино активным, о нем также сообщают как 100mA... –  Huygens 29.07.2015, 21:13
  • 2
    Можно ли предложить подобную команду для Windows? –  Suncatcher 10.07.2017, 13:36

Вы могли также взглянуть на usb-devices:

$ usb-devices | grep 'Product=\|MxPwr'
S:  Product=EHCI Host Controller
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
S:  Product=EHCI Host Controller
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
S:  Product=USB Keykoard
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=98mA
S:  Product=USB Receiver
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=98mA
S:  Product=DW375 Bluetooth Module
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=100mA
S:  Product=5880
C:  #Ifs= 2 Cfg#= 0 Atr=c0 MxPwr=100mA
17
27.01.2020, 19:38

Существует a bMaxPower файл в sysfs папке устройства. Но я не думаю, что это будет очень полезным. Вы сможете найти, что устройство "запросило" 500mA только выполнить стандарт, но не фактическое потребление тока.

7
27.01.2020, 19:38

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

Реальный ответ для измерения в реальном времени, вероятно, состоит в том, что получить эту информацию из ОС невозможно. Я предполагаю, что все это согласовывается на уровне проводов и фактически контролируется дополнительными регуляторами напряжения / резисторами.

Более того, наличие устройств, специально разработанных для этого, является для меня последним намеком на то, что «простого» решения не существует.

1
27.01.2020, 19:38

Теги

Похожие вопросы