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
1.05k stars 174 forks source link

GUITION 3.5" screen support #426

Closed ghost closed 6 months ago

ghost commented 8 months ago

I found this while looking around for different models of USB 3.5" screens. I found this:

https://www.aliexpress.us/item/3256806022857282.html

It mentions some software called Guition which seems to be different from the stuff I have already seen. Maybe this is another variant of a newer screen type?

mathoudebine commented 8 months ago

Hello @braewoods you're right it seems there is a new smart screen model on the market, thanks for telling me! Damn, this will not help with my smart screen addiction 😆 I will definitely buy some and try to integrate it to this project!

image This line in the ad is a lie, or this smart screen use a different technology than the others 3.5" that are unable to display gifs due to their very low refresh rate.

ghost commented 8 months ago

This line in the ad is a lie, or this smart screen use a different technology than the others 3.5" that are unable to display gifs due to their very low refresh rate.

It could be true if the raw USB is using USB 2.0 instead of 1.1. VoCore screens can handle real time updates due to using USB 2.0. Or it may be a model that uploads everything to the internal storage and operates similar to the HID screens I am still working on.

mathoudebine commented 6 months ago

Hi again! I finally received the product and investigated a bit using HHD Serial Port Monitor to get the data transiting between the display and the computer. I have bad news unfortunately.

Based on what I've seen, it seems like the display is based on an ESP32. When a theme is selected from the Windows software, a new complete ESP32 firmware is compiled by the Windows software and flashed to the display. I can see it on the Serial Port Monitor interface.

Then, when program is running, only sensors data are sent to the display periodically as you can see on this screen capture: guition Frames in red are sent periodically by the software to the display, and contains a set of predefined sensor values separed by $N. Here I created a theme with only 1 sensor (CPU usage) and it is the data you can see (22,61) in the frame. The display acknowledge every frame from the computer.

So it seems you were right: even though the display does not use the HID protocol to communicate with the computer but a virtual serial port, it is working as the Fuldho 3.5" IPS Screen you're working on. I don't think it can be integrated to this project.

ghost commented 6 months ago

I appreciate the information you were able to provide. I am currently working on a refactoring of my own solution to the Fuldho screens that may be amenable to this screen in the future but for now isn't a priority. Right now I am expanding the original software I wrote to work with the newer screen variants by the same vendor which use a new serial protocol instead of HID. There's apparently a 2.1" screen but so far I have only seen the 5" screen floating around Aliexpress.

matu6968 commented 2 months ago

Hi again! I finally received the product and investigated a bit using HHD Serial Port Monitor to get the data transiting between the display and the computer. I have bad news unfortunately.

Based on what I've seen, it seems like the display is based on an ESP32. When a theme is selected from the Windows software, a new complete ESP32 firmware is compiled by the Windows software and flashed to the display. I can see it on the Serial Port Monitor interface.

It seems like everything including the toolchain, obfuscated (maybe?) source code is in the main executable by finding patterns like GCC using a hex editor, also will try using binwalk to see if there is anything inetresting in there. So to add support, reverse engineering of the executable is needed to extract the source code and the build flags.