Stty input output error

Следующий Предыдущий Содержание

Следующий
Предыдущий
Содержание


.

18. Разрешение
проблем

18.1 Я подключил модем, но
система его не видит

Также может выдаваться сообщение об ошибке: «Modem not
responding» («Модем не отвечает»). Возможны по крайней мере 4 причины:

  1. У Вас винмодем, а подходящий для него драйвер не
    установлен.
    Или модем неисправен. Или находится в режиме передачи данных («online
    data mode»), если не отвечает. См. Винмодем
  2. Ваш модем не работает (disabled), поскольку ни BIOS, ни
    Linux не смогли подключить (enable) его. У него нет адреса I/O (тут
    подразумевается последовательный порт, к которому подключен модем —
    замеч. перев.).
  3. Ваш модем подключен (enabled) и у него есть адрес I/O, но
    для данного адреса не назначен номер порта ttyS (например, ttyS14).
  4. Вашему модему (порту — см. замеч. перев. выше) присвоен
    номер ttyS (ttyS4, к примеру), но Вы по ошибке используете неправильный
    номер (ttyS2 вместо ttyS4, например). См. неправильный_ttySx
    и/или wvdial и/или minicom (проверка модема)

Случай 1:
Винмодем

Обычно последовательный порт винмодема (или неисправного
модема)
виден системой и без драйвера. Но при опросе по данному порту
программой wvdial (или
другой) ответа нет, так как для взаимодействия с самим
винмодемом необходим драйвер. Вы увидите сообщение, что модем не
найден. Однако, при загрузке системы карта модема, скорее всего,
определяется системой и выводится сообщение, что модем обнаружен. Т.е.,
Вам говорят, что модем найден и что модем не найден! Все это означает,
что модем не будет работать. Конечно, он может быть
неработающим не только потому, что у Вас винмодем, для
которого
нет драйвера.. См. Программные
модемы (винмодемы, линмодемы).

Случаи 2-3

Случаи 2 и 3 означают, что для Вашего модема нет
последовательного порта. См. Отсутствует
последовательный порт.

Случай 4:
Неправильный номер ttySx

Если Ваш случай — четвертый, то Вам повезло. Вам просто надо
найти, какой ttyS соответствует Вашему модему.

wvdial

В комплекте с wvdial идет программа wvdialconf, которая сама
находит
модемы, проверяя стандартные последовательные порты. Наберите
«wvdialconf <название-нового-файла>». Это создаст новый
файл
настроек wvdial, в котором будет указан порт модема (если Вы не будете
использовать wvdial, то этот файл Вам не пригодится).
См. wvdialconf.
Если модем находится в режиме передачи данных (online), то в
таком
случае wvdialconf сообщит «No modem detected» («Модем не обнаружен»).
См. minicom (проверка
модема)

minicom
(проверка модема)

Выяснить, присутствует ли на определенном порте модем, можно,
запустив minicom (только перед этим в minicom надо сделать настройки
для этого
порта. Сделав настройки, сохраните их, выйдите из minicom и запустите
его снова). Если, введя «AT», Вы не увидите в ответ «OK», то попробуйте
ввести ATQ0 V1 E1. Если и после этого Вы не получаете в ответ OK (а,
может, и вовсе не видите вводимые команды), то модема на данном порте,
судя по всему, нет. Но может быть, что он не виден по одной из
указанных выше причин — случай 1, 2 или 3.

Отсутствие отклика от модема также может объясняться тем, что
модем
остается в режиме передачи данных и не принимает никакие AT-команды
(точнее,
модем принимает команды как обычные данные —
замеч. перев.). Если во время сеанса неожиданно произошло
разъединение
(например, «убийство» процесса сигналом 9), то модем не
«сбрасывается» в командный режим, в котором с ним возможно
взаимодействие посредством AT-команд. Minicom может сообщить»You are
already online. Hangup first.» («Вы уже на линии. Сперва
отсоединитесь.») (может быть и другая причина появления такого
сообщения — см. Вы
уже на линии! Сперва отсоединитесь.)
Получается, что Вы как бы остаетесь на связи, но подсоединится к
чему-нибудь через телефонную линию Вы не можете. Wvdial в
такой
ситуации выводит «modem not responding» («модем не отвечает»).

Исправить указанную ситуацию можно перезагрузкой компьютера.
Но есть
и другой способ — послать модему последовательность +++, которая
укажет ему перейти из режима передачи в командный режим.
Последовательность +++ должна предваряться и завершаться временными
задержками длительностью около 1 секунды (в течение данных «защитных
интервалов» не должно быть никаких данных). Данный способ может
не работать, если другой процесс использует модем, поскольку
последовательность +++ может быть «разбавлена» символами от данного
процесса, или же эти символы могут оказаться на месте защитных
интервалов. По иронии, даже если через модем не передаются
никакие
данные, неожиданный ввод +++ вызовет обмен служебными пакетами
(невидимый для Вас), который нарушит требуемую задержку и,
соответственно, помешает получению желаемого (?). Обычно +++
записывается в строке, называемой «строкой отбоя» («hangup
string»), которая используется minicom’ом, если ему дать команду
отсоединиться от линии. Сделать это также можно путем завершения
работы minicom’а и его повторного запуска.

Помимо отсутствия ответа на AT-команды могут быть еще такие
проблемы в minicom:

  • Много секунд занимает ожидание реакции на производимые
    действия (в
    том числе на перемещение курсора всего лишь на одну строчку вниз). См. Чрезвычайно медленно: текст появляется на
    экране медленно, после долгих задержек
  • Появляются непонятные символы,
    которых не должно быть в ответе на AT-команды. Такое может
    быть
    из-за того, что модем все еще может оставаться на связи, и с другого
    конца телефонной линии могут приходить какие-то пакеты или что-то еще.

18.2 «Modem is busy» («Модем
занят»)

Что может означать данное сообщение — зависит от программы,
которая
его вывела. Модем действительно может быть занят (используется
какой-нибудь программой). В дистрибутиве SuSE, как сообщалось, причиной
такого сообщения могло быть одновременное присутствие двух драйверов
последовательного порта вместо одного. Один драйвер был встроен в
ядро, а второй был в виде модуля.

kppp посылает данное сообщение при неудачной попытке
получить/задать
«stty»-параметры последовательного порта. (Наподобие «Ошибки
ввода/вывода» («Input/output error»), которую можно получить при
выполнении «stty -F /dev/ttySx»). Для получения некоторых
«stty»-параметров необходимо, чтобы драйверу был известен точный адрес
порта. Но драйвер может иметь неправильный адрес. (Узнать, что «думает»
драйвер, можно с помощью setserial.) Поэтому сообщение «модем занят»
может означать, что последовательный порт (и, соответственно, модем) не
найден.

Если у Вас pci-модем, то узнать правильный адрес и irq модема
поможет одна из команд: lspci -v, cat /proc/pci, dmesg. После этого
посмотрите, показывает ли то же самое setserial. Если нет, то Вам надо,
чтобы стартовый скрипт содержал команду setserial, которая
сообщит
драйверу правильные адрес и irq.

18.3 «You are already online!
Hang up first.» («Вы уже на линии! Сперва отсоединитесь.») (от minicom)

