Форум программистов, компьютерный форум, киберфорум
Железо в Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
1

Отключить ftdi_sio модуль

30.11.2022, 04:04. Показов 971. Ответов 9

Author24 — интернет-сервис помощи студентам
Привет всем!

Имеются программы работающие с устройством, драйвер к которому требует отключения имеющегося в убунте ftdi_sio.
В ридми драйвера и в некоторых местах интренета описывают что нужно выполнить.
Bash
1
2
        sudo rmmod ftdi_sio
        sudo rmmod usbserial
При чём эти команды приходится выполнять каждый раз после подключения устройства к USB.
Правда, практика показала что достаточно первой команды.
Есть и другой способ.
Вот отрывок из ридми драйвера.
On most distributions, the linux kernel will have either a built-in or optional
module called "ftdi_sio". This will detect an FTDI device and automatically
invoke the "usbserial" module and create devices such as "/dev/ttyUSB0".

When the ftdi_sio module is controlling an FTDI device it is not available to
libftd2xx. If the library attempts to access the device it will receive a
message "FT_Open failed".

There are several methods of preventing ftdi_sio from controlling FTDI devices.

1) Remove the ftdi_sio module from the running kernel:

sudo lsmod | grep ftdi_sio

If "ftdi_sio" is listed unload it (and its helper module, usbserial):

sudo rmmod ftdi_sio
sudo rmmod usbserial

To reverse the operation the kernel modules can be reloaded using modprobe
instead of rmmod.

2) Build a new kernel without the ftdi_sio module.

Refer to your distributions instructions for building a custom kernel.

3) Use a udev unbind sysfs interface to disable devices as they are connected.

First identify the device identifier to remove.

ls /sys/bus/usb/drivers/ftdi_sio

This will show a list of ports on USB devices that are linked to the
ftdi_sio driver.

These are in the form 1-2:1.0 (bus number 1 - port number
2 : device 1 . interface 0) for Port A, and 1-2:1.1 would be Port B on the
same device.

The /dev/ttyUSBx node can be mapped to the device identifier using:

lsusb -t

The devices will be listed in a tree format which can be mapped to the
device identifiers.

Identify the device which you wish to use and then send the identifier of the
device to the "unbind" interface in the driver. (The tee function just echos
stdin to stdout with privilege escalation through sudo).

echo -n 1-2:1.1 | sudo tee /sys/bus/usb/drivers/ftdi_sio/unbind

To reverse the process the same device number can be sent to the "bind"
interface to re-enable the USB serial device.

This can be scripted through udev rules to happen when a device connection
change is detected.

Но там тоже нужно каждый раз выполнять действия из под рута после подключения устройства.

Может кто знает как навсегда отключить или удалить ftdi_sio. Ну кроме пересборки ядра.

p.s. Ссылка на страницу драйвера : https://ftdichip.com/drivers/d2xx-drivers/
Использую этот https://ftdichip.com/wp-conten... 1.4.27.tgz
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2022, 04:04
Ответы с готовыми решениями:

