Есть ли аналог lsusb для OS X


96

Этот вопрос, кажется, повсюду в Google, но все ответы указывают на использование System Profiler. Это хорошо, но с System Profiler все, что вы получаете, выглядит примерно так:

            DasKeyboard:

              Product ID: 0x1919
              Vendor ID: 0x04d9  (Holtek Semiconductor, Inc.)
              Version: 1.06
              Speed: Up to 1.5 Mb/sec
              Location ID: 0x1d114000 / 11
              Current Available (mA): 500
              Current Required (mA): 100

            USB2.0 Hub:

              Product ID: 0x0608
              Vendor ID: 0x05e3  (Genesys Logic, Inc.)
              Version: 32.98
              Speed: Up to 480 Mb/sec
              Location ID: 0x1d113000 / 10
              Current Available (mA): 500
              Current Required (mA): 100

                Microsoft Basic Optical Mouse v2.0 :

                  Product ID: 0x00cb
                  Vendor ID: 0x045e  (Microsoft Corporation)
                  Version: 1.99
                  Speed: Up to 1.5 Mb/sec
                  Manufacturer: Microsoft 
                  Location ID: 0x1d113200 / 12
                  Current Available (mA): 500
                  Current Required (mA): 100

Это замечательно , если все , что вы хотите , это содержимое связки дескрипторов устройств, но lsusbдает так много больше - информацию о интерфейсов и конечных точек, интерфейс ассоциаций, композитных устройств ... где вы можете найти эту информацию в OS X? Там должен быть инструмент , который делает это?


Если вы не возражаете, как вы используете такую ​​информацию, как «интерфейсы и конечные точки, ассоциации интерфейсов, составные устройства»?
Ben Creasy

Ответы:


136

Я устал забывать system_profiler SPUSBDataTypeсинтаксис, поэтому сделал lsusbальтернативу. Вы можете найти его здесь или установить с помощью homebrew:

brew install lsusb

2
Хороший сценарий! Хотите добавить его в формулу для домашнего пивоварения? Это было бы удобно.
moritz

1
Это хорошая утилита, но это всего лишь малая часть того, что lsusb в Linux может вам дать. lsusb в Linux может предоставить вам полное содержимое дескрипторов конфигурации устройства. Боюсь, что без этого этот инструмент в основном будет просто красивым принтером.
Тед Миддлтон

3
Может быть ограниченным, но он делает именно то, что мне нужно. Делает мою среду разработки совместимой с просто brew installблагодарностью !!
snakeoil

2
Это хороший сценарий, но на самом деле его не следует называть «lsusb», учитывая, что на lsusbсамом деле он может делать: askubuntu.com/a/604169/598643
Мистер Кеннеди,

1
Было бы alias lsusb='system_profiler SPUSBDataType'
неплохо,

73

Обычно я запускаю эту команду для вывода списка USB-устройств в Mac OS X вместе с подробной информацией о них:

ioreg -p IOUSB -l -w 0

См. Мой ответ на @blekenbleu о ioreg
Тед Миддлтон

3
Копия комментария Теда Миддлтона : Проблема в том, что ioreg и IORegistryExplorer показывают вам объекты ядра, сопоставленные с устройствами, а не детали самих устройств. Это означает, что вы не увидите интерфейсов в конфигурациях, отличных от текущей активной, и вообще не увидите никакой информации о конечных точках (что является наиболее полезным выводом lsusb).
Maarten Bodewes,

1
Кажется, что страницы руководства были удалены. Альтернативные варианты (по состоянию на май 2019 г.): unix.com/man-page/mojave/8/ioreg и manpagez.com/man/8/ioreg
rdadolf

26

Пользователи Homebrew: вы можете получить lsusb, установив usbutilsформулу из моего крана:

brew install mikhailai/misc/usbutils

Он устанавливает REAL lsusbна основе исходников Linux (версия 007).


1
Наконец-то настоящая сделка. Я могу подтвердить, что этот работает на OX 10.13.6.
Гвидо

3
Спасибо, это гораздо лучшее решение, недоступное на момент разработки lsusbсценария.
jlhonora

2
Спасибо, @jlhonora. Ирония в том, что ребята из Homebrew решили добавить ваш lsusbскрипт homebrew-coreвместо моего usbutils.
Михаил Яхьяев

1
Вы всегда можете отправить им PR.
jlhonora


9

В mac osx вы можете использовать следующую команду:

system_profiler SPUSBDataType

system_profiler имеет ту же проблему, что и ioreg - он отражает состояние объектов ядра, которое ядро ​​сопоставило с устройствами, а не сами устройства. Мне нужно что-то, что в основном отображало бы полную схему устройства, как то, что находится во всех дескрипторах конфигурации всех конфигураций.
Тед Миддлтон

6

Если вы являетесь пользователем MacPorts , вы можете просто установить usbutils

sudo port install usbutils

Если это не так, это может быть хорошей возможностью для его установки, у него есть порты для нескольких других полезных инструментов Linux.


А, хорошо, в файле порта я вижу "depends_lib port: libusb", и, похоже, исходный код действительно требует libusb. Думаю, это сработает. Хотя я на самом деле не использую macports - я нахожусь на пиве. И я бы не хотел устанавливать macports только для этого, особенно когда lsusb можно так легко переопределить с помощью iokit пользовательского пространства.
Тед Миддлтон

Это должен быть принятый ответ. Хауэрвер, сейчас этот пакет не работает из-за его зависимости usbids, отслеживайте его через trac.macports.org/ticket/53188

Похоже, это уже исправлено.
Maarten Bodewes

4

Как насчет ioreg? Вывод намного более подробный, чем профилировщик, но он немного плотный.

Источник: https://lists.macosforge.org/pipermail/macports-users/2008-July/011115.html


См. Мой ответ на @blekenbleu. lsusb содержит гораздо больше информации, чем ioreg / IORegistryExplorer или любая другая программа, такая как system_profiler, которая просто просматривает реестр iokit.
Тед Миддлтон


0

По крайней мере, в версии 10.10.5 system_profiler SPUSBDataTypeвывод НЕ обновляется динамически при подключении нового USB-устройства, в то время как это ioreg -p IOUSB -l -w 0происходит.


Проблема в том, что ioreg и IORegistryExplorer показывают вам объекты ядра, сопоставленные с устройствами, а не детали самих устройств. Это означает, что вы не увидите интерфейсов в конфигурациях, отличных от текущей активной, и вообще не увидите никакой информации о конечных точках (что является наиболее полезным выводом lsusb).
Тед Миддлтон

Я бы хотел инструмент, который бы отображал содержимое всех дескрипторов конфигураций устройства. ioreg этого не сделает, lsusb.
Тед Миддлтон

Я не понимаю, чем это отличается от этого ответа ?
Maarten Bodewes

0

В Mac OS X в комплект разработчика Xcode входит приложение USB Proper.app. Он находится в / Developer / Applications / Utilities /. USB Prober позволит вам исследовать дескрипторы устройства и интерфейса.


Xcode.app/Contents/Applications/Utilities не существует в Xcode 8.3, и в приложениях нет USB Prober. Я знаю, что USB Prober все еще доступен, но я еще не смог узнать, где он. Он находится внутри пакета с некоторыми другими инструментами.
Майк Кроуфорд
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.