RnDIS Штриха изнутри

Проблемы у Штрих-М с RnDis адаптером существуют (особенно под Win 10).

На самом деле проблема изучена и решена на соседней странице.

Но здесь описаны инструменты , которые помогают для понимания как работает сеть.

Начинаем переходить на более низкий уровень изучения проблемы

Настройки кассы по умолчанию, как описано в инструкции Штриха.

Ethernet to router 192.168.1.50 / 255.255.255.0 / 192.168.1.1 /dns 192.168.1.1
RnDIS адаптер 192.168.137.1 / 255.255.255.0 / шлюз не нужен / dns не надо
Сама касса 192.168.137.111 / 255.255.255.0 / шлюз НЕ нужен dns НЕ нужен

Изучаем USB RnDis адаптер через программу перехватчик пакетов USBLyzer :

фотка 1

Вендор ID интересный - VID_18D1 (6353десятичный) по данным usb.org это Google Inc.. А где же здесь Штрих-М?
(VID_18D1&PID_4EE4&REV_0100&MI_00)
iManufacturer указан разработчиками как NXP... Кому верить? А может так и должно быть?
По-видимому Штрих usb.org не платил за VID...
А вот у Атол выкупил себе vid 2912 и он есть в базе usb.org Management Company ATOL Ltd..
Может поэтому а Атола RNDIS работает, а у Штриха нет?

Connection Status Device connected 
Current Configuration 1 
Speed Full (12 Mbit/s) 
Device Address 4 
Number Of Open Pipes 3 

Device Descriptor RNDIS 
Offset Field Size Value Description 
0 bLength 1 12h  
1 bDescriptorType 1 01h Device 
2 bcdUSB 2 0200h USB Spec 2.0 
4 bDeviceClass 1 EFh Miscellaneous 
5 bDeviceSubClass 1 02h Common Class 
6 bDeviceProtocol 1 01h Interface Association Descriptor 
7 bMaxPacketSize0 1 40h 64 bytes 
8 idVendor 2 18D1h  
10 idProduct 2 4EE4h  
12 bcdDevice 2 0100h 1.00 
14 iManufacturer 1 01h "NXP" 
15 iProduct 1 02h "RNDIS " 
16 iSerialNumber 1 03h "SHM001" 
17 bNumConfigurations 1 01h  

Запустим WinShark для адаптера RnDIS и посмотрим пакеты

Это вариант , когда касса не может отправить чеки в ОФД (не может доже dns офд разрешить):

фотка 2

Первое , что после включения происходит это посылка ARP пакета :

Первый пакет NxpSemic_f3:fb:05 (00:60:37:f3:fb:05 - это сама касса) посылается с таким смыслом : у кассу ip настроен статически и обязана у сети спросить - кто в сети с таким ip есть?
Касса конечно надеется , что ей ответят - у этого ip такой-то мак устройства, и касса - ой да это же я и и есть. Значит ее знают в сети. Значит все ОК.

Но у нас ответа нет, но это как оказывается для нормальной работы в дальнейшем не важно.

Кстати источник представляется как Address: NxpSemic_f3:fb:05 (00:60:37:f3:fb:05) отнюдь не Штрих-М.

Потом после всяких инициализирующий запросов , касса начинает постоянно долбить на порт 16327 всем доступным соседям см. 255.255.255.255. И это тоже нормально .

Много вопросов , мало ответов...

Лог рабочего варианта отправки чеков

Показываю вариант включения кассы , когда она работает ОК, т.е .чеки нормально уходят в ОФД через программу/сервис OFDConnect на порт 7878, а оттуда уже на 7790 test.ofd-ya.ru .

Включение кассы :

фотка 3

момент отправки чека :

фотка 4

Начинаем вспоминать как работают сети и приходит на ум попинговать из кассы

Настроим WinShark на отфильтровку icmp (пинг) и из драйвера пошлем пинг на 192.168.137.1 (RnDis адаптер)

фотка 5

Результат пинга не заставит себя долго ждать

фотка 6

192.168.137.1 доступен, а вот 192.168.1.50 - недоступен (как видно на картинке сверху). То есть нет проброса трафика с адаптера 192.168.137.1 на 192.168.1.50.

Вывод : пакет с адаптера ARP 192.168.137.1 не покидает адаптера 192.168.137.1 и ICMP тоже
На самом деле сети у них разные , так как разные сетевые адаптеры их определяют.
И тут без маршрутизации не обойтись.
Ну или по смыслу это делает прога OFDConnect у Штриха.

Как настраивать правильно ищите на соседней странице(ах) есть.


шпаргалка по протоколам

NBNS - netbios сервер имен

MDNS - Multicast DNS

IGMP Internet Group Management Protocol

SSDP - Simple Service Discovery Protocol

ADwin configuration protocol (adwin_config)

Изучаем чем нам может помочь arp

C:\WINDOWS\system32>arp -a

Интерфейс: 192.168.137.1 --- 0xc
  адрес в Интернете      Физический адрес      Тип
  192.168.137.111       00-60-37-f3-fb-04     динамический
  192.168.137.255       ff-ff-ff-ff-ff-ff     статический
  224.0.0.2             01-00-5e-00-00-02     статический
  224.0.0.22            01-00-5e-00-00-16     статический
  224.0.0.187           01-00-5e-00-00-bb     статический
  224.0.0.251           01-00-5e-00-00-fb     статический
  239.255.255.250       01-00-5e-7f-ff-fa     статический

Интерфейс: 192.168.1.50 --- 0x11
  адрес в Интернете      Физический адрес      Тип
  192.168.1.1           50-ff-20-1e-99-02     динамический
  192.168.1.2           c8-60-00-6e-94-70     динамический
  192.168.1.34          4c-ed-fb-74-b1-79     динамический
  192.168.1.255         ff-ff-ff-ff-ff-ff     статический
  224.0.0.2             01-00-5e-00-00-02     статический
  224.0.0.22            01-00-5e-00-00-16     статический
  224.0.0.187           01-00-5e-00-00-bb     статический
  224.0.0.251           01-00-5e-00-00-fb     статический
  224.0.0.252           01-00-5e-00-00-fc     статический
  239.255.102.18        01-00-5e-7f-66-12     статический
  239.255.255.250       01-00-5e-7f-ff-fa     статический
  255.255.255.255       ff-ff-ff-ff-ff-ff     статический

Изучаем чем нам может помочь route

route print 192.*


Настраиваем теперь так
Ethernet to router 192.168.1.50/24 192.168.1.1.
RnDIS to kass 192.168.1.118/24 Шлюза нет , dns нет
касса 192.168.1.119/24 шлюза нет, dns нет

arp -s 192.168.137.111 00-60-37-f3-fb-04
arp -s 192.168.137.1 00-60-37-f3-fb-05

Компьютер\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter = 1

route -p add 192.168.137.0 mask 255.255.255.0 192.168.1.50