отключить модуль в отдельных материалах
Добрый день! У меня стоит модуль sp tab (http://teplodoma-realty.ru) и замечательно работает на...

Как отключить указатель мыши в консольном приложении (Pascal, модуль CRT)
Здравствуйте. Есть ли возможность отключить указатель мыши в консольном приложении в PascalABC.NET,...

Для чего нужен модуль запуска процессов dcom-сервера, сильно ли грузит, как отключить?
День добрый! Для чего нужен модуль запуска процессов dcom-сервера? Сильно ли он загружает комп?...

Найти модуль скорости; модуль тангенциального ускорения; модуль нормального ускорения; модуль полного ускорения
1. Материальная точка движется по плоскости. Движение точки в векторном виде описывается уравнением...

Отключить музыку в фоновом режиме и отключить titlebar
Доброго времени суток уважаемые пользователи кибер форума. Подскажите пожалуйста.... Вообщем...

9
Эксперт по компьютерным сетямЭксперт NIX
13015 / 7407 / 800
Регистрация: 09.09.2009
Сообщений: 28,980
30.11.2022, 08:11 2
Цитата Сообщение от Curry Посмотреть сообщение
нужно каждый раз выполнять действия из под рута после подключения устройства
вообще-то, "там" предложено несколько иное:
Цитата Сообщение от Curry Посмотреть сообщение
This can be scripted through udev rules to happen when a device connection
change is detected.
у udev есть набор правил, по которым он сам ("автоматом") выполняет действия при подключении/отключении указанных устройств. и "там" намекают на создание нужного вам правила
0
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
30.11.2022, 08:14  [ТС] 3
Цитата Сообщение от Dmitry Посмотреть сообщение
у udev есть набор правил, по которым он сам ("автоматом") выполняет действия при подключении/отключении указанных устройств. и "там" намекают на создание нужного вам правила
Я не знаю как создать эти правила. Вот и спрашиваю.
0
Эксперт по компьютерным сетямЭксперт NIX
13015 / 7407 / 800
Регистрация: 09.09.2009
Сообщений: 28,980
30.11.2022, 08:22 4
для примера можно посмотреть содержимое файлов с правилами, уже созданными в папке /etc/udev/rules.d
1
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
30.11.2022, 08:32  [ТС] 5
Цитата Сообщение от Dmitry Посмотреть сообщение
для примера можно посмотреть содержимое файлов с правилами, уже созданными в папке /etc/udev/rules.d
Посмотрел. Понял что тут без описания до посинения реинжинирингом можно заниматься. Тем более что не только неизвестно как создать нужный файл, но и чего, собственно, нужно сделать этим файлом.

Ранее, в одном месте нашёл рекомендацию сделать файл такого содержания
Кликните здесь для просмотра всего текста
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0666"
и закинуть в эту папку. Закинул. Эффекта нет, хотя у устройства как раз vid 0403 & pid 6001.
0
341 / 196 / 52
Регистрация: 18.10.2017
Сообщений: 1,934
30.11.2022, 08:44 6
Curry, после установки нового udev-правила надо их перечитать как root командой
Bash
1
udevadm control -R
или перезагрузиться. И не так уж сложны udev-правила, есть и примеры и man.
1
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
30.11.2022, 08:56  [ТС] 7
Цитата Сообщение от peter_irich Посмотреть сообщение
udevadm control -R
Выполнил
Bash
1
sudo udevadm control -R
эффекта нет.
Цитата Сообщение от peter_irich Посмотреть сообщение
И не так уж сложны udev-правила, есть и примеры и man.
Если для вас не сложны, то подскажите, пожалуйста, какой файл мне сделать. Что мне нужно я, надеюсь, объяснил.
0
896 / 268 / 54
Регистрация: 30.08.2017
Сообщений: 1,776
30.11.2022, 12:03 8
Лучший ответ Сообщение было отмечено Curry как решение

Решение

А зачем udev в данной ситуации?
Цитата Сообщение от Curry Посмотреть сообщение
Может кто знает как навсегда отключить или удалить ftdi_sio. Ну кроме пересборки ядра.
Если я всё правильно понял, то хватит прописать в файле /etc/modprobe.d/blacklist.conf (если его нет - создать):
Bash
1
blacklist ftdi_sio
Если драйвер загружался из файла, а не из inittamfs, должно хватить.
0
Модератор
5047 / 3276 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
30.11.2022, 12:59  [ТС] 9
Проблема решилась после добавления указанной _sg2 -ом строки в тот файл, после чего
Bash
1
2
sudo rmmod ftdi_sio
sudo udevadm control -R
(без этих команд не фиксилось).

Теперь втыкаю-вытыкаю USB кабель, приложение коннектится без дополнительных команд.
0
896 / 268 / 54
Регистрация: 30.08.2017
Сообщений: 1,776
30.11.2022, 13:31 10
Можно попробовать и это неудобство обойти - есть подозрение, что всё-таки надо пересобрать initramfs.
Для дебьянов (надеюсь не путаю):
Bash
1
2
3
4
5
Пересборка для самого свежего ядра:
# sudo update-initramfs -u
 
      Собрать для определённого ядра (из тех, что в /boot валяются):
#  sudo  update-initramfs -c -k 2.6.18-1-686
Для RHEL и сочувствующих (для определённого ядра):
Bash
1
sudo dracut --kver 5.14.14-300.fc35.x86_64
Вещь фундаментальная, делать осторожно, на свой страх и риск
1
30.11.2022, 13:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2022, 13:31
Помогаю со студенческими работами здесь

Как отключить брандмауэр или отключить фаервол
Я отключаю защитника Windows server 2012 . Отключаю фаервол. Расшариваю папки. В свойствах сети...

Безопасно ли слоту отключить отключить себя же?
connect(netRequester, &NetRequester::downloadCompleted, { // . . ....

модуль S его перемещения, модуль средней скорости, а также среднепутевую скорость
Катер движется по озеру с постоянной по модулю скоростью 18 км/ч. Сначала в течении 1 минуты 40...

Создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу
Как же все таки создать модуль DLL-модуль с классом, позволяющим запускать внешнюю программу. На...

Модуль минификации css и модуль сжатия картинок для gulp
Посоветуйте правильные модули для сжатия css и картинок. cssnano не может работать с символом @,...

Поставил 3-й модуль памяти, комп видит только один модуль
Проблема такая, в материнке было 2 модуля Самсунг DDR3 по 2гб каждый(2 синих слота), решил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru