You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
2.8" round USB screen (rebranded by SAMA) not detected: different VID/PID (1a86:ca21) than the one hardcoded for this model (1cbe:0028)
Description
I have a SAMA AIO liquid cooler with an integrated 2.8" round LCD screen. The device identifies itself to the OS as "Turing" / "UsbMonitor", so I assumed it matched the recently added "2.8" round (V1.X new HW rev.)" support from PR #995.
However, after selecting this screen size in configure.py and running main.py, I always get:
Import error: USB device not found
Investigation
I checked library/lcd/lcd_comm_turing_usb.py and found:
Hardware: SAMA AIO liquid cooler with integrated 2.8" round LCD (sold under SAMA branding, screen itself reports manufacturer "Turing", serial "CT21INCH")
Additional note
I also found and fixed a small unrelated bug while testing: in configure.py, SIZE_2_8_INCH_NEWREV is defined on line 80, but the code further down referenced it as SIZE_2_8_ROUND_USB (an apparent leftover from a rename), causing a NameError on startup. I fixed this locally with sed -i 's/SIZE_2_8_ROUND_USB/SIZE_2_8_INCH_NEWREV/g' configure.py to get past that step. Happy to confirm if this needs a separate issue.
Windows confirmation
The screen works perfectly on Windows using TURZX v3.1.0 (the official Windows software for this type of screen). This confirms that:
The hardware is fully functional and genuine Turing/TURZX compatible hardware
A working communication protocol with chip 1a86:ca21 exists — it is implemented in TURZX v3.1.0 for Windows
This is purely a missing implementation on the Linux side, not a hardware limitation
This also means that if someone wanted to add support, capturing USB traffic with Wireshark + USBPcap on Windows while TURZX v3.1.0 communicates with the screen would be a viable path to reverse-engineer the protocol for the QinHeng chip.
Further testing — manually adding VID/PID
To go further, I manually patched lcd_comm_turing_usb.py to add my device:
After this change, running sudo python3 main.py produced a different result — the device was now found, but failed with:
Warning: set_configuration() failed: [Errno 16] Resource busy
AssertionError: Could not find USB endpoints
The kernel also confirms the device is detected correctly:
[ 7.805627] usb 1-10.2: New USB device found, idVendor=1a86, idProduct=ca21, bcdDevice=1.00
[ 7.805639] usb 1-10.2: Product: UsbMonitor
This confirms that:
The device IS detected by Linux and by the program when the correct VID/PID is added
The failure is at the USB endpoint level — the QinHeng chip (1a86:ca21) has a different internal USB structure than the 1cbe:0028 chip currently supported
A specific protocol implementation for the QinHeng chip is needed — not just a VID/PID addition
Request
Could support for VID 0x1a86 / PID 0xca21 be added with its own protocol implementation? The device is detected by Linux, works perfectly on Windows with TURZX v3.1.0, and has a 480x480 resolution. I'm happy to capture USB traffic with Wireshark + USBPcap on Windows while TURZX v3.1.0 is running, run any test scripts, or provide any other debug info needed to implement support for this QinHeng variant.
Title
2.8" round USB screen (rebranded by SAMA) not detected: different VID/PID (1a86:ca21) than the one hardcoded for this model (1cbe:0028)
Description
I have a SAMA AIO liquid cooler with an integrated 2.8" round LCD screen. The device identifies itself to the OS as "Turing" / "UsbMonitor", so I assumed it matched the recently added "2.8" round (V1.X new HW rev.)" support from PR #995.
However, after selecting this screen size in
configure.pyand runningmain.py, I always get:Investigation
I checked
library/lcd/lcd_comm_turing_usb.pyand found:But my actual device, confirmed via
lsusb -v, reports:So it seems there are (at least) two different hardware variants of the "2.8" round" screen circulating, using different USB controller chips:
1cbe:0028— currently supported by this project1a86:ca21(QinHeng) — my device, reported by SAMA AIO coolers, NOT currently supportedEnvironment
Additional note
I also found and fixed a small unrelated bug while testing: in
configure.py,SIZE_2_8_INCH_NEWREVis defined on line 80, but the code further down referenced it asSIZE_2_8_ROUND_USB(an apparent leftover from a rename), causing aNameErroron startup. I fixed this locally withsed -i 's/SIZE_2_8_ROUND_USB/SIZE_2_8_INCH_NEWREV/g' configure.pyto get past that step. Happy to confirm if this needs a separate issue.Windows confirmation
The screen works perfectly on Windows using TURZX v3.1.0 (the official Windows software for this type of screen). This confirms that:
1a86:ca21exists — it is implemented in TURZX v3.1.0 for WindowsThis also means that if someone wanted to add support, capturing USB traffic with Wireshark + USBPcap on Windows while TURZX v3.1.0 communicates with the screen would be a viable path to reverse-engineer the protocol for the QinHeng chip.
Further testing — manually adding VID/PID
To go further, I manually patched
lcd_comm_turing_usb.pyto add my device:After this change, running
sudo python3 main.pyproduced a different result — the device was now found, but failed with:The kernel also confirms the device is detected correctly:
This confirms that:
1a86:ca21) has a different internal USB structure than the1cbe:0028chip currently supportedRequest
Could support for VID
0x1a86/ PID0xca21be added with its own protocol implementation? The device is detected by Linux, works perfectly on Windows with TURZX v3.1.0, and has a 480x480 resolution. I'm happy to capture USB traffic with Wireshark + USBPcap on Windows while TURZX v3.1.0 is running, run any test scripts, or provide any other debug info needed to implement support for this QinHeng variant.