Присутствует сигнал CD. Это означает, что либо сеанс связи
действительно установлен (несущая обнаружена), либо настройки модема
таковы, что он постоянно выдает сигнал CD. Наберите в minicom’е команду
at&v, чтобы посмотреть, не задано ли &C или
&C0. Если
задано, то CD будет присутствовать постоянно (пока на модем подается
питание — добав. перев.:)), а Вы будете получать ошибочное по сути
сообщение, приведенное в заголовке. Чтобы исправить это, надо задать
&C1, указав в строке инициализации или сразу сохранив в модем.

18.4 На коробке модема написано
56k, а скорость к 56k не приближается :(

Чтобы скорость модема была близка к 56k, надо иметь линию с
очень
малым уровнем шумов. Но телефонные линии бывают настолько плохи,
что на них максимум можно получить 28.8k или даже меньше. Иногда
проблемы могут вызывать дополнительный(ые) телефон(ы), подключенный(ые)
параллельно к этой же линии. Чтобы проверить это, можно отсоединить
(если это возможно) от линии все, кроме модема, а сам модем
подсоединить как можно ближе к месту, где телефонная линия входит в
помещение. Скорость увеличилась? :)

18.5 Загрузка файлов либо
прерывается, либо медленная

Данная проблема может быть вызвана тем, что отсутствует
управление
потоком ПК-модем и/или модем-модем). Случай отправки
(uploading):
При высокой скорости DTE (115.2k) исходящий поток (от ПК к модему и
далее) из-за низкой пропускной способности телефонной линии не будет
проходить весь. Это приведет к возникновению большого числа ошибок и
повторной отправке пакетов. Таким образом, передача файла займет много
времени. Файлы, вообще, могут «застрять» и никуда не уйти :) В обратном
направлении (от модема к ПК) при высокой скорости DTE никаких проблем
вроде бы быть не должно :)

Случай приема (downloading): Если задана низкая скорость DTE и
отсутствует управление потоком, то в таком случае для принимаемого файла
«пробка» может возникнуть на участке от модема к ПК (думаю, скорость
порта должна быть очень низкой — перев.). Также при отсутствии
управления потоком передача может не получиться при
загрузке больших несжатых файлов и веб-страниц, если модем
использует сжатие данных (?).

18.6 Выдается сообщение: «line
NNN of inittab invalid» («строка NNN в файле inittab неправильная»)
(для случая приема звонков)

Проверьте, что Вы используете правильный синтаксис init,
соответствующий Вашей версии. Различным
версиям init соответствуют различные
синтаксисы файла /etc/inittab.
Проверьте, что Вы используете правильный синтаксис getty,
соответствующий Вашей версии.

18.7 Постоянно
получаю сообщение: «Id «S4″ respawning too fast: disabled for 5
minutes» («Процесс с id
«S4″ перезапускается слишком быстро: отключено на 5 минут»)

Id процесса не обязательно должен быть «S4» — может быть
любой
другой. В нашем случае (id «S4») посмотрите на строку в файле
/etc/inittab, которая начинается с «S4». Проблема связана с этой
строкой. Проверьте ее синтаксис и то, что устройство (в данном случае
это ttyS4) существует и доступно. Указанное сообщение об ошибке
возникает в случае, когда модем сбросил сигнал CD, а getty пытается
открыть порт. При сброшенном CD происходит уничтожение процесса getty.
Однако, после уничтожения getty сразу же перезапускается, поскольку так
задано в файле /etc/inittab (?). Но так как CD остается сброшенным, то
getty опять уничтожается, и все повторяется снова и снова (очень
быстро). Кажется, что в случае, когда от модема отсоединился кабель,
или в случае, когда задан неправильный последовательный порт, CD как бы
тоже оказывается сброшенным. Все это может произойти, когда Ваш модем
обменивается информацией с getty. Проверьте, что Ваш модем настроен
правильно. Посмотрите AT-команды E и Q.

Если Вы используете uugetty, проверьте правильность синтаксиса
файла /etc/gettydefs, выполнив:

linux# getty -c /etc/gettydefs

Рассматриваемая проблема также может возникать при неудачном
запуске uugetty. См. uugetty
по-прежнему не работает.

18.8 Прием звонков: getty не
перезапускается после завершения соединения удаленным пользователем

Причиной этого может быть то, что модем не перезагружается
правильно, когда происходит падение DTR при завершении соединения
пользователем. У большинства Hayes-совместимых модемов все проходит
нормально, если в их настройках стоит &D3.
Но в случае модемов USR Courier, SupraFax и некоторых других Вам надо
задать &D2 (и еще S13=1
в некоторых случаях). Посмотрите в руководстве к своему модему (если,
конечно, оно имеется :)), что должно быть. См. также Завершение входящего
соединения

18.9 NO DIALTONE (нет гудка в
линии)

Данное сообщение означает, что в линии нет гудка (иногда стОит
верить написанному — перев. :)). Возможно, что кто-то занял эту же
линию через параллельно подключенный телефон. А может, что
модем просто не включен в линию (не воткнут телефонный шнур),
или
обрыв где-то в линии. Подключите вместо модема обычный телефон (через
тот же шнур). Послушайте, есть ли гудок в телефонной трубке.

Если по какой-либо причине модем не распознает гудок в линии,
то Вы
можете заставить его набирать номер и устанавливать соединение, не
дожидаясь гудка в линии. Для этого в строку инициализации надо добавить
команду X3.

18.10 NO CARRIER (нет несущей)

Такое сообщение означает, что модем не обнаруживает несущую
(аналоговая синусоида) от другого модема. Если соединение было, то это
означает, что оно потеряно. Причиной мог стать шум в линии или само по
себе плохое соединение (?). Или же другой модем мог «повесить
трубку» по какой-либо причине: Возможно, процесс идентификации (login)
не отработал нормально. Возможно, PPP не запустился нормально.
Возможно, был превышен временной лимит.

Если Вы получаете это сообщение об ошибке до установления
соединения, то это опять же значит, что несущая противоположного модема
не была найдена Вашим модемом. Так может произойти из-за того, что на
противоположном конце линии находится не модем. Например, вместо
модема Ваш звонок может принять автоответчик. Сообщение ‘NO
CARRIER’ также возникает в случае, когда модемы не могут договориться
между собой о протоколе. Это может относиться к первым модемам V.90,
которые при установке соединения сперва предлагают протокол X2 или
K56flex. Эти два протокола являются устаревшими, и сервера некоторых
провайдеров сбрасывают соединение (вешают трубку) в таком случае,
поскольку они не понимают данных протоколов и не ждут, пока вызывающий
модем перейдет на V.90.

Если Вы заставите модем сбросить соединение, сбросив сигнал
DTR, или
пошлете модему сигнал отбоя (команда ATH), то также можете получить
рассматриваемое сообщение об ошибке. Но в данном случае Вы сами (или
запущенная Вами программа) хотите завершить соединение, поэтому это не
должно быть проблемой. Да и получение сообщения ‘NO CARRIER’
предполагается в этом случае только, если были потеряны данные. Поэтому
обычно при завершении соединения посредством команды отбоя (или
посредством сброса сигнала DTR) Вы получаете только OK. Ваша программа
может даже и вовсе ничего не показать Вам при этом.

18.11 uugetty по-прежнему не
работает

В getty_ps для поиска ошибок
есть опция DEBUG (отладка). Добавьте
в файл /etc/conf.{uu}getty.ttySN
строчку DEBUG=NNN.
Здесь NNN — один из следующих кодов,
определяющих область поиска:

