Realtek RTS5129 internal microSD reader (0bda:0129) bound to rtsx_usb but never creates mmc_host (/dev/mmc*)

:pushpin:Question Description

Have you searched the community for related issues?

  • [x ] No similar issues found.

Please describe the problem you’ve encountered in detail:

  • Description:
    The internal Realtek RTS5129 microSD card reader is detected on USB (0bda:0129) and the rtsx_usb module is loaded and lists the interface, but inserting a microSD card produces no kernel messages and the kernel never creates an mmc_host (no /sys/class/mmc_host, no /dev/mmc*). Attempts to unbind/rebind the interface produce I/O errors and produce no driver init logs.

This prevents the built-in microSD slot from working under FydeOS with this kernel build. A USB microSD adapter works as a short‑term workaround.

:computer:System & Device Information

  • Hardware & System Configuration: 2018 Dell Inspiron 11 3185 11.6"

    • Processor: 7th Gen AMD A6-9920e
    • Graphics Card(Please specify if there’s a discrete graphics card): Integrated
    • RAM: 4GB 2400MHz DDR4
    • FydeOS Version: FydeOS for PC (AMD Graphics), v22.1, Non-commercial Edition
      Platform 16503.20.22.10
      Chromium 144.0.7559.32
  • Relevant System Logs:

    • Open the Chromium browser and enter /var/log/messages to retrieve logs.
    • Log Details:
      Environment:
  • FydeOS kernel: Linux localhost 6.6.99-09011-gfdc62122de5f-dirty #1 SMP PREEMPT_DYNAMIC Mon, 15 Dec 2025 23:20:34 -0800 x86_64 (uname -a)
  • USB device id: 0bda:0129 (Realtek RTS5129 Card Reader Controller)
  • rtsx_usb driver present and registered

How to reproduce

  1. Boot FydeOS with device containing internal Realtek RTS5129 (0bda:0129).
  2. In crosh (Developer Mode), run:
  • sudo lsusb
  • sudo lsmod | grep rtsx_usb
  • sudo dmesg -w
  1. Insert a microSD card into the internal slot.
  2. Observe: no new dmesg lines, no /sys/class/mmc_host entry, no /dev/mmc* device.

Commands/outputs already collected (paste included exactly as run)
uname -a
Linux localhost 6.6.99-09011-gfdc62122de5f-dirty #1 SMP PREEMPT_DYNAMIC Mon, 15 Dec 2025 23:20:34 -0800 x86_64 AMD A6-9220e RADEON R4, 5 COMPUTE CORES 2C+3G AuthenticAMD GNU/Linux

lsusb
Bus 002 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 002 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 002 Device 004: ID 2386:0403 Raydium Corporation Raydium Touch System
… (other devices omitted for brevity)

lsmod | grep rtsx
rtsx_usb 20480 0

modinfo rtsx_usb
filename: /lib/modules/6.6.99-09011-gfdc62122de5f-dirty/kernel/drivers/misc/cardreader/rtsx_usb.ko.gz
license: GPL v2
author: Roger Tseng [email protected]
description: Realtek USB Card Reader Driver
vermagic: 6.6.99-09011-gfdc62122de5f-dirty SMP preempt mod_unload
name: rtsx_usb
intree: Y
retpoline: Y
depends:
alias: usb:v0BDAp0129ddcdscdpiciscipin
alias: usb:v0BDAp0139ddcdscdpiciscipin
alias: usb:v0BDAp0140ddcdscdpiciscipin
parm: polling_pipe:polling pipe (0: ctl, 1: bulk) (int)

lsusb -v -d 0bda:0129 (excerpt)
Bus 002 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
…
bNumConfigurations 1
Configuration Descriptor:
bNumInterfaces 1
Interface Descriptor:
bInterfaceNumber 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 6
bInterfaceProtocol 80
Endpoints: bulk-out EP1, bulk-in EP2, interrupt EP3

udevadm info -q path -n /dev/bus/usb/002/005
/devices/pci0000:00/0000:00:12.0/usb2/2-1/2-1.3

udevadm info -a -n /dev/bus/usb/002/005 (excerpt)
ATTR{idProduct}==“0129”
ATTR{idVendor}==“0bda”
DRIVER==“usb”

