Настройка com порта в linux setserial
Добрый день. Имеется компьютер с Сom-портом. На компьютере установлена ubuntu 10.04, а также виндоус(ХР). В виндоусе ком-порт работает (посылались команды и приходили верные ответы от устройства),в диспетчере устройств com-порт ассоциируется с LPC Interface Controller.
Что происходит в ubuntu - ком-порты определяются,но операции записи-чтения не дают результата. Проверял : 1) утилитой minicom - не происходит ничего при инициализации 2) serial port terminal (gtkterm) из центра приложений Ubuntu - тоже черный экран и всё.
Важный момент - рядом стоит другой компьютер, с той же ubuntu, но совершенно другой конфигурацией самого компьютера - там все операции с com-портом проходили успешно (нуль-модемный кабель в слот одним концом, на другом соединить 2 и 3 контакт - как minicom, так и serial port terminal записывают и читают правильные байты. И с тем устройством ,к-ое в виндоус работало, здесь тоже проблем не возникло).
Результаты команд :
все права на чтение-запись на порты стоят, да и работа вся идет под рутом..
Интересный момент, рез-т dmidecode , COM-порта в списке нет, а на втором компьютере с линуксом есть!
это навело на мысль, что возможно нет драйвера для интеловского LPC Controller (см. lspci).
Длительным поиском в гугле драйвера под линукс для данного устройства не нашел.
в linux kernel driver database данное устройство (8086:2815) упоминается лишь раз (модуль iTCO_wdt - но он исп. только для таймера, на всякий случай modprobe-ом подключил его - изменений не принесло в работу com-порта)
ВОзможно не там и не так искал..или действительно нет драйвера для данного устройства . или проблема не в нём все-таки.
Заранее спасибо, надеюсь на помощь
Помощь в написании контрольных, курсовых и дипломных работ здесь
Нет ни одного драйвера для ноутбука, не работает интернет и USB
Доброго времени суток. У меня стояла виндовс 10 пиратка,при входе всегда спрашивался пароль.
Нужны драйвера SATA-контроллера для ASUS K40IJ?
Помогите пожалуйста найти драйвера SATA-контроллера для ASUS K40IJ?
Где найти код драйвера для контроллера PL 2303?
очень нужен код драйвера для контроллера PL 2303. просто посмотреть.
Ищу драйвера для мультимедиа контроллера мат платы ASUS P5K-VM, и SM контроллер шины
переустановила ОС. не могу поставить драйвера с дисков - не читаются. Ищу драйвера для мультимедиа.
Рассмотрим две наиболее полезных утилиты конфигурации последовательных устройств: setserial и stty .
Ядро при запуске само пытается определить настройки устройств, но из-за их большого разнообразия это не всегда возможно. Хороший пример того, где это является проблемой, внутренние модемы, о которых мы говорили ранее. UART, который они используют, имеет 16-байтовый буфер FIFO, но он похож на UART 16450. Если мы определенно не сообщаем драйверу, что этот порт является устройством UART 16550, ядро не будет использовать расширенный буфер. Еще одним примером являются четырехпотровые карты, которые позволяют поделить один IRQ между несколькими устройствами. Нам, вероятно, придется сообщать ядру, который IRQ-порт предполагается использовать, и что IRQ может быть разделен несколькими устройствами.
setserial была создана, чтобы конфигурировать последовательный драйвер во время выполнения. Команда setserial обычно выполняется при начальной загрузке из скрипта, который в одних дистрибутивах называется 0setserial , а в других rc.serial . Этот скрипт обязан инициализировать последовательный драйвер, чтобы разместить любые нестандартные или необычные последовательные аппаратные средства в машине.
Общий синтаксис для команды setserial : Здесь device является одним из последовательных устройств, типа ttyS0 .
Команда setserial имеет большое количество параметров. Наиболее важные из них описаны в таблице 4-1. Остальные можно найти на man-странице по setserial .
Таблица 4-1. Параметры командной строки для setserial
Определяет адрес порта ввода-вывода последовательного устройства. Должен быть определен в шестнадцатеричной записи, например, 0x2f8 .
Определяет прерывание, используемое последовательным устройством.
Определяет тип UART последовательного устройства. Общие значения 16450 , 16550 и т.д. Установка этого значение в none не отключит это последовательное устройство.
Задание этого параметра инструктирует последовательный драйвер ядра, что этот порт является одним из портов платы AST Fourport.
Предписывает UART использовать быстродействие 57.6 kbps, когда процесс запрашивает 38.4 kbps.
Предписывает UART использовать быстродействие 115 kbps, когда процесс запрашивает 38.4 kbps.
Предписывает UART использовать заданное по умолчанию быстродействие 38.4 kbps, когда запрашивается. Этот параметр используется, чтобы отменить эффект spd_hi или spd_vhi на определенном последовательном устройстве.
Этот параметр заставит ядро сделать попытку автоматически определить IRQ определенного устройства. Эта попытка не может быть полностью надежной, так что, вероятно, лучше думать об этом как о просьбе к ядру предположить IRQ. Если Вы знаете IRQ этого устройства, Вы должны определить его, используя параметр irq .
Это параметр должен быть определен вместе с параметром port . Когда этот параметр задан, setserial инструктирует ядро сделать попытку автоматически определить тип UART на порте с заданным адресом. Если параметр auto_irq также задан, ядро попытается автоматически определить IRQ.
Отменяет автоопределение типа UART. Полезен, если ядро определяет его неправильно.
Типичный и простой файл rc для настройки Ваших последовательных портов при начальной загрузке показан в примере 4-1. Большинство дистрибутивов Linux включают более сложные файлы.
Пример 4-1. Образец файла rc.serial
Команда /sbin/setserial -bg /dev/ttyS* в последней строке будет печатать аккуратно форматируемое резюме аппаратной конфигурации всех активных последовательных устройств. Образец такого вывода показан в примере 4-2 .
Пример 4-2. Вывод команды setserial -bg /dev/ttyS Command
Имя stty , возможно, произошло от сокращения "set tty", но команда stty может также использоваться, чтобы отобразить конфигурацию терминала. Возможно, даже больше, чем setserial , команда stty обеспечивает изумительное число характеристик, которые Вы можете легко настроить. stty обычно используется, чтобы конфигурировать параметры терминала, типа того, будут ли символы отображены на экране, или какая клавиша должна генерировать сигнал прерывания. Мы объяснили ранее, что последовательные устройства являются tty-устройствами, а значит, команда stty применима к ним.
Удивительно, но некоторые программы не допускают аппаратное подтверждение связи, так что если Ваш модем эту функцию поддерживает, Вы должны конфигу- рировать его так, чтобы ее использовать (проверьте руководство по модему, чтобы узнать, какую команду применить) и сконфигурировать последовательное устройство, чтобы учитывать это подтверждение. Команда stty имеет параметр crtscts , который включает аппаратное подтверждение связи на устройстве. Вам придется использовать его. Команда лучше всего должна быть выдана из rc.serial файла (или его эквивалента) при начальной загрузке. Образец показан в примере 4-3.
Пример 4-3. Файл rc.serial с командами stty
Пример 4-4. Файл rc.serial с командами stty (новый синтаксис)
Я упомянул, что команда stty может использоваться, чтобы отобразить параметры конфигурации терминала tty-устройства. Чтобы отобразить все активные параметры настройки на tty-устройстве, скомандуйте:
Вывод этой команды показан в примере 4-5, Он дает Вам состояние всех параметров для этого устройства. Параметр, показанный с предшествующим минусом, как в -crtscts , означает, что данное свойство выключено.
Пример 4-5. Вывод команды stty -a
Описание наиболее важных из этих параметров дано в таблице 4-2. Каждый параметр может быть включен командой stty или выключен командой stty с символом - перед этим параметром. Таким образом, чтобы отключить аппаратное подтверждение связи на ttyS0 , используется:
Таблица 4-2. Параметры stty для настройки последовательных устройств
Устанавливает быстродействие линии в N бит в секунду.
Включить/выключить аппаратное подтверждение связи.
Включить/выключить XON/XOFF управление потоком.
Включить/выключить сигналы управления модема типа DTR/DTS и DCD. Это необходимо, если Вы используете последовательный кабель "three wire", поскольку он не обеспечивает эти сигналы.
Установить число бит данных соответственно в 5, 6, 7 или 8.
Включить проверку на нечетность. Отключение этого параметра включает проверку на четность.
Включить проверку четности. Когда этот параметр выключен, контроль четности или нечетности не используется.
Включить использование двух стоп-бит на символ. Когда этот параметр выключен, используется один стоп-бит на символ.
Включить/выключить повторение полученных символов обратно отправителю.
Следующий пример объединяет некоторые из этих параметров и устанавливает устройство ttyS0 на 19,200 bps, 8 бит данных, без контроля четности, но с аппаратным подтверждением связи с заблокированным ECHO-отбражением:
Команда setserial применяется для установки и настройки отдельных последовательных портов в системе на базе ОС Linux. Каждый порт , используемый операционной системой Linux, должен быть настроен командой setserial . Как видно из листинга 3.3, по умолчанию в системе на базе ОС Linux конфигурируются четыре стандартных последовательных СОМ-порта. Если имеющийся у вас модем использует нестандартные прерывания IRQ и адреса ввода-вывода или же используется мультипортовая плата , то для правильного конфигурирования портов в системе необходимо использовать программу setserial .
Команда setserial используется в двух форматах:
Опция -g используется для запроса информации об указанных в команде устройствах. В листинге 3.5 дается пример работы команды setserial в ОС Linux.
В первой строке листинга 3.5 присутствует команда setserial с опцией -g , с помощью которой на экран выводится информация о конфигурации последовательных портов. Запускать команду setserial следует только с правами пользователя root . В строках 2–5 представлена информация о последовательных портах для данной системы на базе ОС Linux в ответ на запрос команды setserial . В каждой строке представлена информация об отдельном порте. Обратите внимание, что в строке 4 не указан тип UART (стоит "unknown") для порта ttyS2 , так как этот порт не используется. Это может ввести вас в заблуждение, поскольку порта просто нет физически.
С помощью одной или нескольких опций, введенных в командной строке с командой setserial , можно управлять выводом информации на экран. По умолчанию вывод на экран с помощью команды setserial производится с опцией -v , как это показано в листинге 3.5. Если задать опцию -b , то выводятся обобщенные данные. Например:
Здесь та же информация представлена в компактном виде. Опция -a используется для получения подробного отчета о конфигурации порта. Например:
Опция -a отображает значения всех параметров, используемых операционной системой Linux для управления портом. Все эти параметры можно устанавливать, задавая команду setserial в первом формате, как было показано выше. В табл. 3.4 приведены параметры, которые можно изменять с помощью команды setserial.
Команде setserial всегда нужно задавать устройство, с которым она будет работать. Если используются значения адресов ввода-вывода и номера прерывания IRQ по умолчанию, то их можно не указывать в командной строке. Далее все параметры можно вводить в командной строке в произвольном порядке. Например:
Этой строкой мы пытаемся автоматически сконфигурировать последовательный порт СОМ4.
Сценарии для setserial
Так же, как и в случае программы ifconfig , все настройки, сделанные программой setserial , при перезагрузке ядра ОС Linux стираются. Таким образом, команду setserial следует выполнять для каждого СОМ-порта в системе при каждой загрузке. Так как это довольно важная функция, то большинство распространителей ОС Linux включают в свои версии сценарии для выполнения команды setserial в процессе загрузки системы.
Удобно работать с виртуальной машиной XPSP3 в VirtualBox'е: когда надо включаешь её, когда не надо – выключаешь, всё очень быстро, и вирусы прочно экранируются. Но вот понадобилось внести изменения в отлаживаемую «виндовую» программу, работающую со старыми добрыми компортами. И тут обнаруживается: не работает компорт виртуальной машины. В ЛОРе нет хорошего ответа. Всё сводится к рекомендации создания новой машины, а это время. Западные пользователи на форумах тоже дают немало пустых советов. А на самом деле всё не так уж и сложно.
Сначала надо установить утилиту настройки аппаратного компорта хост-машины. Называется она setserial, в дистрибутивах Ubuntu её нет, но зато она есть в репозиториях, поэтому воспользуемся командой терминала:
sudo apt-get install setserial
И, конечно, запустим эту утилиту, чтобы посмотреть, присутствует ли на материнской плате, что собой представляет и как настроен аппаратный порт хозяйки (далее в примере исследуем COM1):
sudo setserial -g /dev/ttyS0
Учтите, что ttyS0 соответствует COM1, ttyS1 соответствует COM2 и т.д. согласно терминологии Линукса. Подставьте нужное. После ввода пароля суперпользователя в норме должен быть получен ответ:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
Иначе компорт отсутствует или отключен на уровне BIOS'а хост-машины. Выключенный порт включаем. В случае отсутствия на материнской плате аппаратного компорта придётся поставить «костыль» из дополнительной PCI-платы расширения и добавить модуль его драйвера из прилагаемого к ней диска. Проверено: для Линукса драйверы раюотоспособны, но уточните номер появившегося компорта командой терминала
При необходимости параметры настройки коммуникационного порта можно откорректировать ( как именно – см. терминальной командой man setserial).
Настраиваем проключение виртуального COMn в аппаратный COMn, то бишь в файл ttySn+1. Для этого запускаем VirtualBox, НЕ ЗАПУСКАЯ ВИРТУАЛЬНУЮ МАШИНУ, и настраиваем параметры её компорта, как показано на этом скриншоте:
Здесь важно, чтобы номер порта, номер прерывания и адрес ввода-вывода совпадали бы с теми, которые проиндицировала утилита setserial. Если не совпадают, то утилита setserial поможет перенастроить параметры аппаратного компорта.
Но если вы сейчас попытаетесь запустить виртуальную машину, то с очень большой вероятностью получите ошибку. А всего-то надо сделать ещё две вещи.
Во-первых, вы, хотя и являетесь «главным администратором», не обязательно автоматически являетесь членом группы пользователей виртуальной машины. Удивительно? Но бывает нередко. Впрочем, эта нелепость устраняется легко. Чтобы не заморачиваться с CLI, установите с помощью эмулятора терминала великолепную утилиту gnome-system-tools (она есть в репозиториях) командой
sudo apt-get install gnome-system-tools
Данную утилиту рекомендую для многократного употребления, поэтому скопируйте из папки /usr/share/applications значок «Пользователи и группы» на рабочий стол и запустите эту утилиту из рабочего стола. Откроется окно «Параметры пользователей». Жмите кнопку «Управление группами», в открывшемся окне «Параметры групп» скроллингом отыщите группу vboxusers, выберите её и дважды щёлкните по ней. Откроется окно «Свойства группы vboxusers». Внутри панели «Члены группы» пометьте чекбокс напротив своего имени, отражающего вас, как пользователя системы.
Во вторых, реальному порту следует присвоить права «666», что означает разрешение дуплексного обмена через компорт на уровнях владельца, членов его группы и остальных пользователей. Делается это командой
sudo chmod 666 /dev/ttyS0
Вместо ttyS0 подставьте обозначение нужного аппаратного компорта хост-машины. Вcё, теперь можно смело запускать виртуальную машину, включать привычный «виндовый» гипертерминал и с помощью виртуальной Windows настраивать модемы, управлять программаторами и т.д. Словом, делать всё то, как будто бы вы работали с реальной Windows XP или «семёркой». Успехов!
Читайте также:
- Курсор не работает на рабочем столе windows 7
- Какой офис лучше для windows 10 форум
- Где хранятся старые версии виндовс 7
- Rufus не запускается на windows xp
- Php не работает ubuntu