D_OPT 001 заданные опции (option settings)
D_DEF 002 обработка файла настроек по умолчанию (defaults file
processing)
D_UTMP 004 обработка utmp/wtmp (?) (utmp/wtmp processing)
D_INIT 010 строка инициализации (line initialization) (INIT)
D_GTAB 020 обработка файла gettytab (gettytab file processing)
D_RUN 040 другая диагностика (other runtime diagnostics)
D_RB 100 отладка "обратного вызова" (ringback debugging)
D_LOCK 200 обработка lock-файла uugetty (uugetty lockfile
 processing)
D_SCH 400 планировщик (?) (schedule processing)
D_ALL 777 все подряд (everything)

Хорошо начать с задания DEBUG=010.

При запущенном syslogd вся
отладочная информация будет сохраняться в Ваши log-файлы. Если syslogd
не запущен, то информация будет сохраняться: в /tmp/getty:ttySN
— для getty, в /tmp/uugetty:ttySN
— для uugetty, и в /var/adm/getty.log.
Это информация поможет узнать, в чем может быть причина проблемы.
Весьма вероятно, Вам потребуется подрегулировать некоторые
параметры в файле настроек uugetty и
изменить какие-нибудь настройки у модема.

Можно также попробовать использовать mgetty.
Возможно с нею Вам повезет больше :)

18.12 (Оставшаяся часть данного
раздела одинакова для Serial HOWTO и для Модем HOWTO)

18.13 Последовательный порт
отсутствует

Возможны 3 варианта:

  1. Ваш порт отключен, поскольку ни у BIOS, ни у Linux не
    получилось его подключить. У порта нет адреса IO.
  2. Ваш
    порт подключен и у него есть адрес IO, но он у него нет номера ttyS
    (например, ttyS14), соответствующего этому адресу, поэтому порт не
    может использоваться. Назначить номер ttyS порту можно с помощью
    setserial.
  3. У
    порта есть номер ttyS (например, ttyS14), но Вы не знаете, какому
    разъему (сзади корпуса Вашего ПК или внутри него) он соответствует. См.
    Serial-HOWTO: «Which Connector on the Back of my PC is ttyS1, etc.?»
    («Какой разъем сзади моего ПК называется ttyS1, ttyS2 и т.д.?») Если
    перед Вами стоит обратная задача: узнать какое название у порта, к
    которому подключен модем, то см. Я
    подключил модем, но система его не видит

Сперва проверьте сообщения BIOS при загрузке, относящиеся к
последовательным портам (заодно посмотрите меню BIOS, в котором
задаются настройки последовательного порта). Затем, если у Вас
PCI-порт, выполните команду: lspci -v. Если в ее выводе встретится «LPC
Bridge», то Ваш последовательный порт, вероятно, подключен к шине LPC,
которая не очень хорошо поддерживается Linux пока что ?? Если у Вас PnP
ISA-порт, то попробуйте выполнить «pnpdump —dumpregs» и/или посмотрите
Plug-and-Play-HOWTO. Если окажется, что порт подключен (enabled), то
попытаться
найти его адрес IO можно следующим образом:

Сканирование/проверка стандартных (legacy) портов

В основном, данная информация касается портов, не
подключенных
к шине PCI и не поддерживающих Plug-and-Play, к коим можно отнести
и ISA-порты.

Просканировать  все подключенные к шине порты
позволяет
утилита scanport (входит в состав только Debian ??), в
результате выполнения которой можно найти
неизвестный
порт, в том числе последовательный (но проверку портов scanport не
производит). Предупреждение: Во время сканирования Ваш ПК может
подвиснуть
:) Можно и вручную попытаться проверить определенный адрес, по которому
— как Вы предполагаете — может находиться последовательный порт, но
когда таких адресов несколько, то это превращается в долгое и
утомительное занятие… См. Проверка.

18.14 Конфликт прерываний (в
Вашем ПК есть слоты ISA)

Если в Вашем ПК присутствует шина ISA, то возникновение
конфликта
прерываний (IRQ) может быть связано с нехваткой свободных IRQ.
Обычно BIOS содержит список зарезервированных IRQ,
зарезервированных для существующих (legacy) ISA-карт. Если
зарезервированных IRQ слишком много, то BIOS может не найти свободное и
назначить последовательному порту неправильное значение, что приведет к
конфликту. Поэтому посмотрите, все ли зарезервированные IRQ
действительно необходимы, нельзя ли освободить какое-нибудь одно, чтобы
его мог использовать последовательный порт. См.
также Plug-and-Play-HOWTO.

18.15
Чрезвычайно медленно:
текст появляется на экране медленно, после долгих задержек

Вероятно, это связано с неправильно заданными или
конфликтующими
прерываниями. Примерами рассматриваемой проблемы могут быть
такие
ситуации: Вы что-то вводите с клавиатуры, но на экране в
течение
долгого времени ничего не появляется, отобразиться
может только
последний введенный символ, которым может оказаться невидимый символ
возврата (<return>), поэтому все, что Вы заметите, будет
переход
курсора на одну строчку вниз. В другом случае вместо ожидаемого вывода
всех данных на экран отображаются только 16 символов или около
того, затем после долгого ожидания следует другая партия символов и
т.д. Также может возникнуть сообщение об ошибке «input overrun» (что-то
вроде «превышение ввода» — перев.).

Более подробно примеры и причины описаны в разделе
Serial-HOWTO,
который называется «Interrupt Problem Details» («Проблемы, связанные с
прерываниями»).

Если это касается устройств Plug-and-Play, то посмотрите также
Plug-and-Play-HOWTO.

Быстрым способом проверить, действительно ли проблема
связана с
прерыванием, является установка с помощью setserial значения IRQ на 0.
Этим Вы укажете драйверу использовать опрос (polling) вместо
конкретного номера прерывания. Если проблема «медлительности»
после этого исчезает, то причина кроется в прерывании. Конечно, можно
оставить использование опроса, но это приведет к излишнему расходу
ресурсов компьютера (которых и так всегда мало — примеч. перев.), так
что лучше разобраться с прерыванием :)

Определить конфликт прерываний в Linux может оказаться не
просто,
поскольку предполагается, что Linux не допускает конфликтов прерываний.
Если — по мнению Linux — Вы попытаетесь сделать что-то, что приведет
к конфликту, то получите сообщение /dev/ttyS?: Device or
resource busy (/dev/ttyS?:
Устройство или ресурсы заняты). Но конфликт может
получиться и без Вашего прямого участия, если setserial сообщит ядру
неправильную информацию. Ядро верит этой информации (оказывается
обманутым) и, следовательно, не предполагает наличия конфликта. Таким
образом, setserial не помогает выявить конфликт, скорее наоборот:
вводит в заблуждение и ядро, и Вас (надо сказать, что информация в
файле /proc/interrupts тоже взята от setserial). Вам самому надо
выяснить, что в настройках setserial неверно и исправить их так, чтобы
они соответствовали внутренним настройкам последовательного
порта.

Внутренние настройки порта устанавливаются либо перемычками
(посмотрите, как они стоят), либо «программным обеспечением PnP». В
случае PnP для получения информации о настройках выполните команду
«pnpdump —dumpregs» (если шина ISA) или «lspci» (если шина PCI). Затем
сравните полученные данные с настройками setserial. Они должны
совпадать.

18.16 Что-то медленно. Я
ожидал(а), что будет быстрее

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

