Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Перепутан порядок COM портов после запуска системы  (Прочитано 1545 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Limor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Добрый день!

Приобрел на AliExpress вот такой промышленный мини-ПК:

Сразу накатил на него XUBUNTU 18.04. Все хорошо, но есть путаница с некоторыми COM портами. С ttyS5 и ttyS6 все нормально, а вот порты 1-4 вообще сначала не хотели работать. Потом путем сравнения настроек портов и прерываний в BIOS и тем, что выдает утилита setserial, выяснилось, что Ubuntu эти порты между собой перепутала. То, что должно быть портом ttyS1 стало ttyS4, ttyS2 стал ttyS1 и т.д.

Можно, конечно, и так все оставить, но это не по феншую. Где в Ubuntu можно настроить правильный порядок портов?

(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 21 Декабря 2019, 16:08:28 от zg_nico »

Dzhoser

  • Гость
Покажите
dmesg | grep tty
ls -l /dev/tty*

Оффлайн Limor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Код: (bash) [Выделить]
$ dmesg | grep tty
[    0.000000] console [tty0] enabled
[    0.944478] 00:01: ttyS4 at I/O 0x3e0 (irq = 4, base_baud = 115200) is a 16550A
[    0.965079] 00:02: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
[    0.985674] 00:03: ttyS2 at I/O 0x3e8 (irq = 7, base_baud = 115200) is a 16550A
[    1.006269] 00:04: ttyS3 at I/O 0x2e8 (irq = 7, base_baud = 115200) is a 16550A
[    1.026867] 00:05: ttyS5 at I/O 0x2f0 (irq = 7, base_baud = 115200) is a 16550A
[    1.047441] 00:06: ttyS6 at I/O 0x2e0 (irq = 7, base_baud = 115200) is a 16550A

Код: (bash) [Выделить]
$ ls -l /dev/ttyS[123456]
crw-rw---- 1 root dialout 4, 65 дек 21 13:02 /dev/ttyS1
crw-rw---- 1 root dialout 4, 66 дек 21 12:11 /dev/ttyS2
crw-rw---- 1 root dialout 4, 67 дек 21 12:11 /dev/ttyS3
crw-rw---- 1 root dialout 4, 68 дек 21 12:57 /dev/ttyS4
crw-rw---- 1 root dialout 4, 69 дек 21 12:11 /dev/ttyS5
crw-rw---- 1 root dialout 4, 70 дек 21 12:55 /dev/ttyS6
« Последнее редактирование: 21 Декабря 2019, 16:09:06 от zg_nico »

Dzhoser

  • Гость
Попробуйте такой костыль
Прописать это в /etc/rc.local
rm /dev/ttyS4
rm /dev/ttyS5
mknod /dev/ttyS5 c 4 68
mknod /dev/ttyS4 c 4 69
Меняем местами COM 5 и COM4
« Последнее редактирование: 21 Декабря 2019, 13:30:04 от Dzhoser »

Оффлайн Limor

  • Автор темы
  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Вот не люблю костыли, но что делать?

Написал скрипт initserialport в каталоге /etc/init.d (файла /etc/rc.local сейчас нет) с таким содержимым:
#!/bin/bash

rm /dev/ttyS1
rm /dev/ttyS2
rm /dev/ttyS3
rm /dev/ttyS4

mknod /dev/ttyS1 c 4 68
mknod /dev/ttyS2 c 4 65
mknod /dev/ttyS3 c 4 66
mknod /dev/ttyS4 c 4 67

chgrp dialout /dev/ttyS1
chgrp dialout /dev/ttyS2
chgrp dialout /dev/ttyS3
chgrp dialout /dev/ttyS4

chmod g+rw /dev/ttyS1
chmod g+rw /dev/ttyS2
chmod g+rw /dev/ttyS3
chmod g+rw /dev/ttyS4

chmod o-rw /dev/ttyS1
chmod o-rw /dev/ttyS2
chmod o-rw /dev/ttyS3
chmod o-rw /dev/ttyS4

Сделал на него ссылку в каталоге /etc/rc3.d, скрипт запускается.

Вот так сейчас выглядят файлы com портов:
$ ls -l /dev/ttyS[1-6]
crw-rw---- 1 root dialout 4, 68 дек 21 15:08 /dev/ttyS1
crw-rw---- 1 root dialout 4, 65 дек 21 15:07 /dev/ttyS2
crw-rw---- 1 root dialout 4, 66 дек 21 15:07 /dev/ttyS3
crw-rw---- 1 root dialout 4, 67 дек 21 15:07 /dev/ttyS4
crw-rw---- 1 root dialout 4, 69 дек 21 15:07 /dev/ttyS5
crw-rw---- 1 root dialout 4, 70 дек 21 15:07 /dev/ttyS6

Завтра потестирую порты. Спасибо за подсказку!

 

Страница сгенерирована за 0.089 секунд. Запросов: 25.