Jump to content

    
statementz

посоветуйте преобразователь USB - I2C

Recommended Posts

2 часа назад, Сергей Борщ сказал:

Виндовс не дает сторонней программе прочитать report descriptors.

Шарик нормально смотрит все под 10кой. Просматриваю так инициализацию новых BT донглов из стека Win.

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

Edited by Gradient

Share this post


Link to post
Share on other sites
47 минут назад, Gradient сказал:

Шарик нормально смотрит все под 10кой.

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

Вот ответ от автора USB Tree View:

Цитата

that's a known problem. From UsbTreeView.txt:

About HID descriptors

HID descriptors usually cannot be read. Probably this is because they
must be requested from the interface rather than the device but the
IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION call doesn't offer the
choice. The parameters are ignored and filled by the USB stack:
MSDN says: "the USB stack ignores the value of bmRequest and inserts
a value of 0x80 which indicates standard USB device request".
https://msdn.microsoft.com/en-us/library/windows/hardware/ff539272(v=vs.85).aspx
For most devices the result is an ERROR_GEN_FAILURE or ERROR_INVALID_PARAMETER.
But some devices return the HID descriptor anyway.

I've tried to build the request manually and send it by means of IOCTL_USB_USER_REQUEST
but I did not get it work. Others tried before me and failed tool.

Regards,
Uwe Sieber

 

Share this post


Link to post
Share on other sites

Не совсем понял трудности.. просто программа конечно не может подсесть к обмену, понятное дело. Шарик читает через драйвер уже за пределами user space. Затем, когда у вас уже есть дамп, открываете нужный драйвер и ему туда всё наливаете согласно протокола. У меня методика нормально работает. Ну и более того. Например кипарисным драйвером не родным рулю нормально любыми BT донглами. Картинку прицепил...  

Edited by Gradient

Share this post


Link to post
Share on other sites
25 минут назад, Gradient сказал:

просто программа конечно не может подсесть к обмену, понятное дело

Просто программа может попросить виндовс спросить у устройства все остальные дескрипторы. И только запрос HID report descriptor виндовс переиначивает по-своему. 

Share this post


Link to post
Share on other sites

Через WinUSB тоже прокатывает.  libusb сначала тоже пользовал, но он оказался очень медленным по сравнению с Кипарис и его пришлось удалить из сборки. Кипарис делает всех по производительности.

Share this post


Link to post
Share on other sites
1 минуту назад, jcxz сказал:

А если попробовать это сделать через драйвер

Мне хватает lsusb -v -d <vid>:<pid>

А кто сидит под виндовсом - пусть сами решают, как кушать кактус .

Share this post


Link to post
Share on other sites
7 минут назад, Gradient сказал:

Через WinUSB тоже прокатывает.  libusb сначала тоже пользовал, но он оказался очень медленным по сравнению с Кипарис и его пришлось удалить из сборки. Кипарис делает всех по производительности.

Я говорил про libusbK, а не libusb ! Это совершенно разные вещи.

http://libusbk.sourceforge.net/UsbK3/index.html

7 минут назад, Gradient сказал:

Кипарис делает всех по производительности.

Кипарис - кривой. Описывал это здесь: 

Поэтому - более его не использую.

Share this post


Link to post
Share on other sites

Был libusb-win32, тот что Zadig ставит.

----

 

Вероятно и так, не пользую изохронный режим, все по прерываниям, короткими пакетами.

У кипариса есть цифровая подпись и нет трудностей с установкой. Остальные кроме WinUSB сложные для пользователя. Надо делать свой установщик, в 90% компаний это дело жестоко пресекают. Не дают запускать Сетап, и никто ваш софт потестить ставить не хочет, чтоб не нажить проблем с админами. С точки зрения "борьбы за солнце", пользователя напрягать нельзя, не будет шансов на успех.

Edited by Gradient

Share this post


Link to post
Share on other sites