Другой причиной может быть то, что Ваше подключенное к
последовательному порту
устройство  (модем, терминал, принтер) на самом деле работает
не
так быстро, как Вы думали. Модем 56k редко работает на скорости 56k, а
в самом Интернете не так уж редки свои заторы и пробки, которые, само
собой, приводят к замедлению передачи данных. Если на противоположном
конце соединения отсутствует цифровая линия и не используется
специальный «цифровой модем» (который не продается в любом компьютерном
магазине), то скорости выше 33,6 кбит/с не будет.

Еще одной причиной может быть устаревший
последовательный порт:
UART 8250, 16450 или один из первых 16550 (или драйвер
последовательного порта думает, что у Вас устаревший
последовательный порт). См. раздел «What are UARTS» в
Serial-HOWTO.

Чтобы узнать о своих последовательных портах, а точнее о том,
что о
них думает драйвер, выполните команду «setserial -g /dev/ttyS*». Если в
выводе этой команды тип UART отличается от 16550A, то проблема может
заключаться в этом. Но если Вы считаете, что setserial (и,
следовательно, драйвер) ошибается, то задайте ей нужные значения. См.
раздел Setserial.
Только учтите, что если у Вас действительно устаревший порт, то,
обманув setserial, Вы сделаете только хуже.

18.17 Во время загрузки
показываются неправильные значения IRQ для последовательных портов

Для не-PnP портов Linux вообще не выполняет никакой
проверки при загрузке. Поиск последовательных устройств
производится при загрузке модуля драйвера последовательного порта. Но
не стоит обращать внимание на показываемые при этом значения IRQ,
поскольку предполагается, что они являются стандартными. Считается, что
процедура определения IRQ является ненадежной, поэтому проще показать
стандартные значения :) (?) Но затем из одного из стартовых скриптов
запускается setserial, который изменяет значение IRQ и отображает это
новое (будем надеяться, что правильное :)) значение на экране. Если
значение IRQ не изменилось и осталось неправильным, то порт работать не
будет.

Так, хотя у моего ttyS2 IRQ
равно 5, в начале загрузки Linux мне показывается

ttyS02 at 0x03e8 (irq = 4) is a 16550A

(У более старых ядер «ttyS02» может обозначаться как «tty02»).
Используемое значение IRQ указывается Linux (драйверу) с помощью все
той же setserial.

18.18 «Cannot open /dev/ttyS?:
Device or resource busy» («Не могу открыть /dev/ttyS?: Устройство или
ресурсы заняты») 

См. /dev/tty? Устройство
или ресурсы заняты

18.19 «Cannot open /dev/ttyS?:
Permission denied» («Не могу открыть /dev/ttyS?: Доступ запрещен»)

Проверьте права доступа к файлу последовательного
порта,
выполнив команду: «ls -l /dev/ttyS?». Если Вы являетесь владельцем
файла /dev/ttyS? (обычно им является root — прим. перев.), то
необходимо, чтобы строка, описывающая права, начиналась с «crw», здесь
латинская буква «с» в начале означает символьное устройство (Character
device). Если же Вы не являетесь владельцем файла /dev/ttyS? (см. прим.
выше — перев.), то для работы с портом надо, чтобы на 8-й и
9-й
позиции строки, описывающей права, были символы «rw», означающие право
чтения и записи для любого пользователя. Изменение прав доступа
осуществляется командой «chmod». Есть и другие (более надежные) способы
получить доступ к файлу последовательного порта, например включение
пользователя в группу, имеющую соответствующие права. Некоторые
программы сами изменяют права доступа во время своего выполнения и
восстанавливают их при своем нормальном завершении. Но тут есть
опасность: в случае аварийного завершения (например, при
незапланированном отключении питания ПК) правильного
восстановления прав не произойдет…

18.20 «Cannot open /dev/ttyS?»
(«Не могу открыть /dev/ttyS?»)

Если stty не было выставлено clocal, то для открытия
последовательного порта может потребоваться, чтобы был сигнал
CD. Если к последовательному порту ничего не подключено, или на
устройство, которое подключено к последовательному порту (например,
внешний модем), не подано питание, то сигнала CD, естественно, не
будет. Возникнет сообщение «Не могу открыть…».
Либо выставите clocal,
либо подключите к последовательному порту устройство и подайте
на него
питание.

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

18.21 «Operation not supported by
device» («Операция не поддерживается устройством») (относится к ttyS?)

Появление данного сообщения означает, что операция,
запрашиваемая
setserial, stty или др. программой, не может быть выполнена, потому что
ядро не поддерживает ее выполнение. Раньше такое часто происходило по
причине того, что не был загружен модуль драйвера
последовательного порта. Но после появления PnP такое сообщение чаще
стало появляться по причине несовпадения действительного адреса модема
или другого последовательного устройства (который назначается PnP) с
адресом,
указанным в настройках драйвера (setserial). Очевидно, что команды (на
выполнение операции), отправленные по адресу драйвера, не дойдут до
модема (поскольку у него другой адрес) и не будут исполнены. См. Какие адрес IO и IRQ
«зашиты» в мой последовательный порт?

Если Вы получили сообщение об ошибке, что модуль драйвера
последовательного порта не загружен, но «lsmod» показывает, что все как
раз наоборот (т.е. что он загружен), то, скорее всего, модуль
загрузился позже. Обычно загрузка модуля происходит
автоматически по мере необходимости (если, конечно, его можно найти).
Чтобы так происходило, модуль прописывается в файле /etc/modules.conf
или /etc/modules. Сам модуль должен находиться в
/lib/modules/…/misc/serial.o.

18.22 «Cannot create lockfile.
Sorry» («Не могу создать lock-файл. Извините»)

Иногда вместо указанного сообщения при невозможности создать
lock-файл (файл блокировки) может выдаваться другое сообщение: «…
Device or resource busy» («… Устройство или ресурсы заняты»). Когда
порт открывается какой-нибудь программой, в каталоге /var/lock
(lock-каталог) создается lock-файл. Если для lock-каталога заданы
права, не позволяющие производить в него запись, то в нем нельзя будет
создать lock-файл. Чтобы посмотреть права доступа к данному каталогу,
выполните команду: «ls -ld /var/lock». Владелец каталога, коим является
root, и группа, которой он принадлежит, для нормальной
работы должны
иметь все права (rwx), при этом в группу должны быть включены
пользователи, которым требуется доступ к порту. Для остальных (третья
тройка прав) должны стоять права на чтение и выполнение (r-x). Но стоит
отметить, что такая схема не обеспечивает полной безопасности :) Для
изменения прав используйте команду «chmod», для изменения групп —
«chgrp». Само собой разумеется, что при отсутствии lock-каталога в нем
также невозможно будет создать lock-файл. Более подробная информация о
lock-файлах есть в подразделе «What Are Lock Files», содержащемся в
Serial-HOWTO.

18.23 «Device /dev/ttyS? is
locked.» («Устройство /dev/ttyS? заблокировано.»)

