С недавних пор в качестве основной ОС стал снова использовать линукс. Проблемы с работой драйверов некоторых старых устройств в Windows 10 уже порядком надоели, равно как и проблемы после почти каждого обновления. Возможно, проблемы с драйверами это не вина производителей ОС, но вот навязчивые обновления, которые как не отключай, а они включаются через некоторое время самостоятельно уже реально достали.
Вот поэтому я провел небольшое исследование на предмет работоспособности в линукс софта и железа которое я использую. Как выяснилось, работает практически все. Либо есть нативные версии под линукс, либо без проблем работает через Wine. Единственное, что не работает - это мой SunSDR-1. Но с ним вопрос уже решил, т.к. я им все еще периодически пользуюсь (нравится звучание SDR со звуковой картой, оно какое-то “живое” по сравнению со звуком DDC SDR, но это конечно мое субъективное ощущение) я для него соберу отдельный небольшой компьютер, который будет через KVM-переключатель подсоединяться к второму монитору моего основного ПК.
Пока еще не успел полностью установить и настроить весь необходимый софт в линуксе, т.к. времени свободного не очень много, но программу ExpertSDR2 уже установил. Однако на этапе настройки панели Ecoder столкнулся с проблемой, что программа её не видит, хотя, тот же dmesg сообщает, что такое устройство в системе есть и подключено к одному из usb портов. При запуске программы с правами root, панель работает. Значит дело в правах.
Создал в директории /etc/udev/rules.d/ файл 10-ecoder.rules со следующим содержимым:
ATTRS{idProduct}==“0003”, ATTRS{idVendor}==“1fc9”, MODE=“0666”, GROUP=“plugdev”
Затем добавил своего пользователя в группу plugdev:
usermod -a -G plugdev denis
Переподключил панель к usb порту, но ничего не изменилось.Стал внимательнее изучать вывод dmesg а так же syslog и наткнулся на то, что при подключении панели к ней начинает обращаться процесс mtp-probe, пытаясь подключить панель как MTP-устройство, коим она не является.
После непродолжительных поисков в гугле, сделал следующее:
cp /lib/udev/rules.d/69-libmtp.rules /etc/udev/rules.d/69-libmtp.rules
Затем открыл в редакторе файл /etc/udev/rules.d/69-libmtp.rules и после строки “Some sensitive devices we surely don’t wanna probe” добавил следующие строки:
To get E-coder USB panel working
ATTR{idVendor}==“1fc9”, ATTR{idProduct}==“0003”, GOTO=“libmtp_rules_end”
После этого панель заработала в ExpertSDR2 запущенной от обычного пользователя без root прав.
Параметры idVendor и idProduct взяты из вывода команды lsusb, которая отображает панель Ecoder как “NXP Semiconductors LPC1343”, видимо по модели примененного микроконтроллера.
Осталась правда одна проблема, которую пока не смог победить. В Windows, после закрытия программы ExpertSDR2, подсветка панели гаснет автоматически, а в линуксе такого не происходит. Попытки обесточить usb порт разными способами, так же не дают эффекта. В итоге после закрытия программы, подсветка панели продолжает работать до перезагрузки или выключения компьютера.
Возможно эту проблему можно решить только с помощью разработчиков, но пока к ним не обращался. Если у меня так и не получится справиться с этим самостоятельно, напишу им, чтобы поправили.