SlimeVR-Server icon indicating copy to clipboard operation
SlimeVR-Server copied to clipboard

SlimeVR-Server doesn't recognize USB-serial chips other than CH340 (e.g. CH343)

Open H114514191981 opened this issue 4 months ago • 1 comments

Description

Hello, I encountered an issue while testing my self-built SlimeVR tracker with the SlimeVR-Server. The server seems to only recognize trackers that use the CH340 USB-to-Serial chip. When using a tracker with a different chip, such as the CH343, the SlimeVR-Server fails to detect it.

To further test this, I connected a bare USB-to-Serial module (based on the CH340 chip) without any tracker attached to my computer. The SlimeVR-Server successfully identified this COM port. This suggests that the detection is specifically tied to the CH340 chip.

This limitation significantly impacts users with trackers based on non-CH340 solutions. For example, they cannot use the SlimeVR-Server to configure their tracker's WiFi credentials (a friend of mine faced this issue and had to hardcode the WiFi credentials by recompiling the firmware).

I'm unsure if this is an intentional design choice or a bug. If it's intentional, I would like to suggest some alternative solutions.

Steps to Reproduce

  1. Build or use a SlimeVR tracker with a non-CH340 USB-to-Serial chip (e.g., CH343).
  2. Connect the tracker to the computer via USB.
  3. Open SlimeVR-Server.
  4. Observed Result: The tracker is not detected by the server.
  5. Comparison Test: Connect a device or module with a CH340 chip.
  6. Observed Result: The COM port is immediately recognized by SlimeVR-Server.

Expected Behavior

SlimeVR-Server should be able to communicate with a SlimeVR tracker regardless of the specific USB-to-Serial chip used, as long as the correct serial protocol is implemented.

Actual Behavior

SlimeVR-Server only detects and establishes communication with serial ports associated with the CH340 chip.

Environment

· OS: [e.g., Windows 11] · SlimeVR Server Version: [e.g., v0.16.2] · Tracker Hardware: Self-built tracker with CH343 USB-to-Serial chip.

Proposed Solutions (if this is an intentional design)

If the current behavior is based on filtering by USB PID/VID, I propose the following solutions to improve flexibility:

  1. Add a setting option to make SlimeVR-Server consider all serial port devices as potential trackers.
  2. If no CH340-based tracker is found, provide users with an option to manually select the correct COM port from a list.
  3. Add a whitelist functionality in the settings where users can add the PID/VID of other supported USB-to-Serial chips (like CH343).

Thank you for your time and consideration.


H114514191981 avatar Sep 26 '25 20:09 H114514191981

The code handling the selection is here: https://github.com/SlimeVR/SlimeVR-Server/blob/main/server/core/src/main/java/dev/slimevr/serial/SerialHandler.kt#L22-L50

It is not in the configuration.

unlogisch04 avatar Sep 26 '25 20:09 unlogisch04