Такое сообщение означает, что какой-то другой процесс, судя по
всему,  уже занял последовательный порт. Есть несколько
способов
выяснить, какой процесс мешает нам воспользоваться нашим портом :) Один
из них — посмотреть lock-файл (/var/lock/LCK…). В нем
должен
содержаться идентификатор процесса (process id). Если process id равен,
скажем, 100, то для того, чтобы узнать об этом процессе, наберите: «ps
100». Если решите, что этот процесс больше не нужен, то Вы
можете «убить» его командой «kill 100». Если он будет
сопротивляться, то примените команду «kill -9 100», которая не оставит
ему шансов :) Но lock-файл в этом случае удален не будет, и Вам надо
будет самому его удалить. Если процесс с таким id (равным 100) вообще
отсутствует, то Вы просто удаляете этот lock-файл, хотя, как правило,
lock-файлы, содержащие id несуществующих процессов, должны удаляться
автоматически.

18.24 «/dev/tty? Device or
resource busy» («/dev/tty? Устройство или ресурсы заняты»)

Данное сообщение предположительно говорит о том, что
устройство, к
которому Вы пытаетесь получить доступ (или которым собираетесь
воспользоваться), занято (используется), или же о том, что ресурсы,
необходимые для этого устройства (например IRQ), уже используются
другим устройством и не могут быть разделены. Не очень понятно, правда?
:) Если с устройством, которое занято, еще
можно разобраться, то вот с ресурсами,
которые «уже используются»… Еще более запутывает эту ситуацию тот
факт, что в некоторых случаях ни устройство, ни требуемые ресурсы на
самом деле не являются «занятыми»…

Раньше при выключении компьютера путем простого отключения
питания
(простого нажатия на выключатель) в системе могли оставаться ненужные
lock-файлы, что  впоследствии приводило к появлению
рассматриваемого сообщения и не позволяло открыть последовательный
порт. В настоящее время предполагается, что система должна сама
автоматически удалять такие lock-файлы, но по состоянию на 2006-й год
оставалась проблема с wvdial, связанная с lock-файлами: если
wvdial
не может создать lock-файл, потому что не имеет права на запись в
каталог /var/lock/, то Вы видите такое же сообщение. См. Не могу создать lock-файл. Извините

Следующий пример описывает ситуацию, когда прерывания не могут
быть
разделены (во всяком случае, одно из прерываний на шине ISA). Слова
«ресурсы заняты» в сообщении часто означают (ttyS2
взят в качестве примера): «Вы не можете работать с ttyS2,
поскольку другое устройство использует прерывание ttyS2«.
Вероятный
конфликт прерываний получается из-за некорректных настроек setserial.
Более правильным сообщением об ошибке в данном случае было бы такое:
«Нельзя использовать ttyS2,
поскольку, как следует из
настроек setserial (и ядра, соответственно), ему задано прерывание,
которое уже используется другим устройством». Если у двух устройств
одинаковое IRQ, но работает только одно из них, то все нормально, т.к.
конфликта еще нет. Но как только Вы попытаетесь «запустить» второе
устройство (без отключения первого), то тут же получите сообщение об
ошибке: «… ресурсы заняты». Так получается из-за того, что ядро
отслеживает IRQ только тех устройств, которые используются в данный
момент, и не следит за IRQ незадействованных (еще не открытых)
устройств. Для адресов ввода-вывода в случае конфликта ситуация схожа.

Рассматриваемая ошибка также может возникать из-за наличия в
системе
одновременно двух драйверов последовательного порта: одного в виде
модуля и другого, встроенного в ядро. Оба драйвера пытаются
использовать одни и те же ресурсы, и для одного из них они оказываются
«занятыми».

Появление рассматриваемого сообщения возможно в двух случаях:

  1. В системе (в самих устройствах) действительно имеется
    конфликт ресурсов (скрытый?).
  2. setserial имеет неправильные настройки, из-за которых
    возникает
    конфликт, которого на самом деле нет, тем не менее порт нельзя
    использовать (сам до конца не понимаю — прим. перев. :)).

Вам надо узнать, какое прерывание по мнению setserial
используется ttyS2 (на месте ttyS2
может быть любой другой последовательный порт — напом. перев.). Для
этого загляните по адресу /proc/tty/driver/serial. Также это можно
выяснить, выполнив саму команду «setserial» для ttyS2.

Ошибка в предыдущих версиях: до 2001 года существовала ошибка,
которая не позволяла узнавать настройки с помощью самой
setserial: setserial выдавала такое же сообщение,
что, мол,
«… ресурсы заняты».

Попытайтесь перезагрузиться (reboot) или просто выйти (exit),
или
просто убить (kill) все процессы, которые могут вызывать конфликт. При
перезагрузке: 1. Посмотрите, что (какие значения) показывается в
сообщениях для последовательных портов при повторной загрузке. 2.
Остается надежда, что файл, запускающий setserial во время загрузки
(один из стартовых скриптов), не создаст (сам) тот же самый конфликт
снова. (Т.е. подразумевается, что в строках, запускающих
setserial
для каждого порта, прописаны правильные значения их настроек.)

Если Вы знаете, какой IRQ сейчас используется последовательным
портом, тем же ttyS2
:), то тогда можете посмотреть в /proc/interrupts, что еще (кроме
другого последовательного порта — одно прерывание приходится на два
порта (?) ) использует это же IRQ. Также можно проверить, все ли
значения IRQ, приведенные там, и значения, выдаваемые setserial,
являются правильными (т.е. соответствуют тем значениям, что «прописаны»
в самих портах). Способом выяснить, действительно
ли рассматриваемая проблема вызвана возможным конфликтом
прерываний, является установка значения IRQ на 0 с помощью setserial
(при котором драйвером используется опрос прерываний). Если сообщение о
«занятости ресурсов» исчезает, то проблема, скорее
всего, была связана с конфликтом прерываний. Оставлять IRQ,
равным
0, не рекомендуется, поскольку это приводит к дополнительной нагрузке
на ЦП.

18.25 «Input/output error»
(«Ошибка ввода/вывода»), получаемая от setserial, stty, pppd и т.д.

Такое сообщение говорит о том, что связь с последовательным
портом работает не так, как должна. Возможно, что по адресу
ввода-вывода, который был задан для setserial, нет никакого
последовательного порта. Возможно, что имеет место конфликт прерываний
(или конфликт адресов ввода-вывода). Возможно, что последовательный
порт уже чем-то используется (занят или открыт), и поэтому попытка
получить/задать параметры с помощью setserial или stty приводит к
появлению данного сообщения. Еще одной причиной возникновения этой
ошибки может быть опечатка в названии последовательного порта, например
вместо «ttyS» было набрано «ttys» (обращайте внимание на регистр).

18.26 «LSR safety check engaged»

LSR — это название аппаратного регистра. Обычно появление
данного сообщения означает, что драйверу задан неправильный адрес
последовательного порта. Надо изменить настройки либо у драйвера, либо
у самого порта. См. Настройка
последовательного порта: адрес IO, IRQ и/или setserial

18.27 Ошибки переполнения
(overrun) последовательного порта

Переполнение происходит в аппаратном буфере FIFO, увеличить
размер которого Вы, к сожалению, не можете. В 2002 году году сообщалось
о следующей особенности: из-за ошибки в некоторых версиях ядра 2.4 в
сообщениях о переполнении не указывался номер порта — просто «ttyS».
Но при использовании devfs эта ошибка не проявлялась, порт
указывался в ее нотации, например «tts/2». См. раздел «Higher Serial
Thruput» («Более высокая пропускная способность последовательного
порта») в Serial-HOWTO.

18.28 Модем не принимает входящие
звонки

Это касается только случая, когда модем используется и для
совершения звонков, и для их приема. Если модем будет выдавать сигнал
DCD (=CD), то некоторые программы (но не mgetty) будут думать, что он
занят. Это приведет к возникновению проблемы при установке связи. Модем
должен выставлять сигнал DCD только во время соединения, а не тогда,
когда getty прослушивает порт.
Проверьте, что Ваш модем выдает DCD только при наличии соединения
(&C1). Также и сигнал DTR должен устанавливаться программами,
такими как getty, kermit
и др., только на время, когда модем ими используется или когда
прослушивается линия.

18.29 Данные на порт приходят
нерегулярно, спорадически 

Порт может использоваться другой программой. Выполните команду
«top» (предварительно задав, чтобы она отображала номер порта) или
команду «ps -alxw». Из результатов их выполнения можно узнать, какая
еще программа может использовать порт. Последовательный порт часто
бывает занят программой gpm (терминальная программа для мышки).

18.30 Полезные программы

Здесь представлен список некоторых из программ, которые могут
пригодиться при поиске и устранении проблем:

  • Команда «lsof /dev/ttyS*» отобразит список последовательных
    портов, открытых в данный момент.
  • «setserial» — отображает и устанавливает настройки
    (низкоуровневые) последовательного порта, которые используются
    драйвером. См. setserial.
  • «stty» — еще одна программа, служащая для настройки порта (в дополнении к setserial). См. раздел «Stty» в Serial-HOWTO.
  • «modemstat» или «statserial» или «watch head
    /proc/tty/driver/serial» отобразят текущее состояние сигнальных линий
    модема, а точнее его регистров (DTR, CTS и т.д.). Также в
    /proc отображается количество переданных
    данных (байтовый поток) и ошибок (?).
  • С помощью «irqtune» прерываниям последовательного порта можно
    задать более высокий приоритет (?), чтобы улучшить производительность.
  • «hdparm» служит для настройки параметров жесткого диска, которая может чем-то помочь.
  • Команда «lspci» отображает список устройств, подключенных к шине PCI, вместе с их актуальными параметрами (IRQ и т.д.).
  • Команда «pnpdump —dumpregs» отображает актуальные параметры (IRQ и т.д.) PnP-устройств на шине ISA.
  • Некоторый «файлы», расположенные внутри /proc (например ioports,
    interrupts и tty/driver/serial).

Следующий
Предыдущий
Содержание

Если вам понравилась статья, поделитесь ею с друзьями:


Здравствуйте,

Я установил драйвер версии 1.18.59, (взял по ссылке, расположенной выше).

===============================================================================

Copyright © 2002-2015 Moxa Inc.

All Rights Reserved.

MOXA NPort Server Real TTY Driver Ver1.18.59 Installation.

System Information: Kernel 4.8.0-34-generic; Machine x86_64.

===============================================================================

Tar files, please wait … OK!

Building driver…

If you want to use secure communication with target,

you might choose [y] to enable the SSL function.

Note: This function support RealCOM with secure mode only.

Do you want to enable secure function? [y/N].

N

make -C /lib/modules/4.8.0-34-generic/build SUBDIRS=/tmp/moxa/kernel3.x modules

make[1]: вход в каталог «/usr/src/linux-headers-4.8.0-34-generic»

CC [M] /tmp/moxa/kernel3.x/npreal2.o

Building modules, stage 2.

MODPOST 1 modules

CC /tmp/moxa/kernel3.x/npreal2.mod.o

LD [M] /tmp/moxa/kernel3.x/npreal2.ko

make[1]: выход из каталога «/usr/src/linux-headers-4.8.0-34-generic»

cp -p npreal2.ko /lib/modules/4.8.0-34-generic/kernel/drivers/char/

depmod -a

cc -c npreal2d.c

cc npreal2d.o -o npreal2d

strip npreal2d

cc -c redund_main.c

cc -c redund.c

cc redund_main.o redund.o -lpthread -o npreal2d_redund

strip npreal2d_redund

cc -o mxaddsvr mxaddsvr.c

strip mxaddsvr

cc -o mxdelsvr mxdelsvr.c

strip mxdelsvr

cc -o mxcfmat mxcfmat.c

strip mxcfmat

cc -o mxloadsvr mxloadsvr.c

strip mxloadsvr

cc -o mxsetsec mxsetsec.c

strip mxsetsec

Check Driver…

Copying configurations files … OK!

Copying driver files … OK!

Load driver…

OK!

Loading TTY Driver…

Complete.

===============================================================================

Installation process is completed.

The all driver files are installed on /usr/lib/npreal2/driver.

Now you can cd /usr/lib/npreal2/driver and run ./mxaddsvr to add tty port.

===============================================================================

Создал порты:

root@mint:/usr/lib/npreal2/driver# ./mxaddsvr 192.168.1.46 16

ttyr00, cur00

ttyr01, cur01

ttyr02, cur02

ttyr03, cur03

ttyr04, cur04

ttyr05, cur05

ttyr06, cur06

ttyr07, cur07

ttyr08, cur08

ttyr09, cur09

ttyr0a, cur0a

ttyr0b, cur0b

ttyr0c, cur0c

ttyr0d, cur0d

ttyr0e, cur0e

ttyr0f, cur0f

Запустил прикладную программу. Она прекрасно заработала с портом ttyr00. Но, по всем остальным не работает. даже обмен не ведется

Активные соединения с интернетом (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 localhost:1880 localhost:51592 ESTABLISHED 19341/node-red

tcp 0 0 mint-orange:38548 192.168.1.46:966 ESTABLISHED 3417/npreal2d

tcp 0 196 mint-orange:ssh Home-PC:57494 ESTABLISHED 24072/sshd: hitkliv

tcp 0 0 mint-orange:55646 192.168.1.46:950 ESTABLISHED 3417/npreal2d

tcp 0 0 localhost:1880 localhost:53352 ESTABLISHED 19341/node-red

tcp 0 0 mint-orange:netbios-ssn Home-PC:41898 ESTABLISHED 24156/smbd

tcp 0 0 localhost:51592 localhost:1880 ESTABLISHED 1912/nginx: worker

tcp 0 0 mint-orang:microsoft-ds HitklivBook:49680 ESTABLISHED 25446/smbd

tcp 0 0 mint-orange:https Home-PC:56622 ESTABLISHED 1915/nginx: worker

tcp 0 0 localhost:53352 localhost:1880 ESTABLISHED 1915/nginx: worker

tcp 0 0 mint-orange:https Home-PC:56438 ESTABLISHED 1912/nginx: worker

Один из участников обсуждения писал в этой ветке, что нужно «проинициализировать stty на нужные параметры и в моем случае похоже еще и включить raw mode». Как это делается? И для чего эта процедура? Это типа «привязки» портов типа ttyr00, созданных скриптами их пакета драйвера, к  Stty-портам имеющимся в Linux?

Файрвол, у меня пока что все подряд пропускает (отключен)

Пожалуйста, помогите разобраться.

1. Сравни параметры рабочего и не рабочего COM порта выведя по ним параметры при помощи stty -a -F =/dev/ttyr00 и -a -F =/dev/tty[индекс не рабочего порта]

2. Установи недостающие параметры на порт тем же stty -F /dev/ttyrXX (man stty все достаточно понятно описано. На сколько я понял работа ком порта в линуксе это тонкая материя stty позволяет настроить ахулиард параметров. Какие из них нужно использовать — не понятно. Я вот месяц бьюсь мне устройстно не отдает перевод строки когда нужно, поэтому надо эксперементировать с параметрами, в вашем случае очень хорошо когда есть рабочий образец — понятно куда двигаться.

3. в моем случае мне надо 7 data bits 1 stop even 9600 я инициализирую  stty -F /dev/ttyr00 9600 -cstopb parenb -parodd cs7 raw. Мне помогло именно raw, на сколько я понял он выводит данные даже без признака конца строки, пока не будет получен конец строки от устройства он ничего в терминал не выведет. Мне это частично помогло, но проблема оказалась где то глубже. Сегодня буду пробовать другой адаптер, может дело в дровах.

Hello,

The objective is to calibrate my monitor (connected via VGA) with the colorimeter X-Rite Colormunki Display connected via usb.
The device is recognized :

Code:

$ lsusb 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 002: ID 046d:c05a Logitech, Inc. Optical Mouse M90
Bus 003 Device 005: ID 0765:5020 X-Rite, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 1bcf:2c01 Sunplus Innovation Technology Inc.

but when I run the program (Argyll) I get the following error message:

Code:

dispcal -r 
dispcal: Error - tcgetattr failed with 'Input/output error' on serial port '/dev/ttyS0'

my environment:
Sony Vaio SVE14A2C5E
Ubuntu 12.04 (precise) 64-bit
Kernel Linux 3.5.0-44-generic
GNOME 3.4.2

Some weeks ago, I had windows 8 on this laptop without problem with the calibrator and Argyll.
I spent my last days reading the numerous topics about it without success.

I show you the outputs of some command lines:

Code:

$ lspci -v                          
00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09)
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, fast devsel, latency 0
    Capabilities: <access denied>

00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) (prog-if 00 [VGA controller])
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, fast devsel, latency 0, IRQ 46
    Memory at f7800000 (64-bit, non-prefetchable) [size=4M]
    Memory at e0000000 (64-bit, prefetchable) [size=256M]
    I/O ports at f000 [size=64]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: <access denied>
    Kernel driver in use: i915
    Kernel modules: i915