Под Linux можно прочитать report descriptor командой
sudo usbhid-dump -d VID:PID
а конкретно для CP2112
sudo usbhid-dump -d 10C4:EA90

Просьба владельцам CP2112, пожалуйста, сделайте дамп под  Linux, а если он не установлен, загрузитесь с флешки или CD/DVD-R SystemRescue, которая и по прямому назначению может когда-нибудь пригодится.

https://www.system-rescue.org/Download/

Share this post


Link to post
Share on other sites
20 minutes ago, firew0rker said:

можно прочитать

usbhid-dump -d 10C4:EA90
001:004:000:DESCRIPTOR         1631361903.939282
 06 00 FF 09 01 A1 01 85 01 95 01 75 08 26 FF 00
 15 00 09 01 B1 02 85 02 95 04 75 08 26 FF 00 15
 00 09 01 B1 02 85 03 95 01 75 08 26 FF 00 15 00
 09 01 B1 02 85 04 95 02 75 08 26 FF 00 15 00 09
 01 B1 02 85 05 95 02 75 08 26 FF 00 15 00 09 01
 B1 02 85 06 95 0D 75 08 26 FF 00 15 00 09 01 B1
 02 85 10 95 3F 75 08 26 FF 00 15 00 09 01 91 02
 85 11 95 3F 75 08 26 FF 00 15 00 09 01 91 02 85
 12 95 3F 75 08 26 FF 00 15 00 09 01 91 02 85 13
 95 3F 75 08 26 FF 00 15 00 09 01 81 02 85 14 95
 3F 75 08 26 FF 00 15 00 09 01 91 02 85 15 95 3F
 75 08 26 FF 00 15 00 09 01 91 02 85 16 95 3F 75
 08 26 FF 00 15 00 09 01 81 02 85 17 95 3F 75 08
 26 FF 00 15 00 09 01 91 02 85 20 95 01 09 01 B1
 02 85 21 95 09 09 01 B1 02 85 22 95 3E 09 01 B1
 02 85 23 95 3E 09 01 B1 02 85 24 95 3E 09 01 B1
 02 C0
 

Share this post


Link to post
Share on other sites

Вставила вышеприведённый дамп в массив CUSTOM_HID_ReportDesc_FS.

C этим дескриптором такая ошибка:

Quote

Sep 28 08:38:27 alenchik-home kernel: [ 1831.125923] usb 5-1: new full-speed USB device number 3 using uhci_hcd
Sep 28 08:38:27 alenchik-home kernel: [ 1831.327731] usb 5-1: New USB device found, idVendor=10c4, idProduct=ea90, bcdDevice= 2.00
Sep 28 08:38:27 alenchik-home kernel: [ 1831.327735] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Sep 28 08:38:27 alenchik-home kernel: [ 1831.327737] usb 5-1: Product: CP2112 HID USB-to-SMBus Bridge
Sep 28 08:38:27 alenchik-home kernel: [ 1831.327738] usb 5-1: Manufacturer: Silicon Laboratories
Sep 28 08:38:27 alenchik-home kernel: [ 1831.327740] usb 5-1: SerialNumber: 48FE606A3130
Sep 28 08:38:28 alenchik-home kernel: [ 1831.394557] cp2112 0003:10C4:EA90.0006: unbalanced collection at end of report description
Sep 28 08:38:28 alenchik-home kernel: [ 1831.394572] cp2112 0003:10C4:EA90.0006: parse failed
Sep 28 08:38:28 alenchik-home kernel: [ 1831.394580] cp2112: probe of 0003:10C4:EA90.0006 failed with error -22
 

 

Share this post


Link to post
Share on other sites
4 часа назад, firew0rker сказал:

C этим дескриптором такая ошибка:

Вбейте этот дескриптор в HID Descriptor Tool. Он отступами покажет все коллекции и незакрытые будут видны невооруженным глазом. Также там можно в меню выбрать parse descriptor - может быть его отчет натолкнет на какие-то мысли. Или сохраните введенный дескриптор в файл и выложите сюда - подумаем вместе. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.