Делаем чтобы usb com порт был доступен простому пользователю linux
Урок посвящен интерфейсу RS-232, который в простонародье называют COM-порт. Мы разберемся как он представлен в Linux, какой у него интерфейс, научимся его конфигурировать, а также узнаем, что написание программы для коммуникации через COM-порт в Linux не представляет сложности.
$dmeg | grep «ttyS»
то мы увидим, что, в действительности , у меня только один файл ttyS4 связанный с конкретным COM-портом, у которого есть некоторый диапазон ввода/вывода, номер прерывания, и который сейчас настроен на скорость обмена 150200 бит в секунду (или бод).
Для того, чтобы сконфигурировать мой COM-порт по умолчанию в Linux можно воспользоваться программой mincom, запускать её нужно от суперпользователя, либо добавить текущего пользователя в группу dialout. Запустим
$sudo minicom -s
Ключ -s – обозначает конфигурацию (setup),
Здесь мы видим следующее [2:24]. Есть параметры последовательного порта, важно прописать правильно файл, то есть указать тот файл, который у вас в системе связан с физическим COM-портом, Второй важный момент – это настройка параметров обмена (ключ Е). Дело в том, что корректный обмен данными по последовательному соединению возможен только тогда, когда обе стороны имеют один и тот же набор параметров. В этом окне можно набор этих параметров менять [3:08]. Мы видим, что у нас задана скорость 8 бит, нет контроля четности, и один стоповый бит. Именно здесь можно это все увидеть и настроить так, как требуется или, как требует ваше устройство.
Сохраняем конфигурацию по умолчанию. Дальше будем взаимодействовать - сначала с помощью команды терминала, чтобы проверить, как вручную это работает; а потом напишем небольшую программу, которая будет слать данные в COM-порт. Выйти из Mincom можно набрав ctrl-A-X.
Для того чтобы проверить, как работает COM-порт можно воспользоваться программой miniterm [4:03]. Я создал виртуальную машину с обычным linux, у неё указал, что в наличии имеется один COM-порт (это COM1), по умолчанию назначились линии обработки запросов прерывания. Я ассоциировал этот COM-порт с файлом на моей host-машине. С этого файла мы будем читать данные записанные в порт.
Итак, мы видим, что в левой части экрана у нас есть логин на виртуальную машину [4:46]. Давайте проверим с помощью minicom -s, как настроены коммуникации. Проверим, что /dev/ttyS0 – это действительно правильный физический порт – да, это именно так. Теперь мы можем вызвать команду
$sudo miniterm
она говорит, что есть следующие доступные порты, и просит ввести, через какой порт работать. Далее я попадаю терминал, связанный с COM-портом, где могу набирать текст. Набирая команды, я вижу «эхо» в моем файле справа. Обратите внимание, что я пишу в левом окне, а на экране надпись мы видим в правом. В левом окошке – виртуальная машина, на которой настроен порт. В правом – тот лог, который мы видим в файле ассоциированном с этим COM-портом на host-машине.
Создадим какой-нибудь каталог, в котором будем разрабатывать приложение. Как это ни странно, приложение будет выглядеть очень просто, потому что все действия, которые мы делаем с COM-портом в linux, это действия с файлами с использованием тех же самых файловых операций. Нам потребуется stdio.h, unistd.h, чтобы получить доступ – функциям open/read/write, fcntl.h, чтобы иметь возможность использовать файловые флажки. Открываем файловый дескриптор, COM-порт, имя, и флаги из COM-порта. Проверим, что файловый дескриптор у нас открылся, то есть если порт меньше или равен 0, то есть какая-то ошибка, оповестим об этом пользователя и вернем управление. В противном случае, можно писать в этот файловый дескриптор. write принимает файловый дескриптор, указатель на буфер, размер. Дальше мы закрываем файловый дескриптор и возвращаем управление. Приложение готово.
Теперь давайте попробуем запустить то, что у нас вышло, вернее, скомпилировать и запустить [10:40]. При запуске приложения произошла ошибка, но она вызвана понятными причинами, потому что пользователь должен был быть включен группу dialout [11:03], или нам надо запускать приложение от суперпользователя. Сделаем это. И сразу видим, что в нашем окошке появилась запись «hello world». Можно повторить и увидеть, что все работает корректно.
Точно таким же образом можно осуществлять чтение из COM-порта, то есть использовать не функцию write, а функцию read.
В этой заметке я расскажу про то, как можно проверить COM порт в Linux.
Для этого нам понадобятся:
- права на чтение и запись в COM порт
- программа minicom
- кусок толстого многожильного кабеля
Права доступа
проверяем какие у нас в системе есть COM порты, а также наши права на них:
/dev/ttyS0 это первый COM порт
/dev/ttyS1 соответственно второй COM порт
/dev/ttyUSB0 специальный кабель-переходник из USB в COM (Gembird UAS111)
Как мы видим для работы с COM портом необходимы права root либо пользователь должен входить в группу dialout
Провод для связи
Берём многожильный кабель в оплётке длиной 4-6 см, и соединяем 2 и 3 выводы COM порта перемычкой из этого кусочка провода. Оплётка будет удерживать провод на контактах, а металлические жилы внутри будут проводниками.
Для любителей паять можно предложить спаять полный loop-back тестер. В нём соединить не только контакты приёма передачи, но и аппаратный контроль потока и готовность терминала.
Работа с программой minicom
Для начала необходимо настроить программу minicom
+-----------[конфигурация]-----------+| Каталоги и файлы
| Протоколы
| Настройка последовательного порта
| Модем и дозвон
| Экран и клавиатура
| Сохранить настройки как dfl
| Сохранить настройки как.
| Выход
| Выход из Minicom
+------------------------------------+
Выбираем «Настройка последовательного порта»
+-----------------------------------------------------------------------+| A - Последовательный порт : /dev/ttyS0
| B - Размещение lock-файла : /var/lock
| C - Программа при выходе :
| D - Программа при запуске :
| E - Скорость/Чётность/Биты : 115200 8N1
| F - Аппаратное управление потоком : Да
| G - Программное управление потоком : Нет
|
| Какую настройку изменить?
+-----------------------------------------------------------------------+
Если нужно, меняем СОМ порт, нажимая «A»
Отключаем аппаратное управление потоком, нажимая «F»
Выходим из настроек «Enter»
Сохраняем настройки по умолчанию «Сохранить настройки как dfl»
Выходим из minicom
Собственно проверка СОМ порта
Запускаем minicom без параметров.
Пробуем нажимать на клавиши. В ответ на экране должны появляться символы.
Проверка COM порта под linux завершена.
Эта запись была сделана 21.12.2010, 13:50 под рубрикой Разное. Вы можете подписаться на эту запись с помощью RSS 2.0. Both comments and pings are currently closed.
Вы подключили флэш-накопитель USB, клавиатуру или мышь к ПК с Linux. Но ничего не происходит.
В чем дело? Почему ваш компьютер с Linux не обнаруживает устройство? Это вещь Linux, или ваше устройство USB перестало работать?
USB не работает в Ubuntu?
Дисководы, устройства для чтения карт памяти, телефоны, медиаплееры и мультимедийные периферийные устройства … все они полезны, но если есть проблема с USB-портом или драйверами вашей системы, они не будут работать. Это может быть особенно неприятно, если вы используете клавиатуру Bluetooth ( вот почему вы не должны это делать ) или мышь (с USB-ключом), так как это означает поиск альтернативы проводного USB.
Однако это может быть не тот порт, который не работает. Возможно, на используемом вами USB-устройстве произошла ошибка, и ее невозможно обнаружить.
Решение проблем с USB может быть сложным, но не исключено, что диагностировать неисправность и внести необходимые исправления не исключено.
Для устранения проблем с USB в Linux необходимо выполнить пять шагов:
- Убедитесь, что USB-порт обнаружен
- Произведите необходимый ремонт в порту
- Исправление или ремонт USB-устройств
- Перезагрузите операционную систему Linux
- Подтвердите наличие драйверов устройств
Давайте рассмотрим каждый из них по очереди и узнаем, как работать с хитрыми USB-устройствами в Linux.
1. Обнаружено ли ваше устройство в Linux?
Первое, что нужно проверить при подключении USB-устройства к вашему компьютеру с Linux, — это обнаружение. Обнаружение устройства USB обычно не так устно или слышно, как в Windows или macOS, что означает, что вам часто нужно проверять, что устройство было обнаружено операционной системой.
К счастью, это просто.
Сначала отключите USB-устройство, к которому вы обращаетесь. Затем откройте окно терминала и введите команду «list USB»:
Запишите результаты, затем подключите устройство USB и снова запустите lsusb.
На этот раз в списке должно появиться дополнительное устройство с идентификатором шины, идентификатором устройства, USB-идентификатором и описанием. Если вы не можете понять, что такое дополнительное устройство (у вас может быть внутреннее USB-устройство, возможно, Ethernet), попробуйте другую команду.
Команда dmesg выведет список подключенных USB-устройств в вашей системе. Он также будет включать в себя оборудование, отличное от USB, и, к сожалению, предлагает огромное количество информации. Чтобы противостоять этому, вы можете попробовать
Наконец, вы можете просто положиться на более удобный для пользователя
Это похоже на сочетание команд dmesg и lsusb, в котором перечислены подключенные USB-устройства с достаточной информацией для их идентификации.
Итак, есть ли у вас USB-порт в списке? Если нет, возможно, порт поврежден или возникла проблема с устройством. Точно так же устройство может быть несовместимо с Linux.
2. Как проверить свой порт USB
Если устройство USB не отображается, это может быть связано с проблемой порта USB.
Лучший способ проверить это быстро — просто использовать другой USB-порт на одном компьютере. Если USB-оборудование обнаружено, значит, у вас проблема с другим USB-портом.
Если другой USB-порт недоступен, вам нужно попробовать USB-устройство на другом ПК или ноутбуке. Однако это может быть не идеальным вариантом, поскольку в качестве альтернативы у вас может быть только компьютер с Windows или macOS. Поскольку некоторые устройства USB не могут использоваться в Linux, будет трудно определить, является ли это устройством USB или портом USB, который вызывает у вас проблемы.
Для достижения наилучших результатов при поиске и устранении неисправностей USB-устройств, по возможности, придерживайтесь Linux-совместимого оборудования. Нет времени установить Linux на другой компьютер? Подумайте о том, чтобы подтвердить состояние вашего USB-оборудования с помощью недорогого Raspberry Pi Zero. вместо этого.
3. Исправление сломанного USB-оборудования
Исправление обычно включает проверку порта USB, а также устройства, которое в данный момент не работает. Исправления почти всегда будут сосредоточены вокруг USB-кабеля. и порт на вашем компьютере. Однако USB-кабели обычно можно заменить, а порты можно отремонтировать.
Физическая проверка USB-оборудования — это хорошая идея. Кабели должны быть прочными, без каких-либо трещин; пробки должны быть сплошными, с металлическим сечением плотно прикрепленным.
Между тем, порты USB следует проверять, когда компьютер выключен и отключен от сети. Проверьте, что порты надежно установлены; шаткие USB-порты указывают на износ оборудования.
Если USB-порт ослаблен, вы можете припаять его на место. Конечно, вы уже должны знать, как паять как паять ; Никогда не пытайтесь работать самостоятельно, без предварительного опыта.
Кроме того, проверьте наличие пыли и грязи в USB-портах, особенно в задней части ПК, где регулярно собирается пыль. Пыль — враг ПК , так что стоит поддерживать вашу систему в непыльной среде, чтобы повысить производительность. Поскольку пыль может проникнуть в ваш компьютер через разъемы USB, не торопитесь, чтобы эти порты оставались чистыми. Используйте баллончик со сжатым воздухом для рассеивания пыли и грязи.
Вы можете вернуть свое USB-устройство? Если он новый, то, наверное. Проблема в том, что, если он явно не помечен как работающий под Linux, розничный продавец вряд ли примет возврат. Возможно, вам нужно быть немного избирательным с фактами, которыми вы делитесь с ними …
4. Перезапуск Linux для исправления USB-порта
В некоторых случаях, например, при использовании ноутбука, проблемы с питанием могут влиять на его способность обнаруживать USB-устройства. Параметр autosuspend предназначен для снижения энергопотребления на ноутбуках с Linux, но может оказаться контрпродуктивным.
Так что ты можешь сделать?
Во-первых, проверьте, не вызывает ли проблема Autosuspend. Вы можете сделать это, перезагрузив компьютер; если устройство USB работает, то этот порт USB получает питание.
Следующий шаг — убедиться, что это больше не повторится. Следующие приемы командной строки относятся к Ubuntu 18.10, поэтому проверьте правильность процедуры в предпочитаемом вами дистрибутиве Linux.
Откройте окно терминала и введите:
Изменить это на
Нажмите Ctrl + X, чтобы сохранить файл и выйти. Далее обновите grub:
Когда это завершится, перезапустите Ubuntu.
После перезагрузки войдите в свою учетную запись и снова введите команду cat:
На этот раз возвращаемое значение должно быть -1 . Вы отключили автоподключение, поэтому устройства USB, подключенные к ноутбуку, не должны выходить из строя из-за проблем с питанием.
5. Проверка драйверов USB-устройств в Linux
Когда-то устройства USB не часто работали в Linux. Только устройства, произведенные OEM-изготовителями, заинтересованными в Linux (возможно, они использовали его для разработки), могли бы предложить драйвер для Linux.
В наши дни все обстоит иначе: большинство производителей предлагают драйверы для Linux. В большинстве случаев это уже будет доступно в вашей операционной системе Linux через ядро. Вам не нужно устанавливать какие-либо драйверы USB.
Если драйвер недоступен, вы, вероятно, сможете найти его, связавшись с производителем USB-устройства.
Устранение неполадок с USB на Linux: исправлено!
Благодаря встроенным драйверам и широкой поддержке многих типов USB-устройств легко диагностировать проблемы с USB-оборудованием вашего компьютера.
Хотя сломанное оборудование может нуждаться в ремонте или замене, также доступны исправления программного обеспечения.
Если вы недавно перешли с Windows, могут возникнуть проблемы с USB в Linux. К счастью, эти проблемы обычно легко решаются, помогая облегчить переход на Linux. облегчающих переход на Linux облегчающих переход на !
Minicom - это консольная программа операционной системы linux для установки сеанса связи с устройствами через последовательный com-порт. Для подключения к com-порту программу можно запускать с заданными аргументами и использовать псевдо-графический оконный интерфейс для изменения и сохранения настроек подключения. Рассмотрим настройку программы на примере популярной операционной системы семейства linux - Ubuntu.
Установка программы в Debian/Ubuntu:
Подключение будет осуществляться к последовательному порту устройства со следующими настройками:
Скорость/Четность/Биты (Bps/Parity/Bits) = 38400 8N1.
Настройка подключения к com-порту
Запуск программы лучше выполнять в привилегированном режиме sudo, т.к. программе могут понадобиться повышенные права для доступа к порту или для сохранения настроек.
Для доступа к меню конфигурации программу minicom нужно запустить с параметром -s:
Выбираем пункт "Настройка последовательного порта".
При использовании нуль-модемного кабеля, адресом последовательного порта в linux будет /dev/ttyS0 для COM1, /dev/ttyS1 для COM2 и т.д. В случаях, когда используется адаптер USB-to-COM, в качестве порта ввода-вывода будет использоваться /dev/ttyUSB0 или /dev/ttyUSB1.
Список доступных портов можно посмотреть командой:
Настройки для подключения к последовательному порту USB-to-COM с заданными параметрами будут выглядеть примерно так:
Для выбора последовательного порта нужно нажать клавишу [A] и отредактировать значение.
Для изменения скорости нажать клавишу [E] и затем [D], чтобы выбрать скорость 38400.
Нажимаем два раза клавишу [Enter], чтобы принять изменения и вернуться в начало меню "Конфигурация".
Сохраняем настройки, выбрав пункт "Сохранить настройки как dfl". Это изменит настройки запуска программы, используемые по умолчанию.
Если выбрать пункт "Сохранить настройки как.." и указать имя файла настроек, например "cisco", то это не изменит настройки по умолчанию и в дальнейшем можно будет запускать программу с конкретными параметрами, указав имя файла с настройками.
В завершении настройки переходим к пункту "Выход" и если все настроено правильно, то будет установлен сеанс подключения по последовательному порту.
Запуск minicom с аргументами
Minicom можно запускать без выполнения настроек в оконном режиме. Для этого достаточно выполнить запуск программы с заданными аргументами.
Для подключения к устройству с помощью адаптера USB-to-COM со скоростью 38400:
Читайте также:
- Не могу отключить устройство в диспетчере устройств windows
- Как установить принтер xerox phaser 3210 на windows 10
- Mac os monterey стоит ли обновлять
- Как перевести фоновые службы и службы автозапуска в режим сна windows xp
- Эта версия windows была неудачна данный факт подтвердили пользователи и программисты