00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04) (prog-if 30 [XHCI])
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, medium devsel, latency 0, IRQ 40
    Memory at f7e00000 (64-bit, non-prefetchable) [size=64K]
    Capabilities: <access denied>
    Kernel driver in use: xhci_hcd

00:16.0 Communication controller: Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 (rev 04)
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, fast devsel, latency 0, IRQ 43
    Memory at f7e1a000 (64-bit, non-prefetchable) [size=16]
    Capabilities: <access denied>
    Kernel driver in use: mei
    Kernel modules: mei

00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04) (prog-if 20 [EHCI])
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, medium devsel, latency 0, IRQ 16
    Memory at f7e18000 (32-bit, non-prefetchable) [size=1K]
    Capabilities: <access denied>
    Kernel driver in use: ehci_hcd

00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04)
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, fast devsel, latency 0, IRQ 44
    Memory at f7e10000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: <access denied>
    Kernel driver in use: snd_hda_intel
    Kernel modules: snd-hda-intel

00:1c.0 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 (rev c4) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0
    Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
    Memory behind bridge: f7d00000-f7dfffff
    Capabilities: <access denied>
    Kernel driver in use: pcieport
    Kernel modules: shpchp

00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0
    Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
    Memory behind bridge: f7c00000-f7cfffff
    Capabilities: <access denied>
    Kernel driver in use: pcieport
    Kernel modules: shpchp

00:1c.2 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 (rev c4) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0
    Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
    I/O behind bridge: 0000e000-0000efff
    Prefetchable memory behind bridge: 00000000f0000000-00000000f00fffff
    Capabilities: <access denied>
    Kernel driver in use: pcieport
    Kernel modules: shpchp

00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04) (prog-if 20 [EHCI])
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, medium devsel, latency 0, IRQ 23
    Memory at f7e17000 (32-bit, non-prefetchable) [size=1K]
    Capabilities: <access denied>
    Kernel driver in use: ehci_hcd

00:1f.0 ISA bridge: Intel Corporation HM76 Express Chipset LPC Controller (rev 04)
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, medium devsel, latency 0
    Capabilities: <access denied>
    Kernel modules: lpc_ich

00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04) (prog-if 01 [AHCI 1.0])
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 42
    I/O ports at f0b0 [size=8]
    I/O ports at f0a0 [size=4]
    I/O ports at f090 [size=8]
    I/O ports at f080 [size=4]
    I/O ports at f060 [size=32]
    Memory at f7e16000 (32-bit, non-prefetchable) [size=2K]
    Capabilities: <access denied>
    Kernel driver in use: ahci
    Kernel modules: ahci

00:1f.3 SMBus: Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller (rev 04)
    Subsystem: Sony Corporation Device 9095
    Flags: medium devsel, IRQ 4
    Memory at f7e15000 (64-bit, non-prefetchable) [size=256]
    I/O ports at f040 [size=32]
    Kernel modules: i2c-i801

01:00.0 Network controller: Intel Corporation Centrino Wireless-N 2230 (rev c4)
    Subsystem: Intel Corporation Centrino Wireless-N 2230 BGN
    Flags: bus master, fast devsel, latency 0, IRQ 45
    Memory at f7d00000 (64-bit, non-prefetchable) [size=8K]
    Capabilities: <access denied>
    Kernel driver in use: iwlwifi
    Kernel modules: iwlwifi

02:00.0 SD Host controller: Ricoh Co Ltd MMC/SD Host Controller (rev 07)
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, fast devsel, latency 0, IRQ 17
    Memory at f7c01000 (32-bit, non-prefetchable) [size=256]
    Capabilities: <access denied>
    Kernel driver in use: sdhci-pci
    Kernel modules: sdhci-pci

02:00.1 System peripheral: Ricoh Co Ltd Device e232 (rev 04)
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, fast devsel, latency 0, IRQ 4
    Memory at f7c00000 (32-bit, non-prefetchable) [size=256]
    Capabilities: <access denied>

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
    Subsystem: Sony Corporation Device 9095
    Flags: bus master, fast devsel, latency 0, IRQ 41
    I/O ports at e000 [size=256]
    Memory at f0004000 (64-bit, prefetchable) [size=4K]
    Memory at f0000000 (64-bit, prefetchable) [size=16K]
    Capabilities: <access denied>
    Kernel driver in use: r8169
    Kernel modules: r8169
VC0:    Caps:    PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
            Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
            Ctrl:    Enable+ ID=0 ArbSelect=Fixed TC/VC=01
            Status:    NegoPending- InProgress-
    Capabilities: [160 v1] Device Serial Number 01-00-00-00-68-4c-e0-00
    Kernel driver in use: r8169
    Kernel modules: r8169

Code:

