Linux get vendor id

How to get USB vendor and product info programmatically on Linux?

Now I want to get the full strings that are associated with the vendor and product ids. I found that the file /usr/share/misc/usb.ids contains the information that I’m looking for:

13b1 Linksys 000b WUSB11 v4.0 802.11b Adapter 000d WUSB54G Wireless Adapter 0011 WUSB54GP v4.0 802.11g Adapter 0018 USB200M 10/100 Ethernet Adapter 001a HU200TS Wireless Adapter 001e WUSBF54G 802.11bg 0020 WUSB54GC 802.11g Adapter [ralink rt73] 0023 WUSB54GR 0024 WUSBF54G v1.1 802.11bg 

However, it’s not clear to me how I should retrieve this data in my application. Is there an API available or should I just parse the file? If I choose to parse it, then is /usr/share/misc/usb.ids always going to be the correct location?

Here’s the most recent version: linux-usb.org/usb.ids and the interface for submitting them: linux-usb.org/usb-ids.html

On Android, my C program uses libusbhost which provides callbacks for device insertion/removal. All device descriptors are made available by the lib.

5 Answers 5

lsusb command queries information about currently plugged USB devices. You can use its -d option to query a certain vendor/product (but it seems to work only for currently plugged devices):

$ lsusb -d 0e21:0750 Bus 001 Device 005: ID 0e21:0750 Cowon Systems, Inc. 

You can show information for all devices:

$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 004: ID 0421:01c7 Nokia Mobile Phones Bus 001 Device 003: ID 0bda:8187 Realtek Semiconductor Corp. RTL8187 Wireless Adapter Bus 001 Device 005: ID 0e21:0750 Cowon Systems, Inc. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 002: ID 046d:c01b Logitech, Inc. MX310 Optical Mouse Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub 

You can also make it be verbose ( lsusb -v ) and printing a lot of stuff.

Note that when accessing information about the system in Linux OS, it’s much preferred to do it via shell commands (such as lsusb ) than to directly parse the system files these commands access.

@Stacked, yes (for C), but that depends on a language you develop in. But either way you’ll be reading something from a stream, and calling lsusb -d . via popen seems to require less keystrokes than parsing the whole file with descriptions.

Haven’t tried this myself, but libudev’s udev_device_get_property_value should be it; it is used in pulseaudio’s udev-util.c as udev_device_get_property_value(card, «ID_VENDOR_FROM_DATABASE»)) .

Читайте также:  Готовый linux интернет шлюз

Here is a small example I just put together, based on udev-util.c — note that I’ve used an Arduino Duemillanove with FTDI FT232 chip, whose udev path I find using udevadm (see comments in code below), and then I hardcoded it in the below program, udevl.c :

// sudo apt-get install libudev-dev // build with: gcc -o udevl -ludev -Wall -g udevl.c #include #include int main( int argc, char **argv ) < const char *v; char t[256]; struct udev *udev; struct udev_device *card = NULL; if (!(udev = udev_new())) < fprintf(stderr, "Failed to allocate udev context.\n"); return -1; >// $ lsusb | grep FT232 // Bus 002 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC // $ udevadm info --name=/dev/ttyUSB0 --attribute-walk | grep "looking at device" // looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/ttyUSB0/tty/ttyUSB0' // (that one is under /sys) // hardcode that path below: // udev_get_sys_path(udev) for me: '/sys' sprintf(t, "%s/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/ttyUSB0/tty/ttyUSB0", udev_get_sys_path(udev)); fprintf(stdout, " path: %s\n", t); card = udev_device_new_from_syspath(udev, t); fprintf(stdout, " udev_device: 0x%08X\n", (unsigned int)card); if ((v = udev_device_get_property_value(card, "ID_MODEL_FROM_DATABASE")) ) fprintf(stdout, "got ID_MODEL_FROM_DATABASE: %s\n", v); else fprintf(stdout, "failed getting ID_MODEL_FROM_DATABASE: %s\n", v); fprintf(stdout, "Done.\n"); if (card) udev_device_unref(card); if (udev) udev_unref(udev); return 0; > 

