У меня есть USB-устройство, которое вероятно шина CAN, и я пытаюсь взаимодействовать с ним. Я задаюсь вопросом, может ли кто-либо дать совет для зондирования и обнаружения, какие сервисы доступны. Я предполагаю, что хорошее место для запуска состояло бы в том, чтобы проверить действительно ли на самом деле шина CAN. Я не уверен, как сделать это, все же.
А именно, я включаюсь в интерфейс USB для Фантомного квадратического вертолета DJI. Это - маленький автономный беспилотник.
Вот то, что я имею до сих пор:
Если я звоню lsusb
с беспилотником, включенным и приведенным в движение,
Bus 003 Device 003: ID fff0:0008
является новым. lsusb -vvv
предоставляет более подробную информацию:
Bus 003 Device 003: ID fff0:0008
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 2 Communications
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0xfff0
idProduct 0x0008
bcdDevice 1.00
iManufacturer 1 DJI CONFIF
iProduct 2 DJI CONTROLLER
iSerial 3 0001A0000000
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 75
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 2 Communications
bFunctionSubClass 2 Abstract (modem)
bFunctionProtocol 0 None
iFunction 4 VCOM
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 0 None
iInterface 4 VCOM
CDC Header:
bcdCDC 1.10
CDC Call Management:
bmCapabilities 0x01
call management
bDataInterface 1
CDC ACM:
bmCapabilities 0x02
line coding and serial state
CDC Union:
bMasterInterface 0
bSlaveInterface 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 2
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 4 VCOM
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0000
(Bus Powered)
если я звоню udevadm
и удалите USB-кабель квадратического вертолета, я добираюсь:
UDEV [41256.502177] remove /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/tty/ttyACM0 (tty)
UDEV [41256.502247] remove /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1 (usb)
UDEV [41256.502286] remove /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0 (usb)
UDEV [41256.502346] remove /devices/pci0000:00/0000:00:14.0/usb3/3-2 (usb)`
and when I plug it in...
`UDEV [41261.068689] add /devices/pci0000:00/0000:00:14.0/usb3/3-2 (usb)
UDEV [41261.070265] add /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0 (usb)
UDEV [41261.071507] add /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1 (usb)
UDEV [41261.072843] add /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/tty/ttyACM0 (tty)
Таким образом, я пытаюсь рассматривать его как шинный интерфейс CAN. Это кажется хорошо с командой:
sudo slcand -o -s6 -t hw -S 1000000 /dev/ttyACM0
т.е. никакие сообщения об ошибках, и
sudo ip link set up slcan0
создает сетевой интерфейс slcan0
и ifconfig
теперь шоу:
slcan0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:16 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
От этого кто-либо может сказать, является ли это действительно шиной CAN, я взаимодействую с? Или я спускаюсь с неправильного пути?