LINUX.ORG.RU

Запуск спец. ПО (win) под Wine

 


0

1

Доброго дня, уважаемые!

Имеется на неком предприятии некий комплект: периферия + виндовое ПО. Всё это естественно было закуплено давно и изготовителем не поддерживается. Предприятию предписано (не знаю кем) заменить «буржуйсие винды» на «исконно русские линухи» (выбор скорее всего падёт на астру или альт, но не суть).

В свете этого попытался запустить сие ПО под wine-5.0 на debian 10 buster. ПО запускается, но периферию видеть отказывается. Под периферией понимается некое подобие клавиатуры. Подключается оно через кабель USB AM/BM. Под виндой определяется как «USB Serial Port (COM3)» и использует файл драйвера usbser.sys.
Debian распознаёт эту клаву так:

Bus 003 Device 003: ID 04d8:000a Microchip Technology, Inc. CDC RS-232 Emulation Demo
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            2 Communications
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x04d8 Microchip Technology, Inc.
  idProduct          0x000a CDC RS-232 Emulation Demo
  bcdDevice            0.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0043
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      2 Abstract (modem)
      bInterfaceProtocol      1 AT-commands (v.25ter)
      iInterface              0 
      CDC Header:
        bcdCDC               1.10
      CDC ACM:
        bmCapabilities       0x02
          line coding and serial state
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1 
      CDC Call Management:
        bmCapabilities       0x00
        bDataInterface          1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 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     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0

В устройствах она отображается как /dev/ttyACM0, ссылка в .wine/dosdevice появляется автоматом и назвается com5.

Пробовал прописывать в реестре ссылки на порты (как сказано в документации wine), добавлял пользователя в группу dialup, создавал запись реестра в Hardware\Devicemap\Serialcomm со значением «Device\USBSER000»=«com1». Всё бестолку.

Наставьте на путь истинный, как можно ещё эту хренотень можно ещё настроить/потестировать.

В чем проявляется конкретно не-работа? Софтина не видит, что есть какие-то порты COM вообще? Или видит порт но не может к нему подключиться? В софтине есть какой-то выбор порта, к которому подключаться эта «клавиатура» должна?

curufinwe ★★★★★ ()
Ответ на: комментарий от Zhbert

Используй виртуальную машину во-избежание проблем в будущем.

Это совсем не решает проблему

заменить «буржуйсие винды» на «исконно русские линухи»

curufinwe ★★★★★ ()
Последнее исправление: curufinwe (всего исправлений: 1)

Нанимайте погромистов, пусть фиксят или добавляют костыли в wine для корректного чтения/записи данных с периферии. Только выиграли!

xDShot ★★★★★ ()

Попробуй вставить устройство в настоящий разъём COM, а не в переходник из USB в COM. На материнской плане скорее всего есть контакты под разъём, по типу такого, только для COM.

Но я не обещаю, что после этого заработает.

P. S. Как вариант, можешь использовать DosBox + Windows 3.1, установленный в него. Твоя софтина под какой Windows расчитана?

ZenitharChampion ★★★★★ ()

Под виндой определяется как «USB Serial Port (COM3)»
ссылка в .wine/dosdevice появляется автоматом и назвается com5.
создавал запись реестра в Hardware\Devicemap\Serialcomm со значением «Device\USBSER000»=«com1».

Ты уж определись, ком3, ком5, или ком1. Возможно в программе номер порта захардкоден.

В устройствах она отображается как /dev/ttyACM0

screen /dev/ttyACM0
И потыкай в кнопки клавиатуры. Если работает, то уже считай половина дела есть.

imul ★★★★★ ()
Ответ на: комментарий от imul

да ну что за хрень вы тут все несете. Гуглить надо проброс COM в WINE делается симлинком. нормально работает с нормальными переходниками и с обычными железными комами. Многократно проверено на работе на фтдиайках

Morin ★★ ()

Если честно, я с обеда вернулся и немножко подох.. удивился количеству «неравнодушных людей».

  1. У меня три машины (с дебианом, с астрой и с виндой), отображаемые com-порты там разные, вот и перепутал в описании номер порта. От этого суть не меняется.

  2. В проге нельзя поменять com-порты, но от номера порта ничего не зависит. Я симлинки на com1 делал, и на com2 - результат тот же.

  3. Прогру «потрогать» нельзя. Она не секретная, но и по голове никто не погладит, если я её в открытый доступ выложу.

  4. Неработоспособность выражается в появлении сообщения об ошибке при нажатии на кнопку «Проверка оборудования». Под виндами такое воспроизводится, если отключена клавиатура или не установлен драйвер.

  5. Програ запускается во всех виндах от 10-ки до XP. Ниже не тестил.

  6. screen /dev/ttyACM0 после «тыкание» в кнопки клавиатуры ничего не выдает.

  7. Форум microchip.com пойду в третий раз шерстить.

speed_vm ()
Ответ на: комментарий от speed_vm

у юзера под которым работает wine есть права на запись\чтение из serial портов?

как вариант можешь поснифать, как и в каком формате приложуха общается на венде с serial портом.

ktk ★★★★ ()

добавлял пользователя в группу dialup

Возможно это простая опечатка, но обычно группа с доступом к последовательным портам называется dialout.

Khnazile ★★★★★ ()
Ответ на: комментарий от curufinwe

Это решает проблему того что, рано или поздно, старое железо сгорит. А использовать софт нужно.

Но проблему созданную чудаками на букву м это конечно не решает.

Или посылайте, или ищите нормальное место, или готовьтесь всю оставшуюся жизнь копаться и пересобирать Wine.

tommy ★★★★ ()
Ответ на: комментарий от anonymous

Поставьте ReactOS и запускайте свои комплексы и балдейте.

Так вы это, добавьте ReactOS в реестр отечественного по, сертифицируйте у ФСБ и ФСТЭК, и рубите деньги на продаже физических копий с «правильной» мукулатурой в комплекте. Без шуток, многие вас отблагодарят, в т.ч. рублем.

Khnazile ★★★★★ ()
Ответ на: комментарий от speed_vm

Я симлинки на com1 делал, и на com2 - результат тот же.

У меня вайн при запуске заменяет все симлинки на бестолковые /dev/ttyS0..31. Помогает замена на правильные после запуска программы, но до открытия порта. Проверь, может, та же ерунда происходит.

--Корица

anonymous ()

Если запускать прогу из консоли, в выхлопе после проверки периферии:

0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b0020 (device=1b access=0 func=8 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b001c (device=1b access=0 func=7 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b001c (device=1b access=0 func=7 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b0020 (device=1b access=0 func=8 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b001c (device=1b access=0 func=7 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b001c (device=1b access=0 func=7 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b0020 (device=1b access=0 func=8 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b001c (device=1b access=0 func=7 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b001c (device=1b access=0 func=7 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b0020 (device=1b access=0 func=8 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b001c (device=1b access=0 func=7 method=0)
0009:fixme:ntdll:server_ioctl_file Unsupported ioctl 1b001c (device=1b access=0 func=7 method=0)
speed_vm ()
Ответ на: комментарий от anonymous
8263  stat64("/home/su/.wine/dosdevices/com2", {st_mode=S_IFCHR|0660, st_rdev=makedev(4, 65), ...}) = 0
8263  writev(3, [{iov_base=")\0\0\0002\0\0\0\0\0\0\0\0\0\20\300\0\0\0\0\1\0\0\0`\0\0\0\0\0\0\0"..., iov_len=64}, {iov_base="\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0", iov_len=16}, {iov_base="/home/su/.wine/dosdevices/co"..., iov_len=34}], 3) = 114
8266  open("/home/su/.wine/dosdevices/com2", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 130
8263  stat64("/home/su/.wine/dosdevices/com3", {st_mode=S_IFCHR|0660, st_rdev=makedev(4, 66), ...}) = 0
8263  writev(3, [{iov_base=")\0\0\0002\0\0\0\0\0\0\0\0\0\20\300\0\0\0\0\1\0\0\0`\0\0\0\0\0\0\0"..., iov_len=64}, {iov_base="\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0", iov_len=16}, {iov_base="/home/su/.wine/dosdevices/co"..., iov_len=34}], 3) = 114
8266  open("/home/su/.wine/dosdevices/com3", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 130
8263  stat64("/home/su/.wine/dosdevices/com4", {st_mode=S_IFCHR|0660, st_rdev=makedev(4, 67), ...}) = 0
8263  writev(3, [{iov_base=")\0\0\0002\0\0\0\0\0\0\0\0\0\20\300\0\0\0\0\1\0\0\0`\0\0\0\0\0\0\0"..., iov_len=64}, {iov_base="\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0", iov_len=16}, {iov_base="/home/su/.wine/dosdevices/co"..., iov_len=34}], 3) = 114
8266  open("/home/su/.wine/dosdevices/com4", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 130

Оно?

speed_vm ()

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

amd_amd ★★ ()
Ответ на: комментарий от speed_vm

Похоже на оно. Видимо, проверяет на портах 2, 3, 4. Либо вообще на всех, если лог неполный.

Попробуй всё же запустить программу и после этого симлинки проверить.

Алсо, screen <device> пытается коннектиться на стандартной скорости (обычно 9600). Попробуй через cutecom с разными скоростями тарабарщину с переносами строк понабирать. Если на что-то ответит, значит, сам девайс определился и работает нормально, и проблема не в драйверах.

anonymous ()

Вообще говоря, в шутке про ReactOS есть доля шутки. Если COM опознается, может и заработать. Страшно, конечно, такую херню использовать, но почему не попробовать.

anonymous ()
Ответ на: комментарий от pihter

Решает. Проверено в МО РФ

МО РФ ОЧЕНЬ большое, и если в одной или нескольких в/ч очковтирательство проходит, то далеко не факт, что пройдёт везде. А у ТСа, вполне возможно, что организация совсем другая, и проверяльщики у неё не свои, а чужие.

Теперь собственно к ТСу.

Мне очень жаль, но ОП похож на попытку решить организационную проблему техническими средствами. У перехода на отечественное ПО должен быть план. Пишешь обоснование, что переход требует разработки либо адаптации программ таких-то за такие-то деньги (можешь смело подставлять те же суммы и сроки, которые были потрачены на виндовый оригинал, сильно, думаю, не ошибёшься, бгг).

Предприятию предписано (не знаю кем) заменить

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

Если же начальство совсем неадекватное и не понимает организационную проблему (сформулировать её как организационную — твоя задача), то как тут написали, проще уволиться. Но как это ни странно, это не очень частый случай.

hobbit ★★★★★ ()
Ответ на: комментарий от chenbr0

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

То, что ты неосилятор, все и так давно знают. Не стоит свои проблемы навязывать другим людям. У ТСа проблема не с астралинуксом, а со специфическим прикладным виндософтом. Какой-то софт работает в wine без проблем, какой-то с проблемами, какой-то просто не работает. Софт, напрямую работающий с железом, всегда в зоне повышенного риска.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от anonymous

Все я прочитал. Там переходник USB to COM встроен, чтобы вставить устройство в настоящий COM, нужно его «испортить», что сделать скорее всего не позволят.

ArkaDOSik ()
Последнее исправление: ArkaDOSik (всего исправлений: 1)
Ответ на: комментарий от hobbit

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

Какой-то софт работает в wine без проблем, какой-то с проблемами, какой-то просто не работает.

не тот дистр, не тот вайн, не та библиотека, да да

chenbr0 ()
Ответ на: комментарий от hobbit

МО РФ ОЧЕНЬ большое, и если в одной или нескольких в/ч очковтирательство проходит, то далеко не факт, что пройдёт везде

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

ОП похож на попытку решить организационную проблему техническими средствами

обратно же, поделюсь опытом: у нас там приказы не обсуждались, надо было как-то решать, как сможешь. Попытаться объяснить начальству (кому? у моего начальства – свое начальство, у которого все тот же приказ. Министру Обороны объяснять что он неправильно командует?) – бесперспективная идея. Оттого и рождались подобные «решения»

pihter ★★★ ()
Ответ на: комментарий от ArkaDOSik

Там переходник USB to COM встроен, чтобы вставить устройство в настоящий COM, нужно его «испортить», что сделать скорее всего не позволят.

ну-таки большинство usb2com линуксом подхватываются, просто com-порт в вайн из линукса пробросить

pihter ★★★ ()
Ответ на: комментарий от chenbr0

астролинукс, который только в унылых гос/воен/мед конторах с зарплатой, приближенной к прожиточному минимуму

знаток зарплат офицеров в треде! (подсказка: иной раз, зарплата у офицеров совсем не на уровне ПМ, иной раз, за парня, который шарит и станет для руководство РЕШЕНИЕМ, а не проблемой, настоящая война разворачивается и в попытках переманить специалиста к себе, премии, не поверишь, – не последний аргумент у начальства)

pihter ★★★ ()
Ответ на: комментарий от pihter

На уровне министра бреда, конечно, своего хватает, но я думаю, что решения «перевести на линукс за месяц» рождаются не на уровне министра. На уровне министра принимается принципиальное решение перейти (абсолютно правильное). А дальше, спускаясь, оно обрастает бредом.

ТС нигде не написал, что обязали перейти прямо завтра. Надо выяснить источник и обкладываться бумагами, параллельно требовать ресурсов. Ставят нереалистичные сроки — разъяснять. Это должно стать проблемой начальства. Да, бывают тяжёлые случаи, но надо не ныть, а пытаться.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от chenbr0

Ты опять-таки пытаешься фантазировать на отвлечённые темы. ТС нигде не написал, что он против перехода на астралинукс. Его интересует, как решить проблему с прикладным ПО. А её действительно зачастую надо решать организационными мерами (закупать программы, если никак — сподвигать начальство отложить переход или как минимум придать ему поэтапный характер).

hobbit ★★★★★ ()
Ответ на: комментарий от chenbr0

неужели премия перекроет не выезд за границу, допуски, сдачу мобил и самодурство военных?

по-разному бывает. Самодурство – не всегда у военных и бывает не только у военных. На невыезд большей части населения тупо плевать (кстати, выезд и с допуском делается, надо только чуть больше подсуетиться, но кто действительно хочет – ездит) в допуске и сдаче мобил вообще ничего дурного не вижу (на практике мобилы обычно не сдают, на край – меняют на простенькие)

короче, все это очень относительно. Честных людей там тоже есть, поверь.

pihter ★★★ ()
Ответ на: комментарий от hobbit

решения «перевести на линукс за месяц» рождаются не на уровне министра

нет, конечно, но это не важно: тот уровень на котором они рождаются так же не досягаем.

Да, бывают тяжёлые случаи, но надо не ныть, а пытаться.

это – вне всякого сомнения

pihter ★★★ ()

Ох уж это еврейская скрепа react os из wine и kde не место вам тут если хотим вылечить систему по настоящему то она должна быть java тогда она будет весить очень мало и давать огромные возможности костомизации которая ещё ни кому не снилась , но многие уже потирают на этом руки.

anonymous ()