This program (with the Arduino attached) outputs:

$ ./udevl path: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/ttyUSB0/tty/ttyUSB0 udev_device: 0x09FBF080 got ID_MODEL_FROM_DATABASE: FT232 USB-Serial (UART) IC Done. 

. and «FT232 USB-Serial (UART) IC» is the right entry for VID:PID 0403:6001 in usb.ids.

Источник

How to get Vendor ID of an Android-powered device via adb?

I have a problem with how to get vendor ID and product ID of an Android-powered device. Are there any commands of adb that can do this? I can get vendor id and product id while device inserted, but after installing windows drivers, I could not tell apart the real vendor id if I insert two devices at on time. So I need to find out the vendor ID via ADB or any other connections between the hardware device and the android device.

5 Answers 5

If you are running Ubuntu/Linux Just Key in

and press enter. It will bring out details of all USB devices. Check for a field called «idVendor» in the results and find your device. Eg: My Motorola Defy[vendor gives,

» idVendor 0x22b8 Motorola PCS»

This in no way connects the information that adb has (serial number) to the actual vendor/product id. On this level, having several phones of the same model will make it impossible to recognize them from one another.

i don’t know whether you got the solution but connecting my phone via USB cable to my computer and typing the below line of code on ubuntu terminal i was able to get Vendor ID

For example, if you had a Nexus One connected you would get:

Bus 002 Device 004: ID 18d1:4e12

In this case the Vendor Id is “18d1″ and the Product ID is “4e12″. (we are interested in vendor id of course)

@NoumanCh You just need to type lsusb only on the terminal. Try also to make sure your phone is accessible from the computer. e.g if you has set usb configuration to charging only, you can change to transfer files

Читайте также:  Samba astra linux сетевая папка

ADB itself will not help find the Vendor ID of a connected piece of hardware, indeed (for the Google ADB driver) it’s necessary to have the Vendor ID set up in advance of it working with ADB.

Fortunately, there’s an easy way to find the Vendor ID (and Product ID) of any device connected to a Windows PC. The device doesn’t even need drivers for this approach to work:

  1. Start Device Manager
  2. In the Hardware tree, right-click the hardware entry for the device for which the Vendor ID is to be determined.

Properties for item to be checked

  1. On the Details tab, set the property drop-down to be «Hardware Ids». The Vendor ID is the 4 character hexadecimal number following the letters VID_ . In the case below, the Vendor ID is 18D1 :

Showing the Vendor and Product ID

The PID_ , which follows, is the Product ID. It also has a 4-digit hexadecimal number.

Источник

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

Получение информации о системном оборудовании не является проблемой для пользователей Linux GUI и Windows, но пользователи CLI сталкиваются с проблемами, чтобы получить эту информацию.

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

Производитель аппаратного оборудования, модель и серийный номер.

Мы пытаемся написать возможные способы получения этих данных, но вы можете выбрать лучший метод для вас.

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

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

Метод-1: Использование команды Dmidecode

Dmidecode – это инструмент, который считывает DMI компьютера (означает интерфейс управления рабочим столом) (некоторые говорят, что содержимое таблиц SMBIOS – System Management BIOS) и аппаратная информация для системы отображения в формате, удобном для человека.

В этой таблице содержится описание аппаратных компонентов системы, а также другая полезная информация, такая как серийный номер, информация о производителе, дата выпуска и ревизия BIOS и т.д..

В таблице DMI описывается не только то, что в настоящее время используется системой, но также можно сообщить о возможной эволюции (например, самый быстрый поддерживаемый процессор или максимальный объем поддерживаемой памяти).

Это поможет вам проанализировать возможности вашего оборудования, будь то поддержка последней версии приложения или нет?

~# dmidecode -t system # dmidecode 3.0 Getting SMBIOS data from sysfs. SMBIOS 2.7 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: Aquarius Product Name: Aquarius Std W60 S10 Version: To be filled by O.E.M. Serial Number: To be filled by O.E.M. UUID: 03AA02FC-0414-055D-E006-2F0700080009 Wake-up Type: Power Switch SKU Number: To be filled by O.E.M. Family: To be filled by O.E.M. Handle 0x0022, DMI type 12, 5 bytes System Configuration Options Option 1: To Be Filled By O.E.M. Handle 0x002D, DMI type 32, 20 bytes System Boot Information Status: No errors detected

Метод-2: Использование команды inxi

Inxi – отличный инструмент для проверки информации об оборудовании в Linux и предлагает широкий спектр возможностей для получения всей информации об оборудовании в системе Linux, которую я никогда не нашел в любой другой утилите, доступной в Linux.

Читайте также:  Linux узнать версию postgres

Он был раздвоен из древнего и разумно извращенного

Inxi – это скрипт, который быстро показывает аппаратное обеспечение системы, процессор, драйверы, Xorg, Desktop, Kernel, GCC версии, процессы, использование ОЗУ и множество других полезных сведений, также используемых для технической поддержки и отладки

# inxi -M Machine: Device: server System: IBM product: N/A v: 0B serial: MK2RL11 Mobo: IBM model: 00Y8494 serial: 37M17D UEFI: IBM v: -[VVE134MUS-1.50]- date: 08/30/2013

Метод-3: Использование команды lshw

lshw (означает Hardware Lister) – это небольшой отличный инструмент, который генерирует подробные отчеты о различных аппаратных компонентах на машине, таких как конфигурация памяти, версия прошивки, конфигурация материнской платы, версия и скорость процессора, конфигурация кеша, USB, сетевая карта, мультимедиа, принтеры, скорость шины и т. д.

Он генерирует информацию об оборудовании, читая различные файлы в каталоге / proc и таблице DMI.

lshw должен быть запущен от суперпользователя, чтобы определить максимальный объем информации или он будет сообщать только частичную информацию.

Специальная опция доступна в классе lshw, который будет подробно описывать конкретную информацию об оборудовании.

# lshw -C system описание: Настольный компьютер продукт: Aquarius Std W60 S10 (To be filled by O.E.M.) производитель: Aquarius версия: To be filled by O.E.M. серийный №: To be filled by O.E.M. разрядность: 64 bits возможности: smbios-2.7 dmi-2.7 vsyscall32 конфигурация: boot=normal chassis=desktop family=To be filled by O.E.M. sku=To be filled by O.E.M. uuid=FC02AA03-1404-5D05-E006-2F0700080009

Способ-4: Использование / sys файловой системы

Ядро выставляет некоторую информацию DMI в виртуальной файловой системе / sys.

Таким образом, мы можем легко получить тип машины, выполнив команду grep со следующим форматом.

В качестве альтернативы мы можем вывести только определенные детали, используя команду cat.

# cat /sys/class/dmi/id/board_vendor IBM # cat /sys/class/dmi/id/product_name System x2530 M4: -[1214AC1]- # cat /sys/class/dmi/id/product_serial MK2RL11 # cat /sys/class/dmi/id/bios_version -[VVE134MUS-1.50]-

Метод-5: Использование команды dmesg

Команда dmesg используется для записи сообщений ядра (загрузочных сообщений) в Linux до запуска syslogd или klogd.

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

# dmesg | grep -i DMI DMI: System x2530 M4: -[1214AC1]-/00Y8494, BIOS -[VVE134MUS-1.50]- 08/30/2013

Метод-6: Использование команды hwinfo

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

Он сообщает информацию о процессоре, ОЗУ, клавиатуре, мыши, графической карте, звуке, памяти, сетевом интерфейсе, диске, разделе, биографии и мосту и т.д. Этот инструмент может отображать более подробную информацию среди других, таких как lshw, dmidecode, inxi , так далее,.

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

# hwinfo | egrep "system.hardware.vendor|system.hardware.product" system.hardware.vendor = 'IBM' system.hardware.product = 'System x2530 M4: -[1214AC1]-'

Источник

Оцените статью
Adblock
detector