Russian Qt Forum

Компиляторы и платформы => Linux => Тема начата: xokc от Февраль 07, 2016, 12:39



Название: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 12:39
Есть не вполне обычная коробченка Axiomtek eBOX730-860-FL (http://ipc2u.ru/news/new/eBOX730-860-FL/ (http://ipc2u.ru/news/new/eBOX730-860-FL/)) с 8 изолированными COM портами.
Ставлю на неё Windows - COM порты работают вполне ожидаемо, причём в диспетчере устройств никаких необычных контроллеров в части портов не наблюдаю. У коробченки есть набор из 16 светодиодов на корпусе, которые моргают, когда идет чтение/запись в COM порты. Замыкаю пины 2 и 3 на одном из портов, кидаю на него сообщение и ожидаемо принимаю на том же порту. В общем, на Windows, всё работает нормально.
Ставлю на неё же линукс (пробовал ubuntu и astra), вижу в ls 8 uart портов типа /dev/ttyS0..7 и... Собственно и всё - никакие огоньки не мигают, данные не передаются и не принимаются. Причем сами порты открываются вполне себе нормально.
Мало того, если я разворачиваю под этой виндой виртуалку с ubuntu, "пробрасываю" пару COM портов на гостевую ОС - всё тоже нормально без всяких танцев с бубном - огоньки мигают, данные передаются/принимаются. Куда копать-то дальше?



Название: Re: Не работает COM порт в Linux
Отправлено: Old от Февраль 07, 2016, 12:58
Не уверен, что ttyS0...7 это ее порты.
Скорее всего нужны модули ядра с поддержкой этой железки, по сути это самостоятельный компьютер.


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 13:07
Там вообще ttyS... до 31 нумеруются, но только на первых 8 есть сведения о том, что оно на UART16550A, на остальных - "нет данных". Да и IRQ и номера физических портов для этих первых 8-ми совпадают с теми, которые были в свойствах портов в windows. Понятно, что все ttyS0..7 я перепробовал с одинаково нулевым результатом.


Название: Re: Не работает COM порт в Linux
Отправлено: kai666_73 от Февраль 07, 2016, 15:17
На всякий случай:
- юзверь в группу dialup включен?
- для KDE(ubuntu)/ASTRA еще возможно надо ModemManager деинсталлировать с непременной перезагрузкой


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 15:21
- юзверь в группу dialup включен?
Да, добавлен, в dialout. Из под рута тоже пробовал. Кроме того, повторюсь на виртуалке в ubuntu всё работает сразу и без шаманств.
Похоже, действительно ядро как-то коряво взаимодействует с этими портами. То есть видит их как нормальные
Код
Bash
acs@acs-CEM860:~$ dmesg | grep ttyS
[    1.456871] 00:04: ttyS4 at I/O 0x240 (irq = 11, base_baud = 115200) is a 16550A
[    1.477404] 00:05: ttyS5 at I/O 0x248 (irq = 11, base_baud = 115200) is a 16550A
[    1.497913] 00:06: ttyS6 at I/O 0x250 (irq = 11, base_baud = 115200) is a 16550A
[    1.518463] 00:07: ttyS7 at I/O 0x258 (irq = 11, base_baud = 115200) is a 16550A
[    1.539043] 00:09: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    1.559597] 00:0a: ttyS1 at I/O 0x2f8 (irq = 4, base_baud = 115200) is a 16550A
[    1.580162] 00:0b: ttyS2 at I/O 0x3e8 (irq = 4, base_baud = 115200) is a 16550A
[    1.600717] 00:0c: ttyS3 at I/O 0x2e8 (irq = 4, base_baud = 115200) is a 16550A
 
А писать/читать не может


