Отключить автоматическое зондирование последовательного порта в Linux (Fedora)

Если вы знакомы с C, C++ или Java, то этот вариант bash for-loop тоже покажется вам знакомым. bash выполняет арифметическую оценку с помощью (( ... )), поэтому мы будем использовать его при сравнении значений:

array1=(  1 -2  3 -2  2 -4 )
array2=( -2 -3  4  5  2 -5 )

array3=( )

for (( i=0; i < ${#array1[@]}; ++i )); do
    if (( array1[i] < 0 && array2[i] < 0 )); then
        array3[$i]=0
    elif (( array1[i] > 0 && array2[i] > 0 )); then
        array3[$i]=1
    else
        array3[$i]=2
    fi
done

echo "${array3[@]}"

Это также хорошо работает с оболочкой ksh93, от которой bash получил многие свои возможности.

3
20.03.2016, 09:35
2 ответа

Что-то, что проверяет ваш порт, скорее всего, ModemManager, который является частью пакета NetworkManager.

Если в вашей системе не установлен модем (классический или wwan), проще всего удалить ModemManager из вашей системы. Если у вас есть такой модем, то вы можете добавить правило udev, чтобы сообщить ModemManager, что это устройство не является модемом и что ему не следует даже проверять его:

ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", ENV{ID_MM_DEVICE_IGNORE}="1"

где 1234 - производитель идентификатор вашего устройства и 5678 идентификатор продукта (вы можете найти их с помощью lsusb )

3
27.01.2020, 21:22

Это решение поможет мне для ModemManager 1.10.0 с--filter-policy=strict(Ubuntu 18.04)
ModemManager -V

Вы можете узнать больше:Общие теги udev

Создайте файл /etc/udev/rules.d/49-stm32.rulesи добавьте его:

# 0483:5740 - STM32 in USB Serial Mode (CN5)
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_TTY_BLACKLIST}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{MTP_NO_PROBE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_PORT_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_TTY_MANUAL_SCAN_ONLY}="1"

После сохранения файла и запуска:
sudo udevadm control --reload-rules

и (может и не надо):
sudo systemctl restart ModemManager.service

После повторного подключения устройства USB (физически вытащите и вставьте его в порт USB )и наслаждайтесь.

П.С. Это решение для STM32 CDC Virtual Com порта -при необходимости можно изменить теги PID/VID и udev.

0
27.01.2020, 21:22

Теги

Похожие вопросы