ValveSoftware / ValveSoftware/SteamOS

Steam Machine internal microSD slot keeps exposing card as /dev/sda but never creates /dev/sda1

Open
#2,668 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
2.6k
Forks
83
Avg merge
4m
Merged PRs (30d)
3

Description

Your system information
  • Steam client version: (not checked, can add if needed)
  • SteamOS version: 3.8.16 (BUILD_ID=20260716.1, stable branch)
  • Kernel: 6.16.12-valve24.5-1-neptune-616-gb2f7cfe85e45
  • Opted into Steam client beta?: No
  • Opted into SteamOS beta?: No
  • Have you checked for updates in Settings > System?: Yes

Note: This is the Steam Machine's built-in microSD slot. The kernel exposes it through a USB storage path (Realtek 0bda:0316) instead of an mmcblk device.

Expected behavior:
When I create a partition table and partition on the internal microSD card, SteamOS should create a partition device like /dev/sda1 that I can format and mount normally.

What did happen:
SteamOS only ever shows /dev/sda with no partition node (sda1). The card is detected, raw reads/writes succeed, and partition tools sometimes report a valid partition table, but the kernel never creates /dev/sda1.

Key observations:

  • lsblk shows only sda, never sda1
  • partprobe -s /dev/sda reports msdos partitions exist
  • partx -a /dev/sda fails with failed to read partition table
  • blkid /dev/sda returns nothing after formatting attempts
  • Raw writes to /dev/sda succeed (tested with dd)
  • The card was formatted in a Samsung phone, then reinserted into the Steam Machine. The Machine still detected only /dev/sda and no partition node appeared.
  • This removes ambiguity about whether the card itself is defective.

udev info shows the internal slot uses USB storage, not mmcblk:

(deck@steamdeck ~)$ sudo udevadm info --query=all --name=/dev/sda | grep ID_
E: ID_BUS=usb
E: ID_MODEL=SD_MMC_CRW
E: ID_MODEL_ID=0316
E: ID_VENDOR=Generic-
E: ID_VENDOR_ID=0bda
E: ID_USB_DRIVER=usb-storage

lsblk confirms USB transport:

(deck@steamdeck ~)$ lsblk -o NAME,MODEL,VENDOR,SERIAL,TRAN,SIZE
NAME        MODEL                     VENDOR   SERIAL            TRAN     SIZE
sda         SD/MMC CRW                Generic- 16140211162022000 usb    366.8G
zram0                                                                     7.6G
nvme0n1     KINGSTON OM3SGP4512K2-A00          50026B7283DE94F6  nvme   476.9G
├─nvme0n1p1                                                      nvme     256M
├─nvme0n1p2                                                      nvme      64M
├─nvme0n1p3                                                      nvme      64M
├─nvme0n1p4                                                      nvme       5G
├─nvme0n1p5                                                      nvme       5G
├─nvme0n1p6                                                      nvme     256M
├─nvme0n1p7                                                      nvme     256M
└─nvme0n1p8                                                      nvme   466.1G

sgdisk shows no partitions despite GPT header existing:

(deck@steamdeck ~)$ sudo sgdisk -p /dev/sda
Creating new GPT entries in memory.
Disk /dev/sda: 769277952 sectors, 366.8 GiB
Model: SD/MMC CRW      
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 8E0E2707-7CE6-4E8F-B43D-4B2805DD4691
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 769277918
Partitions will be aligned on 2048-sector boundaries
Total free space is 769277885 sectors (366.8 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Raw writes succeed, proving the disk is writable:

printf "HELLOTEST" | sudo dd of=/dev/sda bs=1 seek=4096 conv=fsync
sudo dd if=/dev/sda bs=1 skip=4096 count=9 status=none
# Output: HELLOTEST

System info:

(deck@steamdeck ~)$ cat /etc/os-release
NAME="SteamOS"
PRETTY_NAME="SteamOS"
VERSION_CODENAME=holo
ID=steamos
ID_LIKE=arch
ANSI_COLOR="1;35"
HOME_URL="https://www.steampowered.com/"
DOCUMENTATION_URL="https://support.steampowered.com/"
SUPPORT_URL="https://support.steampowered.com/"
BUG_REPORT_URL="https://support.steampowered.com/"
LOGO=steamos
VARIANT_ID=steamdeck
VERSION_ID=3.8.16
BUILD_ID=20260716.1
STEAMOS_DEFAULT_UPDATE_BRANCH=stable

(deck@steamdeck ~)$ udisksctl status
MODEL                     REVISION  SERIAL               DEVICE
--------------------------------------------------------------------------
KINGSTON OM3SGP4512K2-A00 SDW02105  50026B7283DE94F6     nvme0n1 
Generic- SD/MMC CRW       1.00      16140211162022000    sda     
Steps for reproducing this issue:
  1. Insert a microSD card into the Steam Machine's built-in slot
  2. Observe that it appears as /dev/sda with TRAN=usb (not as /dev/mmcblk*)
  3. Use fdisk or sgdisk to create a new partition table and partition
  4. Run lsblk and observe that no sda1 appears
  5. Try partx -a /dev/sda and observe it fails with failed to read partition table
  6. Format the card in a phone (Samsung), reinsert, and observe the same issue persists
Related issues

Adding states of cases at time I messaged, two are still open, including #1208 which still returned at #1502

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the internal-slot behavior with the reported SteamOS 3.8.16 kernel, then inspect the udevadm and lsblk output for the USB storage path (Realtek 0bda:0316). Compare partition discovery using fdisk or sgdisk with partprobe and partx. Done means a valid partition table on /dev/sda results in a usable /dev/sda1 node.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.