Во многих моделях ноутбуков используются недорогие карт-ридеры на чипах от Realtek. Очень широко распространены чипы rts5129 и rts5139, которые используются например в недорогих моделях Dell Inspiron/Vostro и Lenovo Yoga. В Linux для старых ядер (3.13 и ранее) для этих чипов предлагался модуль "rts5139", для более новых ядер предлагается модуль "rtsx", который должен поддерживать все карт-ридеры от Realtek, включая семейство rts51XX.
Однако на самом деле всё не так радужно и у модуля "rtsx" есть некоторые проблемы из-за которых карт-ридеры на чипах rts5129 и rts5139 начинают работать нестабильно или вовсе переставать работать до перезагрузки системы. Проблема как минимум касается Ubuntu 16.04, а так же Ubuntu 14.04 с обвновлёнными ядрами. Далее будет показано как можно решить эту проблему в дистрибутивах Ubuntu.
Всё описанное далее проверено на ноутбуках Dell Vostro 3558 и Dell Inspiron 3542 с дистрибутивами Ubuntu 14.04 (с ядром 4.4), и Ubuntu 16.04 (так же с ядром 4.4). Скорее всего инструкция подойдёт и для других ноутбуков с картридерами на чипах rts5129 и rts5139, а так же для других дистрибутивов с ядрами 3.16 и новее и поддержкой dkms.
Для начала уточним модель карт-ридера чтобы быть уверенными что это действительно наш случай. Для этого нужно выполнить команду:
lsusb |grep "Card Reader"
Вывод должен выглядеть примерно так:
Bus 002 Device 004: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
В данном примере у нас как раз карт-ридер на чипе RTS5129 и можно приступать к решению проблемы. Основная идея заключается в отключении модули "rtsx" и сборке порта модуля "rts5139" из старых ядер. На github сразу несколько энтузиастов поддерживают свои порты. Автор этих строк использовал порт от пользователя github с ником "asymingt".
Клонируем репозиторий:
git clone https://github.com/asymingt/rts5139.git /usr/src/rts5139-1
Далее создаём файл "/usr/src/rts5139-1/dkms.conf" следующего содержания:
PACKAGE_NAME="rts5139" PACKAGE_VERSION="1" BUILT_MODULE_NAME[0]="rts5139" #MAKE="'make'" #CLEAN="'make' clean" DEST_MODULE_LOCATION[0]="/updates/dkms" AUTOINSTALL="YES"
Собираем модуль с помощью dkms:
for action in add build install; do dkms ${action} -m rts5139 -v 1; done
На следующем шаге нам нужно запретить загрузку модуля "rtsx" и его компонентов. Для этого нужно создать файл "/etc/modprobe.d/blacklist-rtsx.conf" содержащий всего три строки:
blacklist rtsx_usb_sdmmc blacklist rtsx_usb_ms blacklist rtsx_usb
Теперь нужно перезагрузить компьютер и после этого проблемы с карт-ридером должны решиться.
На этом пока всё. Приятной работы!
Anonymous 2019-08-20 16:24:04 (#)