$ dmesg | grep usb  
 [ 1.282660] ACPI: bus type usb registered  
 [ 1.282674] usbcore: registered new interface driver usbfs  
 [ 1.282681] usbcore: registered new interface driver hub  
 [ 1.282697] usbcore: registered new device driver usb  
 [ 1.362543] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002  
 [ 1.362545] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1  
 [ 1.362547] usb usb1: Product: EHCI Host Controller  
 [ 1.362549] usb usb1: Manufacturer: Linux 3.5.0-44-generic ehci_hcd  
 [ 1.362550] usb usb1: SerialNumber: 0000:00:1a.0  
 [ 1.378508] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002  
 [ 1.378511] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1  
 [ 1.378514] usb usb2: Product: EHCI Host Controller  
 [ 1.378527] usb usb2: Manufacturer: Linux 3.5.0-44-generic ehci_hcd  
 [ 1.378528] usb usb2: SerialNumber: 0000:00:1d.0  
 [ 1.378887] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002  
 [ 1.378889] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1  
 [ 1.378891] usb usb3: Product: xHCI Host Controller  
 [ 1.378892] usb usb3: Manufacturer: Linux 3.5.0-44-generic xhci_hcd  
 [ 1.378894] usb usb3: SerialNumber: 0000:00:14.0  
 [ 1.379044] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003  
 [ 1.379046] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1  
 [ 1.379047] usb usb4: Product: xHCI Host Controller  
 [ 1.379049] usb usb4: Manufacturer: Linux 3.5.0-44-generic xhci_hcd  
 [ 1.379050] usb usb4: SerialNumber: 0000:00:14.0  
 [ 1.379235] usbcore: registered new interface driver libusual  
 [ 1.674231] usb 1-1: new high-speed USB device number 2 using ehci_hcd  
 [ 1.806413] usb 1-1: New USB device found, idVendor=8087, idProduct=0024  
 [ 1.806421] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0  
 [ 1.917974] usb 2-1: new high-speed USB device number 2 using ehci_hcd  
 [ 2.050270] usb 2-1: New USB device found, idVendor=8087, idProduct=0024  
 [ 2.050278] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0  
 [ 2.217597] usb 3-2: new low-speed USB device number 2 using xhci_hcd  
 [ 2.237791] usb 3-2: New USB device found, idVendor=046d, idProduct=c05a  
 [ 2.237799] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0  
 [ 2.237803] usb 3-2: Product: USB Optical Mouse  
 [ 2.237806] usb 3-2: Manufacturer: Logitech  
 [ 2.238084] usb 3-2: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes  
 [ 2.241896] usbcore: registered new interface driver usbhid  
 [ 2.241898] usbhid: USB HID core driver  
 [ 2.243331] input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/input/input3  
 [ 2.243515] hid-generic 0003:046D:C05A.0001: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:00:14.0-2/input0  
 [ 2.309748] usb 1-1.3: new high-speed USB device number 3 using ehci_hcd  
 [ 2.726801] usb 1-1.3: New USB device found, idVendor=1bcf, idProduct=2c01  
 [ 2.726809] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0  
 [ 2.726813] usb 1-1.3: Product: USB2.0 Camera  
 [ 2.726816] usb 1-1.3: Manufacturer: 93010G000-289-G29R8DG  
 [ 3.016963] usb 2-1.5: new full-speed USB device number 3 using ehci_hcd  
 [ 3.111383] usb 2-1.5: New USB device found, idVendor=0765, idProduct=5020  
 [ 3.111391] usb 2-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0  
 [ 3.111394] usb 2-1.5: Product: ColorMunki Display  
 [ 3.111398] usb 2-1.5: Manufacturer: X-Rite, Inc.  
 [ 3.113082] hid-generic 0003:0765:5020.0002: hiddev0,hidraw1: USB HID v1.11 Device [X-Rite, Inc. ColorMunki Display] on usb-0000:00:1d.0-1.5/input0  
 [ 14.806093] input: USB2.0 Camera as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.0/input/input7 
 [ 14.806205] usbcore: registered new interface driver uvcvideo

Code:

$ dmesg | grep tty  
 [ 0.000000] console [tty0] enabled  
 [ 1.390157] tty ttyS15: hash matches

Code:

$ cat /proc/devices | grep tty  
 4 tty  
 4 ttyS  
 5 /dev/tty  
 5 ttyprintk

Code:

 $ dmesg | egrep -i 'serial|ttys' [ 1:25AM]  
 [ 1.346939] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled  
 [ 1.362695] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1  
 [ 1.362701] usb usb1: SerialNumber: 0000:00:1a.0  
 [ 1.378661] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1  
 [ 1.378677] usb usb2: SerialNumber: 0000:00:1d.0  
 [ 1.379037] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1  
 [ 1.379041] usb usb3: SerialNumber: 0000:00:14.0  
 [ 1.379194] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1  
 [ 1.379199] usb usb4: SerialNumber: 0000:00:14.0  
 [ 1.806585] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0  
 [ 2.050317] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0  
 [ 2.235979] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0  
 [ 2.421802] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0  
 [ 2.914224] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0

Code:

$ setserial -g /dev/ttyS*  
 /dev/ttyS0, UART: unknown, Port: 0x03f8, IRQ: 4  
 /dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3  
 /dev/ttyS10, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS11, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS12, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS13, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS14, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS15, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS16, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS17, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS18, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS19, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4  
 /dev/ttyS20, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS21, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS22, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS23, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS24, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS25, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS26, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS27, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS28, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS29, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3  
 /dev/ttyS30, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS31, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS4, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS5, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS6, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS7, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS8, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS9, UART: unknown, Port: 0x0000, IRQ: 0

Code:

 statserial /dev/ttyS1  
 statserial: TIOCMGET failed: Input/output error

The problem seems to come from the UART: unknown. So I tried to do:

Code:

 $ sudo setserial /dev/ttyS0 uart 16550A

then

Code:

$ setserial -g /dev/ttyS* [12:21PM]  
 /dev/ttyS0: No such device 
 /dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3  
 /dev/ttyS10, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS11, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS12, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS13, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS14, UART: unknown, Port: 0x0000, IRQ: 0  
 ...

Code:

$ sudo more /proc/tty/driver/serial [12:22PM]  
 serinfo:1.0 driver revision:  
 0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 CTS|DSR|CD|RI  
 1: uart:unknown port:000002F8 irq:3  
 2: uart:unknown port:000003E8 irq:4  
 3: uart:unknown port:000002E8 irq:3  
 4: uart:unknown port:00000000 irq:0  
 ...

After a reboot UART is unknown again.

Code:

 $ setserial -g /dev/ttyS*  
 /dev/ttyS0, UART: unknown, Port: 0x03f8, IRQ: 4  
 /dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3  
 /dev/ttyS10, UART: unknown, Port: 0x0000, IRQ: 0  
 /dev/ttyS11, UART: unknown, Port: 0x0000, IRQ: 0  
 ...

If I create a file /etc/udev/rules.d/60-serial.rules with:
KERNEL==»ttyS0″, MODE=»0666″
after each reboot, UART is kept 16550A but

Code:

$ setserial -g /dev/ttyS*  
 /dev/ttyS0: No such device

and the device is still not working.

The command below changes apparently nothing.

Code:

 $ sudo setserial /dev/ttyS4 autoconfig

I also tried

In the Serial port setup menu I get:
| A — Serial Device : /dev/tty8
| B — Lockfile Location : /var/lock
| C — Callin Program :
| D — Callout Program :
| E — Bps/Par/Bits : 115200 8N1
| F — Hardware Flow Control : Yes
| G — Software Flow Control : No

I changed tty8 by ttyS0 but it changes nothing
In some discussions the users where modifying some files system, but as I do not understand well what they are doing and if it is appropriate to my case, I prefer to stop here and wait for your advises.

Thank you very much for you help.

Понравилась статья? Поделить с друзьями:
  • Structured query dll error
  • Structure from motion mushroom error
  • Structural error ansys
  • Struct error unpack requires a buffer of 16 bytes
  • Struct error required argument is not an integer