mathoudebine / turing-smart-screen-python

Unofficial Python system monitor and library for small IPS USB-C displays like Turing Smart Screen or XuanFang
GNU General Public License v3.0
966 stars 166 forks source link

AX206 based display support #475

Open nvx opened 5 months ago

nvx commented 5 months ago

I've recently picked up a screen which works with AIDA64 using AX206 LCD support via libusb, but it doesn't look like it's supported with this python code yet.

It's available on AliExpress https://www.aliexpress.com/item/1005005600240555.html and while it looks similar to the screen mentioned in #426 I note that one mentions it works without AIDA64 so I imagine it's different (I couldn't see a link to download the software for that one to test if it worked on my AX206 based screen)

mathoudebine commented 5 months ago

Hello, if your screen really is an AX206 then unfortunately it won't work with this project because we didn't implement the support yet. But based on what I see from the reviews, it may also be a Turing 3.5 inch. It is not clear if the seller has several models, or if he doesn't really know what he is selling. If you want, you can try the System Monitor program from this project and select "Turing 3.5" as screen model, and let me know if it works for you!

nvx commented 5 months ago

If you want, you can try the System Monitor program from this project and select "Turing 3.5" as screen model, and let me know if it works for you!

I did try all the 3.5" options and no dice. I suspect it is really an AX206 as selecting that in AIDA64 worked

ghost commented 4 months ago

This kind of screen requires raw USB packets. This is harder to deal with on Windows, based off of what libusb says. It won't be as trivial as a serial based display due to the need to register stuff with the system for communication purposes. See here: https://github.com/libusb/libusb/wiki/Windows#user-content-How_to_use_libusb_on_Windows

mathoudebine commented 4 months ago

I was thinking we could maybe add support for Linux first using the lcd4linux library, because people on Windows can at least use Aida64 which is far better than the Windows apps made for the serial smart screens

ghost commented 4 months ago

lcd4linux and AIDA64 are ultimately using libusb for communication from what I have seen. But lcd4linux was originally written using the ancient libusb 0.1 series, so it will need updating for asynchronous usage. The performance is likely to be on par with the Turing Smart Screen due to being stuck with USB 1.1. The command exchange is based on SCSI where the driver sends a command packet followed by an optional data packet. The screen will send an answer packet in response.

The AX206 screen comes in various resolutions due to its origins from the dpf-ax project. This can be queried at runtime via the initial communications. From what I can tell, there's no known AX206s with support for more than the default orientation which can be either landscape or portrait depending on the screen's native resolution. The brightness level can also be changed with a different command series. And the screen can receive partial updates via a BLIT command. That's it for commands the screen supports that would be useful for a driver. See here for the actual command packets: https://github.com/dreamlayers/dpf-ax/blob/dreamlayers/dpflib/dpfcore4driver/dpfcore4driver.c