Название: Re: Не работает COM порт в Linux
Отправлено: kai666_73 от Февраль 07, 2016, 17:21
Ну тогда, возможно, второй вариант... (в ASTRA modemmanager установлен из под коробки, так сказать)
Удалить, перегрузиться... если не поможет, то тогда, да - грешить надо на ядро.


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 18:08
Ну тогда, возможно, второй вариант... (в ASTRA modemmanager установлен из под коробки, так сказать)
Удалить, перегрузиться... если не поможет, то тогда, да - грешить надо на ядро.
Ожидаемо (см. про нормальную работу из под виртуалки) не помогло.
Что делать-то? Просто "грешить на ядро" как-то очень уж не конструктивно :)


Название: Re: Не работает COM порт в Linux
Отправлено: Old от Февраль 07, 2016, 19:29
Ожидаемо (см. про нормальную работу из под виртуалки) не помогло.
Что делать-то? Просто "грешить на ядро" как-то очень уж не конструктивно :)
Посмотрел в нете про эту железку - обещается поддержка linux.
Я бы попробовал еще какой нибудь дистрибутив, кроме убунты и астры. Желательно с новыми ядрами: Arch или Gentoo.
А уж потом лез куда-то в потроха.


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 20:31
Посмотрел в нете про эту железку - обещается поддержка linux.
Там кроме обещаний ничего больше и нет. Запросил дистрибьютеров - пока тишина.

Я бы попробовал еще какой нибудь дистрибутив, кроме убунты и астры. Желательно с новыми ядрами: Arch или Gentoo.
Как-то экстремальненько... Никогда с ними дела не имел, хотя с генту всегда было интересно познакомиться.


Название: Re: Не работает COM порт в Linux
Отправлено: Old от Февраль 07, 2016, 20:47
Как-то экстремальненько... Никогда с ними дела не имел, хотя с генту всегда было интересно познакомиться.
Для начала просто попробовать. Если на другом дистрибутиве заработает, можно пытаться найти отличия и т.д.


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 20:51
Может проще ядро обновить до 4.4 на самой ubuntu? На Arch текущем ядро 4.3, gentoo и вовсе от августа 2014...


Название: Re: Не работает COM порт в Linux
Отправлено: Old от Февраль 07, 2016, 20:55
Может проще ядро обновить до 4.4 на самой ubuntu?
Ну если там есть такая возможность, то да.

На Arch текущем ядро 4.3, gentoo и вовсе от августа 2014...
Ядра у этих дистрибутивов обновляются сразу после их выхода. :)

Цитировать
[~]$ uname -a
Linux 4.4.1-2-ARCH #1 SMP PREEMPT Wed Feb 3 13:12:33 UTC 2016 x86_64 GNU/Linux

Не смотрите на версии на установочных дисках, там последняя версия на момент создания инсталляции. В репозиториях другие версии.


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 21:20
Сейчас попробую обновиться в рамках убунту, потом уже к arch пойду.


Название: Re: Не работает COM порт в Linux
Отправлено: kuzulis от Февраль 07, 2016, 21:28
Как вариант - где-нить в menuconfig ядра поставить галочку и пересобрать ядро.. (это, если есть требования к дистру) только надо точно знать что железка работает с линукс. А для начала - попробовать любой дистр.. Даже можно пробовать Live-образ, прям с флешки, не устанавливая.. (если есть возможность) ;)


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 21:44
Обновил ядро до 4.4.0 - железка несколько ожила. Стали светиться лампочки :). При попытке выполнить что echo «HELLO» > /dev/ttyS1, что cat < /dev/ttyS1 загорается светодиод rx, но tx не загорается вовсе и данные не передаются. Замкнуты 2 и 3 контакты. Скачал arch, но на ночь глядя связываться с ним неохота :)


