Плата PCIe с параллельным портом не отображается как /dev/parport и не работает.

Вопрос или проблема

У меня есть контроллер PCIe ParallelPort, который, к сожалению, не хочет работать. После установки карты параллельного порта она не отображается, как я ожидал, как /dev/parport0. Выполнив:

sudo rmmod parport_pc
sudo modprobe parport_pc io=0x4000

я вижу /dev/parport0, но карта не работает. Когда я отправляю значения на выводной контакт, я не получаю никакого напряжения. А команда dmesg | grep parport показывает:

scheltie@linux-mathieu:~$ sudo dmesg | grep parport
[  266.761700] parport 0x4000 (WARNING): CTR: wrote 0x0c, read 0xff
[  266.761705] parport 0x4000 (WARNING): DATA: wrote 0xaa, read 0xff
[  266.761705] parport 0x4000: Вы указали этот адрес, но, вероятно, параллельного порта там нет!
[  266.761719] parport0: PC-стиль на 0x4000, irq 0 [PCSPP,TRISTATE]

Вывод команды sudo lspci -v:

0000:01:00.2 Параллельный контроллер: Asix Electronics Corporation AX99100 PCIe к Multi I/O Controller (prog-if 03 [IEEE1284])
    Подсистема: Asix Electronics Corporation (Неверный идентификатор) Параллельный порт
    Флаги: быстрая devsel, IRQ 255
    Порты ввода-вывода на 4008 [отключены] [размер=8]
    Порты ввода-вывода на 4000 [отключены] [размер=8]
    Память на 74001000 (32-бит, не предвыборочная) [отключена] [размер=4K]
    Память на 74000000 (32-бит, не предвыборочная) [отключена] [размер=4K]
    Возможности: [50] MSI: Включить- Счетчик=1/8 Маскируемый- 64бит+
    Возможности: [78] Управление питанием версия 3
    Возможности: [80] Express Legacy Endpoint, MSI 00
    Возможности: [100] Продвинутое сообщение об ошибке

Что меня поражает, так это [отключены], отмеченные после портов ввода-вывода и адреса памяти. Никаких идей, что может быть проблемой и как я мог бы это исправить?

Работаю на POP_OS 22.04 LTS, актуальная версия. На компьютере с двойной загрузкой с Windows карта работает в Windows. Таким образом, она включена в BIOS.

У меня была такая же проблема с StarTech PEX1P2 PCIe параллельным портом. Команда lspci -nnv показала, что порты ввода-вывода были отключены:

06:00.2 Параллельный контроллер [0701]: Asix Electronics Corporation AX99100 PCIe к Multi I/O Controller [125b:9100] (prog-if 03 [IEEE1284])
        Подсистема: Asix Electronics Corporation (Неверный идентификатор) Параллельный порт [a000:2000]
        Флаги: быстрая devsel, IRQ 5
        Порты ввода-вывода на e010 [отключены] [размер=8]
        Порты ввода-вывода на e000 [отключены] [размер=8]
        Память на fcc01000 (32-бит, не предвыборочная) [отключена] [размер=4K]
        Память на fcc00000 (32-бит, не предвыборочная) [отключена] [размер=4K]
        Возможности: [50] MSI: Включить- Счетчик=1/8 Маскируемый- 64бит+
        Возможности: [78] Управление питанием версия 3
        Возможности: [80] Express Legacy Endpoint, MSI 00
        Возможности: [100] Продвинутое сообщение об ошибке

Я решил это, создав /etc/modprobe.d/parport_pc.conf со следующим содержимым:

install parport_pc setpci -d 125b:9100 command=101; /sbin/modprobe --ignore-install parport_pc
options parport_pc io=0xe010 irq=auto

Убедитесь, что вы заменили 125b:9100 на идентификатор устройства из первой строки lspci -nnv и замените 0xe010 на порт ввода-вывода из четвертой строки. Теперь, когда модуль parport_pc загружается (например, с помощью sudo modprobe parport_pc), он будет одновременно настраивать порты ввода-вывода.

Здесь есть две ключевые части: команда setpci включает порты ввода-вывода, а строка options сообщает драйверу, каков основной адрес ввода-вывода. См. Linux Serial HOWTO для объяснения setpci и это сообщение на Arch Linux для объяснения команды install модуля modprobe.d.

Ответ или решение

Анализ проблемы с PCIe картой параллельного порта

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

1. Анализ вывода команд

1.1. Вывод dmesg

При проверке журнала системы с помощью команды dmesg | grep parport вы получили следующие предупреждения:

[  266.761700] parport 0x4000 (WARNING): CTR: wrote 0x0c, read 0xff
[  266.761705] parport 0x4000 (WARNING): DATA: wrote 0xaa, read 0xff
[  266.761705] parport 0x4000: You gave this address, but there is probably no parallel port there!

Это указывает на то, что указанный вами адрес порта (0x4000) не соответствует физически существующему параллельному порту на вашей карте. Вместо этого, система не может найти порты на предоставленном адресе.

1.2. Вывод lspci

Опять же, вывод команды lspci -v показывает, что все I/O порты и память помечены как [disabled], что означает, что они отключены:

I/O ports at 4008 [disabled] [size=8]
I/O ports at 4000 [disabled] [size=8]
Memory at 74001000 (32-bit, non-prefetchable) [disabled] [size=4K]

2. Причины проблемы

  1. Отключенные I/O порты: Если порты отключены, это может быть связано с неправильной настройкой в BIOS, неисправностью оборудования или конфликтами с другими устройствами.

  2. Конфликт драйверов: Ваша система может использовать неправильный драйвер для вашего оборудования, что также приводит к отсутствию связи.

  3. Неверные параметры модуля: Предоставленные вами параметры ввода на команду modprobe могут быть неверными или не подходящими для вашей аппаратуры.

3. Решение проблемы

Шаг 1: Проверьте настройки BIOS
Убедитесь, что параллельный порт включен в BIOS. Иногда BIOS может выбирать отключить некоторые параметры с целью повышения совместимости или производительности.

Шаг 2: Используйте setpci для активации портов
Вы уже получили хорошее решение от другого пользователя. Вам нужно создать файл конфигурации для modprobe, который будет запускать setpci.

  1. Убедитесь, что у вас установлен пакет setpci:

    sudo apt-get install pciutils
  2. Создайте файл конфигурации для модуля:

    sudo nano /etc/modprobe.d/parport_pc.conf
  3. Добавьте в него следующее, заменяя 125b:9100 на ID вашего устройства и 0x4000 на ваш адрес I/O:

    install parport_pc setpci -d 125b:9100 command=101; /sbin/modprobe --ignore-install parport_pc
    options parport_pc io=0x4000 irq=auto

Шаг 3: Загрузите модуль
После создания файла конфигурации, загрузите модуль:

sudo modprobe parport_pc

Шаг 4: Проверьте статус устройства
После этого проверьте, был ли создан файл /dev/parport0 и работает ли параллельный порт:

ls /dev/parport*

И снова выполните команду dmesg, чтобы убедиться, что драйвер обнаружил устройство.

Заключение

Если после выполнения всех этих шагов у вас все еще возникают проблемы, рекомендуем рассмотреть возможность использования других версий ядра или обновлений системы, так как иногда проблемы с драйверами могут быть решены с помощью обновлений программного обеспечения. Не забывайте также проверять совместимость вашего оборудования с вашей операционной системой.

Следуя данным шагам, вы должны сможете устранить проблему и восстановить работу вашей PCIe карты параллельного порта.

Оцените материал
Добавить комментарий

Капча загружается...