/sys/bus/usb/drivers/rtsx_usb
total 0
lrwxrwxrwx. 1 root root 0 Jul 8 23:20 2-1.3:1.0 → …/…/…/…/devices/pci0000:00/0000:00:12.0/usb2/2-1/2-1.3/2-1.3:1.0
–w-------. 1 root root 4096 Jul 8 23:20 bind
… new_id, remove_id, uevent, unbind entries present

Attempts to bind/unbind manually
sudo sh -c ‘echo 0bda 0129 > /sys/bus/usb/drivers/rtsx_usb/new_id’ (succeeds)
sudo sh -c ‘echo -n “2-1.3” > /sys/bus/usb/drivers/usb/unbind’ (succeeds)
sudo sh -c ‘echo -n “2-1.3” > /sys/bus/usb/drivers/rtsx_usb/bind’ → sh: 1: echo: echo: I/O error

Similar I/O error occurs for interface-level unbind/bind attempts:
echo -n “2-1.3:1.0” > /sys/bus/usb/drivers/usb/unbind → I/O error
echo -n “2-1.3:1.0” > /sys/bus/usb/drivers/rtsx_usb/bind → I/O error

dmesg observations

  • rtsx_usb is registered at boot: “usbcore: registered new interface driver rtsx_usb”
  • No rtsx_usb init messages related to the device on card insertion
  • Inserting microSD produces no kernel log lines
  • No /sys/class/mmc_host or /dev/mmc* created after insert

MMC support

  • mmc_core, mmc_block, sdhci appear to be built into the kernel (not missing):
    modinfo mmc_core → filename: (builtin) file: drivers/mmc/core/mmc_core
    modinfo mmc_block → filename: (builtin) drivers/mmc/core/mmc_block
    modinfo sdhci → filename: (builtin) drivers/mmc/host/sdhci

Short-term workaround

  • External USB microSD adapter works and is being used.

Observed behavior

  • rtsx_usb driver is present and the USB interface is visible under /sys/bus/usb/drivers/rtsx_usb as 2-1.3:1.0, but it does not produce any messages on card insertion and does not expose an mmc_host.

Expected behavior

  • On card insertion the rtsx_usb driver should log initialization steps and create an mmc_host (exposed under /sys/class/mmc_host and /dev/mmc*), allowing the system to mount the card.

Likely cause (candidate)

  • Silent failure in rtsx_usb module or mismatch between rtsx_usb and the kernel’s MMC/SDHCI configuration that prevents the driver from creating mmc_host. No error messages in dmesg suggests the driver may be failing silently or not attempting initialization for this device/interface in this build.

Requested action for maintainers

  • Please investigate rtsx_usb + RTS5129 (0bda:0129) behavior on kernel 6.6.99-09011-gfdc62122de5f-dirty. The driver appears bound but never initializes an mmc_host on card insertion; manual rebind attempts fail with I/O error.
  • If you need more logs, please advise how to enable rtsx_usb debug output or any dynamic debug flags to gather driver initialization details. Guidance on collecting a full boot+bind+insert dmesg (or a kernel trace) would be appreciated.

Commands to reproduce / collect more data (for maintainers)

  • sudo dmesg -w
  • Insert card; capture new dmesg lines
  • sudo sh -c ‘echo 0bda 0129 > /sys/bus/usb/drivers/rtsx_usb/new_id’
  • sudo sh -c ‘echo -n “2-1.3:1.0” > /sys/bus/usb/drivers/usb/unbind’
  • sudo sh -c ‘echo -n “2-1.3:1.0” > /sys/bus/usb/drivers/rtsx_usb/bind’
  • sudo dmesg | tail -n 100
  • ls /sys/class/mmc_host
  • ls /dev/mmc*

Attachments / logs (already available in this report)

  • uname -a (above)
  • lsusb -v -d 0bda:0129 (excerpt above)
  • modinfo rtsx_usb (above)
  • dmesg snippets (above)
  • sysfs /sys/bus/usb/drivers/rtsx_usb listing (above)
  • udevadm info output (above)

Severity suggestion

  • medium/high: device feature unusable (built-in card reader nonfunctional), but short-term external adapter workaround available.

Note: If you’ve lost your FydeOS subscription, please refer to this FAQ for assistance.