2017-01-17 8 views
1

У меня есть программное обеспечение для связи с последовательным устройством, которое работает только в Windows 7. Мой хост-компьютер работает под управлением Ubuntu 16.04, а Windows 7 - в виртуальной коробке.Чтение необработанных данных USB для порта, используемого VirtualBox

Мне удалось настроить его с помощью фильтров USB-устройств в настройках VirtualBox, чтобы Windows увидела и может обмениваться данными с устройством.

Однако я хотел бы захватить то, что отправляется на устройство и с него. Я думал, что-то же просто, как cat /dev/ttyUSB0 будет работать, но, к сожалению, когда я начинаю VirtualBox я получаю это в dmesg:

[31199.465270] vboxdrv: ffffffffc0df4020 VMMR0.r0 
[31199.653494] vboxdrv: ffffffffc0ef7020 VBoxDDR0.r0 
[31199.710573] VBoxNetFlt: attached to 'wlp1s0'/98:54:1b:04:13:48 
[31199.863579] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 
[31199.863674] ftdi_sio 1-3:1.0: device disconnected 

Так что я не знаю, какой файл для мониторинга в /dev больше. Полагаю, я мог бы попробовать прослушать связь с Windows, но если я могу, я бы хотел знать, можно ли отслеживать ее с моей главной машины.

Редактировать: This Ответ помог мне начать. Теперь я получаю прохладный поток на терминале, следующий шаг расшифровывает его, или если у кого-то есть лучший способ, мне интересно - похоже, что человек, который ответил на этот вопрос, все еще расшифровывал его как TODO :-)

+0

Вы можете ответить на свой вопрос, если нашли решение – user45891

+0

Я посмотрю, смогу ли я отфильтровать шум, чтобы получить только вход и выход завтра.Если я могу, я отвечу на этот вопрос – mickadoo

+0

@ user45891, ответьте на это, но большая часть кредита отправляется на плакат другого ответа – mickadoo

ответ

1

Тот факт, что он общался с программным обеспечением в VirtualBox, не имеет большого значения. This ответ получил меня большую часть пути просто (как корень):

  • modprobe usbmon
  • cat /sys/kernel/debug/usb/devices|less и поиск устройства
  • cat /sys/kernel/debug/usb/usbmon/7u где 7 является число от «Bus =» в таблице устройства со стадии 2

Оттуда была только фильтрация выходного сигнала.

Основной путь может быть только

cat /sys/kernel/debug/usb/usbmon/1u |cut -d\ -f9- | grep ^\n

Но устройство я работал с постоянно посылать строки с помощью всего 4 символов, чтобы отфильтровать те, которые я получил address word от выходной линии, и grepped для этого. В моем случае я только хотел захватить вывод «C» или обратный вызов. Я также фильтровал строки, содержащие больше, чем только «0160» по умолчанию, которые устройство постоянно выводило. Для того, чтобы попытаться понять, шестигранный вывод я поставить xxd -r -p в конце, который дал мне:

cat /sys/kernel/debug/usb/usbmon/1u | grep -e 'C Bi:1:005:1\s0\s\w*\s=\s0160\w' | cut -d\ -f8- | xxd -r

Если Grep является grep -e 'C <address> <someotherstuff> = <always-output-string><anycharacter>

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

> O UDQN RG_JAMS142E DEFAULT0XXXXXXX lSTz: RSDU vy z fff = {6zC "zÐ u6zC z H ; C Af [ RSC b ISD EGIN CG_IEW0321: 0407JUN12S Z- $ '' $ '' 'C' ''