Skip to content

Conversation

Copy link

Copilot AI commented Oct 1, 2025

Summary

Resolves #97 by adding support for the sntasmedia interface type used by USB NVMe devices with ASMedia controllers, such as the Samsung Portable SSD T7.

Problem

When scanning devices with DeviceList(), the library was throwing a ValueError for devices using the sntasmedia interface:

>>> from pySMART import DeviceList
>>> d = DeviceList()
ValueError: Unknown interface: sntasmedia specified for /dev/sda

This occurred because smartctl 7.5+ reports sntasmedia as the interface type for USB NVMe devices with ASMedia controllers, but this interface type was not recognized by pySMART.

Solution

Added sntasmedia to the smartctl_type_dict in pySMART/utils.py, mapping it to nvme since these devices are NVMe-based:

smartctl_type_dict = {
    'ata': 'ata',
    'csmi': 'ata',
    'nvme': 'nvme',
    'sas': 'scsi',
    'sat': 'sat',
    'sata': 'ata',
    'scsi': 'scsi',
    'atacam': 'atacam',
    'sntasmedia': 'nvme'  # ← Added
}

This minimal change ensures that devices with the sntasmedia interface are properly recognized and treated as NVMe devices for all smartctl operations.

Testing

  • Added comprehensive test case in tests/dataset/singletests/sntasmedia_nvme_0_issue_97/ using the actual smartctl output from the issue report
  • All 203 tests pass (198 device tests + 5 device list tests)
  • No regressions introduced
  • Verified device creation, attribute parsing, and SMART data retrieval work correctly for Samsung Portable SSD T7

Affected Devices

This fix enables support for:

  • Samsung Portable SSD T7 (and T9)
  • Other USB NVMe SSDs using ASMedia controllers
  • Any device where smartctl reports the sntasmedia interface type
Original prompt

Adelante, procede
The following is a snapshot of a chat conversation between a user and an AI coding assistant. Prioritize later messages in the conversation.
User: Echa un ojo a la issue 97 del pysmart.

Para resolverla, el procedimiento que yo suelo hacer es el siguiente:

  • Añadir la información proporcionada a un nuevo caso de test (esto incluirá autogenerar los .json)

  • Comprobar que el test da error tal y cómo sugiere el usuario

  • Si no da error, subir un commit con el test e informar al usuario de que con la información aportada no podemos replicarlo y pedirle en la medida de lo posible nueva información. Si conseguimos replicarlo -> buscamos el error.

  • Una vez corregido el error, regeneramos los .json de los test. Este último punto lo revisaré a mano, pues es imprescindible que el diff entre ambos sea justificado. Idealmente, el único .json modificado será el del nuevo caso de test, pero a veces esto no es posible.
    User: @agent Enable: "Enable GPT-5-Codex (Preview) for all clients"
    AI: Arrancando con la issue 97; revisaré el reporte y seguiré tu flujo para reproducir y corregir el fallo.

  • Revisar en detalle la información del issue (logs y entorno) para entender el nuevo identificador de interfaz.

  • Añadir un dataset de prueba con los outputs aportados y generar los device.json correspondientes.

  • Ejecutar los tests, diagnosticar el origen del error si aparece y, tras la corrección, regenerar artefactos y validar.

Ya tengo el cuerpo del issue: el fallo surge porque DeviceList no reconoce la interfaz sntasmedia en un Samsung Portable SSD T7 conectado por USB NVMe ASMedia. A continuación desglosaré cómo debemos incorporar estos datos al conjunto de pruebas antes de intentar reproducir el error.
User: Adelante, procede
AI: Sesión del agente de codificación cancelada.
User: Adelante, procede

TITLE: Resolución de la Issue 97 en pysmart

USER INTENT: El usuario busca resolver la issue 97 en el repositorio pysmart, siguiendo un procedimiento específico para replicar y corregir un error reportado.

TASK DESCRIPTION: El objetivo es añadir un nuevo caso de prueba basado en la información proporcionada en la issue 97, verificar si el error se reproduce, y en caso afirmativo, corregirlo y regenerar los archivos .json de prueba.

EXISTING: El usuario ha establecido un procedimiento claro para abordar la issue 97, que incluye la creación de un nuevo caso de prueba y la verificación del error. El asistente ha comenzado a revisar la información del issue y ha identificado que el error se debe a que DeviceList no reconoce la interfaz sntasmedia en un dispositivo específico.

PENDING: El asistente necesita proceder con la creación del nuevo caso de prueba, ejecutar los tests para verificar la existencia del error, y, si se reproduce, corregirlo y regenerar los archivos .json correspondientes.

CODE STATE: No se han proporcionado archivos específicos o snippets de código en la conversación, pero se mencionan los archivos device.json que se generarán y modificarán.

RELEVANT CODE/DOCUMENTATION SNIPPETS:

  • "El fallo surge porque DeviceList no reconoce la interfaz sntasmedia en un Samsung Portable SSD T7 conectado por USB NVMe ASMedia."

OTHER NOTES: El usuario ha reiterado su intención de proceder con el flujo de trabajo establecido, lo que indica que está listo para que el asistente continúe con la resolución de la issue.

Created from VS Code via the [GitHub Pull Request](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github) extension.

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI changed the title [WIP] Resolución de la Issue 97 en pysmart Add support for sntasmedia interface type (fixes #97) Oct 1, 2025
Copilot AI requested a review from ralequi October 1, 2025 12:49
@ralequi ralequi closed this Oct 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ValueError: Unknown interface: sntasmedia specified for /dev/sda

2 participants