Название: Re: Не работает COM порт в Linux
Отправлено: Old от Февраль 07, 2016, 21:47
Обновил ядро до 4.4.0 - железка несколько ожила. Стали светиться лампочки :). При попытке выполнить что echo «HELLO» > /dev/ttyS1, что cat < /dev/ttyS1 загорается светодиод rx, но tx не загорается вовсе и данные не передаются. Замкнуты 2 и 3 контакты. Скачал arch, но на ночь глядя связываться с ним неохота :)
arch по сути это live-cd. Он загрузится и вы получите root консоль.


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 07, 2016, 21:57
Да это понятно, но мне же для этого нужно коробочку подключить к монитору и клаве, для чего отключить свой основной комп и т.п. Сейчас-то она по ssh просто управляется. Пока буду убунту продолжать обновлять до новых ядер :). А тяжёлую артиллерию уже завтра...


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 10, 2016, 10:37
Удалось-таки поставить arch (этот процесс заслуживает отдельного обсуждения, но не в рамках этой темы  ;)). В результате имею всего 4 ttyS порта вместо 8, и полное отсутствие признаков их жизни. Дополнительно, в BIOS увидел, что эти порты управляются контролерами nuvoton nct6106d (2 шт, по 4 порта на каждом) - это мне чем-нибудь сможет помочь?


Название: Re: Не работает COM порт в Linux
Отправлено: Old от Февраль 10, 2016, 16:24
Ядро обновили до последнего?
А поддержка этого контроллера в ядре есть?


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 10, 2016, 20:56
Ядро обновили до последнего?
Из коробки было Linux 4.4.1-2-ARCH
А поддержка этого контроллера в ядре есть?
Как это узнать?


Название: Re: Не работает COM порт в Linux
Отправлено: Old от Февраль 10, 2016, 21:00
Я бы скачал исходники ядра и запустил бы поиск по исходникам названия контроллера и модели.
А что производитель молчит?


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 10, 2016, 21:23
Производитель в Тайване и с конечными пользователями не общается, а продавец говорит "неси коробку" - разберемся. Но: а) лениво к нему переться, б) есть сомнения в его способностях, в) уже и самому интересно добить вопрос.


Название: Re: Не работает COM порт в Linux
Отправлено: Old от Февраль 10, 2016, 21:43
А выложите логи загрузки ядра куда нибудь на pastebin, интересно что оно там пишет про эти порты.


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 10, 2016, 22:45
Пока разобрал конструкцию. Завтра вечером снова соберу - тогда выложу.
Тут, кстати, более подробно по это https://www.linux.org.ru/forum/linux-hardware/12336599


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Февраль 10, 2016, 22:51
Я бы скачал исходники ядра и запустил бы поиск по исходникам названия контроллера и модели.
Нашёл. linux-4.4.1\drivers\hwmon\nct6775.c
Код
C++ (Qt)
* Supports the following chips:
*
* Chip        #vin    #fan    #pwm    #temp  chip IDs       man ID
* nct6106d     9      3       3       6+3    0xc450 0xc1    0x5ca3
Смущает, что в разделе hwmon - видимо тут только мониторинговая часть этих контроллеров используется, а не коммуникационная. А вот в linux-4.4.1\drivers\tty ничего подобного не находится.


Название: Re: Не работает COM порт в Linux
Отправлено: siy@ipc2u.ru от Июль 08, 2016, 10:25
Уважаемый xokc, удалось решить проблему? Если нет, пишите, пожалуйста, на siy@ipc2u.ru, будем помогать. Тащить железку к нам не обязательно думаю. Зато сможем поговорить с производителем.

Сомневаться в наших силах не стоит  8)


Название: Re: Не работает COM порт в Linux
Отправлено: xokc от Июль 12, 2016, 10:14
Уважаемый siy из ipc2u, я, видимо, невольно ввёл в кого-то в заблуждение, указав в качестве ссылки на коробочку сайт вашей компании. Исправляюсь - покупали не у вас, в этом смысле никаких претензий к ipc2u у нас нет.
По существу вопроса - проблему так и не решили. Колдовством с ядром удалось запустить 2 из 8 портов в ограниченном режиме RS-232. RS-485 не запустился вообще. В итоге сочли, что дешевле купить USB репликатор MOXA на 8 портов и забыть этот страшный сон. В будущем таких специфических железок без реального тестирования покупать не будем.