Releases: mathoudebine/turing-smart-screen-python
3.10.0 - 🚀 New TURZX models support
Important
Getting anti-virus alerts for this program?
Click here to know more: https://github.com/mathoudebine/turing-smart-screen-python/wiki/Troubleshooting#windows-installer--portable-zip-are-flagged-by-my-anti-virus
🚀 New TURZX models support!
This release brings the long-awaited support for the new Turing / TURZX models. These new models work differently as they do not communicate using a virtual serial port but using USB. They require libusb-1.0 library which should be already installed in Linux distributions, can be installed with brew on macOS, and is bundled in Windows installers.
- TURZX 4.6" (960x320) - tested by @smandon
- TURZX 5.2" (1280x720) - tested by @mathoudebine
- TURZX 8" (1280x800) - tested by @mathoudebine
- TURZX 8.8" (1920x480) - tested by @mathoudebine
- TURZX 9.2" (1920x462) - tested by @mathoudebine
- TURZX 12.3" (1920x720) - not tested but should work
Note
9.2" models have a 1920x462 resolution, but in this program they will use the themes made for the 8.8" model (1920x480) that will be slightly cropped. This is to avoid developing themes for the 2 models separately. It is the same in TURZX main program.
Many thanks to the everyone who helped, especially the following contributors:
- @phstudy who decoded the new USB protocol and implemented https://github.com/phstudy/turing-smart-screen-cli a command-line interface tool for controlling the new TURZX USB models
- @drivin who fixed the issue with the 1MB frame limit by implementing PNG-to-JPEG compression with its PR #950
- @smandon who added support for the 4.6" model and a theme for it
Please report issues on GitHub as usual.
🎨 Themes
Some themes have been written for the new models (except the 12.3") or have been scaled from an existing theme with similar screen ratio: for example, all themes written for the 8" model (1280x800) and the 5.2" (1280x720) have been scaled from the original Turing 5" themes (800x480).
A Python script res/themes/scale_theme.py is available if you want to do it for other themes of your own themes.
python scale_theme.py theme.yaml output.yaml --from 480x800 --to 800x1280🖼️ New theme materials (backgrounds & renders) are available in res/themes/--Theme examples/ to help you get started.
What's Changed
- FIX in DisplayLineGraph, in case min==max it gives div by zero. by @AlanFromJapan in #895
- Added min/max formatter to DisplayLineGraph() by @AlanFromJapan in #893
- ⬆️ Update psutil requirement from ~=7.2.1 to ~=7.2.2 by @dependabot[bot] in #949
- ⬆️ Update babel requirement from ~=2.17.0 to ~=2.18.0 by @dependabot[bot] in #951
- ⬆️ Update numpy requirement from ~=2.4.1 to ~=2.4.2 by @dependabot[bot] in #952
- ⬆️ Update pillow requirement from ~=12.1.0 to ~=12.1.1 by @dependabot[bot] in #955
- ⬆️ Update pyinstaller requirement from ~=6.18.0 to ~=6.19.0 by @dependabot[bot] in #957
- Allow Python 3.14 for OS != Windows by @mathoudebine in #963
- ⬆️ Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #964
- ⬆️ Update numpy requirement from ~=2.4.2 to ~=2.4.3 by @dependabot[bot] in #968
- ⬆️ Update pillow requirement from ~=12.1.1 to ~=12.2.0 by @dependabot[bot] in #975
- ⬆️ Update numpy requirement from ~=2.4.3 to ~=2.4.4 by @dependabot[bot] in #973
- ⬆️ Update requests requirement from ~=2.32.5 to ~=2.33.1 by @dependabot[bot] in #974
- Follow-up changes based on PR #892 by @drivin in #950
- Detection correction + Turing 4.6" support by @smandon in #979
- Support TURZX 4.6" / 5.2" / 8" / 8.8" (V1.x) / 9.2" / 12.3" by @mathoudebine in #892
New Contributors
- @AlanFromJapan made their first contribution in #895
- @drivin made their first contribution in #950
Full Changelog: 3.9.7...3.10.0
3.9.7 - New LibreHardwareMonitor with PawnIO and 2.8" Turing support
⚠️ Getting anti-virus alerts for this program?
Click here to know more: https://github.com/mathoudebine/turing-smart-screen-python/wiki/Troubleshooting#windows-installer--portable-zip-are-flagged-by-my-anti-virus
✅ New LibreHardwareMonitor library for Windows
The LibreHardwareMonitor library used on Windows platforms to get hardware data has been updated to its latest official release https://github.com/LibreHardwareMonitor/LibreHardwareMonitor/releases/tag/v0.9.5
This new version replaces the obsolete WinRing0 driver with the new open-source Pawn.IO driver, which fixes the issue #902
✨ Now supported: Turing 2.8" circular screens support
The Turing 2.8" circular screens are now listed as supported! Because they use the same protocol and resolution as the 2.1" models, all existing 2.1" themes can be used.
What's Changed
- Add support for Turing 2.8" displays (same size as 2.1") by @mathoudebine in #889
- ⬆️ Update psutil requirement from ~=7.1.1 to ~=7.1.2 by @dependabot[bot] in #890
- ⬆️ Bump actions/checkout from 5 to 6 by @dependabot[bot] in #908
- ⬆️ Update psutil requirement from ~=7.1.2 to ~=7.2.1 by @dependabot[bot] in #937
- ⬆️ Update pillow requirement from ~=12.0.0 to ~=12.1.0 by @dependabot[bot] in #939
- ⬆️ Update ruamel-yaml requirement from ~=0.18.16 to ~=0.19.1 by @dependabot[bot] in #940
- ⬆️ Update pyinstaller requirement from ~=6.16.0 to ~=6.18.0 by @dependabot[bot] in #943
- ⬆️ Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #922
- ⬆️ Update numpy requirement from ~=2.3.4 to ~=2.4.1 by @dependabot[bot] in #942
- Update LHM to 0.9.5 by @mathoudebine in #944
Full Changelog: 3.9.6...3.9.7
3.9.6 - ✨ WeAct 0.96" and 3.5" support
⚠️ Getting anti-virus alerts for this program?
Click here to know more: https://github.com/mathoudebine/turing-smart-screen-python/wiki/Troubleshooting#windows-installer--portable-zip-are-flagged-by-my-anti-virus
✨ Now supported: WeAct Studio Display FS V1 0.96" and 3.5"
This new release adds the support for two new screen models on all OS (Windows/Linux/MacOS):
| ✅ WeAct Studio Display FS V1 0.96" | ✅ WeAct Studio Display FS V1 3.5" |
|---|---|
![]() |
![]() |
The 3.5" model can use existing themes made for other 3.5" screens like Turing.
For the 0.96 model, the 4 default themes from WeAct have been imported, and Theme Editor supports creating themes for it. You may need to use the zoom buttons in the Theme Editor preview window.
What's Changed
- ⬆️ Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #887
- ⬆️ Update ruamel-yaml requirement from ~=0.18.15 to ~=0.18.16 by @dependabot[bot] in #886
- ⬆️ Update psutil requirement from ~=7.1.0 to ~=7.1.1 by @dependabot[bot] in #884
- ⬆️ Update pillow requirement from ~=11.3.0 to ~=12.0.0 by @dependabot[bot] in #879
- Add support for WeAct Studio Display FS 0.96" and 3.5" by @mathoudebine in #885
Full Changelog: 3.9.5...3.9.6
3.9.5 - 🏢 Weather city search, reset screen on startup
⚠️ Having anti-virus alerts for this program?
Click here to know more: https://github.com/mathoudebine/turing-smart-screen-python/wiki/Troubleshooting#windows-installer--portable-zip-are-flagged-by-my-anti-virus
Weather city search (#823)
Thanks to @rud01f, the configuration window now allows you to search for a city instead of manually entering the latitude/longitude.
The results are pulled using openweathermap Geo API, and require entering valid API key.
The search results are also selected language agnostic, resulting in localized country and state names.
RESET_ON_STARTUP option (#828)
A new option RESET_ON_STARTUP has appeared in config.yaml to solve issues with some 3.5" screens not being able to connect after a reset. By default it is set to true like it was in previous versions: screen is always reset when program starts unless explicitly told not to.
Better max. fan speed assumption (#835)
When using Python for hardware monitoring on Linux, maximum fan speed is sometimes unknown to the system. Previously, this limit was arbitrarily set to 1500 RPM. Thanks to @vsalvador, it is now dynamically set based on the current fan speed. Not a perfect solution but still better.
Rev. C (Turing 2.1/5/8.8") asleep/awake detection fix (#873)
On some Linux systems, a Turing screen can be detected as both sleeping and awake (2 serial ports listed). In this case, try to wake it up once then assume it is awake to avoid being stuck in a wake loop.
What's Changed
- ⬆️ Update ruamel-yaml requirement from ~=0.18.10 to ~=0.18.11 by @dependabot[bot] in #780
- ⬆️ Update ruamel-yaml requirement from ~=0.18.11 to ~=0.18.14 by @dependabot[bot] in #787
- ⬆️ Update requests requirement from ~=2.32.3 to ~=2.32.4 by @dependabot[bot] in #788
- ⬆️ Bump stefanzweifel/git-auto-commit-action from 5 to 6 by @dependabot[bot] in #791
- ⬆️ Update pyinstaller requirement from ~=6.13.0 to ~=6.14.1 by @dependabot[bot] in #789
- ⬆️ Update sv-ttk requirement from ~=2.6.0 to ~=2.6.1 by @dependabot[bot] in #790
- ⬆️ Update numpy requirement from ~=2.2.6 to ~=2.3.0 by @dependabot[bot] in #792
- ⬆️ Update pillow requirement from ~=11.2.1 to ~=11.3.0 by @dependabot[bot] in #803
- ⬆️ Update numpy requirement from ~=2.3.0 to ~=2.3.1 by @dependabot[bot] in #799
- ⬆️ Bump Minionguyjpro/Inno-Setup-Action from 1.2.5 to 1.2.6 by @dependabot[bot] in #794
- ⬆️ Update pyinstaller requirement from ~=6.14.1 to ~=6.14.2 by @dependabot[bot] in #804
- ⬆️ Update pyinstaller requirement from ~=6.14.2 to ~=6.15.0 by @dependabot[bot] in #822
- ⬆️ Update numpy requirement from ~=2.3.1 to ~=2.3.2 by @dependabot[bot] in #816
- Upgraded options with search and autofill city latitude and longitude with geoapi by @rud01f in #823
- ⬆️ Update ping3 requirement from ~=4.0.8 to ~=5.1.3 by @dependabot[bot] in #825
- Add config option RESET_ON_STARTUP by @mathoudebine in #828
- ⬆️ Update ping3 requirement from ~=5.1.3 to ~=5.1.5 by @dependabot[bot] in #831
- ⬆️ Bump actions/checkout from 4 to 5 by @dependabot[bot] in #832
- ⬆️ Bump Minionguyjpro/Inno-Setup-Action from 1.2.6 to 1.2.7 by @dependabot[bot] in #839
- ⬆️ Update numpy requirement from ~=2.3.2 to ~=2.3.3 by @dependabot[bot] in #849
- ⬆️ Update psutil requirement from ~=7.0.0 to ~=7.1.0 by @dependabot[bot] in #854
- ⬆️ Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #845
- ⬆️ Update ruamel-yaml requirement from ~=0.18.14 to ~=0.18.15 by @dependabot[bot] in #837
- ⬆️ Update pyinstaller requirement from ~=6.15.0 to ~=6.16.0 by @dependabot[bot] in #853
- ⬆️ Update requests requirement from ~=2.32.4 to ~=2.32.5 by @dependabot[bot] in #836
Update LibreHardwareMonitor to 0.9.5-pre464 to avoid malware false detection by @mathoudebine in #858reverted as the beta version is not stable enough: some sensors do not work like CPU clock frequency- Fan max RPM is hardcoded to 1500. There are fans of 1500, 2200 and 3000 by @vsalvador in #835
- ⬆️ Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #871
- ⬆️ Bump stefanzweifel/git-auto-commit-action from 6 to 7 by @dependabot[bot] in #875
- ⬆️ Update pyyaml requirement from ~=6.0.2 to ~=6.0.3 by @dependabot[bot] in #864
- Rev. C: Fix wake-up mechanism in case old asleep device is still detected by @mathoudebine in #873
- Update copyright format and add SPDX header by @mathoudebine in #877
- Move Python version check to a common file and add upper bound by @mathoudebine in #876
- ⬆️ Update numpy requirement from ~=2.3.3 to ~=2.3.4 by @dependabot[bot] in #878
- Disabling Icelandic language support. by @willoucom in #881
New Contributors
- @rud01f made their first contribution in #823
- @vsalvador made their first contribution in #835
- @willoucom made their first contribution in #881
Full Changelog: 3.9.3...3.9.5
3.9.3 - Fix for Turing 8.8" scrambled display
This release fixes the issue #724 with Turing Smart Screen 8.8" and ROM version > 88
Please not it is NOT the support for the newer Turing 8.8" screens with hardware revision V1.1 (issue still open: #727)
What's Changed
- Fix Lint issues by @mathoudebine in #733
- ⬆️ Update pillow requirement from ~=11.1.0 to ~=11.2.1 by @dependabot in #742
- ⬆️ Update pyinstaller requirement from ~=6.12.0 to ~=6.13.0 by @dependabot in #743
- ⬆️ Update numpy requirement from ~=2.2.4 to ~=2.2.5 by @dependabot in #748
- ⬆️ Update numpy requirement from ~=2.2.5 to ~=2.2.6 by @dependabot in #773
- Fix BGRA mode for Turing 8.8" depending on ROM version by @mathoudebine in #770
Full Changelog: 3.9.2...3.9.3
3.9.2 - MacOS corruption fix
This release fixes some corruptions that can happen on MacOS like:

It may not fix all corruptions cases: see #7 for a follow-up.
Users of other platforms can ignore this release if they already have 3.9.1
What's Changed
- Fix/7 screen displays corrupted images on mac by @mathoudebine in #721
- ⬆️ Update numpy requirement from ~=2.2.3 to ~=2.2.4 by @dependabot in #716
Full Changelog: 3.9.1...3.9.2
3.9.1 - Turing 8.8" & 2.1" support (bugfix)
This is a 3.9 point release for the following changes:
- Restore compatibility with Python < 3.11 for rev. C and rev. D screens
- Add portable Windows package
For the full 3.9 changelog see https://github.com/mathoudebine/turing-smart-screen-python/releases/tag/3.9.0
To discuss about the 3.9 releases: #691
Is this a malicious program?
Some users reported that the Windows packages published for releases are flagged by their anti-virus solution like Avast or NOD32.

Why are these packages detected as malicious?
Anti-virus software now use heuristic filters to try to detect new threats that have not yet been identified.
Windows packages can trigger the anti-virus heuristic filters for the following reasons:
- Python code packaged as an executable: could disguise some malicious code as a legitimate program
- DLL loading as administrator: could load external malicious code, or infect critical system components
Of course it is not possible to know precisely why these packages are flagged by anti-virus software. The heuristic filters are kept secret to prevent them from being bypassed by harmful programs.
Can I trust this program?
This project is open-source, you can review the code from the main page using Github browser: https://github.com/mathoudebine/turing-smart-screen-python
No security concerns have been reported so far despite the daily activity.
The Windows packages for releases are generated using Github Actions platform on cloud containers from Github. No manual intervention is made, and the files never leave the secured container environment.
The Github actions to generate the packages are available here: https://github.com/mathoudebine/turing-smart-screen-python/blob/main/.github/workflows/generate-windows-packages.yml and https://github.com/mathoudebine/turing-smart-screen-python/blob/main/.github/workflows/generate-windows-packages-debug.yml
I still don't want to take any risks
If you still don't trust Windows packages for releases, just download the source code instead:

Then follow the manual installation procedure. You will need to install Python manually and run some commands from a terminal.
What's Changed
- to_bytes: Restore compatibility with Python < 3.11 by @mathoudebine in #701
- Dev/add windows portable package by @mathoudebine in #702
Full Changelog: 3.9.0...3.9.1
3.9.0 - Turing 8.8" & 2.1" support
This release brings the the long-awaited support for Turing 8.8" and 2.1" displays!


The Configuration window has been updated to support the new display sizes. You can also spot a new "Open themes folder" button for quick access to themes.
Theme Editor has been updated as well with buttons to zoom in/out, useful for wide screens like 8.8":
This release comes with a first set of themes for both display sizes:
To get these new themes, don't forget to check "Default themes" during setup (and backup your local theme modifications before!):
Please do not hesitate to raise an issue if you find some bugs in this release!
What's Changed
- ⬆️ Update numpy requirement from ~=2.2.2 to ~=2.2.3 by @dependabot in #684
- ⬆️ Update psutil requirement from ~=6.1.1 to ~=7.0.0 by @dependabot in #686
- Implement support for Turing 2.1" and 8.8" screens by @mathoudebine in #690
Full Changelog: 3.8.2...3.9.0
3.8.2 - Optimizations ✨
This release adds common optimizations for all screens:
- Thanks to @hchargois the optimized serialization process already applied to rev. A (Turing Smart Screen 3.5") has been extended to all supported displays: Turing 5", XuanFang, Kipye... The image serialization is now up to 60x faster!
- Sensor monitoring does not start until screen is fully initialized and background is displayed, to avoid serial buffer overload and "burst" mode where the screen displays data frantically during the first 10 seconds
- A debug installer is now generated for each release, with command window to display logs. Useful for debugging.
- For rev. B screens (XuanFang) a cool-down of 0.05 seconds has been added between each frames to reduce drastically the problem of "corrupted bitmaps" for themes with a lot of content.
Full list of changes
- ⬆️ Update pyinstaller requirement from ~=6.11.1 to ~=6.12.0 by @dependabot in #671
- Use Numpy for all revisions by @hchargois in #641
- Generate debug installer for Windows by @mathoudebine in #678
- Optimize load to avoid "burst" at startup, fix rev. B corruption by @mathoudebine in #679
Full Changelog: 3.8.1...3.8.2
3.8.1 - Windows Installer fix
What's Changed
- Fix Windows Installer not opening Theme Editor because of spaces in paths by @mathoudebine in #676
Full Changelog: 3.8.0...3.8.1












