From 2e2642daa07364d0a1a1403f09e043c71b62ed45 Mon Sep 17 00:00:00 2001 From: OctaNebula Date: Mon, 4 May 2026 19:24:49 +0200 Subject: [PATCH] Add support for 2.8" round TURZX USB display (PID 0x0028) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Register the 2.8" round panel (480x480, USB Product ID 0x0028) with the existing TURZX USB comm class. This is the new-generation USB variant of the 2.8" screen, distinct from the older UART-based 2.1"/2.8" models. Changes: - Add PID 0x0028 to the PRODUCT_ID table in lcd_comm_turing_usb.py - Add a new size option in configure.py for the GUI dropdown - Fix a latent bug in load_config_values where .replace() on size strings could produce corrupted values like '2.1" / 2.1" / 2.8"' due to substring matching — switched to equality checks instead - Update README supported sizes list --- README.md | 2 +- configure.py | 16 +++++++++++----- library/lcd/lcd_comm_turing_usb.py | 3 ++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index eb95e732..56acc353 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Supported operating systems : macOS, Windows, Linux (incl. Raspberry Pi), basica | ✅ Turing Smart Screen / TURZX | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
| -| All available sizes and hardware revisions supported: **2.1" / 2.8" / 3.5" / 4.6" / 5" / 5.2" / 8.0" / 8.8" / 9.2" / 12.3"**
UART and USB protocols supported. Note: no video or storage support for now | +| All available sizes and hardware revisions supported: **2.1" / 2.8" / 2.8" round / 3.5" / 4.6" / 5" / 5.2" / 8.0" / 8.8" / 9.2" / 12.3"**
UART and USB protocols supported. Note: no video or storage support for now | | ✅ XuanFang 3.5" | ✅ [UsbPCMonitor 3.5" / 5"](https://aliexpress.com/item/1005003931363455.html) | ✅ Kipye Qiye Smart Display 3.5" | |---------------------------------------------------|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| diff --git a/configure.py b/configure.py index 9d799969..3c0989c2 100755 --- a/configure.py +++ b/configure.py @@ -76,11 +76,13 @@ SIZE_8_8_INCH = "8.8\"" SIZE_8_8_INCH_NEWREV = "8.8\" / 9.2\" (V1.X new HW rev.)" SIZE_12_3_INCH = "12.3\"" +SIZE_2_8_ROUND_USB = "2.8\" round (V1.X new HW rev.)" # List of sizes that can be selected size_list = ( SIZE_0_96_INCH, SIZE_2_x_INCH, + SIZE_2_8_ROUND_USB, SIZE_3_5_INCH, SIZE_4_6_INCH, SIZE_5_INCH, @@ -107,6 +109,7 @@ ('TUR_USB', SIZE_8_8_INCH): TURING_MODEL, ('TUR_USB', SIZE_8_8_INCH_NEWREV): TURING_MODEL, ('TUR_USB', SIZE_12_3_INCH): TURING_MODEL, + ('TUR_USB', SIZE_2_8_ROUND_USB): TURING_MODEL, ('WEACT_A', SIZE_3_5_INCH): WEACT_MODEL, ('WEACT_B', SIZE_0_96_INCH): WEACT_MODEL, @@ -131,6 +134,7 @@ (TURING_MODEL, SIZE_8_8_INCH): 'C', (TURING_MODEL, SIZE_8_8_INCH_NEWREV): 'TUR_USB', (TURING_MODEL, SIZE_12_3_INCH): 'TUR_USB', + (TURING_MODEL, SIZE_2_8_ROUND_USB): 'TUR_USB', (USBPCMONITOR_MODEL, SIZE_3_5_INCH): 'A', (USBPCMONITOR_MODEL, SIZE_5_INCH): 'A', (WEACT_MODEL, SIZE_0_96_INCH): 'WEACT_B', @@ -433,13 +437,15 @@ def load_config_values(self): # Guess display size from theme in the configuration size = get_theme_size(self.config['config']['THEME']) - size = size.replace(_SIZE_2_1_INCH, SIZE_2_x_INCH) # If a theme is for 2.1" then it is for all 2.x" - size = size.replace(_SIZE_2_8_INCH, SIZE_2_x_INCH) # If a theme is for 2.8" then it is for all 2.x" - size = size.replace(_SIZE_9_2_INCH, - SIZE_8_8_INCH_NEWREV) # If a theme is for 9.2" then it is for 8.8"/9.2" (new rev) + if size == _SIZE_2_1_INCH or size == _SIZE_2_8_INCH: + size = SIZE_2_x_INCH # If a theme is for 2.1" or 2.8" then it is for all 2.x" + elif size == _SIZE_9_2_INCH: + size = SIZE_8_8_INCH_NEWREV # If a theme is for 9.2" then it is for 8.8"/9.2" (new rev) try: if size == SIZE_8_8_INCH and self.config['display']['REVISION'] == 'TUR_USB': size = SIZE_8_8_INCH_NEWREV + if size == SIZE_2_x_INCH and self.config['display']['REVISION'] == 'TUR_USB': + size = SIZE_2_8_ROUND_USB self.size_cb.set(size) except: self.size_cb.current(0) @@ -587,7 +593,7 @@ def on_size_change(self, e=None): size = self.size_cb.get() # For '2.1" / 2.8"' size, search for themes of both sizes - if size == SIZE_2_x_INCH: + if size == SIZE_2_x_INCH or size == SIZE_2_8_ROUND_USB: themes = get_themes(_SIZE_2_1_INCH) themes += get_themes(_SIZE_2_8_INCH) # For 8.8" & 9.2" sizes, search for themes of both sizes diff --git a/library/lcd/lcd_comm_turing_usb.py b/library/lcd/lcd_comm_turing_usb.py index 93490563..bb7063a7 100644 --- a/library/lcd/lcd_comm_turing_usb.py +++ b/library/lcd/lcd_comm_turing_usb.py @@ -41,7 +41,8 @@ VENDOR_ID = 0x1cbe # Map of display supported product IDs and their respective resolution in portrait mode -PRODUCT_ID = {0x0046: (320, 960), # Turing 4.6" +PRODUCT_ID = {0x0028: (480, 480), # Turing 2.8" round (USB) + 0x0046: (320, 960), # Turing 4.6" 0x0050: (720, 1280), # Turing 5.2" 0x0080: (800, 1280), # Turing 8.0" 0x0088: (480, 1920), # Turing 8.8"